Sistemul Cramer – Shoup este un algoritm de criptare cu cheie publică . Primul algoritm care s-a dovedit rezistent la atacuri bazat pe text cifrat ales adaptativ . Proiectat de Ronald Kramer și Victor Shoup în 1998. Securitatea algoritmului se bazează pe ipoteza discriminării Diffie-Hellman . Este o extensie a schemei ElGamal , dar spre deosebire de schema ElGamal, acest algoritm este insolubil(Un hacker nu poate înlocui textul cifrat cu un alt text cifrat care ar fi decriptat într-un text legat de original, adică fiind o funcție a acestuia). Această robustețe este obținută prin utilizarea unei funcții hash universale unidirecționale și calcule suplimentare, rezultând un text cifrat care este de două ori mai mare decât schema ElGamal.
Un atac criptografic în care un criptoanalist adună informații despre un cifru ghicind textul cifrat și decriptându-l cu o cheie necunoscută. Criptanalistul poate folosi decriptorul de mai multe ori pentru a obține textul cifrat decriptat. Folosind datele primite, el poate încerca să recupereze cheia secretă pentru decriptare. Un atac cu text cifrat poate fi adaptiv sau neadaptativ.
Era bine cunoscut faptul că multe criptosisteme utilizate pe scară largă erau vulnerabile la un astfel de atac și timp de mulți ani s-a crezut că atacul nu era practic și nu prezenta decât interes teoretic. Lucrurile au început să se schimbe la sfârșitul anilor 1990, mai ales când Daniel Bleichenbacher a demonstrat un atac practic bazat pe text cifrat asupra serverelor SSL folosind o formă de criptare RSA .
Î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 (ora prânzului sau CCA1).
În cazul unui atac adaptiv, criptoanalistul selectează adaptiv un text cifrat care depinde de rezultatele decriptărilor anterioare (CCA2).
Reziliența la atacul adaptiv poate fi văzută pe exemplul jocului:
Există mai multe formulări echivalente ale problemei discriminării Diffie-Hellman. Cel pe care îl vom folosi arată așa.
Fie un grup de ordin , unde este un număr prim mare. De asemenea - . Și există două distribuții:
Un algoritm care rezolvă problema Diffie-Hellman este un algoritm probabilistic care poate distinge efectiv între cele două distribuții enumerate. Adică, un algoritm care ia una dintre cele două distribuții ca intrare ar trebui să returneze 0 sau 1 și, de asemenea, tinde spre 0.
Problema discriminării Diffie-Hellman este grea dacă nu există un astfel de algoritm probabilistic polinomial.
Să avem un grup de ordin , unde este un număr prim mare. Mesajele sunt elemente . De asemenea, folosim o familie generică de funcții hash unidirecționale care mapează șiruri lungi de biți la elemente , unde — .
Algoritmul de generare a cheilor funcționează după cum urmează:
Mesaj dat . Algoritmul de criptare funcționează după cum urmează
După primirea textului cifrat și utilizarea cheii private :
Să verificăm corectitudinea schemei de criptare (decriptarea mesajului criptat dă același mesaj). Având în vedere că și , avem . De asemenea și . Prin urmare, verificarea decriptării reușește și este afișat mesajul original .
Pentru a obține securitatea împotriva atacurilor neadaptative (și numai a acestora), puteți simplifica semnificativ protocolul fără a utiliza . Când criptăm, folosim , iar când decriptăm, verificăm că .
Să presupunem că avem un grup de ordine . În consecință - .
Generare cheieAlgoritmul de generare a cheilor funcționează după cum urmează:
Mesaj dat . Algoritmul de criptare funcționează după cum urmează
După primirea textului cifrat și utilizarea cheii private :
Criptosistemul Cramer-Shope este rezistent la atacuri bazate pe text cifrat ales adaptativ în următoarele condiții:
Demonstrație : Pentru a demonstra teorema, vom presupune că există un adversar care poate rupe protocolul și vom arăta că dacă este îndeplinită condiția de pe funcția hash, obținem o contradicție cu condiția din problema Diffie-Hellman. Intrarea în algoritmul nostru probabilist este dată din distribuția sau . La nivel superficial, construcția va arăta astfel: vom construi un simulator care va produce o distribuție comună constând din viziunea crackerului asupra criptosistemului după o serie de atacuri și bitul ascuns b generat de oracolul generației (neinclus în viziunea crackerului, ascunsă de el). Ideea dovezii: vom arăta că dacă intrarea este o distribuție a , atunci simularea va reuși, iar adversarul va avea un avantaj nebanal în a ghici bitul aleator b. Vom mai arăta că dacă intrarea este o distribuție din , atunci viziunea inamicului nu depinde de și , și, prin urmare, superioritatea inamicului va fi neglijabilă (mai mică decât polinomul invers). De aici, putem construi distincția de distribuție și : rulăm simulatorul de criptosistem (prints ) și cracker (prints ) în același timp și imprimăm dacă și altfel.
Schema de simulare a generării cheilor este următoarea:
Se poate observa că generarea cheii simulatorului este diferită de generarea cheii în protocol (acolo ).
Simulare de decriptare . Se procedează la fel ca în protocol, cu diferența că
Simulare de criptare . Având în vedere o intrare , simulatorul selectează o valoare aleatorie , calculează și emite . Acum, demonstrarea teoremei va decurge din următoarele două leme.
Lema 1. Dacă simulatorului i se dă o distribuție de la , atunci distribuția comună a viziunii atacatorului asupra criptosistemului și a bitului ascuns nu se distinge statistic de un atac real asupra criptosistemului.
Lema 2. Dacă simulatorului i se dă o distribuție din , atunci distribuția bitului ascuns nu depinde de distribuția viziunii crackerului.