WAKE ( anglicky Word A uto Key Encryption , šifrování slov na automatickém klíči ) je proudový šifrovací algoritmus na automatickém klíči vyvinutý Davidem Wheelerem v roce 1993. Původně byl navržen jako středně rychlý šifrovací systém (rychlost proudových šifer se měří v cyklech na bajt šifrovaného prostého textu ) bloky (minimální množství informací, které může algoritmus zpracovat; v tomto případě je blok 32 bitů ), s vysokou bezpečností. Podle autora jde o jednoduchý rychlý šifrovací algoritmus vhodný pro zpracování velkého množství dat, ale i krátkých zpráv, kde se mění pouze tajný klíč . Vhodné pro použití hashů na tajných klíčích používaných při ověřování . Příkladem možného praktického využití tohoto algoritmu je šifrování textového datového toku v SMS . Vzhledem k velké velikosti bloku jej nelze použít v komunikaci v reálném čase [1] [2] [3] [4] [5] .
Algoritmus pracuje v režimu CFB - předchozí slovo zašifrované sekvence slouží jako základ pro generování dalšího. Existují však úpravy algoritmu související se změnou procesu generování klíčů a umožňujícími pracovat v režimech OFB a ROFB (Reverse OFB) [6] . Šifra gama používá 32bitová slova a délka startovacího klíče je 128 bitů [1] . Algoritmus také používá náhradní S-box , který se skládá z 256 32bitových slov. V práci jsou použity čtyři proměnné , pro lepší výkon by měly být použity registry jako takové . Práce se opírá o opětovné použití tabulek v mezipaměti a přítomnost velkého stavového prostoru . To znamená, že datová mezipaměť by se měla bez problémů vejít do tabulky 256 slov [2] .
Algoritmus je dostatečně rychlý – na 32bitových procesorech architektury VLIW je odhadovaný výkon 6,38 cyklů na bajt, což převyšuje výkon algoritmu SEAL , ale je horší než RC4 (3,5 a 10,6 cyklů na bajt) [3 ] .
Šifra se hodí ke kryptoanalýze, konkrétně k útokům na vybraný otevřený text a vybraný šifrový text [7] .
Algoritmus je založen na kaskádovém použití směšovací funkce ( je bitové znaménko konjunkce , [7])logickýje, bitový posunXORoperacebitováto je Navíc slova v -bloku jsou složena tak, že množina vysokých bajtů těchto slov je permutací od 0 do 255 (první bajty každého slova jsou jedinečné), zatímco zbývající 3 bajty jsou vyplněny náhodně [ 8] . Směšovací funkce je reverzibilní z takových úvah, že znalost jednoho ze slov na vstupu a slova na výstupu bude stačit k obnovení druhé neznámé na vstupu [9] .
WAKE se skládá ze čtyř stupňů funkce se zpětnou vazbou pro každý a ještě jeden pro celou skupinu stupňů. Toto množství je zvoleno jako minimální možné pro úplnou difúzi .dat ve slově (to znamená, že když se změní alespoň jeden bit klíče, výsledek šifrovacího algoritmu se změní úplně), protože -blok provádí nelineární transformaci , a použití bitové "AND" a výhradní "OR" také zavádí mírnou nelinearitu [2] .
Proces šifrování probíhá ve třech fázích [1] :
Nejprve jsou první hodnoty -bloku (náhradní tabulka) inicializovány tajným klíčem. Příklad algoritmu pro vyplnění této tabulky je uveden [1] :
Konstrukční metodu lze snadno upravit a výše uvedený algoritmus je pouze příkladem. Hlavní věc je, že výsledek algoritmu má všechny vlastnosti prezentované z důvodů kryptografické síly -bloku . Můžete tedy například vyplnit tabulku slov náhodnými čísly , ale v tomto případě uniknou informace o opakovaných a nulových položkách tabulky , které nepřesahují 1,5 bitu pro každou položku. Tvůrce algoritmu však tvrdí, že proces permutace na vysokých bajtech slov výrazně pomáhá snížit únik. A permutace na všech čtyřech bytech dále snižuje pravděpodobnost čtení tabulky. Výše uvedený vyplňovací algoritmus je tedy kompromisem mezi bezpečností a rychlostí, protože jsou v něm permutovány vysoké bajty blokových slov [10] .
Generování se provádí podle blokového schématu algoritmu [7] :
Klíč by měl být změněn v případě velkého prostého textu (doba změny klíče je přibližně 10 000 slov – v tomto případě se algoritmus zpomalí asi o 2–3 %) [11] .
Obě metody jsou gamifikací otevřeného textu (nebo šifrovaného textu) pomocí klíčové sekvence. Šifrování a dešifrování se provádí podle vzorce [12] :
, kde je slovo v otevřeném nebo šifrovaném textu v závislosti na tom, zda se provádí šifrování nebo dešifrování.Existuje poměrně mnoho způsobů, jak tuto šifru použít, ale autor formuluje pouze tři hlavní metody [13] :
Příklad fungování tohoto šifrovacího algoritmu je uveden následovně [1] :
Ne. | Znak prostého textu | ASCII kód | Gamma proces | Výsledek ASCII | Výstupní symbol |
---|---|---|---|---|---|
jeden | R | 52 | 52 XOR C2 | 90 | • |
2 | O | 4F | 4F XOR 5D | 12 | _( např. symbol ) |
3 | B | 42 | 42 XOR 03 | 41 | A |
čtyři | B | 42 | 42 XOR 30 | 72 | r |
5 | I | 49 | 49 XOR C2 | 8B | ‹ |
6 | SPACE | dvacet | 20 XOR 5D | 7D | } |
7 | R | 52 | 52 XOR 03 | 51 | Q |
osm | A | 41 | 41 XOR 30 | 71 | q |
9 | H | 48 | 48 XOR C2 | 8A | Š |
deset | I | 49 | 49 XOR 5D | čtrnáct | _(např. postava) |
jedenáct | M | 4D | 4D XOR 03 | 4E | N |
Zašifrovaná sekvence slov je tedy „•_Ar‹}QqŠ_N“.
Algoritmus šifrování proudu je přístupný k dešifrování prostřednictvím útoků na vybraný prostý text a vybraný šifrovaný text [7] . V případě první varianty útoku je učiněn pokus o obnovení náhradní tabulky protříděním možností otevřeného textu na vstupu, druhou je výběr šifrového textu pro přesné určení stejných neznámých hodnot - blok. Je známo, že výpočetní náročnost útoku matched-plaintext je přibližně nebo závislá na zvolené modifikaci útoku (v prvním případě se používá více variant otevřeného textu). Výpočetní složitost útoku hrubou silou je přibližně , to znamená, že relativní efektivita útoku s hozeným textem je zřejmá [14] . Další výhodou útoku navrženého v tomto článku [15] je, že nezávisí na překlíčování [16] . Algoritmy, kterými se provádí kryptoanalýza , se však stanou neproveditelnými, pokud se zvětší délka slova ( bity, kde ). Lze je tedy v budoucnu výrazně zlepšit [17] [15] .
Také nepřetržitá změna dat na kterémkoli místě šifrovacího algoritmu během provozu může ohrozit náhradní tabulku. V případě, že je -blok již znám, je k přesnému určení hodnot registru potřeba pouze 5 párů slov s nešifrovaným textem [11] .