Puncte:3

Oferă AEAD vreun beneficiu față de cifrul brut în această setare?

drapel cn

Lucrez la un depozit de date criptografice în care bloburile trebuie identificate și referite printr-un hash al datelor criptate. Gândiți-vă la arborele Merkle cu noduri criptate. Într-o astfel de setare în care hash-ul stabilește deja autenticitatea (presupunând că funcția hash în sine nu este întreruptă), există vreo valoare în utilizarea unui AEAD, mai degrabă decât în ​​utilizarea cifrului direct?

Cred că acest lucru este diferit de subiectul clasic criptare-apoi-MAC, deoarece nu există hash sau MAC stocat împreună cu blob-ul pentru a-l autentifica. Mai degrabă, hash-ul este o referință externă din altă parte care este deja autentificată (nu este supusă alertării de către un atacator).

Un alt detaliu l-am omis inițial crezând că este irelevant, dar retrospectiv pare să clarifice problema: nu există o cheie simetrică pre-partajată; cheia care ar putea fi utilizată într-un cifru brut sau AEAD este una derivată dintr-un secret efemer și cheia publică a părții care primește prin ECDH. Ca atare, orice atacator care cunoaște cheia publică poate produce un blob cu o etichetă AEAD validă folosind propriul secret efemer. Totuși, presupunând că funcția hash nu este întreruptă, un astfel de blob nu va fi hash la o valoare pe care partea care o primește și, prin urmare, nu va fi utilizată niciodată.

Puncte:1
drapel in

Dacă există deja mijloace de autentificare a textului simplu, atunci este într-adevăr posibil să omiteți autentificarea textului simplu sau a textului cifrat prin alte mijloace.

Există, desigur, niște catcha.

În primul rând, textul simplu nu ar trebui să fie folosit în niciun fel înainte ca valoarea hash autentificată să fie verificată.Dacă nu este cazul, atacatorul poate schimba textul simplu, ceea ce înseamnă că partea este supusă mai multor tipuri de atacuri, inclusiv oracolul textului simplu sau eventual injecția de greșeală.

În plus, implementarea nu ar trebui să ofere nicio informație despre procesul de decriptare. Dacă o face, atunci implementarea poate deveni supusă atacurilor pe canale laterale. Mai rău, dacă de ex. CBC este folosit, apoi se aplică oracole de umplutură. Prin urmare, este mai logic să folosiți AES-CTR sau un cifr de flux, cum ar fi ChaCha20.

Ultimele două greșeli de proiectare/implementare pot fi evitate atunci când se utilizează un mod autentificat. Așadar, modul autentificat poate fi folosit chiar dacă cheia nu poate fi de încredere. Un dezavantaj este că alți dezvoltatori ar putea presupune că modul autentificat oferă autentificarea necesară și să înceapă să folosească textul simplu chiar dacă mesajele nu au fost încă autentificate.

Personal, nu aș folosi modul autentificat pentru asta.


Rețineți că manipularea IV nu este specificată în protocolul pe care îl descrieți. Nu este necesar să facă parte din hash dacă asta protejează mai degrabă textul simplu decât textul cifrat. Cu toate acestea, ar trebui să vă asigurați că este unic pentru fiecare mesaj care este criptat cu aceeași cheie (și dacă utilizați modul CBC, imprevizibil).

De asemenea, nu văd dacă protocolul este susceptibil la atacuri de reluare și atacuri de ghicire în text simplu, dacă hash-ul autentificat este folosit atât pentru identificare, cât și pentru autentificare.

Maarten Bodewes avatar
drapel in
Există un termen mai bun pentru „atacuri de ghicire în text simplu” sau „atacuri de ghicire de mesaje”?
R.. GitHub STOP HELPING ICE avatar
drapel cn
De fapt, textul cifrat (inclusiv publicul nonce și efemer) este deja autentificat deoarece datele sunt adresate prin hash al textului cifrat. Din acest motiv, nu există informații pentru ghicirea textului simplu. IV-urile sunt manipulate corect (nu sunt refolosite).
R.. GitHub STOP HELPING ICE avatar
drapel cn
Dacă sunteți interesat de mai multe detalii despre acest sistem, acesta este acum public: https://github.com/richfelker/bakelite
Maarten Bodewes avatar
drapel in
Foarte interesant! Ceea ce ar fi frumos este dacă ai putea scrie un model de date mai formal pentru el. În prezent, este doar o descriere textuală și un cod. În plus, pentru un program de rezervă, fiabilitatea este principala preocupare, m-aș aștepta ca un cod să efectueze testarea funcțională a rutinelor utilizate. Dacă designul este cunoscut, alte persoane vă pot ajuta cu astfel de lucruri. O carte albă ar putea face minuni pentru a ajuta oamenii să adopte acest lucru.
Puncte:-1
drapel si

