Cuvinte cheie : Internet of Things, SSL, OpenSSL, TPM. [630122]

Cuvinte cheie : Internet of Things, SSL, OpenSSL, TPM.

Server Web pentru locuințe inteligente
Teodor
Rezumat

Internet of Things este un concept care se definește ca fiind o infrastructură globală
pentru societatea informațională, dând posibilitatea de servicii avansate prin interconectarea,
fizică sau virtuală, a lucrurilor bazate pe informația interoperațională existentă și în
dezvoltare, iar pentru aceste scopuri, un “obiect” reprezintă un obiect al lumii fizice sau a
lumii informațiilor, ce este capabil să fie identificat și integrat în rețele de comunicare. Pentru
a stabili un grad de încredere între informția transmisă si cea recepționată, atât la nivelul
comunicației dintre diversele componente cât și la nivelul comunicației cu utilizatorul final,
sunt folosiți diverși algoritmi criptografici pentru securizarea comunicației și criptarea
datelor.
Principala m etodă de securizare a comunicației este reprezentată de utilizarea
protocolului SSL(Secure Sockets Layer). SSL reprezintă o tehnologie standard de securitate
pentru stabilirea unei legături criptate dintre un server și un client, de obicei un server web și
un browser. Pentru a putea fi implementat un astfel de protocol, este necesară utilizarea unui
pachet format dintr -o cheie publică și un certificat ce pot fi achiziționate de la autorități
competente în acest sens, sau prin utilizarea bibliotecii OpenSSL, care generează aceste
fișiere pe suportul flash al sistemului pe care este instalat server -ul. Deoarece aceste fișiere
sunt stocate fizic, ele pot fi ținta unor atacuri. Din acest motiv s -a trecut la o nouă metodă de
securizare a informației folosind disp ozitive TPM.
Un TPM (Trusted Platform Module) este un microcip conectat la placa de bază a unui
computer. Scopul unui TPM este acela de genera si stoca chei criptografice, de exemplu chei
RSA. Generând chei în mod hardware ce sunt stocate într -un dispozit iv din care acestea nu
pot fi extrase, doar utilizate, un TPM reprezintă o soluție foarte eficientă pentru problema
securizării datelor, fără a fi vulnerabil din exterior.
Această lucrare de diplomă iși propune a demonstra conceptul de Internet of Things
prin automatizarea și controlarea unor dispozitive de uz casnic prin intermediul unei pagini
web. Vor fi prezentate principalele aspecte referitoare la SSL și certificatele folosite,
structura generală a unui TPM, cheile folosite de acesta și modul în ca re un utilizator
comunică direct cu un TPM. Pe baza acestor cunoștințe acumulate, vor fi implementate
certificatele SSL pentru a realiza o comunicație securizată cu utilizatorul final, iar un TPM va
fi folosit pentru a cripta și salva informația considerat ă utilă.

1
1. Introducere
Internetul este util și interesant. De fapt, este absolut fantastic. Poate conecta persoane
de pe tot globul folosind un standard comun. A evoluat de la o mică rețea dintre calculatoare
la o rețea globală, robustă, tolerantă la erori și formată din subreț ele ce pot funcționa
independent, iar acum evoluează din nou. Conceptul pentru o rețea de dispozitive inteligente
a fost discutat încă din 1982, cu mașină modificată de Cola la Universitatea Carnegie Mellon
ce a devenit primul aparat conectat la internet, iar în 1999 antreprenorul Kevin Ashton a
introdus termenul de “Internet of Things ”. A fost văzută astfel de către un public mai larg
posibilitatea de a conecta la internet și alte dispozitive precum telefoanele mobile, aparate de
uz casnic, platforme de de zvoltare, autovehicule etc.
În momentul actual, prin “Internet of Things” se înțelege o rețea de obiecte fizice
prevăzute cu sisteme electronice, software, senzori și ,cel mai important, interfață de
comunicare pentru a permite schimbul de date cu utiliz atorul sau cu alte dispozitive.
Deoarece comunicarea, în forma ei de bază, este vulnerabilă în fața persoanelor rău voitoare,
a fost imperativă introducerea unor măsuri de securitate asupra informațiilor transmise. Una
dintre cele mai utilizate soluții a f ost folosirea certificatelor de autentificare și criptare a
mesjelor implementată de protocolul “Secure Sockets Layer” (abreviat SSL). Acest protocol
este utilizat la scară largă și în prezent.
Aceleași certificate folosite de protocolul SSL pot fi folosi te și pentru criptarea
informațiilor ce se doresc a fi păstrate într -un mod sigur. Certificatele și cheile de criptare și
decriptare fiind stocate în memorie, sunt la rândul lor vulnerabile în fața unor atacuri. Din
acest motiv s -a dorit implement area unu i sistem ce oferă o securitate mai mare prin stocarea
acestor chei pe dispozitive ce nu sunt accesibile utilizatorilor. Astfel a luat naștere conceptul
de “Trusted Platform Module”(abreviat TPM). Un TPM este un microcip conectat la placa de
bază a unui com puter ce are rolul de a genera și stoca chei criptografice. Acesta este folosit
atât pentru a verifica integritatea fizică a sistemului, a cripta diverse fișiere și chiar pentru a
genera cheile necesare unui certificat SSL pentru realizarea unei comunicați i securizate.
Prezenta lucrare de diplomă își propune a face introducerea în domeniile descrise
anterior și de a exemplifica utilizarea lor în practică prin implementarea unui proiect de tipul
“Cas ă Inteligentă ”(în engleză “ Smart House ”) ce are rolul de a automatiza și controla prin
intermediul unei pagini web diverse dispozitive casnice. Deorece se dorește utilizarea unei
pagini web ca interfață cu utilizatorul, este necesar a oferi un grad de securitate în
comunicația dintre server și utilizator. Acest g rad de securitate poate fi obținut prin
implementarea protocolului SSL la nivelul server -ului și prin introducerea unei pagini de
autentificare, ce restricționează accesul la pagina web principală. Aceast proiect nu este însă
implementat pentru a prezenta metodele de restricționare a accesului la o pagină web, el
tratând doar cazul în care un utilizator ce nu ar trebui sa aibă dreptul de a accesa pagina
respectivă reușește să treacă totuși de pagina de autentificare. Astfel este suficient a se
demonstra uti lizarea unui protocol SSL la nivelul unui server. Se dorește totuși a se trata și
cazul în care anumite evenimente sunt generate de un utilizator necorespunzător. Pentru a
trata această situație se vor implementa proceduri de salvare in mod criptat a datel or specifice
evenimentelor generate atât de utilizatorii doriți, cât și de cei nedoriți.

2
În urma analizei paragrafului anterior, se evidențiază două obiective principale ale
acestui proiect de diplomă : securizarea cumunica ției dintre un server și un client și criptarea
într-o manieră sigură a informațiilor salvate . Se dorește a se implementa securizarea
serverului atât prin metode software, folosind biblioteca OpenSSL (bibliotecă ce are
implementate funcțiile necesare generării de chei private și cer tificate SSL) dar și de cheile
private generate de un TPM și certificatele SSL aferente acestora.

3

2. Considerente teoretice
2.1. Criptare
În această lucrare sunt utilizați o parte din termenii de bază specifici domeniului
criptografic. Această secțiune conține o scurtă descriere a criptării simetrice, asimetrice, a
diferențelor dintre cele două și o scurtă prezentare a algoritmului RSA. Certificatele sunt de
asemenea menționate.
2.1.1. Criptare simetrică
În criptarea simetrică, cheia este cunoscută de ambele părți. Cr iptarea simetrică este
folosită pentru criptarea unor cantități mari de date având în vedere faptul că algoritmii
folosiți permit o performanță ridicată (1). Figură 1 ilustrează principiul criptării simetrice.
Versiunea 1.2 de TPM nu are suport nativ pentru generarea și stocarea de chei
simetrice, dar există metode de a stoca o cheie simetrică criptând -o cu o cheie RSA. Pentru a
profita de viteza criptării simetrice cu stabilitatea criptării asimetrice, cheia simetrică poate fi
folosită pentru criptarea datelor și perechea de chei asimetrice poate fi folosită pentru
criptarea cheii simetrice. Acest procedeu este numit criptare hibridă. (2)

