Înțelegerea autentificării cu ATSHA204A

Deoarece există multe companii chineze care pot realiza cu ușurință inversarea proiectării PCB și extrage fișierul .hex din microcontrolere (chiar din blițul sigur), dezvoltatorii încorporați trebuie să adauge ceva mai multă protecție produselor lor. În cazul meu, „folosesc un STM32F103 și vreau să adaug IC cripto ATSHA204A pe PCB pentru a-mi proteja IP-ul. Prin aceasta, sper chiar dacă pot scoate .hex-ul din MCU și clona placa, fișierul hex va refuza să funcționeze dacă nu poate recunoaște cipul criptat pe PCB.

Acest criptografic IC are un număr de serie unic care a fost scris în timpul fabricării și poate fi citit întotdeauna. De asemenea, are unele caracteristici, cum ar fi o zonă securizată pentru păstrarea unor date secrete, capacitatea de a genera numere aleatorii și de a le trimite gazdei prin I2C sau un singur fir, capacitatea de a calcula hasha SHA-256 a unui șir dat și așa mai departe.

Acum încerc să înțeleg cum ar trebui să lucrez cu el, deoarece sunt un fel de noob pe subiectul autentificării. Din ceea ce am înțeles din citirea fișei tehnice, fluxul de lucru va fi astfel:

Personalizarea criptografiei IC:

  1. Zona securizată din criptă cipul va fi completat de gazdă (STM32F103 în cazul meu) cu o cheie secretă aleatorie pentru fiecare produs, o singură dată.

  2. Cheia secretă va fi prezentă și în blițul gazdelor memory.

Autentificarea plăcii (Înțelegerea mea, care este probabil greșită):

  1. Gazda solicită un număr aleatoriu din cripto-IC. Apoi, gazda generează un șir concatenat cu cheia secretă și numărul aleatoriu (nonce?) Și calculează hash-ul SHA-256 al acestuia.

  2. Acum gazda ar trebui să trimită cheie aleatorie înapoi la cripto-IC și așteptați de la acesta să genereze același șir cu cheia secretă din interiorul cripto-IC și să calculeze hash-ul SHA-256 al acestuia.

  3. Crypto-IC trimite hash-ul calculat înapoi către gazdă și gazda compară hashurile.

  4. Dacă hash-urile se potrivesc, validați. Dacă nu, gazda refuză să funcționeze.

Fluxul de lucru este probabil greșit, dar ideea principală ar trebui să fie ceva apropiat. Poate cineva să explice acest lucru?

Răspuns

Fluxul de lucru este probabil greșit, dar ideea principală ar trebui să fie ceva apropiat de ea.

Nu, în esență este inutil. Acest lucru ar fi bine dacă ați folosi cripto-IC-ul dvs., de exemplu, pentru a valida autenticitatea un dispozitiv suplimentar (de exemplu, o imprimantă care verifică cartușul a fost realizată de aceeași companie).

Nu vă ajută , deoarece " refuză să funcționeze " nu va zbura dacă cineva are codul de mașină al firmware-ului dvs.: găsirea verificării în codul mașinii demontate nu este de obicei acela greu. Apoi, este la fel de mult ca înlocuirea unui " salt la „opriți și nu faceți nimic” " cu un " săriți la „start de funcționalitate utilă „"; de obicei, aceasta implică schimbarea unui octet.

Trebuie să criptați partea interesantă a firmware-ului dvs. în stocarea permanentă (de obicei, blițul încorporat al MCU). Doar un bootloader care folosește criptocript pentru a decripta firmware-ul principal ar rămâne necriptat. La pornire, bootloader-ul decriptează firmware-ul în RAM.

Problemă mică: ar trebui să fii destul de inteligent, din punct de vedere hardware, astfel încât să nu poți „t atașați un analizor logic între MCU și cripto-IC și adulmați octeții decriptați.

Există soluții care ofuscă lucrurile sărind în memorie în timp ce descifrează lucruri etc. Problema este că nu există nimic secret despre asta, este doar un pic mai mult de lucru pentru a înțelege cum se face săriturile în jurul valorii de la codul mașinii. (Și dacă reușiți să inserați o singură bucată de cod de mașină pe acea autobuz care face ca MCU să transmită întreaga RAM prin intermediul unui pin, atunci și el se termină; nu contează cu adevărat dacă știți unde acea bucată de cod ajunge în RAM, o veți găsi mai târziu în dump, este important doar să fie executată la un moment dat.)

