Cifra bloc

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 5 ianuarie 2021; verificările necesită 6 modificări .

Un cifru bloc  este un fel de cifru simetric [1] care operează cu grupuri de biți de lungime fixă ​​- blocuri a căror dimensiune caracteristică variază între 64-256 de biți. Dacă textul original (sau restul acestuia) este mai mic decât dimensiunea blocului, acesta este completat înainte de criptare . De fapt, un cifru bloc este o substituție pe alfabetul blocurilor, care, în consecință, poate fi mono- sau polialfabetic. [2] Cifrul bloc este o componentă importantă a multor protocoale criptografice și este utilizat pe scară largă pentru a proteja datele transmise printr-o rețea.

Spre deosebire de un tampon de criptare , în care lungimea cheii este egală cu lungimea mesajului, un cifru bloc este capabil să cripteze unul sau mai multe mesaje cu o singură cheie cu o lungime totală mai mare decât lungimea cheii. Transmiterea unei chei care este mică în comparație cu mesajul pe un canal criptat este o sarcină mult mai simplă și mai rapidă decât transmiterea mesajului în sine sau a unei chei de aceeași lungime, ceea ce face posibilă utilizarea lui în fiecare zi. Cu toate acestea, în acest caz, cifrul încetează să mai fie indestructibil. Cifrurile bloc diferă de cifrurile flux prin faptul că procesează biții în grupuri, mai degrabă decât într-un flux. În același timp, cifrurile bloc sunt mai lente decât cifrurile în flux. [3] Sistemele simetrice au un avantaj față de cele asimetrice în viteza de criptare, ceea ce le permite să rămână relevante, în ciuda mecanismului de transmitere a cheilor mai slab (destinatarul trebuie să cunoască cheia secretă care trebuie transmisă pe un canal criptat deja stabilit. În același timp timp, în cifrurile asimetrice cheia publică necesară pentru criptare poate fi cunoscută de toată lumea și nu este nevoie să partajați cheia de criptare).

Avantajele cifrurilor bloc includ similitudinea procedurilor de criptare și decriptare , care, de regulă, diferă numai în ordinea acțiunilor. Acest lucru simplifică crearea dispozitivelor de criptare, deoarece permite utilizarea acelorași blocuri în lanțurile de criptare și decriptare. Flexibilitatea cifrurilor bloc le permite să fie folosite pentru a construi alte primitive criptografice: un generator de secvențe pseudo-aleatoare , un cifr de flux, imitații de inserare și hashuri criptografice . [patru]

Istorie

Modelul modern de criptare bloc se bazează pe ideea cifrurilor bloc iterative propusă în publicația lui Claude Shannon din 1949 „ Teoria comunicării în sistemele secrete ”. Acest concept vă permite să atingeți un anumit nivel de securitate prin combinarea operațiunilor de înlocuire și permutare ușor de efectuat [ 5 ] .  

Până în anii 1970, criptografia a fost lotul ofițerilor militari și de informații; practic nu existau publicații în presa deschisă [6] . Pionierul a fost cifrul „ Lucifer ”, dezvoltat în 1970 de IBM și bazat pe SP-net . Ideea cifrului a fost de a folosi combinații de operații simple și, prin urmare, rapid calculate atât în ​​hardware, cât și în software. Cu toate acestea, schema s-a dovedit a fi nereușită: a fost prea greoaie, ceea ce a dus la o viteză scăzută de criptare în implementarea software (aproximativ 8 kb / s) și în hardware (97 kb / s).

Au început să apară îngrijorări cu privire la stabilitatea acestui algoritm. Cu toate acestea, principiile dezvoltate în timpul construcției lui Lucifer (rețeaua SP și rețeaua Feistel , numită după unul dintre dezvoltatori) au stat la baza construcției cifrurilor bloc.

În 1973, Institutul Național de Standarde și Tehnologie ( NIST ) a anunțat un  concurs pentru dezvoltarea unui standard de criptare a datelor, al cărui câștigător în 1974 a fost cifrul DES (Data Encryption Standard), care este, de fapt, o versiune îmbunătățită a Lucifer. . Publicarea cifrului în 1977 a fost fundamentală pentru înțelegerea publică a modelului modern de cifrare bloc. În același timp, a dat naștere la dezvoltarea atacurilor criptoanalitice .

După ce a fost aprobat de Institutul Național American de Standarde în 1981, algoritmul a fost folosit în sectorul civil pentru o lungă perioadă de timp și chiar a depășit Statele Unite . Cu toate acestea, cifrul a avut un dezavantaj semnificativ - o lungime mică a cheii, care a dat naștere multor atacuri asociate cu enumerarea paralelă și posibilitatea apropiată de implementare a acesteia. Lipsa unei protecții adecvate împotriva atacurilor cifrului DES a dat naștere multor algoritmi care sunt atât o versiune mai complexă a DES ( 3DES ) cât și scheme complet diferite ( NewDES , FEAL , IDEA ).

1997 a fost începutul programului de adoptare AES (Advanced Encryption Standard). Competiția a constat din trei etape, al căror câștigător final a fost algoritmul RIJNDAEL dezvoltat de belgienii J. Daemen și V. Rijmen. AES, ca și predecesorii săi, este construit și folosind rețeaua SP.

Astăzi, există multe atacuri cărora cifrul bloc trebuie să le reziste, începând cu atacul cu forță brută ca fiind cel mai banal. [7]

Definiție

Un cifru bloc este format din doi algoritmi perechi: criptare și decriptare . [8] Ambii algoritmi pot fi reprezentați ca funcții. Funcția de criptare E ( eng.  criptare  - criptare) primește un bloc de date M ( ing.  mesaj  - mesaj) cu o dimensiune de n biți și o cheie K ( eng.  cheie  - cheie) cu o dimensiune de k biți ca intrare și oferă un bloc de text cifrat C ( eng.  cipher ) la ieșire  - cipher) cu o dimensiune de n biți:

Pentru orice cheie K , E K este o funcție bijectivă ( permutare ) pe setul de blocuri de n - biți. Funcția de decriptare D ( eng.  decriptare  - decriptare) primește textul cifrat C, cheia K ca intrare și dă M la ieșire:

fiind, în același timp, inversul funcției de criptare:

și

Rețineți că cheia necesară pentru criptare și decriptare este aceeași, o consecință a simetriei cifrului bloc.

Construirea unui cifru bloc

„Proiectarea unui cifru bloc nu este dificilă. Dificultatea constă în proiectarea unui cifru bloc care nu este doar sigur, ci și ușor de descris și ușor de implementat.”

Bruce Schneier , criptograf și specialist în securitatea computerelor .

Pionierii dezvoltării cifrurilor bloc au fost angajați ai IBM când lucrau la cifrul „ Lucifer ”. [9] Ei au proiectat primele fundații care au fost folosite în dezvoltarea circuitelor ulterioare. În același timp, ar trebui să se țină cont de faptul că noul cifr nu ar trebui să fie doar rezistent la toate tipurile de atacuri cunoscute, ci și destul de simplu de implementat.

Cifre bloc iterative

Majoritatea cifrurilor bloc sunt iterative. Aceasta înseamnă că cifrul dat convertește blocuri de text simplu de lungime  constantă în blocuri de text cifrat de  aceeași lungime prin intermediul funcțiilor ciclice reversibile cunoscute sub numele de funcții rotunde. [10] Acest lucru se datorează simplității și vitezei de execuție atât a implementărilor software, cât și a celor hardware. De obicei, funcțiile rotunde folosesc taste diferite derivate din cheia originală:

,

unde C i  este valoarea blocului după runda a I-a, C 0 = M este textul simplu, Ki este  cheia folosită în runda a I-a și obținută din cheia originală K.

Mărimea blocului n  este un parametru fix al cifrului bloc, de obicei 64 sau 128 de biți, deși unele cifruri permit mai multe valori diferite. O lungime de 64 de biți a fost acceptabilă până la mijlocul anilor 1990, când au fost utilizați 128 de biți, ceea ce corespunde aproximativ cu dimensiunea unui cuvânt de mașină și permite implementarea eficientă pe cele mai comune platforme de calcul. Diverse scheme de criptare vă permit să criptați text simplu de lungime arbitrară. Fiecare are anumite caracteristici: probabilitate de eroare, ușurință de acces, vulnerabilitate la atacuri. Începând cu 2006, o cheie de 80 de biți a fost capabilă să prevină un atac cu forță brută .

Rețele SP

SP-network (în engleză  substitution-permutation network, SPN ) este unul dintre cele mai importante tipuri de cifruri bloc iterative. Un cifru bazat pe SP-net primește un bloc și o cheie ca intrare și efectuează mai multe runde alternante, constând din etape de substituție alternante și etape de permutare [ 11 ] .  O singură S-box este suficientă pentru a obține securitatea, dar un astfel de bloc va necesita o cantitate mare de memorie. Prin urmare, se folosesc cutii S mici amestecate cu cutii P [6] . Etapa de substituție neliniară amestecă biții cheie cu biții de text simplu, creând jena lui Shannon Etapa de permutare liniară distribuie redundanța în întreaga structură a datelor, dând naștere difuziei [12] [13] .  

Cutia  S înlocuiește un bloc mic de biți de intrare cu un alt bloc de biți de ieșire. Această înlocuire trebuie să fie una la unu pentru a garanta reversibilitatea. Scopul S-box-ului este pentru o transformare neliniară, care împiedică efectuarea criptoanalizei liniare . Una dintre proprietățile cutiei S este efectul de avalanșă , adică o modificare a unui bit la intrare duce la o modificare a tuturor biților la ieșire [14] .

P-block  - permutarea tuturor biților: blocul primește ieșirea S-box-ului ca intrare, schimbă toți biții și transmite rezultatul în S-box-ul rundei următoare. O calitate importantă a unei casete P este capacitatea de a distribui ieșirea unei casete S la intrările unor casete S cât mai mari posibil.

Pentru fiecare rundă se folosește o cheie diferită , obținută din cea originală . O astfel de cheie se numește cheie rotundă. Poate fi obținut prin împărțirea cheii originale în părți egale sau printr-un fel de transformare a întregii chei.

Rețeaua lui Feistel

O rețea Feistel este o metodă generală de transformare a unei funcții arbitrare F într-o permutare pe un set de blocuri. [15] Constă din celule care se repetă ciclic - runde. În cadrul fiecărei runde, blocul de text simplu este împărțit în două părți egale. Funcție rotundă

ia o jumătate (în stânga în figură), o transformă folosind tasta Ki și combină rezultatul cu a doua jumătate folosind operația SAU exclusivă (XOR). Această cheie este dată de cheia inițială K și este diferită pentru fiecare rundă. Apoi jumătățile sunt schimbate (în caz contrar, doar o jumătate din bloc va fi convertită) și sunt introduse în runda următoare. Transformarea rețelei Feistel este o operațiune reversibilă.

Există anumite cerințe pentru funcția F :

Dacă prima cerință nu este îndeplinită, rețeaua va fi supusă unor atacuri diferențiate (mesajele similare vor avea cifruri similare). În al doilea caz, acțiunile cifrului sunt liniare, iar rezolvarea unui sistem de ecuații liniare este suficientă pentru a rupe [3] .

Acest design are un avantaj tangibil: procedurile de criptare / decriptare sunt aceleași, doar derivatele cheilor originale sunt utilizate în ordine inversă. Aceasta înseamnă că aceleași blocuri pot fi folosite atât pentru criptare, cât și pentru decriptare, ceea ce cu siguranță simplifică implementarea cifrului. Dezavantajul schemei este că doar jumătate din bloc este procesat în fiecare rundă, ceea ce duce la necesitatea creșterii numărului de runde. [2]

