WAKE ( engelsk W ord A uto Key Encryption , kryptering av ord på en automatisk nyckel ) är en strömkrypteringsalgoritm på en automatisk nyckel utvecklad av David Wheeler 1993. Det designades ursprungligen som ett medelhögt krypteringssystem (hastighet i strömchiffer mäts i cykler per byte av krypterad klartext ) block (den minsta mängd information som kan bearbetas av algoritmen; i detta fall är blocket 32 bitar ), med hög säkerhet. Enligt författaren är det en enkel snabb krypteringsalgoritm som lämpar sig för att behandla stora mängder data, samt korta meddelanden, där endast den hemliga nyckeln ändras . Lämplig för att använda hash på hemliga nycklar som används vid verifiering . Ett exempel på en möjlig praktisk användning av denna algoritm är kryptering av en textdataström i SMS . På grund av den stora blockstorleken kan den inte användas i realtidskommunikation [1] [2] [3] [4] [5] .
Algoritmen fungerar i CFB-läge - det föregående ordet i den krypterade sekvensen fungerar som grund för att generera nästa. Det finns dock algoritmändringar relaterade till att ändra nyckelgenereringsprocessen och tillåta att arbeta i OFB och ROFB (Omvänd OFB) lägen [6] . Chiffergamman använder 32 -bitars ord och längden på startnyckeln är 128 bitar [ 1] . Algoritmen använder även ersättningsboxen S-box , som består av 256 32-bitars ord. Fyra variabler används i arbetet, register bör användas som sådana för bättre prestation . Arbetet förlitar sig på återanvändning av tabeller i cachen och närvaron av ett stort tillståndsutrymme . Det betyder att datacachen ska rymma en tabell med 256 ord utan problem [2] .
Algoritmen är tillräckligt snabb - på 32-bitars processorer i VLIW - arkitekturen är den uppskattade prestandan 6,38 cykler per byte, vilket överstiger SEAL- algoritmens , men är sämre än RC4 (3,5 respektive 10,6 cykler per byte) [3 ] .
Chifferet lämpar sig för kryptoanalys, nämligen attacker mot den valda klartexten och den valda chiffertexten [7] .
Algoritmen är baserad på kaskad användning av blandningsfunktionen ( är ett bitvis konjunktionstecken , [7])logiskär, bitskiftningenoperationXORbitvisen är Dessutom är orden i -blocket sammansatta på ett sådant sätt att uppsättningen av höga bytes av dessa ord är en permutation från 0 till 255 (de första byten av varje ord är unika), medan de återstående 3 byten fylls i slumpmässigt [ 8] . Blandningsfunktionen görs reversibel utifrån sådana överväganden att kunskap om ett av orden vid ingången och ordet vid utgången kommer att räcka för att återställa det andra okända vid ingången [9] .
WAKE består av fyra steg i funktionen med återkoppling för varje och ytterligare en för hela gruppen av steg. Denna mängd väljs som minsta möjliga för fullständig diffusion .av data i ett ord (det vill säga när åtminstone en bit av nyckeln ändras, ändras resultatet av krypteringsalgoritmen helt), på grund av det faktum att -blocket utför en icke-linjär transformation , och användningen av en bitvis "OCH" och exklusivt "ELLER" introducerar också en liten icke-linjäritet [2] .
Krypteringsprocessen sker i tre steg [1] :
Först och främst initieras de första värdena i -blocket (ersättningstabellen) med en hemlig nyckel. Ett exempel på algoritmen för att fylla denna tabell ges [1] :
Konstruktionsmetoden kan enkelt modifieras och ovanstående algoritm är bara ett exempel. Huvudsaken är att resultatet av algoritmen har alla egenskaper som presenteras på grund av kryptografisk styrka hos -blocket . Så, till exempel, kan du fylla tabellen med ord med slumpmässiga siffror , men i det här fallet läcker information om de upprepade och nollposterna i tabellen , som inte överstiger 1,5 bitar för varje post. Men skaparen av algoritmen hävdar att processen med permutation på de höga byten av ord avsevärt hjälper till att minska läckaget. Och permutationen på alla fyra byte nivåer ytterligare sannolikheten för att läsa tabellen. Fyllningsalgoritmen ovan är alltså en kompromiss mellan säkerhet och hastighet, eftersom det är blockordens höga byte som permuteras i den [10] .
Generering utförs enligt blockschemat för algoritmen [7] :
Nyckeln bör ändras när det finns en stor vanlig text (nyckelbytesperioden är cirka 10 000 ord - i det här fallet saktar algoritmen ner med cirka 2-3%) [11] .
Båda metoderna är gamifiering av klartext (eller chiffertext) med en nyckelsekvens. Kryptering och dekryptering utförs enligt formeln [12] :
, var är ett ord i klartext eller chiffertext, beroende på om kryptering eller dekryptering utförs.Det finns en hel del sätt att använda detta chiffer, men författaren formulerar bara tre huvudmetoder [13] :
Ett exempel på hur denna krypteringsalgoritm fungerar presenteras enligt följande [1] :
Nej. | Oformaterad karaktär | ASCII-kod | Gammaprocess | ASCII-resultat | Utgångssymbol |
---|---|---|---|---|---|
ett | R | 52 | 52 XOR C2 | 90 | • |
2 | O | 4F | 4F XOR 5D | 12 | _( ex. symbol ) |
3 | B | 42 | 42 XOR 03 | 41 | A |
fyra | B | 42 | 42 XOR 30 | 72 | r |
5 | I | 49 | 49 XOR C2 | 8B | ‹ |
6 | SPACE | tjugo | 20 XOR 5D | 7D | } |
7 | R | 52 | 52 XOR 03 | 51 | Q |
åtta | A | 41 | 41 XOR 30 | 71 | q |
9 | H | 48 | 48 XOR C2 | 8A | Š |
tio | I | 49 | 49 XOR 5D | fjorton | _(ex. tecken) |
elva | M | 4D | 4D XOR 03 | 4E | N |
Så den krypterade sekvensen av ord är "•_Ar‹}QqŠ_N".
Strömkrypteringsalgoritmen är mottaglig för dekryptering genom attacker på den valda klartexten och den valda chiffertexten [7] . I fallet med den första varianten av attacken görs ett försök att återställa ersättningstabellen genom att sortera genom klartextalternativen vid ingången, den andra är valet av chiffertexten för att exakt bestämma samma okända värden för - blockera. Det är känt att beräkningskomplexiteten för en matchad klartextattack är ungefär eller beroende på den valda modifieringen av attacken (i det första fallet används fler varianter av klartexten). Beräkningskomplexiteten för en brute-force attack är ungefär , det vill säga den relativa effektiviteten av en matchad klartext attack är uppenbar [14] . En annan fördel med attacken som föreslås i denna artikel [15] är att den inte är beroende av nykodning [16] . Algoritmerna med vilka kryptoanalys utförs blir dock omöjliga om ordlängden ( bitar, där ) ökas. Således kan de förbättras avsevärt i framtiden [17] [15] .
Dessutom kan en kontinuerlig förändring av data på valfri plats i krypteringsalgoritmen under drift äventyra ersättningstabellen. Om -blocket redan är känt, krävs endast 5 par ord med ren chiffertext för att korrekt bestämma registervärdena [11] .