Cu alte cuvinte, dacă credeți cu adevărat că firmware-ul dvs. este atât interesant din punct de vedere comercial (oamenii o supraestimează în mod sălbatic! Pentru lucrurile care nu sunt în principal firmware, cum ar fi despre orice dispozitiv de consum și orice control industrial, este de obicei greu să obțineți toate piesele și să construiți același dispozitiv / similar mai ieftin decât originalul și rescrierea completă a firmware-ului este adesea ușoară în comparație cu aceea), atunci singura dvs. șansă este să integrați păstrarea secretă, stocarea criptată și executarea sigură (astfel încât să nu fie posibilă descărcarea RAM).

Există microcontrolere care fac asta. De obicei sunt puțin mai scumpe.Dar, după cum puteți ghici, dacă vă aflați, de exemplu, într-un mediu de apărare în care trebuie să certificați că firmware-ul nu poate fi modificat, ei bine, acesta este drumul dvs. de urmat.

Nintendo creează dispozitive în care stimulentul financiar pentru a nu lăsa pe nimeni să își citească firmware-ul sau chiar să îl modifice este puternic:
Incapacitatea utilizatorilor de a rula software care nu a fost licențiat de Nintendo pe consolele lor este esențială pentru modelul lor de afaceri. Prin urmare, imposibilitatea de a ocoli verificarea semnăturilor jocului este esențială și de aceea un Nintendo Switch merge complet cu mai multe straturi de protecție. După cum puteți ghici, asta nu este o garanție – au existat pur și simplu pasionați (nici măcar oameni cu un interes penal / comercial!) Care au găsit o cale în acest sens.

Dar veți observa un lucru: Doar pentru că este greu de făcut perfect, nu înseamnă că nu merită să clonați dispozitivul mai greu. În umila mea experiență, clonatorii de obicei capitulează de îndată ce veți avea nevoie de înțelegere a modului în care funcționează un dispozitiv pentru a-l copia – în caz contrar, ar fi în poziția de a avea ingineri care ar putea să vă facă treaba, mai mult sau mai puțin, iar acei ingineri lucrează de obicei în sectorul dvs., nu în unele laboratoare contrafăcute. Prin urmare, un bun factor de descurajare este introducerea firmware-ului criptat în bliț. Nu este perfect, dar în momentul în care ar fi trebuit să iasă din analizorul logic și să petreacă săptămâni în inginerie inversă protocolul de decriptare în RAM, doar pentru a obține ceva pe care ar putea să-l copieze, ar putea fi suficient pentru a considera riscul financiar prea mare altceva.

Comentarii

  • " oamenii supraestimează în mod sălbatic faptul că ", dar oamenii supraestimează la fel de sălbatic costul ingineriei inverse.
  • Vă mulțumim pentru răspunsul excelent, nu putem susține că nu au suficientă reputație. Da, ' este practic imposibil să-l facă 100% sigur, dar adăugarea unei măsuri de securitate foarte simple cu un cip criptografic de 0,3 dolari ar putea crește costul ingineriei inverse de la 3 cifre $ la poate 5 cifre, în timp ce creșteți timpul necesar de la câteva zile la câteva luni dacă securitatea este proiectată suficient de inteligent. Și ar putea respinge hackerii (în funcție de potențialul financiar al produsului) Cred că voi continua prin criptarea " partea interesantă " din firmware-ul principal.
  • Voi ' voi reduce estimarea la " creșterea timpului de la o oră la poate câteva zile ", iar costul este practic irelevant în ambele cazuri. Costul ar fi " esențial gratuit " pentru oricine care ' a primit instrumentele electronice oricum și chiar dacă nu, 200 € plus un laptop vă oferă un început rezonabil.
  • Atunci ar trebui să renunț și să nu folosesc deloc protecție? 🙂
  • @NotReallyaMaster care depinde de tine ' Am ' dedicat ultimului paragraf al răspunsului meu la acea întrebare.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *