TREZI

WAKE ( Cuvântul englezesc  A uto K ey Encryption , criptarea cuvintelor pe o cheie automată ) este un algoritm de criptare a fluxului pe o cheie automată dezvoltat de David Wheeler în 1993. A fost conceput inițial ca un sistem de criptare de viteză medie (viteza în criptarea fluxului este măsurată în cicluri pe octet de text simplu criptat ) blocuri (cantitatea minimă de informații care poate fi procesată de algoritm; în acest caz, blocul este de 32 de biți ). ), cu securitate ridicată. Potrivit autorului, este un algoritm simplu de criptare rapidă, potrivit pentru procesarea unor cantități mari de date, precum și a mesajelor scurte, în care doar cheia secretă este schimbată . Potrivit pentru utilizarea hash -urilor pe cheile secrete utilizate în verificare . Un exemplu de posibilă utilizare practică a acestui algoritm este criptarea unui flux de date text în SMS . Datorită dimensiunii mari a blocului, acesta nu poate fi utilizat în comunicații în timp real [1] [2] [3] [4] [5] .

Proprietăți

Algoritmul funcționează în modul CFB  - cuvântul anterior al secvenței criptate servește ca bază pentru generarea următorului. Cu toate acestea, există modificări ale algoritmului legate de schimbarea procesului de generare a cheilor și de a permite lucrul în modurile OFB și ROFB (Reverse OFB) [6] . Cifrul gamma folosește cuvinte de 32 de biți , iar lungimea tastei de pornire este de 128 de biți [1] . Algoritmul folosește , de asemenea , S-box de înlocuire , care constă din 256 de cuvinte pe 32 de biți. În lucrare sunt utilizate patru variabile , registrele ar trebui folosite ca atare pentru o performanță mai bună . Lucrarea se bazează pe reutilizarea tabelelor din cache și pe prezența unui spațiu mare de stare . Aceasta înseamnă că memoria cache a datelor ar trebui să se potrivească fără probleme într-un tabel de 256 de cuvinte [2] .

Algoritmul este suficient de rapid - pe procesoarele pe 32 de biți ale arhitecturii VLIW , performanța estimată este de 6,38 cicluri pe octet, ceea ce o depășește pe cea a algoritmului SEAL , dar este inferioară RC4 (3,5 și, respectiv, 10,6 cicluri pe octet) [3] ] .

Cifrul se pretează criptoanalizei, și anume atacuri asupra textului clar ales și textului cifrat ales [7] .

Structura algoritmului

Algoritmul se bazează pe utilizarea în cascadă a funcției de amestecare ( este un semn de conjuncție pe  biți , [7])logicăeste, deplasarea bițilorbițiXORoperațieo este Mai mult, cuvintele din blocul - sunt compuse în așa fel încât setul de octeți înalți ai acestor cuvinte să fie o permutare de la 0 la 255 (primii octeți ai fiecărui cuvânt sunt unici), în timp ce restul de 3 octeți sunt completați aleatoriu [ 8] . Funcția de amestecare este făcută reversibilă din astfel de considerente încât cunoașterea unuia dintre cuvintele de la intrare și cuvântul de la ieșire va fi suficientă pentru a restabili a doua necunoscută la intrare [9] .

WAKE constă din patru etape ale funcției cu feedback pentru fiecare și încă una pentru întregul grup de etape. Această cantitate este aleasă ca minim posibil pentru difuzia completă.de date dintr-un cuvânt (adică atunci când cel puțin un bit al cheii se modifică, rezultatul algoritmului de criptare se schimbă complet), datorită faptului că blocul efectuează o transformare neliniară și utilizării unui bit pe bit. „ȘI” și „SAU” exclusiv introduc, de asemenea, o ușoară neliniaritate [2] .

Descrierea algoritmului

Procesul de criptare are loc în trei etape [1] :

  1. Procesul de generare S-box;
  2. Procesul de generare Autokey;
  3. Criptare și decriptare directă.

Procesul de generare a casetei S

În primul rând, primele valori ale blocului - (tabel de înlocuire) sunt inițializate cu o cheie secretă. Un exemplu de algoritm pentru completarea acestui tabel este dat [1] :

  1. Inițializați un tabel auxiliar format din 8 cuvinte cu o permutare a primilor trei biți:
  2. Copiați cheia în primele 4 cuvinte astfel încât: , unde  este rezultatul împărțirii cheii în patru părți egale.
  3. Formează cuvintele rămase într-un ciclu :
  4. Efectuați însumarea: . Deci, chiar și primele cuvinte vor depinde de toate elementele .
  5. Definiți variabilele auxiliare:
  6. Efectuați o permutare în primul octet al cuvintelor din tabel:
  7. Inițializați următoarele variabile:
  8. Amestecă cuvintele în :

Metoda de construcție poate fi ușor modificată, iar algoritmul de mai sus este doar un exemplu. Principalul lucru este că rezultatul algoritmului are toate proprietățile prezentate din motive de putere criptografică a -blocului . Deci, de exemplu, puteți umple tabelul de cuvinte cu numere aleatorii , dar în acest caz, informațiile despre intrările repetate și zero ale tabelului sunt scurse , fără a depăși 1,5 biți pentru fiecare intrare. Cu toate acestea, creatorul algoritmului susține că procesul de permutare pe octeții mari de cuvinte ajută în mod semnificativ la reducerea scurgerilor. Și permutarea pe toți cei patru octeți nivelează și mai mult probabilitatea de a citi tabelul. Astfel, algoritmul de umplere dat mai sus este un compromis între securitate și viteză, deoarece octeții mari ai cuvintelor bloc sunt permuți în el [10] .

Procesul de generare a cheilor automate

Generarea se realizează conform diagramei bloc a algoritmului [7] :

  1. Mai întâi trebuie să inițializați valorile registrului cu o cheie (eventual diferită): sunt responsabili pentru aceeași împărțire a cheii în părți egale.
  2. Cuvintele din secvența de taste sunt calculate după cum urmează:
  3. Următorul cuvânt al secvenței de taste este determinat de valoarea cazului extrem:

Cheia ar trebui schimbată atunci când există un text simplu mare (perioada de schimbare a cheii este de aproximativ 10.000 de cuvinte - în acest caz, algoritmul încetinește cu aproximativ 2-3%) [11] .

Criptare și decriptare

Ambele metode sunt gamificarea textului simplu (sau a textului cifrat) cu o secvență de taste. Criptarea și decriptarea se efectuează conform formulei [12] :

, unde  este un cuvânt text simplu sau criptat, în funcție de criptarea sau decriptarea.

Utilizare

Există destul de multe moduri de a folosi acest cifr, dar autorul formulează doar trei metode principale [13] :

  1. Complementarea datelor criptate cu două cuvinte la ambele capete și apoi completarea tuturor biților acestor cuvinte cu aceleași valori aleatorii. Astfel, decodorul va putea recunoaște când este necesar să se folosească următoarea cheie din secvența de chei pentru a decripta cu succes mesajul;
  2. Schimbarea cheii de pornire pentru fiecare nou bloc de date;
  3. Criptarea ultimelor patru cuvinte ale textului simplu, gamificare suplimentară cu cheia de pornire a întregii secvențe și procedând la fel în ordine inversă cu o altă cheie de pornire. Această metodă poate implica, de asemenea, utilizarea unei funcții hash standard cu cheie privată care are aceeași cheie de pornire și tabel de înlocuire pentru a genera un hash de 128 de biți. Acest hash este amestecat cu primele patru cuvinte ale textului simplu, de fapt, criptarea ulterioară are loc în același mod ca înainte. Deci, fiecare mesaj nou formează un rezultat nou la ieșirea algoritmului. De asemenea, in cazul folosirii unei functii hash, viteza de executie este crescuta de aproximativ 5 ori fata de metoda conventionala. Metoda este bună pentru că este potrivită pentru mesajele scurte, unde calculul repetat al tabelului de înlocuire reduce semnificativ eficiența aplicației. Deci, folosirea aceleiași mese de înlocuire este o mișcare rezonabilă.