Figură 1: Criptare simetrică
2.1.2. Criptare asimetrică
În criptarea asimetrică sunt folosite două chei, o cheie privată și o cheie publică.
Cheia publică este folosită pentru a cripta mesajele, și este disponibilă pentru toată lumea.
Cheia privată este folosită la decriptarea mesajelor și trebuie să fie cunoscută doar de cel care
primește mesajul. Criptarea asimetrică se aseamănă cu o căsuță p oștală încuiată. Oricine
poate să scrie scrisori și să le pună în căsuța poștală (criptare), însă numai prorpietarul poate
să deschidă căsuța și să citească scrisorile (decriptare). Acest principiu este ilustrat în Figură
2.
Aceste chei pot fi utilizate și pentru a verifica și genera semnături digitale. Trebuie
menționat că o cheie asimetrică nu trebuie folosită și pentru criptare și pentru semnare. La
criptare este fo losită cheia publică, iar la semnare este folosită cheia privată.
Un exemplu de criptare asimetrică este RSA. Pentru informații aspura RSA vezi 2.1.3 .
Într-un TPM cheile RSA sunt folosite pentru criptarea, semnarea și stocarea datelor și a altor
chei.

Figură 2: Criptare asimetrică

Criptarea asimetrică este de obicei foarte lentă și de aceea nu trebuie utilizată pentru
criptarea unor canti tăți mari de date. În schimb, criptarea simetrică este folosită pentru
criptarea în masă. (2)

4
2.1.3. RSA
RSA este unul dintre primele criptosisteme bazate pe conceptul de cheie publică și
este utilizat la scară largă pentru transimisia securizată a datelor. Într -un astfel de
criptosistem, cheia de criptare este publică și diferă de cheia de decriptare, care este ținută
secretă. În RSA, această asimetrie este bazată pe dificultatea de a factoriza produsul a două
numere prime mari. RSA es te un acronim ce provine de la inițialele numelor de familie ale
lui Ron Rivest, Adi Shamir, Leonard Adleman, cei care au descris în mod public algoritmul
în 1978. Clifford Cocks, un matematician ce lucra pentru agenția britanică de informații
GCHQ, a dezv oltat un sistem similar în 1973, dar această înformație nu a fost facută publică
până în 1997. (3)
În algoritmul RSA, utilizatorul alege două numere prime mari p și q și calculează
N=p*q . Se alege pe urmă un exponent e ce satis face condiția cmmd c(e,(p-1)*(q -1))=1 . N și e
eprezintă cheia publică RSA. Cheia privată este formată din numerele p, q și d, unde d este
calculat folosind formula e*d≡1(mod(p -1)*(q -1)).
2.1.4. Certificate
Un certificat digital, sau un certificat al cheii publice, utilizează o autoritate de
certificare (în engleză “certificate authority”, abreviat CA ) care este folosită pentru a semna
cheia publică a utilizatorului cu informațiile acestuia. Astfel se realiz ează un certificat pentru
utilizator și cheia publică a acestuia. Un alt utilizator B poate să primească cheia publică și să
verifice dacă această cheie provine de la utilizatorul A, analizând certificatul. Dacă B are
încredere în CA, atunci el poate avea încredere că a primit cheia corectă ce aparține
utilizatorului A (1).
În secțiunea 0 sunt prezentate specificațiile generale ale proto colului SLL și ale
certificatelor SSL.

2.2. SSL. Certificate SSL
2.2.1. Secure Sockets Layer
Secure Sockets Layer(SSL) reprezintă o tehnologie standard de securitate pentru
stabilirea unei legături criptate dintre un server și un client, de obicei un server web și un
browser.
SSL permite ca informațiile sensibile, precum numărul cardului de credit, date
personale, date de autentificare să fie transmise securizat. În mod normal, datele trimise intre
browser și server sunt trimise in text simplu. Dacă un atacator est e capabil să intercepteze
toate datele trimise, el poate să vadă și să utilizeze acea informație.
Mai specific, SSL este un protocol de securitate. Protocoalele descriu felul in care
algoritmii ar trebui folosiți. În acest caz, protocolul SSL determină va riabilele criptării, atât
pentru conexiune cât și pentru datele ce sunt transmise.
Toate browser -ele sunt capabile să interacționeze cu servere web securizate folosind
protocolul SSL. Pentru aceasta, browser -ul și server -ul au nevoie de ceea ce se numește
“certificat SSL” pentru a stabili o conexiune securizată.

5
2.2.2. Certificate SSL
Certificatele SSL pun bazele unui anumit nivel de încredere prin stabilirea unei
conexiuni securizate, browser -ul furnizând indicii vizuale, cum ar fi un lacăt sau o bară verde,
pentru a indica utilizatorilor o conexiune securizată.
Certificatele SSL au o pereche de chei : una privată și una publică. Aceste chei
lucrează împreună pentru stabilirea unei conexiuni criptate. Certificatul conține de asemenea
și “subiectul”, mai exact id entitatea certificatului/deținătorului server -ului.
Pentru a obține un certificat, trebuie realizat un “Certificate Signing Request” (în
traducere din engleză “cerere de semnare a certificatului”, abreviat CSR ) la nivelul server –
ului. Acest proces furnize ază o cheie privată și una publică. Informația CSR transmisă către o
autoritate competentă CA (vezi 2.1.4 ) conține cheia publică. CA folosește informația din
CSR p entru a implementa o strucutră ce se potrivește cheii private, fără a o compromite sau a
o vedea. Când certificatul SSL este primit, acesta se instalează pe server.
Până acum au fost prezentate informații generale despre SSL și certificatele SSL. În
conti nuarea acestei secțiuni este prezentat felul în care un certificat SSL realizează o
conexiune sigură.
Când un browser încearcă să acceseze un site web care este securizat de SSL,
browser -ul si server -ul web stabilesc o conexiune SSL folosind un proces num it “SSL
Handshake”( Figură 1). Practic, trei chei sunt utilizate pentru stabilirea conexiunii SSL: cea
publică, cea privată și cheia de sesiune. Tot ceea ce este criptat cu cheia publică poate fi
decriptat numai cu cheia privata. Deoarece criptarea și decriptarea cu cheile publică și privată
necesită o mare putere de procesare, ele sunt folosite numai in timpul procesului “SSL
handshake” pentru a genera o cheie sim etrică de sesiune. Dupa ce conexiunea securizată este
realizată, cheia de sesiune este utilizată pentru criptarea tuturor datelor transmise. Pentru o
demonstra ție asupra celor 3 chei folosite vezi anexa Error! Reference source not found. .

Figură 3: Proces handshake

I. Browser -ul se conectează la un server web (site web) securizat cu SSL (https).
Browser -ul cer e serverului să se identifice.
II. Server -ul trimite o copie a certifi catului său SSL, inclusiv cheia sa publică.
III. Browser -ul verifică dacă originea certificatului vine de la o autoritate de încredere și
dacă certificatul este valid ș i nerevocat. Dacă browser -ul are încredere în certificat, el
generează , criptează și trimite către server o cheie simetrică pentr u sesiune folosind cheia
publică a server -ului.
IV. Server -ul decriptează cheia simetrică de sesiune folosind propria cheie privată și
trimite î napoi un răspuns crip tat cu cheia de sesiune pentru î nceperea sesiunii criptat e.
V. Server -ul și browser -ul cripteaza toate datele transmise cu cheia de sesiune.

2.3. OpenSSL
OpenSSL este o bibliotecă software utilizată în aplicații ce necesită comunicație

6
securizată la nivelul rețelelor de calculatoare sau pentru stabilirea identității celor două părți
dintr -o linie de comunicație. OpenSSL și -a găsit o întrebuințare largă la nivelul server -elor
web, servind majoritatea paginilor web.
OpenSSL conține implementări open -source ale protocoalelor SSL și TLS (succesorul
protocolului SSL). Bib lioteca este scrisă în limbaj de programare C și implementează funcții
criptografice de bază. Sunt disponibile versiuni pentru sistemele de operare Unix, inclusiv
derivate ale acestuia (Solaris, Linux, macOS, QNX) și Microsoft Windows. Biblioteca
conține o multitudine de algoritmi criptografici diferiți :
 Cifruri: AES, Blowfish, Camelia, SEED, CAST -128, DES, IDEA, RC2, RC4, RC5,
