Puncte:6

TLS 1.3 - De ce nu au fost specificate moduri de criptare-apoi-MAC?

drapel cn

M-am zgâriat de ceva vreme de ce TLS 1.3 nu include niciun mod de criptare-apoi-MAC (EtM). Toate problemele anterioare în TLS au fost cauzate de MAC apoi și de criptare. În timp ce criptați, MAC evită toate problemele cauzate de umplutură în trecut, deoarece un receptor poate verifica integritatea mesajului fără a fi nevoit mai întâi să decripteze mesajul și apoi să gestioneze corect umplutura deteriorată.

Ceea ce este enervant pentru mine este că există destul de multe micro-controlere care au accelerare hardware AES încorporată. Cu toate acestea, ceva de genul o multiplicare fără transport pentru GCM există într-adevăr doar pe procesoarele server și desktop.

În timp ce ChaCha20-Poly1305 îl folosește, înseamnă că renunțați la utilizarea hardware-ului AES pe micro-controlere. În timp ce ChaCha20 funcționează bine cu micro-urile pe 32 de biți, va folosi totuși mai multă putere decât hardware-ul AES încorporat și probabil va fi mai lent în funcție de micro. De asemenea, Poly1305 necesită efectuarea unor aritmetici modulare cu numere mari în comparație cu o mulțime de funcții hash.

Mă scarpin în cap, deoarece nu este nimic în neregulă cu EtM. Am găsit chiar și un proiect de IETF AES-CBC-HMAC unde se efectuează EtM.Cu toate acestea, nu a trecut niciodată de un draft care mi se pare ciudat.

Editați | ×: Din moment ce au fost menționate suitele CCM Cipher. în timp ce rulați AES în modul CTR evită umplerea oracolelor. Nu face parte din pachetul de cifrat obligatoriu sau unul dintre AR TREBUI SĂ implementează suite. Vedea: Obligatoriu de implementat Cipher Suites Deci, practic, nu se poate profita de hardware-ul AES pe un micro fără a avea și GCM. (de exemplu, multe servere dezactivează CCM în mod implicit și nici Firefox, nici Chrome nu activează CCM). Deci, din nou, încă pare ciudat, nu există nimic între ele aici și nu văd cu adevărat niciun motiv bun pentru care, iar un mod EtM pare un candidat decent, dar unul nu a fost nici măcar adăugat la standard.

Puncte:5
drapel in

Pentru dispozitivele încorporate există Modul CCM, care este practic o modalitate sigură de a efectua AES-CBC-MAC + AES-CTR într-un mod de pachete (inutil de complex, dar destul de eficient). Rețineți că acesta este practic MAC-apoi-criptare, dar ca parte a unui mod general securizat; atacurile cu oracole de umplutură nu sunt cu siguranță aplicabile, deoarece modul contor nu necesită umplutură.

Suitele de criptare disponibile sunt:

  • TLS_AES_128_CCM_SHA256
  • TLS_AES_128_CCM_8_SHA256 (așa cum este definit în RFC 6655)

Acesta din urmă are, de asemenea, o etichetă de autentificare mai eficientă (în ceea ce privește dimensiunea, nu efortul de calcul) de 8 octeți / 64 de biți, care ar trebui să fie suficient.

Deci, cred că nu au crezut că un alt algoritm este necesar, și pentru că există puține sisteme încorporate care au accelerație SHA-1 sau SHA-256.

Note:

  • Hash-ul de la sfârșitul pachetului de cifrat este folosit doar pentru derivarea cheilor de sesiune și altele (PRF-ul în TLS), deci nu este folosit pentru fiecare mesaj.
  • AES în modul CTR și în CBC-MAC este folosit doar în modul de redirecționare/criptare, deci nu aveți nevoie de suport hardware pentru operația de decriptare.
kelalaka avatar
drapel in
Există un motiv specific pentru a scrie AES-CBC-MAC + AES-CTR în loc de AES-CTR + AES-CBC-MAC, altul decât indicarea că MAC este efectuat înainte de criptare?
Maarten Bodewes avatar
drapel in
@kelalaka Nu, am crezut că este mai puțin confuz în acest fel.
kelalaka avatar
drapel in
Poate adăugând $$c = \big(\operatorname{AES-CTR}(m)\|(\operatorname{AES-CTR}(m_0) \oplus \operatorname{AES-CBC-MAC}\big(Nonce\mathbin\ |Datele asociate \mathbin\|m) \big)\big)$$ vor face mai clare sau neclare.
drapel cn
Sigur că există CCM. Este în regulă, de exemplu, dacă controlezi serverul cu care vorbește dispozitivul tău pentru o solicitare api etc... Un alt lucru pe care l-am observat este că alte servere par să-l dezactiveze des. De asemenea, Chrome și Firefox nu activează această suită de criptare, limitând din nou opțiunile.
drapel cn
Un alt lucru, așa cum menționați, CCM nu este EtM, dar da, rularea AES, practic, ca un cifru de flux, evită umplerea oracolelor. Cu toate acestea, așa cum am menționat, modurile de operare CCM nu par activate pe scară largă. Practic, forțând ceva de genul ChaCha20-Poly1305 pentru o compatibilitate mai largă, deoarece GCM va necesita înmulțiri fără transport. Încă mi se pare ciudat, deoarece există un gol aici. În cazul în care pare că un mod EtM ar fi activat mai pe scară largă și pare ciudat, nu există moduri EtM pentru TLS 1.3.
Maarten Bodewes avatar
drapel in
Sigur, dar nu este clar cum de ex. CBC + HMAC ar merge, de asemenea. Probabil că nu ar fi o suită de criptare necesară, așa că ar fi și opțional. Faptul că CCM nu este EtM este oarecum în afara sensului... atâta timp cât este sigur. Este puțin probabil ca cineva să o implementeze ca decriptare, utilizare și apoi verificare - chiar dacă acest lucru este posibil.
drapel cn
Ei bine, CBC + HMAC este o construcție bine cunoscută și, dacă este operată într-o construcție EtM, evită principalele capcane ale MAC-ului de criptare. Nu pare nerezonabil ca, chiar dacă ar fi opțional, să fie activat mai des, deoarece este o construcție bine cunoscută.

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.