Chosen - ciphertext attack este un atac criptografic în care un criptoanalist colectează informații despre un cifru ghicind textul cifrat și decriptându-l cu o cheie necunoscută. De obicei, un criptoanalist poate folosi decriptorul o dată sau de mai multe ori pentru a obține textul cifrat decriptat. Folosind datele primite, el poate încerca să recupereze cheia secretă pentru decriptare. Există cifruri pentru care acest tip de atac poate avea succes. Acestea includ: Schema ElGamal ; RSA , utilizat în protocolul SSL ; NTRU. Pentru protecție se folosesc cifrurile RSA-OAEP și Cramer-Showe .
Un atac cu text cifrat poate fi adaptiv sau neadaptativ.
Atacul bazat pe text cifrat dezadaptativÎntr-un atac neadaptativ, criptoanalistul nu folosește rezultatele decriptărilor anterioare, adică textele cifrate sunt selectate în avans. Astfel de atacuri sunt numite atacuri la ora prânzului ( lunchtime sau CCA1 ).
Atacul bazat pe un text cifrat ales adaptativÎn caz contrar, criptoanalistul selectează adaptiv un text cifrat care depinde de rezultatele decriptărilor anterioare ( CCA2 ).
Unul dintre reprezentanții criptosistemelor cu cheie publică ( Public Key Cryptography Standards ), bazat pe algoritmul RSA. Fie k lungimea de octeți a modulului RSA, n. Există multe variante ale standardului PKCS#1. În acest exemplu, versiunea RSAES-PKCS1-v1_5 este considerată fără a utiliza o semnătură digitală, al doilea octet al blocului de mesaje este 00 sau 01. Standardul poate opera cu mesaje cu o lungime maximă egală cu k-11. Blocul standard PKCS#1, EB, este format din k octeți. Forma sa este EB = 00||02||PS||00||D. Primii doi octeți sunt constanți și egali cu 00 și, respectiv, 02. PS este un șir de umplere, un număr pseudo-aleatoriu generat format din octeți diferit de zero. Pentru a crește nivelul de securitate, se recomandă generarea unui nou bloc PS pentru fiecare criptare individuală. Lungimea sa, respectiv, este egală cu k-3-|D|, unde D este blocul de date, |D| este lungimea lui octet. Lungimea blocului PS trebuie să fie de cel puțin 8 octeți. Blocurile PS și D trebuie separate printr-un octet nul. Pentru comoditate, în viitor nu vom specifica standardul RSAES-PKCS1-v1_5, îl vom desemna ca PKCS#1. Fie n, e cheia publică și p, q, d cheia secretă. Potrivit R.S.A. Blocul EB este convertit într-un număr întreg x și criptat cu algoritmul RSA, . Receptorul verifică lungimea textului cifrat, îl decriptează , îl blochează și verifică primii doi octeți corecti care separă octetul nul și lungimea blocului PS. Dacă verificarea eșuează, se afișează o eroare.
Acest exemplu ilustrează posibilitatea unui atac de succes bazat pe un text cifrat ales adaptiv. Lăsați criptoanalistul să aibă acces la un dispozitiv care, pentru orice text cifrat ales, indică dacă textul simplu corespunzător este în formatul standard PKCS#1 și se confruntă cu sarcina de a decripta textul cifrat C. În acest fel, analistul poate selecta diverse texte cifrate și trimiteți-le la dispozitiv. După ce a primit răspunsul, compune următorul text cifrat, pe baza rezultatelor celor anterioare. Astfel, pe baza răspunsurilor primite de la dispozitiv și a cunoștințelor despre formatul de mesaj deschis conform standardului, criptoanalistul poate calcula . Factorul decisiv în atac sunt primii doi octeți ai mesajului deschis, care sunt constante. În acest exemplu, se consideră un algoritm care minimizează numărul de texte cifrate necesare pentru a primi un mesaj deschis. Atacul poate fi împărțit în 3 etape:
Să presupunem că scopul criptoanalistului este să afle . Deoarece k este lungimea octetului lui n, atunci . Analistul alege numărul s, îl calculează și îl trimite la dispozitiv. Dacă dispozitivul primește un mesaj, atunci știm sigur că primii doi octeți sunt 00 și 02. Pentru comoditate, să notăm . Presupunem că s este potrivit, atunci estimarea este adevărată . Culegând acest tip de informații, putem găsi m. De regulă, textele cifrate vor fi suficiente, dar acest număr poate fluctua foarte mult. Să scriem atacul pas cu pas.
Primul pas poate fi omis dacă C este un mesaj criptat conform standardului PKCS. În al doilea pas, potrivirea începe cu , deoarece pentru valori mai mici mesajul nu va fi conform standardului PKCS. Numărul este folosit pentru a împărți intervalul la fiecare iterație la aproximativ jumătate.
Fie probabilitatea ca un text cifrat ales aleatoriu să aibă un format de text simplu adecvat și să fie probabilitatea ca pentru orice număr întreg ales aleatoriu primii 2 octeți să fie 00 și 02. Deoarece , rezultă că . Modulul RSA este de obicei ales ca multiplu de 8. Deci, de obicei aproape de . Probabilitatea ca un bloc PS să conțină cel puțin 8 octeți diferit de zero care se termină cu un octet nul este . Presupunând că n este de cel puțin 512 biți (k > 64), avem . Deci .
Estimarea intervalelorSă demonstrăm că . Deoarece respectă standardul PKCS, rezultă că . Să presupunem că . Deci există un interval cu . Deoarece respectă standardul PKCS, există un astfel de r care , prin urmare, , , adică este conținut într-unul dintre intervale.
Estimarea complexității unui atacMesajul de la pasul 1 este ales aleatoriu, ceea ce înseamnă că trebuie să trimiteți către dispozitivul din apropierea mesajelor pentru a găsi . În mod similar pentru pașii 2.1 și 2.2 pentru . Fie numărul de intervale în . Apoi pentru . Lungimea intervalului este mărginită de sus de valoarea . Știind că formatul PKCS, obținem intervale de forma . va conține aproximativ intervale. Dacă , atunci fiecare dintre intervale, sau o parte din acesta, este inclus în dacă se suprapune cu unul dintre intervale . Niciunul dintre intervale nu se poate suprapune cu două intervale . Dacă intervalele sunt distribuite aleatoriu, atunci probabilitatea ca unul cu care se intersectează va fi mărginită mai sus de . Astfel, ecuația pentru este obținută în ipoteza că un interval trebuie să conțină valoarea . În cazul nostru, ne așteptăm să ajungem cu aproximativ și să avem . Prin urmare, va lua o singură valoare cu o probabilitate mare. Prin urmare, pasul 2.2 este de așteptat să apară o singură dată. Să analizăm pasul 2.3. Există , prin urmare , prin urmare . Lungimea intervalului . Prin urmare, este posibil să găsim o pereche care satisface inegalitățile din pasul 2.3 pentru fiecare a treia valoare a lui . Probabilitatea ca , este de aproximativ . Prin urmare, putem găsi , care satisface standardul aproximativ cu ajutorul textelor cifrate. Deoarece restul intervalului în este înjumătățit în fiecare pas 2.3, ne așteptăm să găsim folosind texte cifrate aproape. Pentru și va avea nevoie de texte cifrate pentru un atac de succes. Toate probabilitățile indicate mai sus au fost găsite sub ipoteza că toate sunt independente. Să fie și să satisfacă standardul PKCS și să aibă aceeași lungime a blocului PS. Apoi pentru un număr întreg obținem și . Apoi , este foarte probabil să îndeplinească standardul PKCS, deoarece, de asemenea, îndeplinesc adesea standardul. De obicei, n este ales ca multiplu de 8, deoarece probabilitatea este mică pentru acesta. Un modul cu o lungime de biți egală cu , este convenabil pentru analist, deoarece în acest caz sunt necesare texte cifrate pentru un atac de succes.
Luați în considerare 3 situații în care un analist poate obține acces la un dispozitiv.
Astfel, prin măsurarea timpului de răspuns al receptorului, este posibil să se determine dacă o eroare de format este prezentă sau nu.