Triple DES , GOST 28147 -89 (4)
 Algoritmi criptografici hash: MD5,MD4,SHA -1,SHA -2
 Criptografie cu cheie public ă: RSA, DSA, Elliptic curve

7
2.4. Trusted Platform Module
2.4.1. Ce este un TPM?
Un TPM (Trusted Platform Module) este un microcip conectat la placa de bază a
unui computer. Scopul unui TPM este acela de a elabora și stoca chei criptografice, de
exemplu chei R SA. Multe laptop -uri din ziua de azi vin din fabrică cu un TPM integrat, de
exemplu cele mai recente versiuni de HP EliteBook, Dell Latitude, Sony Vaio sau Lenovo
Thinkpad. (5)
Plăcile de bază ale computerelor de birou nu vin, d e obicei, echipate cu TPM, dar
unele dintre modelele mai noi au suport pentru un TPM ce poate fi achiziționat separat și
conectat printr -un conector specific, după care acesta poate fi activat sau dezactivat din
BIOS. Figură 4 prezintă un TPM achiziționat separat și instalat pe o placă de bază.

Figură 4: TPM pe o placă de bază
2.4.2. Arhitectura TPM
Figură 5 prezintă blocurile ce alcătuiesc un TPM, conform cu standardele TCG (6).
Un TPM conține în principal suport hardware pentru generarea de numere aleatoare și pentru
a face calcule de tipul SHA -1 și RSA.

Figură 5: Arhitectura TPM

Un bloc ce trebuie descris mai în detaliu este Platform Configuration Register
(abreviat PCR, traducere din engleză Registru pentru Configurarea Platformei). PCR s unt
regiștri care pot stoca informații hash pe 20 biți. Versiunea 1.2 de TPM conține 24 de astfel
de regiștri. Primii 8 sunt pentru informații hardware iar următorii 8 sunt pentru informații
software. Informațiile pe 20 de biți sunt create de algoritmul ha sh SHA -1, care produce un șir
de lungime fixă indiferent de dimensiunea șirului de intrare. Un microcip TPM produce astfel
de informații hash și salvează valorile acestora în primii 8 regiștri PCR la pornirea sistemului.
Dacă sistemul este pornit și cipul TPM calculează alte informații hash decât cele existente în
primii 8 regiștri, atunci se dovedește că asupra sistemului au fost efectuate modificări pe care
nici un antivirus nu le -ar putea detecta. Informațiile hash pot fi salvate în interiorul cipului
TPM doar de către posesorul său prin intermediul unei comenzi speciale. Această comandă
trebuie executată direct pe mașina pe care este instalat cipul TPM și nu poate fi executată de
la distanță. (7)

2.4.3. Chei criptografice
A fost menți onat până acum faptul că un TPM este un microcip conectat la placa de
bază a unui computer și că poate aduce funcții criptografice la nivel de hardware. Această
secțiune va explica mai în detaliu ce face cu adevărat un cip TPM, cum sunt create cheile pe
care le folosește, unde sunt stocate și care sunt acestea.
Unul dintre principalele scopuri ale unui TPM este acela de a genera și stoca chei
criptografice într -un mediu sigur. Motivul pentru aceasta este de a mări securitatea prin
stocarea, spre exemplu, a unei chei private RSA într -o zonă unde numai utilizatorul are acces,

8
adică în hardware -ul cipului. Dacă un utilizator formează o pereche de chei RSA folosind
OpenSSl, și apoi folosește cheia publică pentru a cripta mesaje, atunci mesajele sunt păstrate
secrete atâta timp cât utilizatorul poate ține secretă cheia privată. Cheile produse de un TPM
sunt stocate într -o structură de tip arbore, adică orice cheie nouă trebuie să se conecteze cu o
altă cheie existentă în TPM, formând astfel o relație de tipul păr inte-copil.
Cu toate acestea, nu toate cheile produse de un TPM pot fi stocate în interiorul său.
Accest lucru se întâmplă din cauza faptului că un TPM este un cip de mici dimensiuni, cu un
preț redus și dispune de o memorie limitată, ceea ce înseamnă că trebuie să existe o metodă
de a securiza cheile înafara cipului. TCG denumește această metodă stocare securizată. Ideea
de bază ce rezidă în spatele stocării securizate se rezumă la a stoca cheile pe un dispozitiv de
stocare și de a cripta cheia cheia priv ată a unei perechi cu cheia publică a altei perechi de
chei.
Un TPM poate produce chei RSA pentru a fi folosite în diverse scopuri. Cheile astfel
generate pot fi migrabile sau non -migrabile. Cheile migrabile pot fi transferate către alte
cipuri TPM pe cân d cele non -migrabile sunt blocate în interiorul cipului în care au fost create.
Când o cheie părinte este migrată către un alt TPM atunci și toate cheile copil vor fi migrate
de asemenea. Tipurile diferite de chei sunt :
 Endorsement Key (abreviat EK, tradus din engleză “cheie de aprobare” ) este
reprezentat de o pereche de chei RSA generate la producerea cipului. Această cheie este
singura care rămâne în interiorul cipului chiar și după resetarea acestuia. EK este folosită
pentru identificarea cipului TPM ca fiind valid.
 Storage Root Key (abreviat SRK, tradus din engleză “cheia rădăcinii de stocare”)
este produsă în momenut apelării comenzii takeownership și permite utilizatorului să
seteze o parolă pentru TPM și SRK. Este o cheie non -migrabilă și nu poate fi ștearsă
decât prin resetarea cipului TPM.
 Storage Key (tradus din engleză “cheie de stocare” ) este o cheie RSA pe
2048 biți ce poate cripta informații sau să stocheze alte chei.
 Signature Key (tradus din engleză “cheia de semnătură”) este o cheie RSA pe 2048
de biți sau mai puțin. Această cheie este folosită doar pentru a semna informațiile
utilizatorului. Informațiile de la un utilizator pot fi semnate pentru a dovedi că într –
adevăr informația provine de la utilizatorul respectiv.
 Binding Key (tradus din engleză “cheie de legătură”) este o cheie RSA folosită
pentru stocarea cheilor simetrice.
 Legacy Key (tradus din engleză “cheia de moștenire”) este o cheie RSA ce poate fi
folosită atât pentru criptare cât și pentru semnare.
 Identity Key (tradus din engleză “cheie de identitate”) este o cheie non -migrabilă
folosită la semnarea regiștrilor PCR în procesul de atestarea a mașinii și pentru a semna
alte chei ca fiind non -migrab ile.

2.4.4. Criptarea și decriptarea
Dacă în secțiunea 2.4.3 au fost prezentate aspecte despre cheile generate de un TPM,
în cadrul acestei secțiuni vor fi prezentate asp ecte despre criptarea și decriptarea informațiilor
folosind unele din cheile menționate.

9
În cadrul criptării informațiilor, de exemplu mesaje sau fișiere de mari dimensiuni, cea
mai eficientă metodă este folosirea algoritmilor de criptare cu cheie simetri că, dar un TPM nu
suportă nici un criptosistem simetric. Pentru a folosi algoritmi de criptare simetrică și de a
beneficia și de stocarea sigură a unui TPM, se recomandă utilizarea criptosistemelor hibride.
Ideea este de a folosi o cheie simetrică pentru a cripta informațiile și o pereche de chei
asimetrice RSA generate de TPM pentru a cripta cheia simetrică. La folosirea unui TPM
pentru criptarea informațiilor se remarcă două opțiuni de criptare :
 Legarea datelor cu o cheie de legare (engleză Binding Key) : presupune legarea
informației criptate de o cheie RSA . Având în vedere că informația este legată de cheia
RSA și nu de cipul TPM, aceasta poate fi transmisă către orice TPM atâta timp c ât cheia
este prezentă.
 Sigilarea informației folosind cheia de stocar e: sigilarea informa ției presupune ca
aceasta să fie criptată folosind algoritmul RSA. Spre deosebire de metoda menționată
anterior, informația este legată direct de TPM și de configurațiile de sistem atunci când
ea este sigilată. Cu alte cuvinte, informația sigilată de un TPM nu poate fi decriptată
decât de același TPM. (8)

