Khafre

Khafre
Tvůrce Ralph Merkle
Vytvořeno 1990
zveřejněno 1990
Velikost klíče neomezené (více 64 bitů)
Velikost bloku 64 bit
Počet kol neomezeně (více 8 bitů)
Typ Síť Feistel

Khafre  je druhý (spolu s Khufu ) algoritmus navržený Ralphem Merklem ( Khufu ( Khufu ) a Khafre ( Khafre )  jsou jména egyptských faraonů . Tento algoritmus je podobný Khufuově algoritmu , ale nepotřebuje žádný předvýpočet. S-boxy jsou nezávislé na klíči , Khafre používá pevné S-boxy. Algoritmus Khafre neomezuje maximální počet kol algoritmu a maximální velikost klíče, na rozdíl od Khufu. Velikost klíče však musí být násobkem 64 bitů a počet kol musí být násobkem 8. Merkle navrhuje, aby se s Khafrem používaly 64 nebo 128bitové klíče a že Khafre bude mít více kol než Khufu . Každý krok Khafrea je také obtížnější než krok Khufu , díky čemuž je Khafre pomalejší. Khafre však nepotřebuje žádný předvýpočet, což umožňuje rychlejší šifrování malých částí dat.

Historie

Bezprostředně před vytvořením algoritmu (konec roku 1990) byla většina tehdy existujících symetrických šifrovacích algoritmů přizpůsobena hardwarovým implementacím, přestože hardwarová implementace šifrovacího algoritmu je dražší než softwarová implementace, která znamená, že je hůře dostupný pro drtivou většinu.většinu potenciálních uživatelů.

Na konci devadesátých let Merkle jako součást týmu kryptografů z Xeroxu vyvinul šifru - Khafre, pojmenovanou po egyptském faraonovi Khafre, synovi Khufa. O rok později získal Xerox patent na algoritmus Khafre, jehož komerční použití bylo držitelem patentu zakázáno.

Postuláty algoritmu

Algoritmus Khafre je blokový algoritmus založený na síti Feistel a splňuje následující postuláty:

Principy tvorby algoritmu

Na základě zkušeností získaných při návrhu algoritmu DES byly formulovány následující principy:

  1. Velikost 56bitového klíče DES bylo možné zvětšit, protože náklady na paměť se staly zanedbatelné.
  2. Intenzivní používání permutací v DES je vhodné pouze pro hardwarové implementace, ale ztěžuje implementace softwaru. Nejrychlejší implementace DES provádějí permutace tabulkovým způsobem. Vyhledávání v tabulkách může poskytnout stejné "rozptylové" charakteristiky jako samotné permutace a může učinit implementaci flexibilnější.
  3. DES S-boxy s pouze 64 4bitovými prvky jsou příliš malé. Jak paměť zlevnila, bylo možné zvětšit i S-boxy. Navíc se všech osm S-boxů používá současně. Ačkoli je to vhodné pro hardware, není to nutné pro softwarovou implementaci. Musí být implementováno sériové (spíše než paralelní) použití S-boxů.
  4. Eliminujte úvodní a koncové permutace, protože jsou kryptograficky nesmyslné
  5. Všechny rychlé implementace DES předem vypočítají klíče pro každý krok. Za této podmínky nemá smysl tyto výpočty komplikovat.
  6. Kritéria návrhu S-boxu by měla být veřejná, na rozdíl od DES

Algoritmus

Parametry algoritmu

Algoritmus šifruje data v blocích o velikosti 64 bitů. Dále je během procesu šifrování každý blok rozdělen na 2 dílčí bloky o velikosti každého 32 bitů.

Algoritmus má následující parametry:

  1. Velikost šifrovacího bloku je 64 bitů.
  2. Velikost šifrovacího klíče musí být násobkem 64 bitů
  3. S-box má 8 vstupních bitů a 32 výstupních bitů. Je trvalý a nezávisí na šifrovacím klíči. Každé kolo používá jiný S-blok.

Vytvoření standardní substituční tabulky

Fragment standardní tabulky
byte 4 byty
00 00 00 00 00
01 01 01 01 01
02 02 02 02 02
FF FF FF FF FF
Fragment standardní tabulky po permutacích
byte 4 byty
00 FC 21 23 FF
01 E2 27 71 FA
02 D.F. B5 BB 29
FF třicet 24 1C Facebook

Generování podklíče

  1. V první fázi se inicializuje 64bajtový klíč a nepoužité bity se nastaví na nulu.
  2. Ve druhé fázi je tento blok zašifrován algoritmem Khafre v režimu řetězení šifrových bloků. Nulová sekvence se bere jako podklíče pro každý oktet. Ukáže se pseudonáhodná 64bajtová sekvence, která závisí pouze na šifrovacím klíči. Je pravděpodobné, že k inicializaci podklíčů může být zapotřebí více bajtů, takže tento krok lze opakovat vícekrát.
  3. Ve třetí fázi se z přijaté sady bitů vyberou podklíče ( Ko .. Kn +3 ) .

Postup šifrování

Zdrojový text je rozdělen do bloků po 64 bitech. Na samém začátku postupu tento blok podstoupí následující operace:

Poté se spustí šifrování. Počet opakování kroků se rovná počtu kol.

  1. V prvním kroku prochází posledních 8 bitů levého dílčího bloku S-boxem, který produkuje 32 bitů jako výstup. Každý operační oktet také používá jiný S-box pro aktuální oktet.
  2. V dalším kroku je hodnota získaná v předchozím kroku XORed s R.
  3. Ve třetím kroku se L cyklicky posouvá doleva o jiný počet bitů, v závislosti na počtu zaokrouhlení v oktetu:
    • 8 - na 3 a 4 kola
    • 24 - na 7 a 8 kol
    • 16 - pro další kola
  4. Ve čtvrtém kroku jsou podbloky prohozeny (levý podblok je nyní R, pravý je L).
  5. Kroky 1 až 4 se opakují 8krát, přičemž S-Block se mění pro každé opakování.
  6. V posledním kroku jsou podbloky opět bitově XORed s podklíči K n+2 a K n+3 (pro L - K n+3 , pro R - K n+2 je n číslo oktetu)

Poté se všechny kroky znovu R-krát opakují.

Implementace algoritmu [1] L : int ; R : int ; standardSBoxes : ARRAY [ 1 .. dost / 8 ] OF ARRAY [ 0 .. 255 ] OF int ; klíč : ARRAY [ 0 .. velikost klíče -1 ] OF ARRAY [ O .. 1 ] of int ; keyIndex : [ 0 .. velikost klíče - 1 ]; rotační rozvrh : ARRAY [ l .. 8 ] = [ 16 , 16 , 8 , 8 , 16 , 16 , 24 , 24 ]; L = L Tlačítko XOR [ O ][ O ]; R = R XOR klíč [ O ][ 1 ]; keyIndex = 1 MOD velikost klíče ; oktet = 1 ; PRO kolo = 1 DO dost DO ZAČÍT L = L XOR standardníSBoxy [ oktet ] [ R AND # FF ]; R = RotateRight [ R , RotateSchedule [ round mod 8 + 1 ] 1 ; SWAP [ L , R ]; POKUD kolo MOD 8 = 0 POTOM ZAČÍT L = L XOR otočitVpravo [ klávesa [ keyIndex ][ O ], oktet ]; R = R XOR otočitVpravo [ klíč [ keyIndex ][ 1 ], oktet ]; keyIndex = keyIndex + 1 ; POKUD keyIndex = velikost klíče THEN keyIndex = 0 ; oktet = oktet + 1 ; KONEC ; KONEC ;

Poznámky

  1. Ralph C. Merkle. Rychlé funkce softwarového šifrování // Pokroky v kryptologii. - S. 482-483 .

Literatura

  • Schneier B. Aplikovaná kryptografie. Protokoly, algoritmy, zdrojový kód v jazyce C = Aplikovaná kryptografie. Protocols, Algorithms and Source Code in C. - M. : Triumph, 2002. - 816 s. - 3000 výtisků.  - ISBN 5-89392-055-4 .
  • Panasenko S.P. Kapitola 3 // Šifrovací algoritmy. Speciální referenční kniha - Petrohrad. : BHV-SPb , 2009. - S. 288-295. — 576 s. — ISBN 978-5-9775-0319-8
  • Ralph C. Merkle. Funkce rychlého softwarového šifrování  // Pokroky v kryptologii - CRYPTO '90: sborník (Lecture Notes in Computer Science) : Proceedings of Conf. / Advances in Cryptology - CRYPTO '90, Santa Barbara, Kalifornie, USA, 11.-15. srpna 1991. - Springer Berlin Heidelberg, 1991. - S. 476-501 . — ISBN 3-540-54508-5 .  (nedostupný odkaz)