Formarea grupului

La construirea algoritmului, se ia în considerare formarea unui grup , în care elementele sunt setul de blocuri de text cifrat cu toate cheile, iar operația de grup este alcătuirea rundelor de criptare. Dacă un cifr dat formează un grup aproape complet, nu are sens să folosești criptarea multiplă [6] .

Blocați moduri de operare de criptare

În sine, un cifru bloc vă permite să criptați numai blocuri de date individuale de o lungime predeterminată. Dacă lungimea mesajului este mai mică decât lungimea blocului ( eng.  blocklength ), atunci este adăugită la lungimea dorită. Cu toate acestea, dacă lungimea mesajului este mai mare, devine necesară împărțirea lui în blocuri. În același timp, există mai multe modalități de a cripta astfel de mesaje, numite moduri de operare cu cifrare bloc.

Criptare prin blocuri independente

Cel mai simplu mod de operare al unui cifr de bloc este modul carte electronică de coduri sau modul de substituție simplă ( Eng.  Electronic CodeBook, ECB ), în care toate blocurile de text simplu sunt criptate independent unele de altele. Cu toate acestea, atunci când se utilizează acest mod, proprietățile statistice ale datelor deschise sunt parțial păstrate, deoarece fiecare bloc de date identic corespunde în mod unic unui bloc de date criptat. Cu o cantitate mare de date (de exemplu, video sau sunet), acest lucru poate duce la scurgeri de informații despre conținutul acestora și poate oferi mai mult spațiu pentru criptoanaliza .

Eliminarea dependențelor statistice în text simplu este posibilă cu ajutorul arhivării preliminare, dar nu rezolvă complet problema, deoarece informațiile de serviciu ale arhivatorului rămân în fișier , ceea ce nu este întotdeauna acceptabil.

Criptarea depinde de blocurile anterioare

Pentru a depăși aceste probleme, au fost dezvoltate și alte moduri de operare [16] [17] , stabilite de standardul internațional ISO/IEC 10116 [18] și definite de ghidurile naționale, precum NIST 800-38A [19] și BSI TR- 02102 [20]

Ideea generală este de a folosi un număr aleatoriu, adesea denumit vector de inițializare (IV). În modul popular Cipher Block Chaining ( CBC ), IV-ul trebuie să fie aleatoriu sau pseudo-aleatoriu pentru siguranță. Odată definit, este XORed cu primul bloc de text simplu. Următorul pas este să criptăm rezultatul și să obținem primul bloc de criptare, pe care îl folosim ca IV pentru al doilea bloc și așa mai departe. În modul Cipher Feedback ( CFB ) , IV este criptat direct, după care este adăugat modulo doi (XOR, SAU exclusiv) cu primul bloc. Blocul de criptare primit este folosit ca IV pentru criptare ulterioară. Modul nu are avantaje speciale față de celelalte. Spre deosebire de modurile anterioare, modul Output Feedback ( OFB ) criptează IV-ul ciclic, formând un flux de chei adăugate blocurilor de mesaje. Avantajul modului este coincidența totală a operațiunilor de criptare și decriptare. Modul de contor ( English Counter, CTR ) este similar cu OFB, dar permite calculul paralel al cifrului: IV este combinat cu numărul blocului fără unul și rezultatul este criptat. Blocul rezultat este adăugat la blocul de mesaje corespunzător.     

Rețineți că vectorul de inițializare trebuie să fie diferit în sesiuni diferite. Altfel, ajungem la problema modului ECB. Este posibil să utilizați un număr aleator, dar acest lucru necesită un generator de numere aleatoare destul de bun. Prin urmare, se stabilește de obicei un anumit număr - o etichetă cunoscută de ambele părți (de exemplu, numărul de sesiune) și numită nonce ( Număr folosit o dată ) .  De obicei, secretul acestui număr nu este necesar. Mai departe IV este rezultatul criptării nonce. În cazul modului contor, nonce este folosit pentru a forma cheia rotundă Ki [ 3] :

unde i  este numărul rotund.

Bloc complet

După cum sa menționat mai sus, dacă lungimea mesajului în sine, sau a ultimului bloc, este mai mică decât lungimea blocului, atunci acesta trebuie să fie completat cu . Simpla umplutură cu zero biți nu rezolvă problema, deoarece receptorul nu va putea găsi sfârșitul sarcinii utile. În plus, această opțiune duce la atacuri din partea Oracolului adăugării [21] .

Prin urmare, în practică, soluția standardizată ca „Complement Method 2” ( Bit Completion ) în ISO/IEC 9797-1 este aplicabilă, adăugând un 1 bit la sfârșitul mesajului și umplând spațiul rămas cu zerouri [22] . În acest caz, s-a dovedit rezistența la astfel de atacuri [23] .

Criptanaliză

Ca toate cifrurile ai căror algoritmi sunt cunoscuți, cifrurile bloc sunt supuse atacurilor criptografice. Scopul atacului este de a dezvolta un algoritm de cracare care este mai eficient decât căutarea exhaustivă a tuturor cheilor posibile. Dacă se găsește o astfel de soluție, atacul este considerat reușit. În același timp, cifrul este rupt dacă există un atac care permite spargerea în timpul în care informația rămâne relevantă, iar efectuarea unui astfel de atac este benefică atacatorului.

Atacul de forță brută

Engleză  Atacul cu forța adevărată . Datorită caracteristicii unui cod bloc ca reversibilitate a funcției, ieșirea sa devine distinsă de o secvență aleatorie adevărată datorită paradoxului zilei de naștere . Această caracteristică duce la o scădere a securității cifrului și la necesitatea de a lua în considerare dimensiunea blocului. Astfel, există un compromis între blocurile mari care reduc performanța cifrului și blocurile mici nesigure [24] .

Mărimea cheii joacă un rol la fel de important. Cifrul DES timpuriu a fost caracterizat de o dimensiune a cheii de 56 de biți, care, după cum a arătat practica, nu este în mod clar suficientă pentru un transfer de date fiabil. A fost un atac cu forță brută care a spart pentru prima dată DES. Algoritmii mai moderni precum AES și GOST 28147-89 au o dimensiune a cheii de 128 de biți, respectiv 256 de biți, ceea ce face ca astfel de atacuri să nu aibă sens [25] .

Criptanaliza diferențială

Engleză  Criptanaliza diferențială . În 1990, Eli Biham și Adi Shamir au definit ideea criptoanalizei diferențiale. Cu această metodă, a fost posibilă spargerea cifrului DES . Cifrurile constante S-box și codurile în modul e-book sunt susceptibile la un atac similar . Această metodă funcționează cu perechi de texte cifrate pentru care se cunoaște diferența dintre textele clare corespunzătoare și ia în considerare evoluția acestor diferențe. Alături de cel liniar, este cel mai frecvent în atacurile asupra unui cifru bloc [6] .

Criptanaliza liniară

Engleză  Criptanaliza liniară . Criptanaliza liniară este o metodă de spargere a cifrului bazată pe căutarea aproximărilor afine pentru ca algoritmul să funcționeze. Dezvoltat de matematicianul japonez Mitsuru Matsui , care a fost primul care a folosit această tehnică pentru a ataca DES și FEAL . Metoda se bazează pe aplicarea operației „SAU exclusiv” (XOR) la blocurile de text simplu, text cifrat și rezultatul acestora, ceea ce face posibilă obținerea rezultatului XOR a biților cheie. Structura blocului S are o influență puternică asupra rezistenței la atacurile de linie. Când metoda a fost dezvoltată, s-a dovedit că DES avea o slăbiciune pentru ea, deoarece nimeni nu se aștepta la astfel de atacuri când a fost dezvoltată [6] .