10
2.4.5. Comunicarea cu TPM
Ultima secțiune a acestui subcapitol ( 2.4) are rolul de a introduce informații despre
felul în care se realizează comunicația cu un dispozitiv TPM. Trebuie menționat faptul că
există mai multe metode de a comunica cu un astfel de dispozitiv. În dezvoltarea de aplicații
complexe este de pre ferat utilizarea unei biblioteci de nivel înalt în loc de comenzile native,
specifice TPM. Petru a realiza comunicarea cu un TPM în cadrul diverselor programe, este
indicat a se folosi TCG Software Stack (TSS). TSS este un API (acronim de la Application
programming interface, în traducere “Aplicație pentru programarea interfeței ”) în cadrul
căruia utilizatorul poate utiliza diferite straturi, în funcție de tipul de aplicație pe care o
dezvoltă. Arhitectura TSS este reprezentată în Figură 6.

Figură 6: Arhitectura TSS

În cadrul dezvoltării de sisteme încorporate, unde resursele sunt limitate și numai
funcționalitatea de baza a unui TPM este necesară, programatorul poate comunica cu cipul
prin intermediul stratului inferior TDDL (din engleză TCG device driver library). TDDL
pune la dispoziția utilizatorului un API de nivel redus care poate fi folosit pentru funcții
precum generarea de chei sau criptare și decriptare de fișiere. Numai funcțiile TPM care sunt
implementate la nivel de hardware pot fi executate folosind TDDL (8). Având în vedere că
acesta este nivelul utilizat în realizarea acestui proiect de diplomă, n u se vor trata și celelalte
nivele. Pentru informații asupra acestora (9).

11
2.5. Internet of Things
Internet of Things (abreviat și IoT , denumire din engleză, în traducere “Internetul
Obiectelor” ) este un concept ce presupune folo sirea internetului pentru a conecta între ele
diferite dispozitive, servicii și sisteme automate, formând astfel o rețea de obiecte (10). În
2013 Global Standards Initiative on Internet of Things (IoT -GSI) definea IoT ca “o
infrastructură globala pentru societatea informațională, dând posibilitatea de servicii avansate
prin interconectarea (fizică sau virtuală) a lucrurilor bazate pe informația interoperațională
existentă și în dezvoltare și a tehnologiilor de comunicare ” (11) iar pentru aceste scopuri un
“obiect” este “un obiect a lumii fizice sau a lumii informațiilor, care este capabil să fie
identificat și integrat în rețele de comunicare ” (12). IoT permite ca obiectele să fie identificate
sau controlate de la distanță prin intermediul infrastructurii de rețele, (13) realizând
oportunități pentru o integrare mai directă a lumii fizice în sitemele bazate pe computere, și
rezultând într -o eficie nță îmbunătățită, acuratețe și beneficiu economic pe lângă reducerea
intervenției umane (14) (15) (16). Când IoT este îmbunătățit cu senzori și actuatoare,
tehnologia devine o instanță a unei clase mai generale a sistemelor cibernetico -fizice, care
conține tehnologii cum ar fi rețele inteligente, centrale electrice virtuale, case, orașe și
tehnologii de transport inteligente. Fiecare obiect este identificat în mod unic prin s istemul
computațional integrat dar poate să opereze în cadrul infrastructurii internet existente.
Experții estimează că IoT va conține aproape 30 miliarde de obiecte până în 2020. (17)
“Obiectele”, în sensul IoT, se referă la o varietate largă de dispozitive cum ar fi
implanturi pentru monitorizarea inimii, transpondere biocip la animalele de fermă,
automobile cu senzori încorporați, dispozitive de analiză ADN pentru monitorizarea
mediului/alimentelor/patogenilor, (18) sau dispozitive care asistă pompierii în misiuni de
căutare și salvare. (19)
Aceste dispozitive adună informații utile cu ajutorul tehnologiilor existente și apoi, în
mod autonom, trimit datele către alte dispozitive (20). Exemple din piața curentă includ
automatizarea caselor (cunoscute ca și dispozitive de uz casnic inteligente) cum ar fi
controlul și automatizarea iluminatului, căldurii (termostat inteligent), ventilație, siste me de
aer condiționat.
Odată cu expansiunea automatizării prin intermediul internetului într -o abundență de
noi areale de aplicații, se așteaptă din partea IoT să furnizeze cantități mari de date din
diverse locații, cu necesitatea pentru rapida agregare a acestora. IoT este una dintre
platformele actuale pentru “orașe inteligente ” și “ sisteme inteligente pentru managementul
energiei ” (21) (22).

12
3. Analiza componentelor disponibile
3.1. Componente hardware
3.1.1. Platforme de dezvoltare
În acest subcapitol se dorește a se prezenta câteva dintre platformele de dezvoltare
existente ce pot face parte din acest proiect.
FRDM -KL25Z
FRDM -KL25Z este platformă de cost redus, bazată pe procesorul ARM Cortex -M0.
Principalele avantaje ale acestei platforme sunt : acces facil la dispozitive de intrare -ieșire,
consum redus de energie, interfață de debug integrată, pentru programarea memoriei flash.
Principalele caracteristici :
 Procesor: ARM Cortex -M0
 Frecven ță clock : 48MHz
 Memor ii: 16KB RAM, 128kb FLASH
 Interfa ță de comunicare : USB, SPI(2), I2C(2), UART(3), PWM
 Senzor tactil
 Pini GPIO:66
 Accelerometru pe 3 axe MMA8451Q
 Tensiune alimentare USB: 5V
 Tensiune alimentare extern ă: 4.5-9V
Figură 7 prezintă placa de dezvoltare FRDM KL25Z. Se poate observa și conectica de
tip Arduino. Pentru informații suplimentare (23), (24).

Figură 7:FRDM KL25Z

Arduino U NO
Arduino UNO este o platforma de procesare open -source, construită pe baza
procesorului Atmega328. Limbajul de programare similar cu C++, dar și o comunitate de
suport tehnic foarte bine dezvoltat ă, fac din plăcile de dezvoltare Arduino o metodă optimă
de inițiere în cadrului universului microcontrolerelor și a sistemelor integrate.Specificcațiile
principale ale plăcii de dezvoltare Arduino UNO sunt ::
 Procesor Atmega328
 Tensiune de alimentare 5V
 14 pini digitali , din care 6 suportă PWM
 6 pini analogici
 32 KB Memorie Flash
 2 KB memorie SRAM
 Frecven ță Clock de 16MHz
Figură 8 reprezinta placa Arduino UNO în ver siunea cea mai des întalnită. Pentru
informații suplimentare vezi (25).

13

Figură 8:Arduino UNO

XMC1100
Seria XMC1100 aparține familiei de microcontrolere industriale XMC1000 bazată pe
procesorul ARM Cortex -M0. Dispozitivele din seria XMC1100 sunt dezvoltate pentru
aplicații de uz general.
Complexitatea și cerințele crescute pentru putere computațională a aplicațiilor de
control încorporat necesită ca microcontrolerele sa aibă o perform anță semnificativă a unității
centrale de procesare și funcționalitate periferică integrată.
Seria XMC110 combină funcționalitatea extinsă și performanțele procesorului Cortex –
M0 cu periferice puternice și memorii integrate în placi.
Caracteristici gener ale:
 Procesor: Cortex -M0 32bit
 Controler pentru întreruperi
 Controler de evenimente
 Memorie ROM : 8KB
 Memorie SRAM: 16KB
 Memorie flash: 64 KB
Figură 9 prezint ă placa de dezvoltare XMC1100 cu modulul de debug detașabil.
Pentru informații suplimentare vezi (26).

Figură 9: XMC 1100
3.1.2. Platforme pentru server web
Serverul web este un sistem ce procesează cereri HTTP, protocolul de bază utilizat
pentru a transmite informația pe internet. Termenul de server web se poate referi la un întreg
sistem la programe ce proceseasă aceste cereri H TTP.
Scopul său de bază este acela de a stoca pagini web și te a le livra clienților. Se
diferențiază două categorii mari de servere web : statice și dinamice. Cele prezintă clientului o
anumită pagină stocată prin executarea uno comenzi interne. Cele dina mice sunt conectate la
baze de date pe care le interogheză, iar dacă anumite condiții specifice sunt îndeplinite, acesta
returnează clientului inforția dorită.

Figură 10: Server web
În funcție de cantitatea de date și puterea de procesare, serverele web pot fi sisteme
complexe ( Error! Reference source not found. ), computere personale sau, pentru proiectul
de față, un dispozitiv Raspberry Pi.

14

