Puncte:1

Criptarea datelor mici cu cheie fixă ​​și IV incrementală

drapel br

Am un dispozitiv Bluetooth care trimite periodic un pachet mic (fără a primi). Doresc să criptez și să autentific datele folosind AES-128. Are o cheie unică și aleatorie încorporată, care este inscripționată în memorie la producție și este cunoscută de receptor. Am următoarea structură de mesaje:

Tejghea Încărcătură utilă Magie Captuseala
4 octeți 10 octeți 4 octeți 2 octeți

Tejghea nu este criptat și va crește secvențial pentru fiecare mesaj (nu se va repeta niciodată) și va fi folosit ca IV la modul AES-CTR. De asemenea, va servi pentru a proteja împotriva atacurilor de reluare, adică pachetele mai vechi vor fi ignorate.

Magie este un număr fix și cunoscut pentru a verifica dacă mesajul decriptat nu este farfurie și că sunt date valide.

Captuseala este ignorat în partea receptorului și folosit pentru a completa datele criptate la 16 octeți.

Sarcina utilă + Magic + Padding vor fi criptate împreună înainte de trimitere, de exemplu.

Tejghea Date criptate
4 octeți 16 octeți

Întrebările sunt:

  1. Poate un ascultător pasiv să rupă această criptare și/sau să creeze mesaje legitime?
  2. Acesta oferă și autentificare, deoarece nimeni, cu excepția deținătorului cheii, nu poate crea un astfel de mesaj?
  3. Este OK să folosești IV/nonce cu 0 înaintea contorului? Ar trebui să atașez contorul la un număr aleatoriu (care este, de asemenea, ars din fabrică)?
  4. Ce să pun la umplutură, 0 sau numere aleatorii? Este chiar necesar?
  5. Este logic utilizarea numărului magic în acest fel? Trebuie să generez magie aleatoare și să o trimit atât necriptată, cât și criptată pentru validare de către receptor?
  6. Care este metoda corectă/ bine stabilită pentru criptare și autentificare într-o astfel de setare?
Puncte:4
drapel in
  1. Poate un ascultător pasiv să rupă această criptare și/sau să creeze mesaje legitime?

Un ascultător pasiv nu ar trebui să poată inversa AES, așa că obținerea textului simplu ar trebui să fie imposibilă, cu excepția cazului în care fiecare sesiune este repornită.Cu toate acestea, această schemă ar fi vulnerabilă la atacurile oracle cu text clar. Citește mai departe.

Cât despre crearea de mesaje legitime: acesta nu este un atac pasiv.

  1. Acesta oferă și autentificare, deoarece nimeni, cu excepția deținătorului cheii, nu poate crea un astfel de mesaj?

Nu. Dacă înfăptuiți un om în mijloc, puteți schimba fiecare fragment din mesaj și puteți lăsa magia intactă. În modul CTR, toți biții de text simplu/ciphertext sunt independenți unul de celălalt. De asemenea, permite unui atacator să efectueze atacuri oracle cu text clar (prin schimbarea unui pic de text simplu și apoi să detecteze modul în care sistemul răspunde la acesta).

  1. Este OK să folosești IV/nonce cu 0 înaintea contorului? Ar trebui să atașez contorul la un număr aleatoriu (care este, de asemenea, ars din fabrică)?

Atâta timp cât contorul nu se repetă niciodată, modul CTR este relativ sigur - atâta timp cât este utilizat corect, ceea ce nu este cazul aici.

  1. Ce să pun la umplutură, 0 sau numere aleatorii? Este chiar necesar?

Nu, pentru modul CTR nu este necesară umplerea.

  1. Este logic utilizarea numărului magic în acest fel? Trebuie să generez magie aleatoare și să o trimit atât necriptată, cât și criptată pentru validare de către receptor?

În mod normal, ați folosi un mod autentificat pentru a crea o etichetă de autentificare. 32 de biți este de obicei prea mic, dar, în funcție de cazul de utilizare, ar putea fi suficient pentru sisteme în timp real etc.

  1. Care este metoda corectă/ bine stabilită pentru criptare și autentificare într-o astfel de setare?

Dacă aveți doar AES, atunci modul CCM ar fi modul normal.


NB

  • Schema pe care o descrieți în prezent pare mai potrivită pentru criptarea directă AES sau AES-CBC. De exemplu, dacă ați tampona și criptați contorul, l-ați putea folosi ca IV pentru AES-CBC. Dacă ai pune valoarea 02 în octeții de umplutură ai mesajului, atunci veți avea padding compatibil PKCS#7. Avantajul acestui lucru este că biții din criptarea blocului AES a mesajului sunt acum toți dependenți unul de celălalt, prin urmare magia ar funcționa ceva mai bine.

  • Schema dvs. actuală pare să fie limitată la o singură sesiune.În mod normal, veți obține chei de sesiune noi pentru fiecare sesiune.

  • Chiar dacă modul este schimbat la CBC, există un $1 \peste 2^{32}$ șansa ca un atacator să creeze un mesaj cu o magie validă, doar încercând la întâmplare. Restul mesajului ar fi probabil deranjat, dar nici procesarea textului denaturat ar putea să nu fie o idee bună. Poate că ar putea fi implementate contramăsuri suplimentare împotriva acestui lucru (cu toate acestea, majoritatea acestora ar putea duce la atacuri DoS).

drapel br
Multumesc pentru raspunsul detaliat. Bănuiesc că vulnerabilitatea cheie aici este: „În modul CTR, toți biții din textul simplu/text cifrat sunt independenți unul de celălalt”, dar nu prea înțeleg ce înseamnă de fapt.
drapel br
Nu există nicio garanție că receptorul primește toate mesajele, de fapt căderile de pachete sunt destul de frecvente. Mai putem recupera textul simplu în acest caz când folosim AES-CBC? De asemenea, sarcina utilă poate fi diferită pentru fiecare mesaj.
Maarten Bodewes avatar
drapel in
În modul CTR, XOR textul simplu cu fluxul de chei, bit cu bit. Deci, orice răsturnare a biților de text cifrat răsturnează pur și simplu biții de text simplu din aceeași locație. i.e. puteți schimba orice bit de text simplu fără a afecta magia.
Maarten Bodewes avatar
drapel in
În schema pe care am descris-o am umplut și criptat contorul pentru a putea fi folosit ca un IV.Asta face ca decriptarea CBC să depindă doar de contor și - desigur - de cheie.
drapel br
Totul este mai clar acum. Am citit specificația modului NIST CCM - care a fost surprinzător de ușor de citit - și cred că acest mod este cel corect pentru aplicația mea. Din câte înțeleg, nu suferă vulnerabilitățile cu schema magică, care a fost o alegere proastă pentru început. Multumesc pentru ajutor.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.