Conectivitatea la Internet furnizează o modalitate de a introduce valoare adăugată uriașă sistemelor embedded și totuși, aceeași conectivitate poate fi o amenințare la integritatea dispozitivelor precum și a aplicațiilor IoT care sunt construite pe baza acestora. Folosind tehnici de proiectare inteligentă, este posibil să întoarcem această situație în favoarea noastră. Construite pe o fundație potrivită, dispozitivele IoT, precum și sistemele embedded conectate la internet pot folosi serviciile online pentru a dispune de securitate pe termen lung și pentru a proteja rețeaua, chiar dacă nodurile individuale ale rețelei sunt, la un anumit moment, compromise. Atingerea nivelului de securitate necesar este o sarcină complexă, dar acum apar soluții care oferă un pachet de măsuri și facilități care se concentrează pe diferite amenințări: un exemplu este platforma Azure Sphere de la Microsoft și subsistemul său embedded de securitate Pluton.
Elementele hardware esențiale pentru securitatea IoT
O cerință fundamentală a securității dispozitivului IoT este integritatea sistemului. Dispozitivul trebuie protejat împotriva unor modificări și intruziuni neautorizate. Hackerii sunt plini de resurse și vor exploata orice punct slab pe care îl pot identifica pentru a încerca să compromită un sistem. Securitatea stratificată este un mijloc prin care OEM-urile își pot reduce vulnerabilitatea la atacurile de a compromite o parte a unui sistem. De exemplu, supraîncărcarea registrului tampon este un mecanism utilizat în mod frecvent pentru a pătrunde într-un sistem și funcționează profitând de configurația datelor din memorie. Pachetele de rețea supradimensionate pot duce la stocarea codului scris de hacker în afara memoriei alocate regiștrilor tampon de rețea și apoi să fie executate accidental de către sistemul țintă. Din perspectiva hackerului, acest atac deschide o cale pe unde ei pot încărca o nouă imagine executabilă. După ce dispozitivul a fost repornit, astfel încât să poată executa acea nouă imagine, hackerul are apoi control complet asupra sistemului, respectiv acces la secrete și alte date valoroase.
Un mecanism de pornire sigură oferă mijloacele de a opri acest atac precum și alte atacuri, asigurându-se că numai executabilele furnizate de o parte autorizată pot fi rulate. O cerință de bază pentru implementarea unui mecanism de pornire sigură este o zonă a memoriei nevolatile care este tratată ca read-only (numai citire) după fabricare – aceasta conține codul de încărcare care obligă procesorul să verifice integritatea imaginii de pornire încărcate în sistem. Dacă nu trece de verificarea integrității, dispozitivul nu va porni până când nu este prevăzut cu o imagine de pornire validă.
Cel mai simplu mecanism pentru o verificare a integrității este o formă de sumă de control. Totuși, acest algoritm nu verifică originea imaginii de pornire. O imagine de pornire falsificată ar putea trece în continuare de verificarea integrității, dacă hackerul știe să construiască una bazată pe un ID de producător sau pe un cod public similar, care se crede secret. Utilizatorii pot realiza o verificare a integrității mult mai eficientă: una care combină ID-urile producătorului cu cele ale dispozitivului, asigurându-se că acest cod încărcat în memoria flash pentru utilizare la următoarea pornire este semnat cu o funcție hash, generată cu ajutorul unui ID unic stocat local. Pentru a vă proteja împotriva atacurilor care ar putea fi utilizate pentru a găsi acest ID, dispozitivul ar trebui, de asemenea, să aibă o rădăcină hardware de încredere.
Rădăcina hardware de încredere este o zonă protejată pentru derularea operațiunilor sensibile la securitate, care ar trebui să ofere protecție împotriva sabotajului fizic și atacurilor de la distanță. Pentru a oferi o astfel de protecție, rădăcina de încredere implementează un procesor securizat care are acces exclusiv doar la codul de pe chip și la datele de memorie. Cheile de criptare și alte date sigure sunt stocate în aceste zone, iar rădăcina de încredere este configurată pentru a nu permite accesul la aceste elemente din exterior. Procesorul securizat este adesea ajutat de un procesor criptografic, pentru a accelera acele operațiuni, și de un generator real de numere aleatorii (TRNG- true random number generator) care este utilizat pentru a genera software către sisteme care rulează în afara rădăcinii de încredere, pentru a determina dacă acestea ar trebui să aibă acces la resursele sistemului. Un exemplu de rădăcină hardware de încredere este subsistemul de securitate Pluton implementat ca parte centrală a modulului Azure Sphere, disponibil prin Farnell.
Având integrată o rădăcină harware de încredere, un dispozitiv are potențialul nu doar de a-și asigura propria protecție și de a securiza toate datele pe care le trimite, ci demonstrează că este un dispozitiv legitim care trimite date de încredere către alte noduri de pe internet, indiferent dacă sunt alte dispozitive IoT sau servere din cloud. Mai mult, acest lucru ajută la îmbunătățirea securității, deoarece dispozitivele pot refuza să comunice cu orice rețea conectată care nu are autorizări acceptabile. De asemenea, Pluton impune securitatea în cadrul sistemului pentru a controla acțiunea dispozitivelor periferice, care pot fi chiar ele compromise. Firewall-urile din cadrul procesorului împiedică accesul neautorizat la funcții sensibile și încercările de a prelua controlul unui sistem care folosește, de exemplu, periferice contrafăcute.
Atestarea este mecanismul prin care software-ul sau dispozitivele de la distanță își pot dovedi identitatea sau autenticitatea. De obicei, această atestare este realizată cu ajutorul unor protocoale bazate pe mecanisme de infrastructură cu cheie publică (PKI- Public-Key Infrastructure). Sub PKI, mesajele sunt criptate folosind chei publice, care pot fi distribuite liber fără a compromite protocolul, deoarece numai cheia privată corespunzătoare poate decripta mesajul. Aceste chei private sunt cele care vor fi stocate în memoria sigură a rădăcinii hardware de încredere și sunt de obicei stocate în timpul fabricării.
Securitate pentru comunicații
Atunci când dispozitivul dorește să stabilească o cale de comunicație sau să-și dovedească identitatea, acesta va folosi protocoale pentru a genera certificate și semnături folosind una sau mai multe dintre cheile private. Protocoalele de semnare și certificare combină valori aleatorii, create în mod ideal cu ajutorul unui TRNG, cu cheia privată pentru a crea valori precum cheile de sesiune, care sunt utilizate o singură dată pentru perioade scurte înainte de a fi înlăturate, pentru a evita posibilitatea ca hackerii să intercepteze mesaje și să se le recreeze în așa-numitele „replay attaks” (atacuri cu mesaje replicate). Odată create, protocoalele PKI asigură că o cheie privată nu trebuie accesată niciodată în afara zonei sigure.
În cazul Azure Sphere, subsistemul Pluton generează în timpul fabricării două chei private de bază, care nu pot fi nici măcar citite ulterior direct de software. Toate mesajele derivate din cheile private sunt create de cripto-procesorul din subsistemul Pluton. Aceasta soluție rezolvă o slăbiciune importantă în multe sisteme în care cheile private sunt generate extern și programate în dispozitiv, ceea ce deschide posibilitatea interceptării.
Orice dispozitiv poate genera chei private și le poate stoca intern. Problema care se pune este de a determina dacă aceste chei sunt valide atunci când dispozitivul apare prima dată în rețea. Azure Sphere realizează acest lucru prin generarea de chei publice potrivite: una pentru atestare și alta pentru servicii sigure definite de utilizator. Aceste chei publice sunt livrate către Microsoft, la fabricare, pentru a fi utilizate de serviciul său de cloud, Azure. De asemenea, tot stocate în dispozitiv sunt și certificatele digitale generate folosind mecanisme PKI care sunt utilizate pentru a verifica mesajele care provin de pe serverele Azure.
Când un dispozitiv Azure Sphere se conectează la cloud, acesta verifică identitatea serverului prin compararea mesajelor cu certificatul creat de Azure pe care îl are stocat în memoria securizată. În acest moment și dispozitivul trebuie să se autentifice serverului, etapă realizată folosind un protocol de atestare la distanță. În sistemul Azure Sphere, nu este doar dispozitivul identificat, ci și codul pe care îl rulează. Aceasta se realizează prin crearea unei chei de sesiune bazată pe funcțiile hash criptografice ale secvențelor de cod găsite în timpul procesului de pornire sigură. Aceste valori sunt semnate cu o cheie privată pentru atestare generată de criptoprocesorul local. Deoarece serviciul Azure poate genera o cheie publică corespunzătoare pe baza cheii publice a dispozitivului pe care o deține în baza sa de date, acesta poate verifica identitatea dispozitivelor pe care le-a pornit folosind firmware-ul autorizat.
Disponibilitatea unui serviciu cloud pentru autentificarea dispozitivelor are și alte avantaje: cu Azure Sphere, de exemplu, atunci când un dispozitiv este considerat corespunzător și rulează software-ul corect, acestuia îi este atribuit un certificat care, atunci când este utilizat în conjuncție cu propriile autorizări stocate, poate fi prezentat altor servicii și dispozitive online pentru a dovedi identitatea. Certificatul este valabil aproximativ o zi, ceea ce limitează potențialul atacurilor, iar dispozitivul va fi obligat să-și demonstreze buna funcționare în mod regulat dacă dorește să mențină o conexiune la serviciile IoT. Această soluție reprezintă un nivel de protecție pe care sistemele de sine stătătoare nu îl pot experimenta, deoarece, dacă sunt compromise de un atac fizic, nu pot fi remediate fără o verificare manuală.
Dacă dispozitivul nu trece procesul de pornire sigură, dispozitivul client nu poate obține un certificat care să îi permită să funcționeze ca un sistem autentificat și validat și va fi scos din rețeaua IoT, fiind incapabil să funcționeze într-o manieră care să evite atacurile hackerilor. Totuși, eșecul la autentificare oferă un mijloc de remediere a situației, permițând dispozitivului să se conecteze la serviciile Azure pentru a descărca și instala o imagine de pornire conformă și actualizată. Acest lucru oferă un nivel suplimentar de protecție împotriva atacurilor care exploatează punctele slabe din versiunile mai vechi ale firmware-ului de autentificare.
Pentru mulți proiectanți de sisteme embedded, “capabilitatea de conectare la internet” a devenit o cerință esențială, iar amenințările de securitate care apar în acest domeniu pot fi controlate. Prin intermediul platformelor precum Azure Sphere, conectivitatea la internet oferă o soluție de protecție mult mai robustă.
Autor:
Cliff Ortmeyer, Director Global Marketing Tehnic
https://ro.farnell.com