Raspberry PI
Raspberry Pi este un sistem de calcul implementat pe un singur cablaj electronic. Deși
dimensiunile acestuia sunt reduse, 8.5cm x 5,6cm, Raspberry Pi este un calculator complet,
ce rulează pe un sistem de operare din distribuția Linux Debian și permite și instalare a și
rularea de aplicații diverse (jocuri, editoare de text, medii de programare, redare de muzică și
filme, aplicații de teleconferință, aplicații Internet). Diferențele dintre o placă Raspberry Pi și
un calculator personal nu sunt reprezentate numai de dimensiunile fizice. Raspberry Pi are o
putere de procesare inferioră calculatoarelor personale dar și un cost mai redus. De asemenea
ele reprezintă soluția de compromis dintre un calculator și o platformă de dezvoltare.
Prevăzut cu 40 de pini de intrare/i eșire, Raspberry Pi poate fi direct folosit pentru controlarea
de elemente electro -mecanice, preluare de informații de la diverși senzori, afișare de
informații pe ecrane LCD de mici dimensiuni, sua prin utilizarea portului HDMI integrat, pe
un monitor. Pr ocesorul folosit este un Broadcom BCM2837 pe 64 biți, ce dispune de 4 nuclee
ce funcționează la o frecvență de până la 1.2GHz. Are integrată interfață Ethernet, ieșire
audio, porturi USB, slot pentru cardul de memorie microSD și conectori dedicați pentru
cameră video și afișaj. Raspberry Pi 3 ( Error! Reference source not found. ) are în plus față
de predecesorii săi conectivitate WiFi 802.11n și Bluetooth 4.1 BLE.
Pentru detalii suplimentare ve zi (27).

3.1.3. INFINEON SLB9645/SLB9670

În cadrul acestui proiect de diplomă au fost analizate două module TPM : Infineon
SLB9645 și Infineon SLB9670 v1.2. Deși amândouă sunt disponibile în forma comercială
sub denumimrea de Iridium9 645 respectiv Iridium9670, pentru lucrarea prezentă s -au folosit
două plăci demonstrative, una pentru cip -ul SLB9645( Error! Reference source not found. )
și una pentru cip -ul SLB9670 ( Error! Reference source not found. ). Amândouă au fost
puse la dispoziția autorului lucrării de către SC. DAM APPLICATION SRL(firmă parteneră
Infineon Romania cu sediul în Iași).

SLB9645
SLB9645 ( Error! Reference source no t found. ) este un dispozitiv TPM. Suportă
numai interfață I2C și prezintă un pin dedicat pentru întreruperi care mărește performanțele.
Interfața I2C poate funcționa at ât în modul standard (până la 100kHz) cât și în modul rapid
(până la 400kHz). Pentru detalii suplimentare asupra specificațiilor acestui dispozitiv vezi
(28).
Caracteristici generale :
 Aplic ă principalele specificații TPM, versiunea 1.2, revizia 116
 Interfață I2C compatibilă până la 400kHz
 Aprobat pentru Google Chromebook/Chromebox
 Temperatură de funcționare : -20șC -> +85 șC

15
 Optimizat pentru dispozitive alimentate cu baterii ; consum redus în modul așteptare
(150µA)
 Memorie no n-volatilă 6KB ce poate stoca până la 8 chei pe 2048 biți
 Suport încorporat pentru nucleu Linux versiunea 3.10 sau mai nou.

SLB9670
SLB9670 ( Error! Reference source not found. ) este un TP M bazat pe tehnologie
avansată a securității hardware. Această implementare TPM servește ca bază pentru alte
produse TPM. Suportă interfață SPI cu o rată de transfer de până la 43MHz. SLB9670 este
bazat pe specificațiile familiei TCG, versiunea 1.2. Pentru detalii suplimentare asupra
specificațiilor acestui dispozitiv vezi (29).
Caracteristici generale :
 Aplic ă principalele specificații TPM, versiunea 1.2, revizia 116
 Interfață SPI
 Aprobat pentru Google Chromebook/Chromebox
 Temperatură de funcționare : -20șC -> +85 șC
 Optimizat pentru dispozitive alimentate cu baterii ; consum redus în modul așteptare
(110µA)
 Memorie non -volatilă 6KB ce poate stoca până la 8 chei pe 2048 biți
 Suportă până la 10 sesiuni concurente.

3.1.4. Relee, senzori, regulatoare tensiune
Relee
Releele sunt utile pentru controlul aparatelor ce funcționează la tensiune înaltă cu
ajutorul plăcuțelor de dezvoltare, cum ar fi Arduino sau FRDM. În cadrul acestui proiect vor
fi folosite două module cu câte doua relee fiecare (JQC -3FF și OMRON G5LE -14) pentru
controlul a patru dispozitive de uz casnic. Ambele tipurile de relee sunt de t ipul electro –
mecanic (genereaza un câmp electro -magnetic pentru acționarea comutatorului intern),
diferența principală de funcționare fiind reprezentată de valoarea logică la care se activează
comutatorul (0 pentru JQC -3FF și 1 pentru OMRON G5LE -14). Error! Reference source
not found. prezintă caracteristicile de funcționare pentru cele doua module.

Figură 11: Schema electrică releu

Informații suplimentare despre ace ste doua relee se pot gasi la : (30), (31), (32), (33).

DS18B20
Senzorul de temperatur ă DS 18B20 ( Error! Reference source not found. ) furniza un
rezultat cu o precizie de până la 12 biți. Caracteristici generrale :

16
 Tensiune de alimentare : 3-5.5V
 Protocol de comunicație “one -wire”
 Precizie: ±0.5șC pentru temperaturi între -10șC și +85 șC
 Interval de măsurare : între -55șC până la +125 șC (34).

L7805CV
L7805CV ( Error! Reference source not found. ) este un regulator de tensiune la
5VDC. Caracteristicile de funcționare ale acestuia sunt prezentate în Error! Reference
source not found. .

3.2. Componente software
3.2.1. Sisteme de operare
Raspbian
Raspbian Jessie este un sistem de operare dezvoltat pentru Raspberry Pi bazat pe
distribuția Linux Debian “Jessie”. Raspbian este o alegere populară între sisteme de operare
existente pentru Raspberry Pi și folosește același manager de pachete ca și distri buția Linux
Ubuntu. Aceștia sunt principalii factori ce vor determina utilizarea Raspbian -ului ca sistemul
pe care se va instala server -ul web și la care se va conecta dispozitivul TPM.
3.2.2. Utilitare folosite
WinSCP 5.9.5 (Windows Secure CoPy) este un client SFTP (SSH File Transfer
Protocol) , SSCP (System Security Cerdtified Practitioner) ș i FTP (File Transfer Protocol)
pentru Windows ce a fost folosit pentru transferul de fișiere de la ș i către Raspberry Pi.
PuTTY 0.67 este o consolă serială ce a fost folosită pentru conectarea la Raspberry Pi
prin intermediul SSH (Secure Shell). A mai fost folosit de asemenea pentru a testa
comunicația serială cu placa de dezvoltare.

Apache
Apache este un server HTTP (Hypertext Tran sfer Protocol) de tip “open -source”(în
traducere “surs ă deschisă ”). Apache a jucat și joacă un rol important în dezvoltarea
domeniului web, fiind folosit în prezent în aproximativ 65.2% din paginile web. Cuvântul
apache provine de la numele apașilor, tribu ri de amerindieni.
Apache este dezvolatat de o comunitate deschisă de programatori sub emblema
Apache Software Foundation. Aplicația este disponibilă pentru o mare varietate de sisteme de
operare incluzând Unix, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft
Windows și OS/2. (35)

3.2.3. Limbaje de programare
C++

17
C++ este un limba j multi -paradigmă, ce dispune de verificar ea stat istică a tipului
variabilelor și suportă programare procedurală, abstractizare a datelor, programare orientată
pe obiecte. În anii 1990, C++ a devenit unul din cele mai populare limbaje de programare
comerciale, rămânând astfel până azi.
A fost dezvoltat în anii 1980 de Bjarne Stroustrup de la Bell Labs fiind denumit inițial “C
cu clase ”, ca o serie de îmbunătățiri ale limbajului C. În 1985 au fost introduse moștenirea
multiplă, clasele, membrii protejați, și funcțiile statice și constante. În 1990 o altă carte a fost
lansată, oferind su port pentru standarde viitoare. Ultimele adăugări includeau șabloane ,
excepții, spații de nume (namespace -uri) și tipul boolean. Mai târziu, printre cele mai notabile
adăugări se numără biblioteca de intrări/ieșiri (iostream) și biblioteca STL ( “Standard
Template Library”, tradus “Biblioteca de formate standard” ).