Criptanaliza integrală

Engleză  Criptanaliza intergală . Criptanaliza integrală este un tip de atac care este aplicabil în special cifrurilor bloc construite pe SP-net. Spre deosebire de criptoanaliza diferențială, care utilizează o pereche de texte clare alese cu o diferență fixă ​​calculată folosind operația XOR, criptoanaliza integrală utilizează seturi de texte clare în care unele părți sunt menținute constante, în timp ce altele variază între valorile posibile. O astfel de mulțime are în mod necesar o sumă modulo 2 (XOR) de 0, în timp ce suma de text cifrat corespunzătoare conține informații despre operațiile cifrului.

Alte tipuri de atacuri

Pe lângă cele descrise mai sus, există și alte tipuri de atacuri:

Orice cifr nou trebuie să demonstreze rezistență la toate tipurile cunoscute de atacuri.

Evaluare practică

În practică, un cifru bloc este evaluat în funcție de o varietate de criterii [26] [27] :

Standarde naționale de criptare

Lucifer / DES

Cifrul Lucifer este în general privit ca primul cifr bloc. Algoritmul a fost dezvoltat de IBM în anii 1970 pentru propriile nevoi și se bazează pe munca lui Horst Feistel .  Versiunea finalizată a fost adoptată ca standard federal de procesare a informațiilor guvernului SUA : FIPS PUB 46 Data Encryption Standard (DES) - standard de criptare a datelor.

DES are o dimensiune de bloc de 64 de biți și o cheie de 56 de biți. Ulterior, blocurile pe 64 de biți au devenit general acceptate în construcția cifrului. Lungimea cheii depindea de mai mulți factori, inclusiv restricțiile guvernamentale și, ca rezultat, a devenit un dezavantaj evident al algoritmului - nu era suficient pentru a rezista atacurilor cu forță brută. În 1993, Michael Wiener a proiectat o mașină de un milion de dolari capabilă să spargă DES în 3,5 ore cu forță brută , iar în 1998 a fost construită o capabilă să spargă . În plus, pentru cheile algoritmului, există o serie de valori care sunt considerate slabe [6] .

Există o versiune îmbunătățită a algoritmului numită Triple DES sau 3DES. Viteza algoritmului a scăzut de trei ori, dar sistemul s-a dovedit a fi mult mai rezistent la căutarea exhaustivă datorită lungimii cheii triplate (168 biți și 112 biți secreti). Opțional, puteți alege o cheie dublă (112 biți și 80 de biți secreti). Din 2011, sistemul cu trei chei își păstrează securitatea, dar versiunea cu două chei cu securitate pe 80 de biți nu mai îndeplinește cerințele moderne [28] .

GOST 28147-89

GOST 28147-89, un standard de criptare rus introdus în 1990, este, de asemenea, un standard CIS. Cifrul se bazează pe o rețea Feistel de 32 de runde cu o cheie de 256 de biți. În mai 2011, criptoanalistul Nicolas Courtois a încercat un atac care a redus timpul de cracare cu un factor de 28 (256), dar a necesitat 264 de perechi text clar/ text cifrat , ceea ce nu poate fi considerat un atac de succes, deoarece cu această cantitate de text clar nu este nevoie. pentru cunoașterea textului cifrat. [29] [30]

Datorită prezenței unui număr mare de runde, atacurile bazate pe criptoanaliza diferențială și liniară nu sunt viabile, deoarece acestea din urmă sunt sensibile la numărul de runde. O căutare completă cu o astfel de lungime a cheii este complet lipsită de sens. Pentru a obține efectul de avalanșă , GOST necesită 8 runde, ceea ce poate fi o slăbiciune a algoritmului, dar la 32 de runde nu contează atât de mult. Problema siguranței GOST rămâne deschisă [6] .

AES / Rijndael

Adoptat de NIST în 2001, după 5 ani de competiție publică, AES a înlocuit DES ca standard federal al Statelor Unite. Cifrul a fost dezvoltat de doi criptografi belgieni , Daimen Yoan și Raymen Vincent . Dimensiunea blocului este de 128 de biți, iar dimensiunile cheilor sunt de 128, 192 și 256 de biți, deși dimensiunea blocului poate fi specificată prin orice număr de biți multiplu de 32, cu o valoare minimă de 128 de biți. Dimensiunea maximă a blocului este de 256 de biți, în timp ce dimensiunea cheii nu are limită teoretică. Suportul pentru acest cifru a fost introdus de Intel în familia de procesoare x86 .

Relația cu alte primitive criptografice

Cifrul bloc poate fi folosit pentru a construi alte primitive criptografice :

Vezi și

Note

  1. Schneier, 2002 , Tipuri de algoritm și moduri criptografice.
  2. 1 2 Barichev, Goncharov, Serov, 2011 .
  3. 1 2 3 Gabidulin, Kshevetsky, Kolybelnikov, 2011 .
  4. Block Ciphers - Introducere și prezentare generală - http://cacr.uwaterloo.ca/hac/about/chap7.pdf Arhivat 24 iulie 2012 la Wayback Machine
  5. Shannon C. , Compania A. T. a. T. Teoria comunicării sistemelor de secretizare  (engleză) // Bell Syst. Teh. J. - Short Hills, NJ, etc : 1949. - Vol. 28, Iss. 4. - P. 656-715. — ISSN 0005-8580 ; 2376-7154 - doi:10.1002/J.1538-7305.1949.TB00928.X
  6. 1 2 3 4 5 6 7 Schneier, 2002 .
  7. Fomichev, 2003 .
  8. Cusick, Thomas W. & Stanica, Pantelimon. Funcții și aplicații criptografice booleene  . - Academic Press , 2009. - P. 158-159. — ISBN 9780123748904 .
  9. Schneier, 2002 , DES Scheduling Standard.
  10. Junod, Pascal & Canteaut, Anne. Criptanaliză liniară avansată a cifrurilor bloc și  flux . — IOS Press, 2011. - P. 2. - ISBN 9781607508441 .
  11. Keliher, Liam et al. Modeling Linear Characteristics of Substitution-Permutation Networks // Domenii selectate în criptografie: al 6-lea workshop internațional anual, SAC'99, Kingston, Ontario, Canada, 9-10 august 1999 : proceduri  (engleză) / Hays, Howard & Carlisle, Adam . — Springer, 2000. - P. 79. - ISBN 9783540671855 .
  12. Baigneres, Thomas & Finiasz, Matthieu. Dial 'C' for Cipher // Domenii selectate în criptografie: al 13-lea workshop internațional, SAC 2006, Montreal, Canada, 17-18 august 2006: lucrări selectate revizuite  / Biham, Eli & Yousseff, Amr. — Springer, 2007. - P. 77. - ISBN 9783540744610 .
  13. Cusick, Thomas W. & Stanica, Pantelimon. Funcții și aplicații criptografice booleene  . - Academic Press , 2009. - P. 164. - ISBN 9780123748904 .
  14. Katz, Jonathan; Lindell, Yehuda. Introducere în  criptografia modernă . - CRC Press , 2008. - ISBN 9781584885511 . , paginile 166-167.
  15. Barichev, Goncharov, Serov, 2011 , p. 21.
  16. Blocare moduri de criptare . Centrul de resurse pentru securitatea computerelor NIST . Arhivat din original pe 19 noiembrie 2012.
  17. Menezes, van Oorschot, Vanstone, 1996 , pp. 228–233.
  18. ISO/IEC 10116:2006 Tehnologia informației — Tehnici de securitate — Moduri de operare pentru un cifr pe bloc de n biți . Data accesului: 16 noiembrie 2012. Arhivat din original pe 17 martie 2012.
  19. Morris Dworkin (decembrie 2001), Recommendation for Block Cipher Modes of Operation – Methods and Techniques , Publicația specială 800-38A (Institutul Național de Standarde și Tehnologie (NIST)) , < http://csrc.nist.gov/publications/ nistpubs/800-38a/sp800-38a.pdf > Arhivat 28 august 2017 la Wayback Machine 
  20. Kryptographische Verfahren: Empfehlungen und Schlüssellängen, BSI TR-02102 (nr. Versiunea 1.0), 20 iunie 2008 
  21. Serge Vaudenay. Defecte de securitate induse de aplicațiile de umplutură CBC la SSL, IPSEC, WTLS...  //  Progrese în criptologie – EUROCRYPT 2002, Proc. Conferința internațională despre teoria și aplicațiile tehnicilor criptografice: jurnal. — Springer Verlag, 2002. — Nr. 2332 . - P. 534-545 .
  22. ISO/IEC 9797-1: Tehnologia informației - Tehnici de securitate - Coduri de autentificare a mesajelor (MAC) - Partea 1: Mecanisme care utilizează un cifru bloc , ISO/IEC, 2011 , < http://www.iso.org/iso/iso_catalogue /catalogue_ics/catalogue_detail_ics.htm?csnumber=50375 > Arhivat 27 decembrie 2013 la Wayback Machine 
  23. Kenneth G. Paterson; Gaven J. Watson. Immunising CBC Mode Against Padding Oracle Attacks: A Formal Security Treatment  (en engleză)  // Security and Cryptography for Networks - SCN 2008, Lecture Notes in Computer Science: journal. — Springer Verlag, 2008. — Nr. 5229 . - P. 340-357 .
  24. ^ Martin, Keith M. Criptografia de zi cu zi: principii fundamentale și  aplicații . - Oxford University Press , 2012. - P. 114. - ISBN 9780199695591 .
  25. Paar, Cristof et al. Înțelegerea criptografiei: un manual pentru studenți și  practicieni . — Springer, 2010. - P. 30. - ISBN 9783642041006 .
  26. Menezes, van Oorschot, Vanstone, 1996 , p. 227.
  27. James Nechvatal, Elaine Barker, Lawrence Bassham, William Burr, Morris Dworkin, James Foti, Edward Roback (octombrie 2000), Raportul privind dezvoltarea standardului avansat de criptare (AES) , Institutul Național de Standarde și Tehnologie (NIST) , < http://csrc.nist.gov/archive/aes/round2/r2report.pdf > Arhivat 30 decembrie 2010 la Wayback Machine 
  28. ^ NIST Special Publication 800-57 Recommendation for Key Management - Part 1: General (Revised) , martie 2007 . Consultat la 18 noiembrie 2012. Arhivat din original pe 6 iunie 2014.
  29. Nicolas T. Courtois. Evaluarea de securitate a GOST 28147-89 în vederea standardizării internaționale Arhivat 7 decembrie 2012. . Arhiva Cryptology ePrint: Raport 2011/211
  30. SecurityLab: GOST 28147-89 block cipher cracked . Consultat la 18 noiembrie 2012. Arhivat din original la 14 mai 2013.
  31. ISO/IEC 10118-2:2010 Tehnologia informației - Tehnici de securitate - Funcții hash - Partea 2: Funcții hash folosind un cifru bloc de n biți . Consultat la 18 noiembrie 2012. Arhivat din original la 24 mai 2012.
  32. Menezes, van Oorschot, Vanstone, 1996 , Capitolul 9: Funcții Hash și Integritatea datelor.
  33. Publicația specială NIST 800-90A Recomandare pentru generarea numerelor aleatorii utilizând generatoare de biți aleatorii determinist . Consultat la 18 noiembrie 2012. Arhivat din original pe 9 octombrie 2013.
  34. Menezes, van Oorschot, Vanstone, 1996 , Capitolul 5: Pseudorandom Bits and Sequences.

Literatură