Un hash stabilește integritatea, nu autenticitatea. O etichetă AEAD sau MAC a textului cifrat stabilește atât integritatea, cât și autenticitatea.

Dacă hash-ul este al textului cifrat, atacatorul poate pur și simplu să modifice textul cifrat și să calculeze un nou hash, deoarece hashurile nu depind de o cheie secretă.

Dacă hash-ul este de text simplu, aveți aceleași puncte slabe ca și în cazul schemelor „MAC-then-encrypt” în care încălcați principiul doom criptografic.

R.. GitHub STOP HELPING ICE avatar
drapel cn
Cred că ai citit greșit întrebarea. Hash-ul este cunoscut și de încredere în afara benzii, astfel încât atacatorul să calculeze un nou hash este inutil. Nu vor produce un blob care să se potrivească cu hashul așteptat decât dacă funcția hash este întreruptă.
SAI Peregrinus avatar
drapel si
Problema este acea încredere. Un hash al textului cifrat în afara benzii poate oferi autentificare dacă canalul în afara benzii oferă autentificarea (MAC-uri sau semnează hash-ul), dar fără asta canalul în afara benzii nu este la fel de sigur ca un simplu MAC în bandă al text cifrat sau etichetă AEAD.
R.. GitHub STOP HELPING ICE avatar
drapel cn
Canalul OOB este fundamental pentru setarea despre care întreb; hash-ul de acolo este *identitatea* datelor la care se face referire. (Gândiți-vă în mod analog la felul în care hashurile sunt identitățile în git sau un sistem de fișiere bazat pe hash.) Întreb în această setare ce ar putea oferi protecția AEAD.
Manish Adhikari avatar
drapel us
Poate fi sigur dacă canalul tău în afara benzii este de încredere, dar folosesc întotdeauna AEAD, indiferent.
R.. GitHub STOP HELPING ICE avatar
drapel cn
Cred că încă ratezi ideea. Dacă utilizatorului datelor i s-a dat un hash greșit, este deja o încălcare critică, deoarece datele greșite vor fi accesate. De exemplu, ar putea încărca `$malware_sample` mai degrabă decât `$trusted_script`.În contextul de aici, conceptul de autenticitate pare lipsit de sens fără autenticitatea referinței.
R.. GitHub STOP HELPING ICE avatar
drapel cn
Mai mult - am omis acest lucru din întrebare pentru că am crezut că nu este relevant, dar poate nu ar fi trebuit - cheia simetrică cu care sunt criptate blob-urile nu este o cheie partajată în prealabil, ci o ieșire de cripto cheie publică. Ca atare, oricine cunoaște cheia publică poate crea un blob cu o etichetă AEAD validă, dar acest lucru nu este util, deoarece hashul rezultat nu se va potrivi cu nimic pe care procesul care consumă blob-ul caută.
SAI Peregrinus avatar
drapel si
Un hash nu spune cine a creat hash-ul. Dacă canalul de încredere oferă autenticitate (doar o parte autentificată ar putea trimite mesaje pe canal și niciun atacator nu poate modifica mesajele), atunci hash-ul o face și el. Dacă oricare dintre aceste lucruri nu este adevărat, atunci un hash nu este suficient și doriți o etichetă MAC sau AEAD. AEAD-urile sunt, de asemenea, deseori mult mai rapide decât hashing-ul textului cifrat, deoarece de obicei trebuie să procesați datele doar o dată în loc de două ori.
R.. GitHub STOP HELPING ICE avatar
drapel cn
@SAIPeregrinus: Nu este o chestiune de „hash sau AEAD”. Hash-ul este fundamental necesar (constructia de tip arbore Merkle) și întrebarea a fost doar dacă AEAD adaugă vreo valoare. Dar cred că a devenit clar că nu.

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.