PHP
PHP este un limbaj de programare. Numele PHP provine din limba engleză și este un
acronim recursiv:Php:Hypertext Preprocessor. Folosit inițial pentru a produce pagini web
dinamice, este folosit pe scară largă în dezvoltarea paginil or și aplicațiilor web. Se folos ește
în principal înglobarea în codul HTML, dar începând de la versiunea 4.3.0 se poate folosi și
în mod “linie de comandă”( în engleză “Command Line Interface”, ab reviat CLI), permițând
crearea de aplicații independe nte. Este unul din cele mai importante limbaje de programare
web open -source, existând versiuni disponibile pentru majoritatea serverelor web și pentru
toate sistemele de operare. Conform statisticilor e ste instalat pe 20 de milioane de site -uri
web și pe 1 milion de servere web. Este disponibil sub Licența PHP și Free Software
Foundation îl consider a fi un software liber.

Python
Python e ste un limbaj de programare dinamic multi -paradigmă, creat în 198 9 de
programatorul olandez Guido van Rossum. Van Rossum este și în ziua de astăzi un lider al
comunității de dezvoltatori de software care lucrează la perfecționarea limbajului Python și
implement area de bază a acestuia, Cpy thon, scrisă în C. Python este u n limbaj
multifuncțional folosit de exemplu de către companii ca Google sau Yahoo! Pentru
programarea aplicațiilor web, însă exist ă și o serie de aplicații științ ifice sau de divertisment
programate parțial sau în întregime în Python.Popularitatea în creșt ere, dar și puterea
limbajului de programare Python au dus la adoptarea sa ca limbaj principal în dezvoltarea de
către programatori specializați și chiar și la predarea limbajului în unele medii universitare.
Din aceleași motive, multe sisteme bazate pe Un ix, inclusiv Linux, BSD și Mac OS X includ
din start inerpret orul Cpython.

Bash
Bash (acronim ce provine de la “Bourne -again Shell” ) reprezintă un interpretor de
comenzi Unix, dezvoltat inițial de către Brian Fox de la Fundația pentru Software Liber
pentru Proiectul GNU. Obiectivul acestuia este de a înlocui interpretorul Bourne shell.
Numele descrie de asemenea realizarea sa, îngemănarea fu ncțiilor din sh, csh și ksh.
Pentru a realiza scripturi în Bas h este necesar ă utilizarea unui editor de text., de
exemplu : Gedit, Nano, MidnightCommander Edit.

18
Prima linie de cod a unui script Bash trebuie sa fie în mod obligatoriu : #!/bin/bash,
comunicându -se astfel sistemului de operare ce interpret or de comenzi se utilizează.
Fiind un limbaj de scripting comp atibil cu comenzile de shell, Bash poate fi executat
fie din linia de comandă , fie dintr -un fișier. Sc ripturile Bash sunt de fapt fișiere text
transformate în fișiere execut abile, ele putând fi editate cu orice editor de text. Aceste
scripturi sunt folosite pentru a executa comenzi simple sau complexe. (36)
Pentru a executa aplicația creată trebuie introdusă în consola următoarea comandă:
 cd ~/Directorul unde se afla s criptul
 bash nume_script.sh
Dacă se dorește ca aplicația să devină u n executabil, atunci se introduce în lini de
comandă :
 chmod +x nume.sh
Una dintre posibilitățile de execuție ale unui program Bash este prin dublu click pe
pictograma aplicației. O altă posibilitate este aceea de a rula scriptul direct în consolă
executând comanda :
 ./nume.sh
Exemplul „Hello World!”:
#!/bin/bash
clear
echo „Hello World!”, în traducere: „Salutare lume!”.

19
4. Proiectarea aplicației practice
4.1. Funcționarea generală
În cadrul acestui subcapitol se va explica funcționalitatea de bază a a aplicației
proiectate.
Se dorește a se implementa un proiect de tipul „Internet of Things ” ce are ca scop
controlarea unor consumatori de uz casnic prin intermediul unei pagini web. În spatele
server -ului vor rula programe scrise în limbajele Python și Bash. Programele Python au rolul
de a realiza comunicația pe interfața serială dintre server si platforma de dezvoltare,
actualizarea unor fișiere ce conțin informații provenite de la senzori și apelarea unor
programe Bash. Programele Bash au rolul de a crea directoare si fișiere intermediare,
sincronizare a informațiilor, care prezintă interes, c u log -ul server -ului și o criptare și
decriptare a acestor informații. Funcționarea aplicației poate fi vizionata în Error! Reference
source not found. .

4.2. Alegerea componentelor hardware
În urma unei analize a caracteristicilor oferite și a sistemului de operare pe care
lucrează, s-a considerat a fi potrivit utilizarea unui Raspberry Pi 3, pe care se va instala un
server Apache. De asemenea, în urma testelor făcute , s-a ales utilizarea dispoz itivului TPM
SLB9670 v1.2. Dispozitivul TPM SLB9645 nu este detectat în mod automat la pornirea
sistemului, iar încercarea de a automatiza detecția acestuia prin folosirea comenzilor linux
specifice eșuează, chiar dacă se simulează acceptul din partea uti lizatorului, acolo unde este
cazul. Această problemă nu persistă în cazul dispozitivului ales, fiind necesară o singură
încărcare manuală a driver -ului la prima pornire a sistemului.
Pentru a compila cu ușurință nucleul din Raspberry Pi astfel încât să poa tă comunica
cu dispozitivul TPM ales, va fi necesară utilizarea unui computer ce rulează un sistem de
operare din distribuția Debian, Ubuntu 16.04 în cazul de față.
Datorită experienței acumulate în cadrul celor patru ani de facultate și a limbajul de
programare C++ utilizat în programarea microcontroler -ului, a fost aleasă platforma FRDM
KL25Z ca platformă de dezvoltare.
Alte dispozitive necesare în realizarea acestui proiect sunt releele pentru controlarea
dispozitivelor de uz casnic, senzorii de tempe ratură pentru citirea temperaturii ambientale și
regulatoare de tensiune. Aceste dispozitive sunt cele prezentate la 3.1.4 .

4.3. Interconectarea dispozitivelor hardware
În cadrul acestei secțiuni va fi prezentat felul în care sunt conectate releele la platforma
FRDM KL25Z, felul în care se realizează comunicația dintre aceasta și Raspberry Pi,
conectarea dispozitivului TPM SLB9670 la Raspberry Pi și includerea senzorului de
temperatură în cadrul proiectului.
Error! Reference source not found. prezintă felul în care au fost conectate cele doua
module cu relee la FRDM KL25Z. De asemenea pentru a realiza comunica ția cu Raspberry
Pi a fost folosit un adaptor USB -TTL ( Figură 1) conectat pe un port USB din Raspberry Pi.

20

Pinii de alimentare ai modulelor cu relee sunt conectați l a o sursa externă de
alimentare pentru a nu exista riscul unui scurtcircuit cauzat de consumatori, care să se
propage către platforma de dezvoltare. Pinii de masă au fost conectați la pinii de masă ai
platformei KL25Z pentru a face sincronizarea cu datele transmise. Același raționament se
aplică și în cazul conectării pinului de masă al adaptorului USB la pinul de masă al platformei
FRDM. Platforma FRDM KL25Z prezintă pe pinii PTC3 și PTC4 o interfață de comunicație
serială. Pinul PTC3 reprezintă pinul de r ecepționare date iar pinul PTC4 reprezintă pinul de
transmisie date. Error! Reference source not found. reprezintă schema de conectare a
dispozitivelor periferice de intrare la FRDM KL25Z.

În continuare trebuie prezentat modul în care dispozitivul TPM ales, placa
demonstrativă SLB9670 se conectează la Raspberry Pi. De asemenea, chiar dacă temperatura
ambientală poate fi citită pe FRDM KL25Z prin intermediul senzorului DS18B20 și
transmisă pr in interfața serială către Raspberry Pi, pentru a nu încărca inutil comunicația și
pentru a demonstra faptul că este posibilă conectarea unui senzor direct la Raspberry s -a optat
a folosi senzorul direct cu Raspberry Pi. Error! Reference source not found. prezintă modul
de conectare a dispozitivelor mai sus menționate iar Error! Reference source not found.
reprezintă schema astfel obținută.
4.4. Pregatirea sistemului de operare
În cadrul acestui sub -capitol vor fi prezentate modificările ce sunt necesare pentru a
putea realiza integrarea dispozitiv ului TPM SLB9670 cu Raspberry Pi și instalarea unui
server web. Pentru a simplifica metoda de expunere se face următoarea convenție : comenzile
ce sunt rulate cu drepturi de utilizator vor începe cu $ iar cele rulate cu drepturi de
administrator vor începe cu #.
Se instalează pe computerul ce rulează Ubuntu o suită de aplicații necesare
recompilării nucleului de Raspberry Pi. Se rulează astfel următoarea comandă :
# apt -get install gcc -arm-linux -gnueabihf gddrescue git libncurses5 -dev
Se generează directoru l TpmAppNote și se descarcă în acesta o copie a nucleului de
Raspberry Pi folosind următoarele comenzi :
$ cd ~/TpmAppNote
$ git clone –depth=1 git://github.com/ raspberrypi/linux.git -b rpi -4.4.y
$ cd linux
În cadrul arhivei găsite la (37) se găsește fișierul de patch care se aplică nucleului prin
comanda :
$ patch -p1 < RPi_2_SPI_TPM_Driver_And_Automatic_Driver_Load.patch
Din Raspberry se copiază fișierul config.txt în directorul /TpmAppNote/Linux/ de pe
computerul cu Ubuntu. Următorii pași sunt necesari pentru a comunica nucleului prezența
unui TPM.
$ make ARCH=arm CROSS_COMPILE=arm -linux -gnueabihf – olddefconfig
$ make ARCH=arm CROSS_COMPILE=arm -linux -gnueabihf – menuconfig

21
Comanda a doua deschide o fereastră în care este ob ligatoriu a fi urmați următorii
pași: Device Drivers [Enter] -> Characterdevices [Enter] -> TPM Hardware Support [M]
&[Enter] -> TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface -native SPI
[M]
Următoarele comenzi sunt folosite pentru compilarea propriu -zisă a nucleului de
Raspberry Pi.
$ make ARCH=arm CROSS_COMPILE=arm -linux -gnueabihf – -jX zImage modules dtbs
# make ARCH=arm CROSS_COMPILE=arm -linux -gnueabihf – modules_install
INSTALL_MOD_PATH=/media/[username]/[roo tfs-ID]/
Se introduce cardul SD pe care este stocat sistemul de operare Raspbian în cititorul de
carduri ale computerului ce rulează Ubuntu și se copiază fișierele necesare încărcării cu
succes a noului nucleu.
# mv/media/[username]/boot/$KERNEL.img
/medi a/[username]/boot/$KERNELbackup.img
# scripts/mkknlimg arch/arm/boot/zImage /media/[username]/boot/$KERNEL.img
# cp arch/arm/boot/dts/*.dtb /media/[username]/boot/
# cp arch/arm/boot/dts/overlays/*.dtb* /media/[username]/boot/overlays/
# cp ~/TpmAppNote/Src/tpmstartup.py /media/[username]/[rootfs -ID]/home/pi
Trebuie notat faptul că /media/ [username]/boot reprezint ă calea către directorul de
boot din cardul SD iar /media/ [username]/[rootfs -ID]/ reprezint ă calea către directorul de
root de pe cardul SD.
În final, comanda $sync face scrierea pe cardul SD și începând din acest punct, toate
comenzile se vor rula pe Raspberry.
Pentru a verifica dacă nucleul a fost încărcat cu succes se rulează următoarea
comandă :
$ uname –a
Rezultatul rul ării co menzii anterioare, pentru cazul de față este:
Linux raspberrypi 4.4.50 -v7+ #1 SMP Tue Apr 25 09:16:06 EEST 2017 armv71
GNU/Linux
Pentru a putea utiliza dispozitivul TPM este necesar ă o suită de aplicații suplimentare
ce pot fi instalate cu ajutorul comenzii :
# apt -get install build -essential libcurl4 -openssl -dev libtspi -dev openssl python tpm -tools
trousers
Sunt necesare și modificări asupra bibliotecii OpenSSL, dar acestea sunt explicate pe
larg în nota de aplicație prezentă în cadrul arhivei de la (37).
În continuare vor fi prezentate comenzile principale pentru lucrul cu dispozitivul TPM.
 Inițializarea dispozitivului TPM: # python tpmstartup.py –a
 Blocarea dispozitivului TPM: # python tpmstartup.py
 Pornirea aplicației TrouSerS : # tcsd –f
 Setarea proprietarului: # /usr/sbin/tpm_takeownership
 Activarea dispozitivului TPM: $ /usr/sbin/tpm_setenable –s

Pentru a atinge obiectivul de a obține fișiere criptate folosind un dispozitiv TPM, sunt

22
necesare cheile RSA generate de TPM și certificatele SSL obținute pe baza acestor chei.
Astfel de chei se obțin prin executarea comenzii : $ create_tpm_key -s 2048 -a tpm .key.
Certificatele sunt generate pe baza bibliotecii OpenSSL, în care au fost făcute modificările
descrise în nota de aplicație de la (37) . Generarea certificatelor se face prin executarea
comenzii :
$ openssl req -keyform engine -engine /usr/lib/openss l/engines/libtpm.so -key tpm .key -new –
x509 -days 365 -out tpm .crt
Un exemplu de criptare a informațiilor folosind o cheie generată de TPM și
certificatul specific acesteia poate fi realizat rulând următoarele comenzi :
$ echo Test data > plain.txt
$ cat plain.txt | openssl rsautl -encrypt -certin -inkey tpm .crt > cipher.txt
$ cat cipher.txt | openss l rsautl -decrypt -inkey tpm .key -keyform engine -engine
/usr/lib/openssl/engines/libtpm.so > decrypted.txt
La verificarea conținutului din fișierele plain.txt și decrypted.txt a fost fost constatată
prezeța aceluiași mesaj în ambele fișiere.
În co ntinuare vor fi prezentate comenzile necesare pentru instalarea unui server
Apache, server care găzduiește pagina web.
#apt-get install apache2
#apt-get install php5 libapache2 -mod-ph5
4.5. Scripturi dezvoltate
Pentru a obține un sistem funcțional a fost necesa ră dezvoltarea unui program pentru
programarea microcontrolerului de pe placa de dezvoltare FRDM KL25Z și a unor scripturi
Python și Bash pentru a realiza conexiunea dintre Raspberry Pi și FRDM.
Programul main.c descris în anexa Error! Reference source not found. reprezintă
codul pentru programarea plăcii de dezvoltare. Pinii pentru controlarea activității
consumatorilor de uz casnic sunt declarați de tipul DigitalOut. Sunt folosite două funcții
principale initialize (are scopul de a inițializa sistemul cu niște valori prestabilite ) și
serialReceive (reprezintă defapt o întrerupere în momentul în care un caracter de comand ă
este recepționat pe interfața serială). Mesajele ce pot altera starea siste mului sunt reprezentate
de un singur caracter și sunt descrise în Error! Reference source not found. .

Scriptul lighOn.py descris în anexa Error! Reference source not found. reprezintă
un model de script Python ce este
apelat în m omentul în care un utilizator apasă un buton din pagina web. Scriptul de față își
face setările necesare pentru a trimite caracterul “L” pe interfa ța serială, apelează scriptul
Error! Reference source not found. , modifică fișierul în care este stocată informația despre
starea curentă a iluminării și în final trimite pe interfața serială caracterul specificat mai sus.

Programul script.sh descris în anexa Error! Reference so urce not found. este un
script generic ce este apelat de către toate scripturile python din pagina web. Acesta are rolul
de salva într -o variabilă data și ora curentă și de a crea un director în /home/pi/ ce are num ele
variabilei anterior menționate. În directorul astfel generat va crea un fișier ce conține tipul
comenzii primite.

23

