Programul de Licență : Automatică și Informatică [604670]
Facultatea de Automatică și Calculatoare
Programul de Licență : Automatică și Informatică
Aplicată
CONTROLUL ACCESULUI L A APLICAȚII WEB
FOLOSIND TEHNICI AVANSATE DE SECURITATE
PENTRU TEHNOLOGIA CA RDURILOR NFC
Proiect de diplomă
Mario Cătălin VASILE
Coordonator :
Conf . dr. ing. Bogdan Groza
2016
Cuprins
Capitolul 1. Introducere ………………………….. ………………………….. ………………………….. ……………… 1
1.1. Context ………………………….. ………………………….. ………………………….. ………………………….. . 1
1.2. Tema proiectului ………………………….. ………………………….. ………………………….. ……………… 2
1.3. Teh nologia NFC și comunicarea cu telefonul ………………………….. ………………………….. ….. 3
Capitolul 2. Sistem și tehnologii folosite ………………………….. ………………………….. …………………… 4
2.1. Android ………………………….. ………………………….. ………………………….. ………………………….. 4
2.1.1. Aplicații ………………………….. ………………………….. ………………………….. ……………………. 6
2.1.2. Dezvoltare ………………………….. ………………………….. ………………………….. ………………… 6
2.1.3. Licența Android ………………………….. ………………………….. ………………………….. ………… 8
2.2. Near Field Communication (NFC) ………………………….. ………………………….. …………………. 8
2.2.1. Design NFC ………………………….. ………………………….. ………………………….. ……………… 9
2.2.2. Standardizare ………………………….. ………………………….. ………………………….. …………… 11
2.2.3. A ndroid, IOS și NFC ………………………….. ………………………….. ………………………….. .. 11
2.3. Tipuri de etichete NFC ………………………….. ………………………….. ………………………….. ……. 13
2.3.1. Eticheta Mifare Desfire Ev1 ………………………….. ………………………….. ………………….. 15
2.3.2. Algoritmul de criptare DES și Triple DES ………………………….. ………………………….. . 19
2.4. Mifare SDK ………………………….. ………………………….. ………………………….. …………………… 20
Capitolul 3. Prezentarea Aplicației ………………………….. ………………………….. …………………………. 22
3.1. Scopul aplicației ………………………….. ………………………….. ………………………….. …………….. 22
3.2 Prezentarea interfețelor ………………………….. ………………………….. ………………………….. ……. 23
3.3. Implementarea aplicației ………………………….. ………………………….. ………………………….. …. 34
3.3.1. Implementarea generală ………………………….. ………………………….. ………………………… 34
3.3.2. Implementarea în detaliu ………………………….. ………………………….. ……………………….. 36
3.4. Aplicații existente ………………………….. ………………………….. ………………………….. ………….. 39
3.5. Design componente ………………………….. ………………………….. ………………………….. ………… 43
Capitolul 4. Concluzii ………………………….. ………………………….. ………………………….. ………………. 45
5. Bibliografie ………………………….. ………………………….. ………………………….. …………………………. 46
Capitolul 1. Introducere
1
Capitolul 1. Introducere
1.1. Context
În ziua de azi tehnologia se dezvoltă într-un ritm alert, tr ăim î n sec olul vitezei unde în
fiecare zi cineva descoperă ceva nou sa u îmbunătățeș te ceva existent. Aplicaț iile software cunosc
și ele o creștere major ă iar multe din aceste aplicaț ii au nevoie de con turi pentru a fi accesate.
Odată cu cre șterea puterii computa ționale cre ște și nevoia securităț ii iar utilizatorii sunt nevoiți și
obligați de multe din aplicații s ă își seteze parole câ t mai p uternice.
O parolă puternică presupune un numa r minim de 8 caractere, care să conțină cel puțin o
literă mare ș i un număr. Cel mai simplu tip de atac este cel Br ute Force prin care se incearcă
toate combinațiile posibile de caractere ș i de aceea parolele noastre trebuie s ă fie cât mai
diversificate ș i cât mai lungi, cu toate acestea trebuie să le reținem. Numărul mar e de aplicații ș i
nevoia oamenilor de a reține multe perechi de nume utilizator și parolă pentru fiecare din aceste
aplicații duc de cele mai multe ori la setarea de parole slabe , ușor de ținut minte și utilizarea
aceleași parole pentru accesarea diferitelor conturi. Toate aceste decizii nu fac altceva decât s ă
creeze o problemă de s ecuritate pentru datele noastre și lucrarea de față incea rcă să rezolve
acestă problemă prin imple mentarea unui manager de parole pentru platforma Android .
Manageri i de parole sunt progr ame software care au ca scop reț inerea de parole pentru
diferite conturi. Aceste programe vor stoca fie of fline sau online parolele s etate de utili zator iar
acesta va fi nevoit să seteze o parolă principală prin care poate să acceseze managerul de parole.
Astfel utilizatorul nu va mai fi nevoit sa rețină toate numele de conturi ș i parolele aferente lor . În
schimb el își va configura o s ingură dată aceste conturi în program după care va seta o parolă
principală prin care sa aceseze aceste conturi și va reține doar acea parolă .
Principala problemă a acestor programe este lipsa de incredere din partea uti lizatorilor.
Este foarte greu de co nvins o persoană să își pună toate parolele sale, practic toate informaț iile pe
care incearcă sa le țină cât mai în sigu ranță, î ntr-un program software. D e aceea to ate aceste
programe cu toate că promit sa ț ină în siguranță datele ajung să nu fie foarte folosite. Nevoia insă
Capitolul 1. Introducere
2
există și se amplifică pe masură ce numarul d e conturi de aplicații cre ște. Pe masură ce puterea
computaționlă creș te, parolele pe care le setăm t rebuie sa fie tot mai puternice. Astfel suntem
nevoiți să reținem parole complicate, lucru deloc plăcut. În următoarele râ nduri voi explica cum
putem inlătura această problemă .
Pentru a creste cooerenta expunerii am modificat structur a capitolelor dupa cum urmează :
Capitolul 1 Introducerea, Capitolul 2 Sistem si tehnologii folo site Capitolul 3 Prezentarea
aplicației, Capitolul 4 Concluzii, Capitolul 5 Bibliografie.
1.2. Tema proiectului
Accesarea aplicațiilor web folosind tehnologia Near Field Communication ( NFC )
reprezintă tema acestui proiect. Numărul aplicațiilor web creș te pe zi ce trece, folosim tot mai
multe dintre acestea fie că sunt rețele de socializare precum Facebook, Twitter, Myspace sau
aplicați i de tip cloud Google Drive, Dropbox, OneDrive sau aplicații bancare Paypal ,
Moneygram , pentru toate acestea avem nevoie de un nume de utilizator și o parolă pentru a le
accesa.
Pentru ca utilizatorul să nu fie nevoit sa rețină un număr foart e mare de parole și conturi ,
am cre at o apl icație mobilă pentru platforma Android prin care utilizatorul î și va configura o
singură dată aceste conturi după care le va scrie pe un card utilizând tehnologia NFC . Conținutul
cardului va fi criptat folosind Standardul de Criptare a Datelor (Data Encryption S tandard, DES)
iar cheia folosită la criptarea datelo r va fi stabilită printr -un numă r pin ales de utilizator.
Utilizând această aplicație, utilizatorul nu va trebui să își facă griji pentru integritatea
datelor deoarece aplicația nu stocheaz ă sub nici o formă parolele sau conturile, toate acestea fiind
salvate pe cardul NFC , card aflat în posesia utilizatorului. Pentru a se autentifica pe aplicația
web, utilizatorul va apropia de telefon cardul după care aplicația mobilă se va deschide automat
și îi va cere să introducă numărul pin. Odată introdus , o listă cu aplicațiile web setate vor fi
disponibile , iar acesta va putea selecta aplicația pe care doreș te să se autentifice.
Aplicația incorporează un browser ca re va face posibliă logarea, odată ce utilizatorul va
părăsi aplicația , toate datele de pe browser vor fi complet sterse.
Capitolul 1. Introducere
3
Pentru dezvoltarea aplicației am folosit Android Studio pe post de IDE ( Integrated
Development Enviromment) , iar pentru comunicarea telefonu lui și a cardului am folosit Mifare
SDK Adva nced.
1.3. Tehnologia NFC și comunicarea cu telefonul
Tehnologia NFC permite transferul de date între un telefon ș i un card prin simpla
apropiere a celor două la o distanță mai mică de 10 cm, transferul realizându -se într-un timp
foarte scurt de aproximativ 0.1s ceea ce ne face să spunem că transferul are loc instant.
Cardul folos it pentru acest proiect se numeș te Desfire Ev1 și este produs de compania
Mifare , fiind ales pentru capacitatea de criptare a conținut ului și pentru siguranța sa î n timp.
Cerințe tehnice :
Să detecteze cardul NFC
Să ofere posibilitate a setării con turilor și parolelor
Să poată scrie datele pe card î ntr-un mod criptat folosind un pin ales de utilizator
Să poată decripta datele de pe card cu pin -ul utilizatorului
Posibilitatea de autentificare pentru aplicațiile web setate
Posibilitatea schimbării parolei cardului
Posibilitatea modificări sau ș tergerii credențialelor pentru aplicațiile web
Cerințe minime pentru rularea aplicației :
Deținerea unui telefon care să ruleze pe platforma Android
Telefonul trebuie să fie echipat cu un senzor NFC , echipare standard pentru
terminalele de top precum Samsung Galaxy S3, S4, S5, S6 S7, Note 3,4, 5, Htc One
M7, 8 , 9, Lg G2, G3.
Deținerea unui card NFC de tipul Mifare Desfire EV1 ( la data la care este scrisă
această lucrare acest card este considerat sigur din pun ct de vedere al securității )
Pentru accesarea aplicațiilor web va fi necesară o conexiune la internet
Capitolul 2. Sistem și tehnologii folosite
4
Capitolul 2. Sistem și tehnologii folosite
2.1. Android
Android este un sistem de operare pen tru telefoane mobile dezvoltat î n prezent de
Google, bazat pe nucleul de Linux. Acesta a fost gân dit pentr u telefoane mobile inteligente și
pentru tablete care dispun de un ecran sensibil la atingeri. Interacțiunea utili zatorului cu sistemul
se bazează pe gesturi tactile, prin aceste ges turi utlizatorul poate m anipula obiectele din interfață ,
iar pentru scriere sistemul dispune de o tastatură virtuală. Pe lângă telefoanele mobile și tablete,
Google a dezv oltat sistemul Android și pentru telev izoarele inteligente Android TV, pentru
vehicul e Android Auto și Android Wear pentru ceasuri , toate acestea având o interfață diferită
pentru interacțiunea cu utilizatorul.
Android este cel mai instalat sistem de operare din lume , din 2013 ș i pana în prezent a
fost cel mai folosit s istem de operare p entru tablete , iar în dome niul telefoanelor mobile a depăș it
orice masurătoare. [1]
Dezvoltat inițial de Android Inc., care a fost cumpărat de Google în anul 2005 , Android a
fost făcut public în anul 2007 alăt uri de o finanțare primită din partea Open Handset Alliance ca
o grupare de companii software, hardware ș i de telecomunicații a căror scop comu n este să
dezvolte standardele î n industria telefoniei mobile. [2]
În iulie 2013 mag azinul online Google Play a depă șit cifra de un milion de aplicații
publicate ș i peste 50 de miliarde de aplicații descărcate. În aprilie -mai după un chestionar online
a rezultat că 71% dintre programatori creeaza aplicații Android [3] iar în 2015 din același
chestionar a rezultat că 40% dintre programatorii angajați cu normă intreagă ar alege Android ca
platformă de dezvoltare pentru aplicații iar 37% ar alege platforma IOS [4] . La conferința
Google I/O din anul 2014 compania a dezv ăluit că există peste un miliard de utilizatori activi
pentru platforma Android .
Codul sursă al sistemu lui de opera re este sub licența open source , de asemenea
majoritatea dispozitivelor sunt livrate cu o versiune modificată peste cea open source. Mulți
dintre producatori i de dipozitive mobile îș i dezvoltă propria versiune de Android pornind de la
versiunea de bază dată de Google, de cele mai multe ori aceste versiuni care sunt livrate pe
Capitolul 2. Sistem și tehnologii folosite
5
dispozitive nu sunt open source. Fiind un produs open source , acesta a atras o mulțime d e
dezvoltatori care au adaugat î mbunătățiri sistemului.
Android Inc. a fost fondat în Pao Alto California în anul 2003 de către Andy Rubin, Rich
Miner, Nick Sears și Chris White . Primele intenții ale companiei era u să dezvolte sisteme de
operare pentru camerele digitale. După ce au realizat că piața pentru camere digi tale nu este
îndeajuns de mare , și-au îndreptat eforturile pentru piața telefoanelor mobile unde îi vor avea ca
principali concurenți pe Symbian și Microsoft Windows Mobile.
Pe 5 noiembrie 2007 Open Handset Alliance , un consorțium format din mai multe
companii pr intre care Google, HTC, Samsung, Sprint Nextel ș i T-Mobile au dezvăluit scopul de
a dezvolta un standard gratis pentru terminalele mobile. în aceeasi zi , Android a dezvăluit
sistemul de operare bazat pe nucleul de Linux, primul telefon mobil echip at cu acest sistem urma
să fie HTC Dream lansat în data de 22 o ctombrie 2008.
Din anul 2008 Android a început să lanseze sistemul de operare, care e ra actualizat
periodic aducând îmbunătă țiri de performanță și caracteristici noi. Fiecare actualizare majo ră este
numită în ordine alfabetică dupa un desert(exemplu versiunea 1.5 “Cupcake”, 1.6 “Donut” etc.) .
Google lansează pentru a promova sistemul de operare , linia de telefoane mobile și tablete Nexus
în parteneriat cu diferiți producători de telefoane mobi le precum HTC, LG, Asus . Aceste
telefoane vin cu versiunea “curat ă” de Android și sunt destinate să arate capacități le sistemului
de operare.
Interfața Android se bazează î n mare parte pe atingerile tactile din partea utilizatorului ,
folosite pentru a manipula obiecte ș i a interacționa cu sistemul. Pe lâ ngă aceste miș cări, sistemul
dispune și de o tastatură virtuală , de asemen ea se pot adauga controllere pentru jocuri sau
tastatură fizică prin modulul de Bluetooth sau prin USB. Ră spunsul sistemului este insta nt la
gesturile utilizatorului și este gândit ca o interfață fluidă, uneori folosindu -se funcția de vib rație
pentru a confirma acțiunile. Hardware -ul intern prec um accelerometru l, giroscop sau senzorii de
proximitate sunt folosiț i de unele aplicații pentru a ră spunde acțiunilor utlizatorului.
Ecranul principal din Android poate conține icoane de lansare pentru aplicații sau widget –
uri(e xemplu Calendar, Starea vremii). D e asemenea poate fi alcătuit din mai multe pagini. În
partea de sus a ecranului s e găsește o bară de sta tus care se poate expanda prin simpla tragere î n
Capitolul 2. Sistem și tehnologii folosite
6
jos. Aceasta oferă informații despre senzorii activi din telefon, starea bateriei , aplicații de scărcate
și notificările din aplicații.
2.1.1 . Aplicații
Aplicațiile sunt cele care extind funcționalitatea sistemului și sunt scrise folosind Android
software development kit (SDK) și de cele mai multe ori limbajul Java are acces complet la API-
ul Android . Aplicațiile se pot scrie în Java, C/C++ sau în limbajul Go creat de Google. SDK -ul
cuprinde o serie larg ă de unelte de dezvoltare precum debugger, biblioteci software , emulator
pentru dispozitivul mobil, documentație, exemple de aplicații și tutoriale.
Inițial pentru dezvoltarea aplicaților Android s-a folosit mediul de dezvoltare Ecli pse,
ulterior î n anul 2014 Google a lansat Android Studio , acesta devenind la scurt timp principalul
mediu pentru dezvoltare a aplicaț iilor mobile. Pentru realizarea acestei lucrări am folosit Android
Studio versiunea 1.5 , aceasta fiind ultima versiune stab ilă la data redactării lucrării. Există și alte
kit-uri de dezvoltare incluzând aici Native Development Kit (NDK ) pentru scrierea aplicațiilor î n
limbajele de programare C/C++ ș i Google App Inventor, un mediu de programare vizuală.
Numărul aplicațiilor Android este intr -o continuă creștere , aplicațiile ajung pe telefoanele
utilizatorilor fie prin instalarea APK -urilor ( Android Application package) fie prin descă rcarea
acestora de pe un magazin de aplicații. Principalul magazin de aplicații este Google Play , acesta
conținea în iulie 201 3 peste 1 milion de aplicații. Î n funcție de aplicație utilizatorul o poate
descărca gratis sau este nevoit sa plătească pentru aceasta, aplicați ile gratuite conțin de cele mai
multe ori reclame, acest ea fiind sursa de venit a aplicației.
2.1.2 . Dezvoltare
Android este dezvoltat î n privat de către Google pâ nă cand ultimele modificări sunt
testate și sunt gata să fie lansate , atunci codul este facut public . Codul sursă va rula nemodificat
doar pe puține dintre dispozitivele de pe piață , de obicei cele din familia Nexus . Codul sursă este
modificat de cei mai mulți producători de telefoane mobile pentru a avea o interfață diferită de
cea a concurenței , adăugâ nd și imbunătăți ri. Google obișnuiește să lanseze o actualizare majoră o
data la 6 -9 luni , procesul de actualizare al di spozitivelor fiind mai lent decât î n cazul sistemului
de operare competitor dezvolta t de Apple IOS, principala cauză fiind modificare a codului sursă
de către producătorii de telefoane.
Capitolul 2. Sistem și tehnologii folosite
7
Procesul de actualizare necesită doar o conexiune la internet, întreg procesul fiind cuprins
în sistem ul de operare și fiind comp let automat, utilizatorului nu îi mai rămâne decât să iși dea
acordul că doreșt e ca procedura de actualizare să inceapă. Procesul lent de actualizare a fost
criticat î n numeroase rânduri de consumatori , acuzând firmele producătoare de dispozitive
mobile că incearcă prin acest proces lent să îi oblige pe consumatori să iși cumpere dispozitive
noi c are vin din fabrică actualizate. Google a luat măsuri modularizând mai m ult sistemul de
operare astfel încât unele componente să poată fi actualizate prin inte rmediul magazinului
Google Play . Pentru a face posibil acest lucru au introdus Google Play Servi ces care a fost
instalat pe aproape toate disp ozitivele de la versiunea 2.2 pâ nă în prezent. Prin intermediul
acestui serviciu , Google va putea actualiza sistemul folosind Google Play.
În figura 1 sunt prezentate pr incipalele versiuni de Android împre una cu un grafic care
evidențiază distribuția versiunilor printre dispozitivele mobile , versiune a curentă de Android
fiind Android 6.0 Marshmallow .
Figura 1 Sursa http://developer. Andr oid.com/about/dashboards/index.html
Capitolul 2. Sistem și tehnologii folosite
8
2.1.3 . Licența Android
Codul sursă Android este open source și este fă cut public la fiecare lansare de versiune de
către Google. API-ul Android , mediul de dezvoltare, accesul la d ocumenție și multe alte facilită ți
sunt oferite gratis de către Google . Astfel, pentru a dezvolta aplicații Android nu va trebui să
plătești absolut nimic. Dezvolta torul este cel care hotărăște prețul final al aplicației create de el.
Pentru lucrarea de față am folosit î mpreună cu SDK Android și Mifare Advanced SDK pentru
comunicarea dintre telefon și cardul NFC acest pachet vine la un preț d e 100$ pentru 1000 de
aplicații , pentr u aplicația de față Mifare a oferit SDK -ul gratuit pentru scopuri educaționale ,
scopul acestei luc rări fiind să arate capabilităț ile tehnologiei NFC . Aceast ă lucrare va fi făcută
publică după prezentare iar codul sursă al aplicației va putea fi descărcat de pe pl atforma GitHub.
2.2. Near Field Communication ( NFC )
Near field communication (comunicare în câmp apropiat) reprezintă un set de protocoale
de comunicare prin care se face posibilă interacțiunea între două dispozitive electronice, de
regulă unul dintre ele fiind un telefon mobil. Pentru a putea comunica cele 2 dispozitive trebuie
să se afle la o distanță de cel mult 10 cm unul față de celălalt. Transferul de da te se realizează
aprope instant, viteza de transfer conform protocolului fiind între 106-424 kbit/s.
Standardul NFC are la baza tehnologia radio -frequency identification ( RFID ) care
permite dispozitivelor c ompatibile alimentate la o sursă de energie să comunice cu dispozitive
pasive ( fară sursă de energie) prin intermediul undelor radio. Tehnologia RFID este utilizată
pentru identificarea produselor, urmărirea acestora, pentru urmărirea animalelor de compan ie sau
pentru autentificare. NFC aduce imbunătațiri acestei tehnologii , dispunând de 3 moduri de
funcționare complet independente , fiecare dispozitiv capabil integral NFC are posibilitatea sa
lucreze în aceste 3 moduri :
NFC card emulation – permite dispozitivelor NFC ( ex telefonele mobile ) să se
comporte ca un card inteligent și astfel se pot efectua plăți sau valida bilete prin
intermediul telefonului, eliminând necesitatea cardului.
Capitolul 2. Sistem și tehnologii folosite
9
NFC read/write – în acest mod dispozi tivul NFC este capabil sa citească și să scrie pe
o etichetă, card NFC
NFC peer to peer – modul acesta permite schimbul de date între 2 dispozitive NFC ,
acestea pot schimba fișiere audio, video, foto sau diferite configurații , contacte
(tehnologia celor de la Samsung numită S Beam folosește acest mod prin care 2
telefone Samsung pot schimba contacte prin simpla atingere)
Etichetele NFC ( NFC tags ) sunt obiecte pasive(nu sunt conectate la o sursă de en ergie)
care stocheza informații , care pot fi citite și în unele cazuri s crise de către un dispozitiv NFC . De
obicei aceste obiecte au o memorie de stocare cuprinsă între 96 – 8192 bytes iar în mod normal
sunt blocate doar pentru citire, insă exista etichete care pot fi rescrise.
2.2.1 . Design NFC
NFC reprezintă un set de teh nologii wireless de rază scurtă , care comunica la o distanța
de 10 cm sau mai puțin și operează la o frecvență de 13.56 MHZ în formatul ISO/IEC 18000 -3 și
care poate transfera date la viteze cuprinse între 106- 424 kbit/s. NFC implică intodeauna un
inițiator și o destinație , inițiatorul generează activ un camp de unde radio care pot porni
dispozitivul țintă. Prin aceasta funcție dispozitivele pasive pot lua forme cât mai simple cum ar fi
stickere, etichete sau carduri. NFC peer-to-peer este posibil cand ambele dispozitive sunt
alimentate de o sursă de energie.
Etichetele NFC sunt de obicei deschise doar pentru citire, insă există și etichete c are
suportă rescrierea multiplă , un bun exemplu este eticheta Mifare Desfire EV1 . Ac easta este
principală etichet ă folosită pentru acest proiect , pe scurt aceasta eticheta suportă criptarea
conținutului (mai jos puteți găsi o secțiune dedicată acestei etichete în care prezint mai multe
detalii despre modul cum poate fi aceasta accesată și cum e ste criptat conținutul ). Toate
etichetele NFC pot veni codificate după specificațiile producatorilor sau pot fi codificate dupa
spcificațile NFC Forum.
Precum alte tehnologii pentru carduri de apropiere , NFC comunică folosind inductanța
magnetică dintre 2 antene localizate pe fiecare din tre dispozitiv e, formând un canal de transmisie
între cele două. Operează pe banda frecvența globală și nelicențiată ISM 13.57 MHZ. Teoretic
distanța de comunicare este de 20 de cm insă practic această distanță este de 10 cm. Vitezele
Capitolul 2. Sistem și tehnologii folosite
10
suportate sunt 106,2012 sau 424 kbit/s ( viteza de 848 kbit/s intâlnită pe unele dispozitive nu este
conformă cu standardul ISO/IEC 18092)
Exista doua moduri :
Pasiv – dispozitivul inițiator generează campul radio și dispozitivul țintă raspunde
modificând campul existent, în acest mod dispozitivul țintă se poate alimenta folosind campul
generat de către inițiator.
Activ – ambele dispozitive comunică prin generare alternativă de câmpuri . Un dispo zitiv
iși dezactivează campul în timp ce aș teaptă date , în acest mod ambele dispozitive sunt alimentate
de o sursă proprie de energie.
NFC folosește doua metode de codare pentru transferul de date. Dacă un dispozitiv activ
trimite date la viteza de 106 kbit/s , o codificare Miller modificată cu 100% modulare este
folosită. în alte cazuri este folosita codificarea Manchester cu o rată de modularizare de 10% .
Cu toate că raza de acțiune pentru utilizarea NFC este foarte mică , acesta nu asigura o
comunicație sigură . Ernst Haselsteiner și Klemens Breitfu ß au descris în anul 2006 posibile
atacuri de tipul man -in-the-middle pentru această tehnologie [5] . Cum aceast ă tehnică nu face
parte din standardul ISO , NFC nu oferă protecț ii impotriva ascultării canalului de comunicare.
Semnalul radio folosit pentru transferul de date se poate asculta folosind antene. Distanța de la
care un atacator poate asculta pe un canal radio depinde de foarte mulți parametri da r de obicei
este mai mică de 10 metri. De asemen ea ascultarea canalului este in flunțată de modul de
comunicare , un dispozitiv pasiv care nu iși generează singur campul radio este mult mai g reu de
ascultat decât cel activ . Un atacator în mod obșnuit se va afla între 1- 10 metri față de țintă [5].
Deoarece dispozitivele NFC implementeaza de obicei standardul ISO/IEC 14443 ,
atacurile “relay ” sunt fezabile. Pentru aceste tipuri de atacuri adversarul prime ște o cerere de la
un cititor NFC și o trimite mai departe către victima, atunci cand aceasta răsp unde , atacatorul
interceptează raspunsul și il folosește pretinzând ca el este deținătorul cardului. Acest tip de atac
poate fi implementat folosind doua telefone [6].
Capitolul 2. Sistem și tehnologii folosite
11
2.2.2 . Standardizare
Standardele NFC cuprind protocoalele de comunicare și formatul pentru schimbul de
date, acestea sunt bazate pe standardele existente RFID incluz ând ISO/IEC 14443 și FeliCa [7].
Standardele mai includ și ISO/IEC 18092 și cele definite de NFC Forum.
NFC este standardizat în ECMA -340 și ISO/IEC 18092. Aceste standarde s pecifica
schema de modula ție, codificarea, viteza de transfer și formatul cadrului pentru interfata radio .
Pe langă acestea se mai specifică schemele de inițializare și condițile necesar e pentru evitarea
coliziun ilor și protocolul de transport , incluzând a ctivarea protocolului și metodele pentru
schimbul de date. Interfața aeriană pentru NFC este standardizată in :
ISO/IEC 18092/ ECMA 340 Near Field Communication Interface and Protocol – 1 [8]
ISO/IEC 21481/ ECMA 352 Near Field Communication Interface and Protocol – 2 [9]
NFC incorporeaz ă o varietate de standarde inclusiv ISO/IEC 14443 Type A și Type B, și
FeliCa. NFC perm ite telefoanelor să comunice cu cititoarele existente pe piață , în modul “card
emulation” un dispozitiv NFC trebuie să transmită cel puți n un identificator către cititor. NFC
Forum a definit un format de date numit NFC Data Exchange Format (NDEF) care poate stoca și
transporta diferite obiecte cum ar fi obiecte de tip MIME sau documente scurte RTD ( ex URL ).
NFC Forum a ad augat pe langă a cest format și “Simple NDEF Exchange Protocol”
(SNEP) prin care se asigura transmiterea de mesaje între 2 dispozitive NFC .
NFC Forum e ste o asociație non -profit formată pe 18 Martie 2004 de către NXP
Semiconductors, Sony, și Nokia pentru a facilita utilizarea standardului NFC în comunicarile
wireless pentru piața de consumator . Aceasta asociație aduce constant imbunătățiri standardului
NFC și promoveaza implementarea acestei tehnologii pe cât mai multe dispozitive. în iunie 20 13
asociația avea în componență peste 190 de companii membre .
2.2.3 . Android , IOS și NFC
Prin lucrarea de față am dorit să extind funcționalitățile existente pe piață pentru această
tehnologie combinând un manager de parole și o etichetă NFC pentru a obț ine o autentificare
foarte rapidă și în același timp securizată.
Capitolul 2. Sistem și tehnologii folosite
12
La momentul la care scriu această lucrare , pe piața telefoanelor inteligente există 2
sisteme de operare majore și anume Android și IOS. în tabelul de mai jos sunt prezentate
principale sis teme de operare aflate pe piața și distribuția lor pe terminalele mobile .
Figura 2 Distribuția sistemelor de operare pentru telefoane mobile la nivel global .
Sursa Internation Data Corporation ( www.idc.com )
După cum se poate observa , platforma Android conduce detașat deținând 82.8 % din
piața telefoanelor mobile în al 2 sfert din anul 2015. Cu toate acestea sistemul IOS nu trebuie
neglijat el fiind majoritar pe piața în Statele Unite, Canada , Norvegia , Danemarca [10].
Am avut numeroase motive pentru a dezvolta aplicația doar pe terminalul Android ,
principalul motiv fiind API-ul oferit de Android pentru accesul la funcțile NFC , în vreme ce
telefoanele echipate cu IOS nu oferă sub nici o formă acces către funcțile NFC acesta fiind blocat
de către Apple și folosit doar pentru efectuarea de plăți prin serviciul Apple Pay . Pentru
dezvoltarea aplicației am folosit SDK Mifare deoarece suportul și funcțile standard din Android
în ceea ce priveste NFC se adre sau unei game lar gi de etichete , ofereau operațile de bază scriere
citire insă nu aveau posibilitatea diferențierii etichetelor și nu aveau funcți pentru accesarea
etichetelor care suportă criptarea, acesta fiind un lucru specific intâlnit pentru un set restrâns de
etichet e. în cea ce priveste SDK oferit de Mifare , am dedicat un subcapitol mai jos în care explic
de ce am ales să folosesc acest SDK și ce oferă în plus față de librăriile Android .
Capitolul 2. Sistem și tehnologii folosite
13
Vânzările globale pentru telefoane au depășit 1.2 miliarde inregistrând o crestere de 20 %
în fiecare an . Se estimează că pană în anul 2018 3 din 4 telefoane mobile vor fi echipate cu NFC .
Figura 3 Grafic cu numărul telefoanelor mobile echipate cu NFC sursa www.mifare.net
2.3. Tipuri de etichete NFC
Unul din elementele cheie pentru tehnologia NFC este comunicația între un dispozitiv și
o eticheta NFC aceasta din urmă fiind un element pasiv (fară a fi alimentată direct la o sursă de
energie ). Aceasta funcție permite folosirea cât mai simplă a tehnolo giei în locuri publice, cum ar
fi stații de metrou , cinema, supermarket . în prezent etichetele NFC sunt fabricate în număr mare
și distribuite pe intreg globul , tehnologia se dezvoltă rapid și nu va trece mult timp pană când o
vom folosi zilnic.
Din cauz a numărului mare de producători trebuie sa fac precizare că etichetele NFC nu
depind de producător pentru comunicare cu alte dispozitive.
Etichetele NFC sunt elemente pasive folosite pentru comunicarea cu alte dispozitive
active (de ex. telefone mobile ) . Scopul acestor etichete este de cele mai multe ori sa trasmită o
informație. E le pot fi gasite de exemplu în postere inteligente prin care utilizatorul poate
Capitolul 2. Sistem și tehnologii folosite
14
interacționa apropiind telefonul mobile de zona marcată cu logo -ul NFC de pe poster, în
momentul acela un URL este transmis către telefon. Fiind elemente pasive, acestea se activeaza
primind un semnal din partea dispozitivelor active, acestea sunt cele care genereaza campul de
unde radio iar elementele pasive se folosesc de energia câmpului pentru a t ransmite informații .
Exista 4 tipuri de bază pentru etichetele NFC definite pană în prezent. Acestea sunt
numerotate de la 1 pană la 4 și fiecare are un format diferit și o capacitate diferită. Aceste tipuri
sunt bazate pe standardul internațional ISO 144 43 Tipul A și B și pe Sony FeliCa care este
conform cu standardul ISO 18092
Etichete de tipul 1: Este cel mai simplu tip de etichetă , se bazeză pe standardul ISO
14443A . Aceste eti chete pot fi citite și rescrise , utilizatorul având opțiunea de a face
cardu rile exc lusiv pentru citire (read -only) . Memoria disponibilă pe aceste carduri este
de 96 de octeți fiind suficienți pentru scrierea unui URL sau pentru transmiterea
fișierelor de mărime mică. Această memorie se poate extinde până la 2 kiloocteți. Viteza
de transfer pentru acest tip de card este de 106 kbit/s , fiind cel mai simplu tip de etichetă
NFC și prețul acestuia este foarte scăzut.
Etichete de tipul 2 : și aceste etichete imp lementează standardul ISO14443A , se pot
rescrie și pot fi blocate în modul read-only de către utilizator. Aceste etichete vin cu o
memorie de 48 octeți având posibilitatea sa fie extinse pana la 2kiloocteți. Viteza de
transfer este de 106 kbit/s.
Etichetele de tipul 3: sunt bazate pe sistemul Sony FeliCa. în prezent au o memorie de 2
kiloocte ți și viteza de transfer este de 212 kbit/s . Aceste tipuri de etichete se pretează
pentru aplicațile mai complexe și de aceea costul de fabricație este mai mare .
Etichetele de tipul 4 : sunt definite conform standardului ISO 14443 A și B. Aceste
etichete sunt pre -configurate din fabrică și pot să fie citite, rescrise sau blocate doar
pentru citire. Au o capacitate de pană la 32 kiloocteți și viteze de transfer între 106 – 424
kbit/s.
Dupa cum se poatea observa etichetele de tipul 1 și 2 diferă foarte mult față de cele de
tipul 3, 4 și de aceea este puțin probabil ca ele să se intersecteze în aplicații. Etichetele de tipul 3
și 4 sunt etichete cu speficații superioare celor de tipul 1 și 2 și de aceea prețul acestor etichete
este semnifica tiv mai mare.
Capitolul 2. Sistem și tehnologii folosite
15
In lucrarea de față am folosit eticheta Mifare DesFire EV1 definită c a fiind o etichetă de
tipul 4 , suportă operațiuni complexe cum ar fi autentificare pentru vizualizarea conținutului.
Specificațile și modul de funcționare ale acestei etic hete sunt prezentate mai jos.
2.3.1 . Eticheta Mifare Desfire Ev1
Mifare Desfire Ev1 este ideală pentru aplicați ile care au nevoie securitate și folosesc
tehnologia NFC . Aceste etichete le intâlnim în aplicații precum cele de transport în comun, cele
pentru access s au cele pentru plăți electronice .
Am ales să folosesc aceasta etichetă pentru aplicația mobilă deoarece aveam nevoie de un
suport pentru NFC sigur, care să suporte autentificarea și care să imi garanteze integritatea
datelor. Acest tip de e tichetă este utilizată pe pitață și pană în prezent nu au fost gasite metode
prin care conținutul sa fie accesat de persoane neautorizate, cea ce inseamnă ca putem să o
considerăm sigură din punct de vedere al conținutului. Respectă toate cerințele pentru o
comunicare sigură și rapidă, are o memorie flexibilă fiind disponibilă în 3 variante( 2 kB, 4 kB și
8 kB ) și oferă interoperabilitate cu sistemele existente.
Au la dispoziție un sistem de recuperare inclus și dispun de 3 tipuri de autentificare,
etiche tele Mifare Desfire Ev1 pot avea pană la 28 de aplicații diferite pe fiecare etichetă , iar
fiecare din aceste aplicați i poate stoca pană la 32 de fisiere . Mărimea fiecă rui fișier este definită
la cre area acestuia .
Principala caracteristică a acestui card este definită în numele lui , “Desfire” : Des indică
nivelul ridicat de securitate folosind 3DES sau AES criptare hardware pentru transmisia
securizată de date și “Fire” provine de la viteza foarte mare de transmitere de date (pană la 848
kbit/s ), t oate aceste caracteristici fiind superioare față de majoritatea etichetelor existente pe
piață . Mifare Desfire Ev1 aduce foarte multe beneficii pentru utilizatorul final, acesta poate să
folosescă un singur card pentru a accesa mai multe aplicații diferite, cu un singur card de
exemplu poate acesa o aplicații de bilete electronice și în același timp poate plăti la un automat
de suc .
Capitolul 2. Sistem și tehnologii folosite
16
Mifare DesFire Ev1 oferă un echilibru foarte bun între viteză , performantă și cost. Acesta
poate veni în diferite forme de la stic kere, brelocuri, postere inteligente pană la carduri plasticate ,
de asemenea este compatibil cu cititoarele Mifare existente pe piață.
Interfața frecventei radio :
Element pasiv nu are nevoie de o sursă proprie de energie , se incarcă din campul
radio gene rat de dispozitivul activ
Distanța de operare 10 cm
Frecvența de operare 13.56 MHz
Viteza de transfer 106, 212, 424 și 848 kbit/s
Sistem anticoliziune
Identificator unic pentru fiecare etichetă format din 7 octeți și opțiune pentru
identificator aleator
Utilizează protocolul ISO/IEC 14443
Memorie non volatilă :
2 kB , 4 kB sau 8 kB de memorie non volatilă
Retenția datelor de 10 ani
Anduranța la scriere : 500 000 de cicluri
Securitate :
Număr de serie unic format din 7 octeți
Id opțional aleator pentru creșterea securității
Autentificare mutuală în 3 pași
1 cheie principala pe card și pană la 14 chei pe aplicație
Hardware DES utilizând chei de 56/112/168 biți având sistem de versionare
pentru chei și autentificarea datelor folosind 8 byte CMAC
Hardware AES folosind chei de 128 de biți având sistem de versionare pentru
chei și autentificarea datelor folosind 8 byte CMAC
Criptarea datelor pe canalul radio
Autentificare la nivel de aplicație
Capitolul 2. Sistem și tehnologii folosite
17
Sistem de fisiere securizat
Descrierea funcțională
Eticheta di spune de un mecanism inteligent anti -coliziuni prin care se pot detecta
simultan mai multe carduri DesFire și pot fi interpretate separat. Sistemul anti -coliziuni
selectează fiecare card DesFire și se asigură că transferul de date se efectuază corect fară ca
acestea sa fie corupte de un alt card aflat în câmpul radio .
Memoria etichetelor DesFire Ev1 permite stocarea a 28 de aplicații diferite pe o singură
etichetă, fiecare din aceste aplicații poate conține pană la 32 de fișiere . Fiecare aplicație este
reprezentată printr -un identificator numit Application Identifier (AID).
Există 5 tipuri de fișiere care sunt suportate :
Fișiere standard de date
Fișiere de backup
Fișiere valoare cu backup
Fișiere cu inregistrări liniare cu backup
Fișiere cu inregistrări ciclice cu backup
Identificatorul unic ( UID) este fix . Fiind scris în faza de producție acesta nu poate fi
modificat. Acesta poate fi folosit pentru a diversifi ca cheia pentru fiecare bilet ( pentru aplicație
de bilete electronice ), identificatorul contrib uie și la mecanismul anti -coliziune și poate mări
securitate cheii primare.
In figura 4 este prezentat ă diversificarea cheii folosind identificatorul unic
Capitolul 2. Sistem și tehnologii folosite
18
Figura 4 Diversificarea cheii folosind UID și algoritmul de criptare DES
Inainte de a se transmite datele o autentificare mutală în trei pași se poate efectua. Acesta
autentificare va avea loc între eticheta DesFire Ev1 și inițiatorul campului radio. Toate
comenziile de access la card vor fi blocate pană autentificarea nu se va finaliza .
In figura 5 este prezentată diagrama bloc a etichetei Mifare Desfire Ev1 :
Figura 5 Schema bloc a etichetei Mifare Desfire Ev1
Capitolul 2. Sistem și tehnologii folosite
19
2.3.2 . Algoritmul de criptare DES și Triple DES
Eticheta Mifare DesFire Ev1 folosește pentru cr iptarea datelor algoritmul 3DES , în
continuare voi prezenta pe scurt acest algoritm și cum este acesta aplicat de către etichetă .
Data Encryption Standard este un algoritm de criptare a datelor cu cheie simetric ă. A
influențat criptografia modernă în lumea academică , dezvoltat de către I BM la inceputul anilor
1970 , acesta a fost adaugat pe lista standardelor de către National Bureau of Standards în 1976
după o consultare cu National Security Agency. Astăzi algortmul este considerat a fi nesigur , din
cauza utilizării unei chei prea mici ( 56 biți ) și o versiunea modificată a acestuia numită Triple
Des (3DES) i -a luat locul. în cazul lucrării de față am folosit pentru criptarea conținutului
algoritmul 3DES.
Algor itmul aplică DES de trei ori pentru fiecare bloc de date. Acest algoritm are n evoie
de 3 chei pentru a cripta datele astfel există 3 versiuni disponibile :
Opțiunea 1 : toate cele 3 chei sunt diferite ( 3 x 56 biți) , acesta opțiune este cea mai
puternică dintre cele 3
Opțiunea 2 : cheia 1 și cheia 2 sunt diferite iar cheia 3 este egală cu cheia 1, aceasta oferă
o securitate mai slabă din cauza mărimii cheii ( 2 x 56 biți )
Opțiunea 3 : toate cele 3 chei sunt indentice , acestă opțiune este echivalenta cu criptarea
prin DES , oferă compatibilitat e cu DES insă este considerată nesigură și nu mai este
recomandată de National Institute of S tandar ds and Technology (NIST) , nu este inclus în
standardul ISO/IEC 18033 -3
Cel mai bun atac cunoscut asupra algoritmului 3Des folosit cu opțiunea 1 de chei
necesită 232 texte știute , 2113 pași, 290 criptări DES , și 288 memorie [11]. Aceata nu este
practicabil ă și NIST consideră opțiunea 1 a fi sigură până în anul 2030 [12],
Algoritmul Triple Des este utilizat în plățile electronice și dezvoltarea
standardelor se bazează pe el . Microsoft OneNote [13], Microsoft Outlook 2007 [14] și
Microsoft System Center Configuration Manager 2012 [15] folosesc 3 Des pentru a
proteja parolele și datele de sistem .
Capitolul 2. Sistem și tehnologii folosite
20
2.4. Mifare SDK
Pentru comunicare a dintre Android și etichetele Mifare Desfire Ev1 am ales să folosesc
Mifare SDK (Software Development Kit) , acest SDK este dezvoltat de compania Mifare , aceeași
companie care produce și etichetele NFC . Alternativa pentru această soluție ar fi fost să folosesc
clasa Android .NFC .tech.IsoDep iar comenzile către card trebuia u să fie în format hexazecimal și
pentru asta aveam nevoie de catalogul tehnic al cardului, specificațiile standardelor ,
implement area criptării toatea acestea ar fi durat și cel mai probabil nu aș fi ajuns la nivelul
librăriei Mifare. De aceea am decis să folosesc ceva deja implementat și testat, scopul acestei
lucrări fiind demonstrarea capacității tehnologiei NFC în autentificarea aplicațiilor .
Mifare Sdk este o librărie care pune la dispoziție numeroase funcții pentru diferite tipuri
de etichete NFC , printre care se află și cea folosită pentru aceasta lucrare (Mifare Desfire Ev1).
Aceste funcții se regasesc în standardele pe care le implementează acestea etichete . Mifare SDK
este ideal pentru a construi aplicații sigure , scalabile și fară a mai pierde timpul cu
implementarea comunicației între NFC și telefonul mobil. Desigur și Android oferă suport în
API-ul lor pentru comunicarea cu etichetele NFC insă acel API este unul generalist , tratând toate
etichetele în același mod. Cu Mifare SDK fiecare card poate fi tratat separat, dispunând de
metode specifice pentru fiecare etichetă NFC . Timpul de programare este scurtat, sau poate fi
folosit pentru a dezvolta capacități noi pentru aplicație.
Mifare SDK este disponibil în 2 variante :
Versiunea LITE , aceast ă versiune oferă un API redus pentru utilizări simple cum
ar fi scriere/citire și operații simple NDEF, această versiunea este grat is.
Versiunea Advanced oferă acces complet la API pentru toate cardurile MIFARE
și suportă toate operațiile precum criptarea și stocarea cheilor pe etichete. Aceasta
versiune trebuie plătită , prețul fiind pe numarul de utilizatori care folosesc
aplicația c e conține SDK -ul. Există 2 pachete puse în vânzare de MIFARE pentru
1000 de utilizatori costă 99 Euro și pentru 5000 de utilizatori 399 Euro . Am
obținut acest SDK pentru scopuri educaționale urmând să prezint a plicația și celor
de la MIFARE.
Capitolul 2. Sistem și tehnologii folosite
21
In figura 6 este reprezentată diferența dintre cele 2 tipuri de SDK în funcție de
accesul la diferite etichete NFC
Figura 6 Diferența dintre cele 2 variante de SDK, sursa www.mifare.net
Avantajele utilizării Mifare SDK :
Scute ști timp pentru implementarea comunicației NFC
Suport pentru multiple etichete NFC și posibiliatea de a diferenția etichetele
Documentație pentru librărie
Support pentru utilizarea librăriei pe forumul Mifare
Actualizări periodice
Aplicație exemplu pentru familiarizarea cu librăria
Dezavantajele utilizării Mifare SDK :
Pentru folosirea unor funcții mai avansate trebuie cumparată versiunea Advanced
Adaugarea librăriei în Android Studio se realizează greu
Documentația , cu toate ca este foarte mare , nu contine multe metode care necesită
explicații suplimentare
Capitolul 3. Prezentarea Aplicației
22
Capitolul 3. Prezentarea Aplicației
3.1. Scopul aplicației
Aplicația prezentată în această lucr are este un manager de parole, aces ta facilitează
accesul la diferite aplicații web fară ca utilizatorul sa fie nevoit să rețină parolele pentru conturi .
Prin intermediul aplicației utilizatorul va putea scrie pe etichetele NFC credențialele pentru
diferite aplicații web , după care va cripta conținutul cardului cu o cheie aleasă de acesta (numar
pin). Astfel el va putea accesa aplicațiile web prin intermediul etichetei NFC . în momenul în care
va apropia o etichetă NFC de un telefon, aplicația va porni și utilizatorul va introduce numărul
pin, după autentificare o listă de aplicații la care a setat credențialele va apărea pe ecran, el va
putea alege în ce aplicație dorește să se autentifice.
Scopul acestia este să faciliteze accesul la diferite aplicații , eliminând nevoia reținerii
perechilor de parole și nume utilizator . Numărul crescut de aplicații pe care le fol osim în viața de
zi cu zi și nevoia parolelor puternice pe care suntem obligați sa le ținem minte , reprezinta o
problema iar această aplicație incearcă să o rezolve fară a compromite integritatea utilizatorului.
Această aplicație poate fi folosită de orice telefon care dispune de modulul NFC și care
rulează pe sistemul de operare Android . Ea poate fi folosită atât de persoana care deține telefonul
pentru a se loga sau poate fi folosită de alte persoane care doresc să se autentifice pe un telefon
străin .
Capitolul 3. Prezentarea Aplicației
23
3.2 Prezentarea interfețe lor
Pentru dezvoltarea aplicației am folosit ca mediul de dezvoltare Android Studio, limbajul
utilizat fiind Java . Aplicația este dezvoltată exclusiv pentru platforma Android. Telefonul folosi t
pentru programar e este Samsung Galaxy Note 4 insă puteam folosi orice telefon Android care
dispunea de o antenă NFC.
Când utilizatorul va intra în aplicație , prima pagină pe care o va întâlni este cea din
figura 7.
Figura 7 Pagina de start din aplicație
Această pagină este compusă dintr -un mesaj și o imagine descriptivă, mesajul are rolul de
a ghida utilizatorul pentru acțiunea care urmează acesta să o facă iar imaginea oferă un indiciu
despre poziționarea antenei NFC, trebuie menționat că prozitionarea antenelor NFC este aleasă
Capitolul 3. Prezentarea Aplicației
24
de către producatorul telefonului și aceasta diferă de la un model la altul . în acest ecran
utilizatorul va apropia eticheta NFC de spatele telefonului după care ecranul pentru au tentificarea
cardului va fi afiș at. Imaginea din acest ecran face parte din materialele grafice oferite gratis de
către NFC Forum.
În momentul în care aplicația este deschisă se verifică daca modulul NFC este activat.
Dacă acesta este activ pagina de pornire va fi cea p rezentată ulterior în fig. 7, în caz contrar un
dialog de atenționare va apărea pe ecran de unde utilizatorul va putea naviga către setările
telefonului pentru a activa modulul. Dialogul de atenționare este prezentat în figura 8 a , iar în
figura 8 b este p rezentat meniul la care utilizatorul va ajunge după apăsarea butonului “Setări”.
Figura 8 a Dialogul pentru activarea modulului NFC Figuara 8 b Meniul pentru activarea modulului NFC
După activarea modulului NFC, cand utilizatorul revine la aplicația NFC dialogul va
dispărea , fiind urmat de un mesaj prin care se confirmă că modulul NFC a fost activat .
Capitolul 3. Prezentarea Aplicației
25
In momentul în care utilizatoru l va apropia cardul de telefon, și acesta va fi detectat ,
dialogul din figura 9 va fi afișat și acesta va putea introduce codul pin folosit la criptarea
conținutului etichetei.
Figur a 9a Dialogul de autentificare , modul ascundere pin Figur a 9b Dialogul de autentificare , modul vizualizare pin
Se poate observa în figurile 9a și 9 b că dialogul de autentificare dispune de 2 moduri de
vizualizare al numărului pin introdus. Setarea predefinită pentru acest dialog este modul
ascundere pin , însă atunci când utilizatorul do rește să verifice numărul pin introdus poate act iva
modul vizualizare număr pin prin apasărea icoanei din dreptul căsuței de text. De asemenea sunt
prezente în zona inferioară a dialogului 2 butoane complementare unul pentru autentificare iar
celălalt pentru anulare. în momentul în care utilizatorul a completat numărul pin și a apăsat pe
butonul de Autentificare acesta este redirecționat către pagina de conținut al eitchetei (in cazul în
care acesta pornește de la pagina principală) . Acest dialog mai poate apărea în momentul în care
conținutul etichetei este schimbat (sunt adăugate, modificate sau șterse credentiale ).
Capitolul 3. Prez entarea Aplicației
26
In figurile 10 a și 10 b sunt prezentate interfețele pentru conținutul cardului , acestea sunt
două la număr (Site -uri web și mesaje ). Interfața ce conține credențialele pentru site -uri web este
afișată prima, utilizatorul poate să treacă la interfața ce conține mesajele prin glisarea cu degetul
pe ecran la dreapta, respectiv la stânga pentru a reveni.
Figura 10 a Credențialele conținute pe etichetă Figura 10 b Mesa jele conținute pe etichetă
Se poate observa în figura 10 a ecranul pentru credenț ialele salvate pe eticheta NFC .
Pentru fiecare dintre acestea există 3 icoane de acțiune:
Aceasta este icoane de editare , odata apăsată aceasta va deschide ecranul de editare unde
utilizatorul poate schimba parola pentru aplicația aleasă.
Prin această icoană utilizatorul poate sterge credentialele. Atunci când această icoană este
apăsată dialogul pentru autentificarea etichete i va apărea. D upă ce utilizatorul confirmă codul pin
credențialele vor fi șterse de pe etichetă.
Capitolul 3. Prezentarea Aplicației
27
Această icoană va trimite utilizatorul către pagina de autentificare a aplicației selectate
unde câmpurile “ nume utilizator ” și “parol ă” vor fi completate automat, ace eași acțiune va avea
loc și dacă utilizatorul va apăsa pe numele aplicației aflat în dreapta logo -ului.
Interfața care prezintă mesajele af late pe card se află în figura 10 b, și în această interfață
mesajele sunt dispuse sub formă de listă insă mai regăsim doar icoana de stergere m esaj, care va
avea același comportament ca și în cazul credențialelor. Accesarea mesajelor se face prin
apăsarea pe numele Subiectului .
In cazul în care nu sunt prezente mesaje sau credențiale , va apărea o pagină de stare goală
(emp ty state) prezentată în figura 10 c.
Figura 10 c Pagină afișată dacă nu au fost gasite credențiale sau mesaje
In pagina “Conținut card” , indiferent dacă avem informații pe etichetă sau aceasta este goală ,
vom regăsi în partea de jos un buton (Floating Action Button) care prin apăsare va deschide un
meniu ce va conține 2 opțiuni :
Capitolul 3. Prezentarea Aplicației
28
Adaugă credențiale (optiune care va deschide interfața de adaugare credentiale
perezentată în fig 12 )
Adaugă mesaj ( opțiune care va deschide interfața de adaugare credențiale prezentată în
fig. 14)
Figure 1 1 Meniu ce conține opțiuni pentru adaugarea de credențiale sau mesaje
Pentru a putea adăuga credențiale este disponibiliă pagina “Adaugă site web” , unde
utilizatorul are la dispoziție o listă de aplicații predefinite insă el poate alege și introducerea
manuală a aplicațiilor. Pentru aplicațiile predefinite , funcția de autocomplete (câmpurile nume
utilizator și parolă ) este testată și funcționează . Dacă utilizatorul alege sa introducă manual URL –
ul către pagina de autentificare pentru aplicație , funcționalitatea de autocomplete nu poat e fi
garantat ă. Pentru acestă logică se generează un javascript prin care se caută în pagină câmpurile
dupa id -urile acestoare sau după clasele css, când URL este introdus de utilizator se generează un
javascript ge neric care incearcă sa acopere o plajă cât mai mare de aplicații web de aceea
funcționalitatea n u poate fi garantată.
Capitolul 3. Prezentarea Aplicației
29
In fig. 12 este prezentată pagina pentru selectarea aplicațiilor. Acestă intefață oferă o listă
de aplicații disponibile pentru a aduga credențiale.
Figura 1 2 Pagina de selectare a aplicației
Pentru a selecta aplicația la care urmează să se seteze credențialele se va apasă pe icoana
plus, utilizatorul va fi redirecționat automat către pagina de “Setare credențiale” . La aceas tă
pagină se poate ajunge fie din meniul lateral al aplicației , selectând “Adauga site” sau din meniul
generat de butonul din pagina conținut card selectând “Adauga credentiale”.
Capitolul 3. Prezentarea Aplicației
30
În figurile 13 a și 13 b este prezentată pagina pentru adaugarea credențialelor, pagin ă care
este disponibilă în 2 moduri în funcție de alegerea facută precedent de către utilizator.
Figura 1 3a Interfața adaugare credențiale pentru Figura 1 3b Interfața adaugare credențiale pentru
aplicații predefinite aplicații alese de utilizator
In figura 13 a este prezentată interfața de adaugare credențiale pentru aplicațiile
predefinite, aflate în lista din pagina precedentă . Singura diferență față de interfața din figura
13b este absența campului URL , acesta fiind setat de către aplicația NFC . Pentru a putea accesa
interfața din figura 13 b, utilizatorul trebuie sa acceseze , din pagina de selectare aplicații ,
elementul “Adaugar e site web “ , atunci el trebuie sa scrie URL -ul corespunzător pentru pagina
de logare a aplicației pentru care dorește să seteze credențialele . Scriere pe etichetă se face prin
completarea câmpurilor urmate de apăsarea pe butonul “Scrie pe card ”.
Capitolul 3. Prezentarea Aplicației
31
Pe langă setarea de credențiale pentru diverse aplicații web , utilizatorul are opțiunea de a
scrie mesaje pe etichetă, accesul la aceste mesaje fiind , la fel ca și în cazul credențialelor ,
securizat. Pagina pentru scrierea mesajelor este prezentată în fig. 1 4.
Figure 1 1 Pagina pentru screrea unui mesaj pe eticheta NFC
Această pagină poate fi accesată din meniul principal , selectând “Adaugă mesaj”, sau din
meniul butonului din pagina “Con ținu Card ” selectând opțiunea cu ace lași nume. Pentru a scrie
un mesaj pe cardul NFC , utilizatorul va trebui sa completeze câmpurile pentru subiect și mesaj
după care se apese pe butonul “ Scrie pe card ”.
Capitolul 3. Prezentarea Aplicației
32
Aplicația NFC vine intregrată cu un Browser care are la bază clasa WebView prin
intermediul căreia se pot vizualiza pagini web. Acest browser intergrat dis pune de câmp de
cautare care va folosi motorul de cautare Goog le pentru a afișa rezultatele gă site. Pagina Brow ser
este prezentată în figura 15 .
Figure 1 2 Browserul integrat în aplicația NFC
Acest browser este folosit atunci când utili zatorul alege să se autentifice în aplicațiile
setate dar poate fi folosit și atunci cand acesta dorește o simplă cautare pe Google . Este un
browser cu funcționalități reduse , scopul principal al acestuia fiind servirea paginilor pentru
aplicațiile setate pe cardul NFC. De menționat este și faptul că browserul nu reține nici o
informație despre paginile web des chise, nu stochează nici un cookie, nu reține istoricul,
deschiderea unei pagini în acest browser este similară cu deschiderea unei pagini de tip
“incognito” în browser -ul Google Chrome. Aceste proprietăți oferă mai multă siguranță pentru
utilizator, elimi nând posibile atacuri care presupun furtul de cookie.
Capitolul 3 . Prezentarea Aplicației
33
Aplica ția NFC dispune de un meniu principal care oferă posibilitatea navigării între
diferite pagini. Acesta este situat lateral în partea stângă a ecranului și poate fi accesat în orice
moment prin si mpla glisare cu degetul din marginea stângă spre marginea dreaptă a ecranului.
Meniul este prezentat în fig. 16
Figura 16 Meniul principal al aplicației
Capitolul 3. Prezentarea Aplicației
34
3.3. Implementarea aplicației
3.3.1 . Implementarea generală
Aplicația a fost implementată în limbajul Java , folosind mediul de dezvoltare Android
Studio. Arhitectura folosită pentru aplicație este una bazată pe fragmente ( o singură activitate,
mai multe fragmente ), dar ce sunt activitățile și fragmentele în programarea Android .
Activitățile sunt lucruri pe care un utilizator le poate face, astfel aproape toate activitățile
vor comunica cu utilizatorul. Clasa Activity are grijă să creeze propria fereastră unde se pot
adauga elemente de interfață. De cele mai multe ori o activitate va reprezenta un ecran , o pagină ,
insă se pot compune pagini din mai multe activități.
Clasa Fragment a fost introdusă incepând cu vesiunea Honeycomb de Android , aceasta
fiind o bucată din interfață sau de logică atașată la activitate . Fragmentele au un comportament
asemănător cu activitățiile, ciclurile acestora de viață apelând aproximativ aceleași metode.
În figura 18 a și 18 b sunt prezentate ciclurile de viața ale fragmentelor și activităților.
Figur a 18a Ciclul de viață al unei activi tăți Figura 18 b Ciclul de viață al unui fragment
Capitolul 3. Prezentarea Aplicației
35
În aplicația dezvoltată am folosit o singură activitate principală, în care am inclus o serie
de fragmente, majoritatea dintre ele reprezentând o interfață pentru utilizator. în activitatea
principală se regăseș te meniul aplicației de tipul Navigation Drawer , când un element din meniu
este selectat , activitatea va face roo tarea către fragmentul corespunzător și il va afișa. Am ales să
folosesc paternul “ One-Activity -Multiple -Fragments ” deoare ce detectarea etichetei NFC se face
în interiorul activității și dacă aș fi ales să folosesc mai multe activități care modificau un singur
obiect ar fi fost dificilă comunicarea stării obiectului de -a lungul activităților. Fiecare interfață
din aplicație e ste un fragment, logica este impărțită între fragmente și activitate, dacă logica nu
interacționează cu eticheta NFC , aceasta se va găsi în fragmente, altfel aceasta se găsește în
activitate. Comunicarea între fragmente și activitate se face prin intermediul obiecte lor de tipul
BroadCastReceiver, acestea fiind inregist rate în activitatea principală .
Detectarea etichetei NFC se face în metoda onNewIntent aflată în activitatea principală.
în această metodă se detectează eticheta , insă pentru detectarea tipului de etichetă am folosit
SDK Mifare care pune la dispoziția programatorilor obiectul Nxp NFC Lib care dispune de
metoda filter prin care se pot filtra etichetele . Aplicația se baze ază pe un anumit tip de etichete
MifareDesfire E v1, etichetă aleasă din motive de securitate, de accea dacă utilizatorul va apropia
un alt tip de etichtă aplicația va afișa un mesaj de atenționare .
Eticheta Mifare Desfire Ev1 permite stocarea a 28 de aplicații, iar fiecare din aceste
aplicații pot ave a până la 32 de fișiere. în aplicația NFC dezvoltată am ales să salvez perechile de
credentiale în fișiere separate pe o aplicație internă a etichetei, creată la prima salvare de
credențiale . Formatul în care am salvat credențialele pe etichetă este de forma URL + set
caractere de diferențiere ( ^^^) + nume utilizator + ^^^ + hash -ul parolei rezultat în urma criptarii
cu algoritmul AES 256 bazat pe pinul cardului. După ce credențialele au fost salvate pe e tichtă
utilizatorul va putea accesa o aplicație în doar 3 pași :
Apropie etichta de telefon
Introduce pin -ul în dialogul de autentificare
Selecte ază aplicația pe care dorește să se autentifice
Capitolul 3. Prezentarea Aplicației
36
In fun cție de mă rimea de stocare a etichetei utilizatorul poate stoca până la 30 de perechi
de credențiale , ceea ce face ca aplicația să poată fi avantajoasă din acest punct de vedere.
Etichetele de acest tip costă între 1-3 USD și au o retenție a datelor de 10 ani.
Numărul pin pentru etichetă se va seta de către uti lizator la prima folosire a etichetei ,
urmând să poată fi schimbat ulterior. Acesta trebuie să aibe o lungime între 4-12 cifre. Aplicația
are și o metoda de evitare a atacurilor de tipul brute force , astfel că în momentul în care
utilizatorul va introduce greșit de 3 ori la rand pin -ul pentru etichetă aplicația se va inchide, și el
va fi nevoit sa între din nou în ea pentru a incerca.
Sdk-ul Mifare oferă un set de funcții pentru manipularea etichetelor NFC . Pentru
etichetele de tipul Mifare Desfire Ev1 oferă funcții de criptarea a etichetei, de autentificare, de
formatare, de schimbarea ch eii de criptare, crea re aplicațiilor pe etichtă, suportă formatul NDEF
pentru scriere informațiilor pe etichetă. Ca și alternativă pentru ac est Sdk, ar fi fost rescrierea
funcț iilor consultând fișa de speficații a etichetei, accesând etichtea prin comenzi în format
hexadecimal.
Pe lângă sdk Mifare , în aplicație am folosit librăria pentru Floating action button oferită
de Clans.Acestă librărie este open source și oferă stiluri multiple și metode de personalizare
pentru Floating action button, buton care face parte din mediul Material Design.
În aplicația mea am incercat să refolosesc cât mai multe părți astfel puteam să evit
duplicarea codului, am ales să folosesc și diferite librării prin care am reușit sa adaug un plus
aplicației, am făcut aceste alegeri fiind ghidat de ideea construirii unui lucru inovativ folosind
componente existente pe piață.
3.3.2 . Implementarea în detaliu
In acest subcapitol se prezintă aspecte legate de programarea aplicației, cele mai
importante părți precum și codul sursă al acestora.
Pentru a putea folosi modulul NFC intr-o aplicație Android este necesar să introducem în
fisierul Android Manifest.xml următoarea permisiune:
< uses-permission Android :name=" Android .permission. NFC " />
Capitolul 3. Prezentarea Aplicației
37
Arhitectura aplicației se bazează pe fragmente, acestea sunt considerate diferite ecrane în
aplicație astfel pentru schimbarea acestora am creat o metodă care să f acă posibilă acestă
schimbare.
public void ChangeFragment(Fragment fragment) {
Log.i(nfcDebugTag , "Change fragment method" );
FragmentManager fm = getSupportFragmentManager();
if (fm.getBackStackEntryCount() == 0) {
android.support.v4.app.FragmentTransaction fragmentTransaction =
getSupportFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim. slide_left_animation ,
R.anim. slide_right_an imation, R.anim. slide_left_back_animation ,
R.anim. slide_right_back_animation );
fragmentTransaction.replace(R.id. FragmentContainer , fragment,
fragment.getClass().getName());
fragmentTransaction.addToBackStack(fragment.getClass().getName());
fragmentTransaction.commit();
} else {
int lengthStack = getSupportFragmentManager().getFragments().size();
Fragment lastFragment = getSupportFragmentManager().getFragments().get(lengthStack – 1);
boolean isFragmentLast = fragment.getClass().isInstance(lastFragment);
if (!isFragmentLast) {
android.support.v4.app.FragmentTransaction fragmentTransaction =
getSupportFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations( R.anim. slide_left_animation ,
R.anim. slide_right_animation , R.anim. slide_left_back_animation ,
R.anim. slide_right_back_animation );
fragmentTransaction.replace(R.id. FragmentContainer , fragment,
fragment.getClass().getName());
fragmentT ransaction.addToBackStack(fragment.getClass().getName());
fragmentTransaction.commit();
}
}
}
Secventa de cod 1 Implementarea metodei de schimbare a fragmentelor
În secventa de cod 1 se verifică dacă lis ta de fragmente este goală, dacă această condiție
este adevarată atunci se adaugă fragmentul în listă și acesta se afișază utilizatorului, dacă lista nu
este goală se verifică daca ultimul fragment din listă este diferit de cel care se dorește să fie
adăugat, daca acesta este diferit se adaugă fragmentul în listă și este afișat utilizatorului, dacă
ultimul fragment din listă este același cu cel care dorește să fie adăugat atunci nu se efectueză
nici o modificare asupra listei.
Pentru a putea folosi biblioteca Mifare este neces ară inregistrarea acesteia în metoda de
onCreatea din activitate , codul din secvența de cod numărul 2 exemplifică această procedură .
libInstance = NxpNFCLib.getInstance ();
libInstance .registerActivity( this, "secret_key ");
Secventa de cod 2 Inregistrarea bibliotecii in aplicație
Capitolul 3. Prezentarea Aplicației
38
În momentul în care cardul va fi utilizat pentru prima data, utilizatorul va fi nevoit să seteze
pinul pentru card. Atunci se va apela metoda din secventa de cod numărul 3 , unde se pot observa
urmatoarele funcții :
keyStore.formatKeyEntry – prin aceast ă functie se formateaza cheia în obiectul care
stochează chei pentru a putea adauga noua cheie
keyStore.setKey – se setează noua cheie generată pe baza numărului pin al utilizatorului.
Card.authenticate – metodă prin ca re se realizeza autentificarea
public AuthResponse AuthenticateOnDesfireFirstTime(String passwordCard) {
AuthResponse response = new AuthResponse();
if (card != null) {
try {
byte[] byteForDes = GetByteArrayForDesFire(passwordCard);
keyStore .formatKeyEntry( 5,
IKeyConstants.KeyType. KEYSTORE_KEY_TYPE_2K3DES );
keyStore .setKey( 5, (byte) 0,
IKeyConstants.KeyType. KEYSTORE_KEY_TYPE_2K3DES , byteForDes);
card.selectApplication( 0x00);
card.authenticate(DESFireEV1.AuthType. Native, 2, (byte) 0, 0,
(byte) 0, null);
card.changeKey( 1,2,(byte)0,5,(byte)0,DESFireEV1.KeyType. DES,
IKeyConstants. DIV_OPTION_NODIVERSIFICATION ,
IKeyConstants. DIV_OPTION_NODIVERSIFICATION ,null);
card.authenticate(DESFireEV1.AuthType. Native, 5, (byte) 0, 0,
(byte) 0, null);
keyStore .formatKeyEntry( 5,
IKeyConstants.KeyType. KEYSTORE_KEY_TYPE_2K3DES );
response.setIsValid( true);
return response;
} catch (IOException e) {
e.printStackTrace();
response.setIsValid( false);
response.setErrorMessage(e.getMessage());
} catch (SmartCardException e) {
e.printStackTrace();
response.setIsValid( false);
response.setErrorMessage(e.getMessage());
}
} else {
response.setErrorMessage( "Card not found" );
response.setIsValid( false);
return response;
}
return response;
}
Secvența de cod numarul 3 Functia de setare număr pin pentru cardul NFC
Capitolul 3. Prezentarea Aplicației
39
Metoda de scriere pe card este pr ezentată în secțiunea de cod 4 . Aceasta primeș te ca
parametru un obiect de tipul WebsiteCredential, obiect ce contine proprietățiile pentru nume
utilizator, parola și URL aplicație. În metoda prezentată mai jos se identifică numă rul ultimului
fisier scris pe eticheta Des fire după care se crează un fișier î n care este scris conținutul o biectului
WebsiteCredential. Operația de scrie re se realizeaza prin comanda card.writeData.
private void WriteCredentials(Website Credential credentials) throws IOException,
SmartCardException, GeneralSecurityException {
if (card != null) {
byte[] filesIdBytes = new byte [0];
filesIdBytes = card.getFileIDs();
int lastIndexFromFiles = 0;
if (filesIdBytes. length != 0) {
for (int i = 0; i < filesIdBytes. length; i++) {
if (filesIdBytes[i] > lastIndexFromFiles) {
lastIndexFromFiles = filesIdBytes[i];
}
}
}
int indexForWrite = lastIndexFromFiles + 1;
String textForCard = crede ntials.getUrl() + "%%%%%" +
credentials.getUserName() + "%%%%%" + credentials.getPassword();
byte[] textBytes = textForCard.getBytes();
card.createFile(indexForWrite, new DESFireFile.StdDataFileSettings(
DESFireEV1. CommunicationType. Plain, 0, 0, 0, 0,
textBytes. length));
card.writeData(indexForWrite, 0, textBytes);
}
}
Secvența de cod nr 4 Scrierea datelor pe eticheta NFC
3.4. Aplicații existente
Pe piața aplicaților mobile există mulți manageri de parole . Fiind o concurență strânsă,
foarte mulți dintre aceștia oferă funcționalități precum salvarea parolelor prin diferite tipuri de
criptări, completarea automată a paginilor web cu credențialele utilizatorului, salvarea notițelor
securizat e, salvarea cardurilor bancare, sincronizarea cu diferite conturi cloud (Dropbox, Google
Drive, OneDrive). Mai jos voi face o scurtă prezentarea pentru cei mai importanți 5 manageri de
parole pentru platforma Android .
1. 1Password
Capit olul 3. Prezentarea Aplicației
40
Acest manager de parole a fo st complet reproiectat în anul 2014 pentru a fi compatibil cu
telefoanele Android , s-au realizat schimbări drastice de design și funcționalitate astfel că acum
utilizatorul are acces foarte rapid la datele sale. 1Password folosește pentru criptarea datelor
algoritmul AES -256 biți , managerul oferă posibilitatea criptării parolelor, informații despre plăți
online, notițe securizate și dispune de un browser integrat. Pentru mai multe funcționalități
utilizatorul va trebui să plătească suma de 8 USD o singură d ată.
2. LastPass
LastPass este unul din liderii managerelor de parole de pe piață, versiunea pentru Android
beneficiază de o interfață modernă aliniată cu standardele Material Design, fiind foarte intuitivă.
Acest manager oferă o mulțime de funcționalități pr intre care se numără criptarea da telor
(inclusiv fotografii sau î nregistrări audio), sincronizare î ntre dispozitive, generator de parole, un
browser inclus care dispune de completarea automată a câmpurilor , extensie pentru browserul
Google Chrome pentru completarea automată a c âmpurilor cu datele utilizatorului , poate adă uga
securitate prin folosirea amprentei pentru accesul în aplicație în cazul î n care telefonul dispune
de un cititor de amprentă . Pentru fu ncționalități premium taxa este de 1 USD /lună.
3. Msecure
Msecure face și el parte din elita managerelor de parole disponibile pe piață, oferă
criptare a datelor cu cerintețe de pe piață, multiple moduri de organizare a datelor , sincr onizarea
între dispozitive, cre area canalelor securiza te între dispozite când acestea sunt conectate la o
rețea wi -fi privată, sincronizarea cu Dropbox, noua versiune include suport pentru tablete și un
browser integrat. Versiunea premium costă 9.99 USD .
4. Dashlane
Dashlan e este un manager de parole pentru mai multe sisteme de operare (Windows,
Mac, IOS, Android ) care oferă criptare parolelor folosind algoritmul A ES 256 biți.Acesta oferă
sincronizare între dispozitive, utilizatorul având posibilitatea de a stoca pe lângă p arole,
informații despre carduri bancare , cnp, sau adrese. Serviciul este gratis pe viață pentru
funcționalitățile de bază însă pentru sincronizarea î ntre dispozitive și backup pe cloud clientul va
trebui sa plătească 29 USD pe an .
Capitolul 3. Prezentarea Aplicației
41
Capitolul 3. Prezentarea Aplicației
42
5. Enpass password manager
Acest manager de parole nu se diferenț iază foarte mult față de cele mai sus menționate,
vine cu o interfață u șor de utilizat, stocheză parolele î n foldere separate pe categorii cum ar fi
login, carduri de credit, licențe, dispune și acesta de browser pentru completarea automată pe
aplicații web, se poate sincron iza cu diferite platforme cloud cum ar fi Google Drive, Dropbox,
Microsoft One Drive. Ap licația se poate folosi gratis î nsă utilizatorul va putea stoca doar 10
parole, pentru a putea stoca un număr mai mare acesta va trebui să plătească suma de 9.99 USD .
Acești a sunt 5 dintre principalii competitor i pe piața aplicaților pentru stocare de parole
disponibile pe platforma Android . Din punctul de vedere al funcților , aplicațiile menționate mai
sus sunt foarte apropiate, diferențele majore se observă la interfețele cu utili zatorul și experiența
acestuia î n folosirea aplicației . Aplicația propusă de mine vine cu ceva în plus față de cele
existente pe piață, prin stocarea parolelor pe o etichetă NFC , nici o informație nu este persistată
în aplicație și astfel se reduce riscul atacurilor pentru furtul de informații. Posibilii atacatori vor
avea nevoie de eticheta pe care sunt stocate informațiile. Consider aceasta ca fiind o imbunătățire
majora în securitatea aplicației.
Capitolul 3. Prezentarea Aplicației
43
3.5. Design componente
Întreaga aplicație a fost construită pe baza specificați ilor de design “Material Design”.
Material Design este un set de reguli și componente propus de Google pentru creearea unui
design uș or de utilizat, simplist și modern. Am ales să folosesc acest design în aplicația mea
deoarce acesta este foarte bine documentat, recomandat în special aplicați ilor Android și există
un set de componente predefinite.
În aplicația NFC se pot observa diferite com pone nte care fac parte din stilul Material
Design, cele mai însemnate sunt meniul lateral de tipul Navigation Drawer, butoanele “Flat” și
“Floating Action” , toate icoanele de navigare prin aplica ție, toate acestea sunt preluate d e pe site –
ul of icial material design oferit de Google. Componente le au fost integrate în aplicația mea după
regulile stabilite de design, reguli care se referă la :
Distanța dintre butoane
Distanța dintre icoane și text
Mărimea butoanelor
Fontul mesajelor, mărimea textulu i
Imaginile folosite în aplicație, aspectul acestora și mărimile
Culorile principale din aplicație
Cele mai utilizate componente din aplicație sunt meniul lateral de tipul Navigation
Drawer, butoanele “Flat” și “Floating Action” , divizoarele de obiecte, taburile pentru pagina
“Con ținut card ”, meniurile de pe fiecare î nregistrare de pe card, toast și snackbox pentru afiș area
mesajelor c ătre utilizator.
Capitolul 3. Prezentarea Aplicației
44
În figurile următoare sunt prezentate câteva dintre ac este componente î mpreună cu
specificațiile de impl ementare ale acestora. Toate imaginile fac parte din specificațiile Google
pentru Material Design.
Figura 19 Floating action button Figura 20 Taburi pentru diferite pagini
Meniul lateral din aplica ție a fost conceput după regulile acestui design. Î n figurile de mai jos
sunt prezentate meniul lateral și meniurile pentru fiecare element conținut pe etichetă.
Figura 21 Meniu lateral de navigare Meniurile pentru elementele conținute pe card
Capitolul 4. Concluzii
45
Capitolul 4. Concluzii
În această lucrare este prezentat un program de management al parolelor pentru platforma
Android , care are la bază tehnologia NFC . Numărul mare de aplicații ce nec esită conturi duc la
nevoia unei asemenea aplicații . Aplicația propusă rezolvă această nevoie prin implementarea
unei soluții simple de scriere a c redențialelor pe un suport NFC . Prin sol uția dezvoltată ,
utilizatorul va putea accesa mai multe conturi folosind un număr pin și o etichetă NFC . După
configurarea etichetei , utilizatoru l va accesa o aplicație în 3 pași fară a mai fi nevoit să introducă
numele de utilizator și parola. Lucrarea introduce un concept nou pentru aplicaț iile de stocat
parole , astfel stocarea nu se va efectua pe dispozitivul pe c are este instalată aplicația , aceasta va
utiliza o etichtă NFC pentru păstrarea credențialelor. Acest concept oferă î ncredere utilizatorului
pentru acest tip de aplicații, deoarece aplicația pentru parole nu va reține nici o informație despre
utilizator, acesta va avea control asupra etichetei și astfel ataca torii vor avea nevoie de etichtă
pentru posibile atacuri.
Următoarele direcții de dezvoltare vor fi : implementarea funcționalităților existente în
alte aplicații precum sincronizarea cu diverse platforme Cloud, stocarea mai multor formate(ex
carduri bancare, numere pin, formulare). Pe lângă acestea se dorește și transmiterea securizată a
fișiere lor folosind o platformă Cloud ș i o etichetă NFC . De asemenea pe viitor se pot implementa
soluții de creștere a securității adăugând pe langă numărul pin și amprenta ut ilizatorului ast fel
accesul la date ar beneficia de un plus de siguranță .
5. Bibliografie
46
5. Bibliografie
[1] Top Mobile Operating Systems Per Country, Jan 2016". statcounter.com.
[2] "Industry Leaders Announce Open Platform for Mobile Devices" .Open Handset Alliance .
November 5, 2007 . Retrieved February 17, 2012 .
[3] "Developer Economics Q3 2013 analyst report" . Retrieved July 2013 .
[4] "Developer Economics Q1 2015: State of the Developer Nation" . February 17, 2015 .
Retrieved May 14, 2015 .
[5] Haselsteiner, Ernst; Breitfuß, Klemens. "Security în near field communication ( NFC )]"
[6] Lishoy Francis, et al.: Practical Relay Attack on Contactless Transactions by Using NFC
Mobile Phones
[7] "Technical Specifications" . NFC Forum . Retrieved 11 December 2011 .
[8] Ecma International: Standard ECMA -340, Near Field Communication Interface and
Protocol ( NFC IP-1), December 2004
[9] Ecma International: Standard ECMA -352, Near Field Communication Interface and
Protocol –2 (NFC IP-2), December 2003
[10] Sursa Internation Data Corporation ( www.idc.com )
[11] Stefan Lucks : Attacking Triple Encrypt ion (PDF), Fast Software Encryption 1998, pp 239 –
253.
[12] NIST Special Publication 800 -57 Recommendation for Key Management — Part 1:
General (Revised) , March, 2007
[13] Daniel Escapa's OneNote Blog – Encryption for Password Protected Sections, November
2006
[14] Microsoft – Encrypt E -mail Messages, Outlook 2007
5. Bibliografie
47
[15] Microsoft TechNet product documentation – Technical Reference for Cryptographic
Controls Used în Configuration Manager, October 2012
www.wikipedia.com
www.mifare.net
www. Android .com
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Programul de Licență : Automatică și Informatică [604670] (ID: 604670)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