Exemplu de lucru

Un exemplu de funcționare a acestui algoritm de criptare este prezentat după cum urmează [1] :

  1. Porniți inițializarea cheii : „legitosinarhusni”. În hexazecimal , va arăta astfel:
  2. Este necesar să împărțiți cheia în patru părți egale și să inițializați valorile de pornire ale registrelor:
  3. Calculul următorului cuvânt al secvenței de taste ( blocul a fost deja generat pe baza tastei de start disponibilă):  - o cheie nouă.
  4. Apoi, lăsați „ROBBI RAHIM” să fie luat ca text simplu. În reprezentarea HEX, aceasta ar fi . Este necesar să joci această secvență numerică cu cheia:
Nu.Caracter text simplucod ASCIIProces gammarezultat ASCIISimbol de ieșire
unuR5252 XOR C290
2O4F4F XOR 5D12_( ex. simbol )
3B4242 XOR 0341A
patruB4242 XOR 3072r
5I4949 XOR C28B
6SPACEdouăzeci20 XOR 5D7D}
7R5252 XOR 0351Q
optA4141 XOR 3071q
9H4848 XOR C28AŠ
zeceI4949 XOR 5Dpaisprezece_(ex. personaj)
unsprezeceM4D4D XOR 034EN

Deci, secvența criptată de cuvinte este „•_Ar‹}QqŠ_N”.

Criptanaliză

Algoritmul de criptare a fluxului este susceptibil de decriptare prin atacuri asupra textului simplu și a textului cifrat ales [ 7] . În cazul primei variante a atacului, se încearcă restabilirea tabelului de înlocuire prin sortarea opțiunilor de text simplu la intrare, a doua este selectarea textului cifrat pentru a determina cu exactitate aceleași valori necunoscute ale - bloc. Se știe că complexitatea de calcul a unui atac de tip matched-plaintext este de aproximativ sau depinde de modificarea aleasă a atacului (în primul caz se folosesc mai multe variante ale textului simplu). Complexitatea computațională a unui atac cu forță brută este de aproximativ , adică eficiența relativă a unui atac de tip matched-plaintext este evidentă [14] . Un alt avantaj al atacului propus în acest articol [15] este că nu depinde de rekeying [16] . Totuși, algoritmii prin care se realizează criptoanaliza devin imposibili dacă lungimea cuvântului ( biți, unde ) este mărită. Astfel, acestea pot fi îmbunătățite semnificativ în viitor [17] [15] .

De asemenea, o schimbare continuă a datelor în orice loc al algoritmului de criptare în timpul funcționării poate compromite tabelul de înlocuire. În cazul în care blocul - este deja cunoscut, atunci sunt necesare doar 5 perechi de cuvinte cu text simplu pentru a determina cu precizie valorile registrului [11] .

Note

  1. 1 2 3 4 5 Legito, Robbi Rahim .
  2. 1 2 3 Wheeler, 09-12-1993 , p. 127.
  3. 1 2 Craig, 20-01-1997 , p. 276.
  4. Wheeler, 09-12-1993 , p. 132.
  5. Hui-Mei Chao , p. 2.
  6. Craig, 20-01-1997 , p. 279.
  7. 1 2 3 4 Schneier, 1996 , p. 336.
  8. Shamkin, 2006 , p. 64.
  9. Craig, 20-01-1997 , p. 278.
  10. Wheeler, 09-12-1993 , p. 129.
  11. 12 Wheeler, 09.12.1993 , p. 130.
  12. Pudovkina, 01-01-2001 , p. 2.
  13. Wheeler, 09-12-1993 , p. 131.
  14. Pudovkina, 01-01-2001 , p. 7.
  15. 1 2 Pudovkina, 2001-01-01 .
  16. Pudovkina, 01-01-2001 , p. 2.7.
  17. Pudovkina, 01-01-2001 , p. 1.7.

Literatură

Cărți

Articole