Scriptul checkSize.sh descris în anexa Error! Reference source not found. este un
program ce rulează în paralel cu serverul Apache. Acesta verifică dacă dimensiunea fișierului
de log al serverului se modifică. Modificarea dimensiunii poate însemna : conectarea unui nou
vizitator pe pagină, o reîncărcare a paginii sau o apăsare de bu ton. Scriptul de față face
diferența dintre aceste cazuri și le ia în calcul doar pe cele ce sunt generate de apăsări de
butoane. El genereză în final un singur fișier text criptat cu certificatul generat de TPM, fișier
ce conține informații despre comanda dată , data la care a fost primită, și adresa IP de la care
a fost primită, după care șterge conținutul fișierului de log. Același lucru îl face și pentru
cazurile de reîncărcare de pagină sau conectarea unui vizitator nou.
Ștergerea conținutului de log s-a dovedit a fi soluția optimă pentru a putea cripta
informațiile dorite. Inițial s -a dorit criptarea întregului fișierul de log, ceea ce nu s -a putut
folosind certificatul generat de TPM care are la bază o pereche de chei asimetrice RSA. De
asemenea se p utea opta pentru a salva ca informație utilă numai ultima linie din fișierul de
log al serverului. Aceasta nu era o soluție optimă datorită semnului de repetiție pe care
Apache îl folosește când mai multe comenzi provin de la același IP. Astfel, folosind m etoda
descrisă de scriptul checkSize.sh informația care ne interesează este completă.

Scriptul temp.py descris în anexa Error! Reference source not found. repezintă
scriptul de citire a temperat urii provenită de la senzorul DS18B20. Pentru a putea însă să fie
citită această informație, sunt necesare anumite modificări asupra fișierului de configurație al
Rapsberry Pi. În configurația standard, Raspberry Pi așteaptă comunicația cu un dispozitiv ce
are implementat protocolul “one-wire” pe pinul GPIO4. Deoarece acest pin este folosit de
pinul de reset al dispozitivului TPM, a fost ales pinul GPIO21 pentru a recepționa date de la
senzorul DS18B20 (care are implementat protocolul “ one-wire”). Din acest motiv a fost
modificat fișierul config.txt adăugând linia dtoverlay=w1 -gpio,gpiopin=21 . În acest punct o
restartare a sistemului este necesară pentru ca modificările făcute să fie depistate. Comanda
sudo modprobe w1 -therm este obligatorie pentru a putea citi date de la senzor. În cazul de
față aceste date se alfă in fișierul /sys/bus/w1/devices/28 -0315a61d31ff/w1_slave iar la o
afișare a conținutului acestui fișier rezultatul este reprezentat de Error! Reference source
not found. .

Scriptul temp.py extrage din informația prezentată doar valoarea temperaturii, pe care
o salvează într -un alt fișier. Acest fișier este pe urmă accesat pentru afișarea temperaturii în
pagina web.

4.6. Rezultate obținute
În urmă implementării celor menționate în această lucrare de diplomă, s -a realizat un
proiect de tipul Internet of Things ce are ca scop automatizarea și controlarea prin intermediul
unei pagini web a unor dispozitive de uz casnic. Pagina web creată,ce folosește codul sursă
de la anexa Error! Reference source not found. ,este o pagină statică ce afișează
utilizatorului informații despre temperatura ambientală, starea dispozitivelor controlate și, în
același timp, pune la dispoziția acestuia butoane ce permit acționarea dispozitivelor .

24

Comunicația dintre server și browser se realizează criptat folosind un certificat
generat de biblioteca OpenSSL iar în spatele server -ului se află scripturi Python și Bash ce
stochează informații despre activitatea din cadrul server -ului. Aceste cript ări sunt realizate
folosind o cheie privată generată de TPM și certificatul SSL specific acesteia. Un avantaj pe
care îl aduce această metodă este reprezentat de securitatea sporită la nivelul drepturilor de a
decripta informația criptată anterior. Chiar d acă un utilizator are drepturi de administrator,
acesta nu poate decripta informațiile fără a cunoaște și cheia de aprobare (EK) a
dispozitivului TPM. În cazul de față, pentru a schimba această cheie este necesară o resetare a
dispozitivului TPM care, dato rită operațiilor de restartare la rece, nu poate fi realizată decât
prin prezența fizică în vecinătatea server -ului. Restartarea la rece a unui dispozitiv Raspberry
Pi presupune atât rularea comenzii #shutdown –hP now cât și deconectarea acestuia de la
orice sursă de alimentare pentru un anumit interval de timp.

4.7. Dificultăți întampinate
În cadrul acestui proiect au fost întâmpinate două dificultăți majore. Prima dintre ele
face referire la placa demonstrativă ce are în componența sa cipul SLB9645. Deși co mpilarea
nucleului după multe încercări a condus către o versiune stabilă, placa în cauză nu este
detectată în mod automat de către Raspberry Pi la pornirea sistemului. Pentru ca dispozitivul
TPM să poată fi identificat de Raspberry Pi, este necesară rular ea a două comenzi la fiecare
pornire a sistemului :
# i2cdetect -r 2
# echo tpm_i2c_infineon 0x20 > /sys/bus/i2c/devices/i2c -2/new_device
Deși funcționalitatea cipului SLB9645 nu este afectată de acest aspect, datorită
faptului că se dorește realizarea un ui proiect de tipul Internet of Things care mizează pe
automatizarea și controlarea unor dispozitive de uz casnic, s -a considerat a nu fi acceptabil ca
aspectele ce depind de funcționarea server -ului să nu poată fi și ele automatizate. Astfel s -a
decis uti lizarea plăcii demonstrative ce are încorporat cipul SLB 9670. Pentru aceasta, o nouă
recompilare a nucleului din Raspberry Pi este necesară, recompilare ce nu este executată cu
succes de fiecare dată.
A doua dificultate majoră întampinată se referă la ut ilizarea cheii private generate de
TPM și a certificatului SSL aferent pentru a realiza comunicația la nivel de server în mod
securizat, care reprezenta unul dintre obiectivele secundare ale acestui proiect de diplomă. În
încercarea de a remedia aceste pro bleme au fost acordate drepturi asupra fișierelor menționate
anterior pentru utilizatorul www -data (utilizatorul creat de Apache) și referirea în fișierul de
configurare al protocolului SSL din Apache folosind atât căile absolute cât și cele relative.
Acea stă dificultate este prezentată în Error! Reference source not found. .

25
5. Concluzii
În finalul acestei lucrări de diplomă, este necesar a expune anumite concluzii, dar
pentru aceasta o recapitulare a scopului lucrării și obiectivelor sale este indicată. Scopul
lucrării nu a fost acela de a revoluționa diverse aspecte ale universului Internet of Things sau
de a realiza noi metode de securizare a informației. S -a vrut mai degrabă a introduce noțiuni
fundamentale despre cele menționate anterior, exemplificându -le prin implementarea unui
ansamblu de tip “Smart House” (“Cas ă inteligentă”) prin care se poate realiza automatizarea
și controlarea prin intermediul unei pagini web a unor dispozitive de uz casnic.
Obiectivele principale ale acestei lucrări de diplomă au fost realizarea unui server
securizat și integrarea unui dispozitiv TPM cu acesta. În cadrul securizării comunicației la
nivelul server -ului s -au remarcat două obiec tive secundare : securizare folosind certificate
SSL standard și securizare folosind chei și certificate generate de dispozitivul TPM. Primul
obiectiv secundar a fost realizat cu succes prin utilizarea bibliotecii OpenSSL, însă cel de al
doilea obiectiv nu a putu fi atins din cauza lipsei protocolului de comunicație dintre server și
TPM dar și din cauza lipsei de experiență a autorului acestei lucrări în domeniul comunicației
dintre un TPM și sistemul pe care este instalat.
Deși nu s -a putut realiza securiz area comunicației la nivel de server folosind
dispozitivul TPM, acesta a fost folosit cu succes pentru a cripta informațiile utile salvate ,
ceea ce reprezintă defapt atingerea celui de -al doilea obiectiv principal.
În opinia autorului acestei lucrări de diplomă, criptografia și universul Internet of
Things reprezintă două domenii de actualitate și de viitor, extrem de vaste și cu o dezvoltare
continuă și extrem de rapidă în cazul celui de al doilea. Această lucrare de diplomă
reprezintă o introducere în domeniile expuse anterior și nu o expunere detaliată asupra tuturor
aspectelor ce le compun, deoarece, pentru aceasta, sunt necesari ani de cercetare și experiență
în fiecare dintre cele două domenii.

Similar Posts