Există diferite moduri de operare pentru utilizarea cifrelor bloc, dintre care unele oferă „criptare” și unele dintre care oferă criptare autentificată .
De ce ar trebui să folosesc un mod criptare autentificată mai degrabă decât un mod de criptare?
Această întrebare nu intenționează să discute despre diferite moduri de criptare autentificate vrs moduri de criptare (deși un răspuns bun ar putea alege): scopul său este de a justifica de ce / când AE este mai bun decât criptarea „simplă”.
- Un alt răspuns poate fi găsit aici pe Security.SE așa cum este scris de DW
Răspuns
Diferența crucială între criptarea simplă și criptarea autentificată (AE) este că AE, în plus, oferă autenticitatea, în timp ce criptarea simplă oferă doar confidențialitate. Să investigăm în detaliu aceste două noțiuni.
În textul următor, presupunem că $ K $ este o cheie secretă, care este cunoscută părților autorizate, dar necunoscute atacatorilor.
Obiective
Confidențialitate (confidențialitate) înseamnă că un atacator nu poate obține nicio informație despre textul clar $ P $ din textul cifrat $ E_K (P) $ cu excepția, eventual, a lungimii. Cu alte cuvinte, textul cifrat arată ca un șir aleatoriu pentru cei care nu știu $ K $ , chiar dacă au un anumit control asupra textului simplu. Toate metodele de criptare folclorică, de la o singură placă la Enigma, oferă confidențialitate (în anumite ipoteze) și numai aceasta.
Date autenticitate (integritate) înseamnă că o parte autorizată (receptor), care posedă $ K $ , poate verifica dacă datele vedute $ D $ sunt autentice, adică au fost construite doar de un expeditor care știe $ K $ . Datele pot fi text clar sau text cifrat și există o diferență subtilă de ceea ce este autentic în fiecare caz: dacă textul cifrat este autentificat, atunci știm că proprietarul cheii a autorizat textul cifrat, dar nu neapărat text clar. O modalitate tradițională de a obține autenticitate este utilizarea codului de autentificare a mesajelor (MAC): $$ H_K (D) = T, $$ unde $ K $ în ambele scheme este periculos de nesigură pentru majoritatea instanțierilor. Prin urmare, se recomandă o schemă combinată.
Criptare autentificată
Criptarea autentificată (AE) oferă confidențialitate și autenticitate a datelor simultan. O schemă AE este de obicei mai complicată decât schemele numai de confidențialitate sau numai de autenticitate. Cu toate acestea, este mai ușor de utilizat, deoarece de obicei are nevoie de o singură cheie și este mai robust, deoarece utilizatorul are mai puțină libertate de a face ceva greșit (vezi și un răspuns mai elaborat ).
Ca o caracteristică separată, o schemă de criptare autentificată poate autentifica, dar nu cripta, o parte din intrarea sa, care se numește date asociate . De exemplu, s-ar putea să dorim să criptăm conținutul unui pachet de internet, dar trebuie să lăsăm antetul necriptat, dar totuși legat de datele interne.
Securitate
Nu am specificat încă ce înțelegem prin schemă securizată . Aparent, există mai multe noțiuni de securitate, iar utilizatorul trebuie să aleagă dintre ele în funcție de capacitățile pe care le așteaptă de la un adversar.
Pentru modurile de operare numai confidențialitate , cele mai populare noțiunea de securitate se ocupă de atacuri alese în text clar . Fie $ E $ o schemă de criptare. Presupunem că adversarul nu numai că cunoaște unele texte simple $ P $ , dar este, de asemenea, capabil să aleagă unele dintre ele pentru criptare (aceasta este o situație destul de practică).Prin urmare, permitem adversarului să aleagă orice text simplu pentru criptare și de multe ori la rând. Ceea ce mai necesităm de la o schemă sigură este să scoată textele cifrate cu aspect aleatoriu în fiecare caz: $$ E_K (P_1), E_K (P_2), \ ldots, E_K (P_n) \ sim RandomString (| P_1 | + | P_2 | + \ cdots + | P_n |) $$
Adversarul nu poate distinge întregul set de texte cifrate pe care le obține dintr-o ieșire a unui adevărat generator de biți aleatori ai aceeași lungime, chiar dacă adversarul își repetă textele în clar. Această din urmă cerință implică faptul că schema trebuie să fie nedeterministă și, într-adevăr, modurile de confidențialitate care îndeplinesc aceste cerințe sunt fie probabilistice, fie non-bazate pe. securitatea schemei cu posibilitatea de a recupera cheia $ K $ în sine. Acest lucru a fost relevant atunci când cheia ar putea fi utilizată în altă parte, dar acest lucru este mult mai puțin frecvent acum, iar noțiunea de securitate descrisă mai sus este predominantă.
Securitatea modurilor de autenticitate este definită în un mod diferit. Fie $ H_K $ o astfel de schemă cu cheia secretă $ K $ . Cerem ca, dacă adversarul alege orice date $ D $ care nu au fost încă autentificate, atunci șansele sale de a ghici eticheta $ T $ astfel încât $$ H_K (D) = T $$ sunt neglijabile. Dacă trimite perechea $ (D, T) $ unui verificator, va primi răspunsul $ \ perp $ (eroare).
Rețineți că nu am vorbit despre atacuri de text-cifrat ales în modurile de confidențialitate. Acestea sunt atacuri atunci când adversarul este, de asemenea, capabil să-și trimită propriile texte cifrate pentru decriptare. În timp ce această setare apare și în practică (chiar dacă mai puțin frecvent decât atacurile cu text în formă aleasă), schemele de confidențialitate nu pot rezista unor astfel de atacuri. Pentru a stabili acest tip de securitate, utilizatorul trebuie să apeleze din nou la criptarea autentificată .
Securitatea schemelor de criptare autentificate este definită în două părți. În primul rând, în mod similar modurilor de confidențialitate, adversarul trebuie să nu poată distinge textele cifrate de șirurile aleatorii. În al doilea rând, indiferent de textul cifrat fals (care nu este creat pe $ K $ ) pe care îl trimite pentru decriptare, este probabil să primească $ \ perp $ ca răspuns.
Prin urmare, modurile de criptare autentificate vă oferă, de asemenea, securitate împotriva atacurilor de text cifrat ales, dacă este necesar.
Cum funcționează
Există numeroase scheme de criptare autentificate integrate : CCM, GCM, OCB, EAX etc. , unde mecanismele care stabilesc confidențialitatea și autenticitatea sunt strâns legate. Proiectarea acestor scheme depășește cu mult subiectul. Cu toate acestea, există o schemă simplă compusă, cunoscută sub numele de Encrypt-then-MAC, care funcționează după cum urmează. Fie $ K_1, K_2 $ chei secrete, $ P $ să fie textul simplu, $ E $ să fie un mod de criptare, iar $ H $ să fie un anumit MAC. Apoi schema $$ \ Pi_ {K_1, K_2}: M \ rightarrow E_ {K_1} (M) || H_ {K_2} (E_ {K_1} (M)) $$ este o schemă securizată de criptare autentificată dacă $ E $ este un mod de confidențialitate sigur și $ H $ este un mod de autenticitate sigur.
Caracteristici suplimentare ale schemelor de criptare autentificate
Pe lângă asigurarea confidențialității și a autenticității, schemele de criptare autentificate pot avea o serie de caracteristici suplimentare. Nici o schemă nu le are pe toate, prin urmare cea mai bună alegere este determinată de setările utilizatorului.
-
Nivel de securitate . Un sistem garantează confidențialitatea și autenticitatea datelor la o parte legată de cantitatea de date criptate sau cereri de decriptare. Această legătură este de obicei mult mai mică decât spațiul cheii, iar pentru modurile bazate pe AES nu depășește de obicei $ 2 ^ {64} $ .
-
Paralelism Dacă sunt disponibile multe resurse, este posibil să doriți să rulați criptarea, decriptarea sau verificarea în paralel. Modurile care utilizează înlănțuirea (cum ar fi cele derivate din criptarea CBC sau construcția burete) sunt dificil de paralelizat.
-
Criptare online . Spunem faptul că o schemă este online, dacă permite criptarea imediată când datele sunt disponibile, fără să se cunoască lungimea acesteia.
-
Utilizarea brevetelor . Una dintre cele mai interesante scheme AE, modul OCB, este brevetată și este mai puțin frecventă utilizată și analizată din cauza acestei proprietăți.Este de multe ori de dorit ca schema să nu fie brevetată.
-
Actualizare etichetă . Majoritatea schemelor, cu câteva excepții, cum ar fi GCM, necesită recalcularea aproape întregului text cifrat dacă se modifică o mică parte din textul simplu. Dacă textul cifrat poate fi actualizat rapid, ar permite procesarea mult mai rapidă a unor cantități mari de date criptate, de exemplu, criptarea hard disk-ului.
-
Utilizarea noncesului sau aleatorie IVs . Nonces și IV-uri aleatorii duc la modele de securitate distincte, care sunt adesea incompatibile (schemele ar putea fi sigure cu nonces, dar nu cu IV-uri aleatorii de aceeași lungime sau invers). Deși unicitatea nonce ar putea fi mai greu de asigurat, IV-urile aleatorii au nevoie de un mecanism separat de generare a numerelor aleatorii și duce la extinderea textului cifrat.
-
Cheie variabilă, nonce, sau lungimea etichetei . Toți cei trei parametri sunt de obicei limitați de aplicația care utilizează o schemă AE. La rândul lor, schemele AE au propriile restricții, uneori incompatibile. Cu cât schema are mai multă variabilitate, cu atât mai multe aplicații se potrivește.
-
Prelucrarea datelor asociate . Toate schemele moderne permit autentificarea datelor asociate, care nu sunt criptate. Unele dintre ele, totuși, nu pot pre-procesa AD înainte de terminarea textului simplu, ceea ce ar putea constitui o penalizare pentru performanță.
Lectură suplimentară
Comentarii
- Aș putea adăuga că, în multe situații practice, alegerea schemei de criptare autentificate este dictată în mare măsură prin convenție sau protocoale adecvate. Este foarte obișnuit ca oamenii să se încrunte la criptarea autentificată, dar în practică am văzut că ‘ am văzut atât implementările personalizate ale MAC-apoi-criptare, cât și criptarea-apoi-MAC au defecte decât utilizările de criptare autentificată. Acest lucru se datorează faptului că necesită foarte multă atenție pentru detalii pentru a implementa corect combinația.
- În ceea ce privește proprietățile suplimentare, evitarea creării de canale laterale (în special de sincronizare a canalelor laterale) a fost esențială în evaluarea securității dintr-o suită de cifre AE (AD). Ca o chestiune practică, aceasta înseamnă că este posibil să implementați cifrul astfel încât să ruleze într-un timp care nu este afectat de cheie sau de textul de intrare.
Răspuns
Când transmitem informații printr-un canal nesigur, dorim ca datele noastre să fie sigure.
Deci, ce înseamnă asta? Pentru a discuta despre acestea, vom folosi situația criptografică standard a lui Alice și Bob. Alice dorește să trimită ceva ( textul clar ) printr-un canal nesigur (ceea ce înseamnă acest lucru va fi discutat) către Bob. Acest canal va să fie ascultați de Eva (un ascultător) și Mallory (care încearcă să intervină cu rea intenție) – ce înseamnă acest lucru va fi discutat în timp util.
Confidențialitate : Când Alice îi trimite un mesaj lui Bob, îi cerem unei Eve interceptatoare care le ascultă comunicarea să nu afle nimic despre conținutul mesajelor lor.
Justificare : În caz contrar, Eva ar putea învăța ceva pe care Alice / Bob nu vrea să îl împărtășească
Soluție: Folosim criptare , care transformă textul simplu într-un text cifrat care (într-un sens teoretic al informației) ) conține doar informații despre textul clar care nu pot fi extrase în mod fezabil. Aceasta înseamnă că (parafrazând Goldwasser ) anyth Eva poate afla despre textul clar, având în vedere că cunoaște textul cifrat, poate deduce și fără textul cifrat. Doar pentru că o schemă rezistă unui atacator pasiv (cineva care doar ascultă fluxul de mesaje), nu o face puternică împotriva unui atacator activ. De exemplu, luați în considerare CBC Modul este utilizat. Este securizat sub jocul IND – joc CPA , ceea ce ați putea simți îl face sigur. Cu toate acestea, în jocul CCA îi permitem atacatorului să ceară decriptarea mesajelor (deși nu decriptarea textului cifrat) . Ce poate face, având în vedere textul cifrat $ c = {\ small IV} \ mathbin \ | c_1 \ mathbin \ | \ dots \ mathbin \ | c_n $ este cererea de decriptare a $ c „= a \ mathbin \ | c $, unde $ a $ este un mesaj ne-gol. Acest lucru nu este egal cu textul cifrat, deci este permis sub joc și, luând doar ultimele $ n $ blocuri, poate extrage decriptarea textului cifrat.
Un astfel de exemplu nu este atât de inventat pe cât ați putea crede, deoarece ceea ce modelăm ca un oracol de decriptare ar putea exista în sensul că atacatorul poate fi capabil să descifreze șirurile, ci că datele pe care le pot cere decriptarea ar trebui să înceapă cu un șir specific (similar ideii unei injecții SQL).
Autenticitate : Când Bob primește un mesaj, el știe că a fost cu siguranță de la Alice.
Justificare: În caz contrar, Mallory i-ar putea trimite un mesaj prin care pretinde că este de la Alice fără ca Bob să știe. „este foarte îngăduitor în ceea ce înseamnă pentru Mallory să creeze un mesaj fals – câștigă dacă poate crea orice mesaj pe care Bob îl acceptă (chiar dacă este aproape același cu cel pe care i l-a trimis deja Alice). Există o mulțime de modalități de a face acest lucru, cum ar fi reluarea, reordonarea sau atacurile de tip flipping de biți.
Soluție: Pentru a realiza autentificarea singură, putem folosi un MAC .
Autenticitate și confidențialitate : Alice și Bob comunică confidențial și fiecare mesaj este autentic.
Justificare: Dacă un flux este doar confidențial (adică criptare, dar nu criptare autentificată), atunci un ascultător ar putea să modifice mesajul în tranzit, chiar dacă nu ar ști ce este acesta. De exemplu, să presupunem că Alice & Bob folosește perfect securizat One Time Pad ( OTP ) cu cheia secretă $ k $ și mesajul $ m $:
$$ Un \ text {trimite} c = m \ oplus k \ către B \\ \ prec M \ text {intercepts} c \ succ \\ M \ text {trimite} c „= c \ oplus h \ la B \ text {(pentru o anumită valoare} h) \\ B \ text {recieves} c” \ text {de la M, dar crede că este} c \ text {trimis de la} A \\ B \ text {decriptează} m „= c” \ oplus k = c \ oplus h $$ Aceasta înseamnă că $ B $ a primit mesajul $ m „$, dar el crede că este $ m $.
Deci, să presupunem că protocolul nu este autentificat și Mallory știe că mesajul pe care Alice îl va trimite lui Bob este” Sunt de acord să trimit £ ??? la contul # ???? „pentru unele valori de ???. Chiar dacă nu pot afla exact ce este contul, și poate că nu pot trimite plata în contul lor, pot schimba deci nu mai este contul lui Alice.
Soluție: criptare autentificată!
Un articol bun care explică necesitatea AE este această postare de blog de Matthew Green. O introducere mai tehnică la Modurile de funcționare este această lucrare de Rogaway.
Comentarii
- Singura schemă de criptare care asigură securitatea teoretică a informației este blocul unic. Schemele de criptare IND-CPA garantează doar că informațiile nu pot fi extrase din textul cifrat de un adversar probabilist polimult.
- Ah, da, care a fost scris neclar (/ incorect!). Vă mulțumim că l-am editat în – aveam de gând să-l pun ca ‘ nu conține informații < care pot fi extrase > ‘
- De fapt, multe ” numai confidențialitate ” modurile chiar nu dau ‘ nu oferă o confidențialitate bună atunci când sunt atacate de un atacator activ (care poate modifica mesajele sau poate monta textul clar ales sau atacurile de text cifrat alese) . Prin urmare, aceste moduri în practică (pentru un canal de comunicare) trebuie utilizate împreună cu unele MAC chiar pentru a obține doar partea confidențială. Un mod AE tocmai le combină într-unul singur.
- @ PaŭloEbermann / Oricine altcineva: chiar nu ‘ nu cred că ‘ am scris un răspuns bun aici (până la urmă vinerea seară!), dar am vrut doar să pun câteva gânduri. Simțiți-vă liber să adăugați propriile răspunsuri / să le editați / să le scrieți pe acestea. Dacă oamenii cred că răspunsul meu este ” suficient de apropiat ” de unul bun (care îl recitește, nu ‘ t) atunci ‘ sunteți binevenit doar să editați sau să refolosiți cuvintele mele în ale dvs.
- Cred că AE oferă și integritate ( en.wikipedia.org/wiki/Authenticated_encryption ), așa că ar putea dori să adăugați și asta ..