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] .
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] .
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] .
Procesul de criptare are loc în trei etape [1] :
Î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] :
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] .
Generarea se realizează conform diagramei bloc a algoritmului [7] :
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] .
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.Există destul de multe moduri de a folosi acest cifr, dar autorul formulează doar trei metode principale [13] :
Un exemplu de funcționare a acestui algoritm de criptare este prezentat după cum urmează [1] :
Nu. | Caracter text simplu | cod ASCII | Proces gamma | rezultat ASCII | Simbol de ieșire |
---|---|---|---|---|---|
unu | R | 52 | 52 XOR C2 | 90 | • |
2 | O | 4F | 4F XOR 5D | 12 | _( ex. simbol ) |
3 | B | 42 | 42 XOR 03 | 41 | A |
patru | B | 42 | 42 XOR 30 | 72 | r |
5 | I | 49 | 49 XOR C2 | 8B | ‹ |
6 | SPACE | douăzeci | 20 XOR 5D | 7D | } |
7 | R | 52 | 52 XOR 03 | 51 | Q |
opt | A | 41 | 41 XOR 30 | 71 | q |
9 | H | 48 | 48 XOR C2 | 8A | Š |
zece | I | 49 | 49 XOR 5D | paisprezece | _(ex. personaj) |
unsprezece | M | 4D | 4D XOR 03 | 4E | N |
Deci, secvența criptată de cuvinte este „•_Ar‹}QqŠ_N”.
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] .