PROBUDIT

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] .

Vlastnosti

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] .

Struktura algoritmu

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] .

Popis algoritmu

Proces šifrování probíhá ve třech fázích [1] :

  1. proces generování S-boxu;
  2. Proces generování autoklíčů;
  3. Přímé šifrování a dešifrování.

Proces generování S-boxu

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] :

  1. Inicializujte pomocnou tabulku skládající se z 8 slov s permutací prvních tří bitů:
  2. Zkopírujte klíč v prvních 4 slovech tak, aby: , kde  je výsledek rozdělení klíče na čtyři stejné části.
  3. Vytvořte zbývající slova v cyklu :
  4. Proveďte shrnutí: . Takže i prvních pár slov bude záviset na všech bitech .
  5. Definujte pomocné proměnné:
  6. Proveďte permutaci v prvním bajtu slov v tabulce:
  7. Inicializujte následující proměnné:
  8. Zamíchejte slova v :

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] .

Proces generování autoklíče

Generování se provádí podle blokového schématu algoritmu [7] :

  1. Nejprve musíte inicializovat hodnoty registru pomocí klíče (případně jiného): jsou zodpovědní za stejné rozdělení klíče na stejné části.
  2. Slova v posloupnosti kláves se počítají takto:
  3. Další slovo sekvence kláves je určeno hodnotou extrémního případu:

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] .

Šifrování a dešifrování

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í.

Použití

Existuje poměrně mnoho způsobů, jak tuto šifru použít, ale autor formuluje pouze tři hlavní metody [13] :

  1. Doplnění zašifrovaných dat dvěma slovy na obou koncích a následné vyplnění všech bitů těchto slov stejnými náhodnými hodnotami. Dekodér tak bude schopen rozpoznat, kdy je pro úspěšné dešifrování zprávy nutné použít další klíč v pořadí klíčů;
  2. Změna startovacího klíče pro každý nový datový blok;
  3. Šifrování posledních čtyř slov otevřeného textu, další gamifikace se startovacím klíčem celé sekvence a provedení stejného v opačném pořadí s dalším startovacím klíčem. Tato metoda může také zahrnovat použití některé standardní hashovací funkce soukromého klíče , která má stejný startovací klíč a tabulku náhrad, aby se vygenerovala hash 128 bitů. Tento hash je smíchán s prvními čtyřmi slovy otevřeného textu, ve skutečnosti k dalšímu šifrování dochází stejným způsobem jako dříve. Každá nová zpráva tedy tvoří nový výsledek na výstupu algoritmu. Také v případě použití hashovací funkce se rychlost provádění zvýší asi 5krát ve srovnání s konvenční metodou. Metoda je dobrá, protože se dobře hodí pro krátké zprávy, kde opakovaný výpočet náhradní tabulky výrazně snižuje efektivitu aplikace. Použití stejné náhradní tabulky je tedy rozumným krokem.

Příklad práce

Příklad fungování tohoto šifrovacího algoritmu je uveden následovně [1] :

  1. Spustit inicializaci klíče : "legitosinarhusni". V šestnáctkové soustavě to bude vypadat takto:
  2. Je nutné rozdělit klíč na čtyři stejné části a inicializovat počáteční hodnoty registrů:
  3. Výpočet dalšího slova sekvence kláves ( -blok již byl vygenerován na základě dostupného startovacího klíče):  - nový klíč.
  4. Dále nechť je „ROBBI RAHIM“ brán jako prostý text. V HEX reprezentaci by to bylo . Tuto číselnou sekvenci je nutné gamifikovat pomocí klíče:
Ne.Znak prostého textuASCII kódGamma procesVýsledek ASCIIVýstupní symbol
jedenR5252 XOR C290
2O4F4F XOR 5D12_( např. symbol )
3B4242 XOR 0341A
čtyřiB4242 XOR 3072r
5I4949 XOR C28B
6SPACEdvacet20 XOR 5D7D}
7R5252 XOR 0351Q
osmA4141 XOR 3071q
9H4848 XOR C28AŠ
desetI4949 XOR 5Dčtrnáct_(např. postava)
jedenáctM4D4D XOR 034EN

Zašifrovaná sekvence slov je tedy „•_Ar‹}QqŠ_N“.

Kryptoanalýza

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] .

Poznámky

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

Literatura

Knihy

Články