Kobra (rejtjel)

Kobra
Teremtő Christian Schneider,
Létrehozva 1996_ _
közzétett 1996. április 13
Kulcsméret 8-576 bit
Blokkméret 128 bites
A körök száma 12
Típusú Feistel hálózat

A Cobra egy szimmetrikus blokk-rejtjel-algoritmus (blokkméret 128 bit, kulcshossz legfeljebb 576 bit), amelyet Christian Schneider német kriptológus fejlesztett ki, mint egy heterogén Feistel-hálózat ( angol  kiterjesztett Feistel hálózat ) szerkezetű első rejtjelét.

Szerkezet

Az algoritmus egy heterogén Feistel hálózat szerkezete. Ez a hálózat a klasszikustól eltérően kettőnél több alblokkot tartalmaz. Ezen túlmenően a titkosítás több kulcsfüggő helyettesítési táblát (S-boxokat, amelyeket a szerző S -  egységként emleget ) és egy további műveletet használ a diffúzió növelésére.

A Cobra egy 128 bites (16 bájtos) blokkal és változó kulcshosszúságú rejtjel. Az algoritmus két részből áll: a kulcsbővítési eljárásból és a titkosítási eljárásból. A kulcs (legfeljebb 576 bit hosszú) 12464 bájtos alkulcs-tömbre bővül. A titkosítás egy bemeneti műveletből, a körfüggvény 12-szeri megismétléséből és egy kimeneti műveletből áll.

A titkosítási eljárás magában foglalja az előzetes és az azt követő kulcsfehérítést.

A kiterjesztett Feistel hálózat egyik köre általános esetben így néz ki:

D i = A i-1
C i = D i-1 XOR F(D i; K i,c)
B i = C i-1 XOR F(C i; K i,b)
A i = B i-1 XOR F(B i; K i,a)

A Cobra esetében így néz ki:

A = A XOR W1,1 B=B XOR W1,2 C=C XOR W1,3 D = D XOR W1.4 r = 1 és 12 között D' = A C' = (D XOR F(D';Pr,3;Sc ))>>>1 B' = (C XOR F(C';Pr,2;Sb ))>>>1 A' = (B XOR F(B';Pr,1;Sa ))>>>1 A = A' B=B' C = C' D = D' következő r A = A XOR W2.1 B = B XOR W2.2 C=C XOR W2.3 D=D XOR W2.4

A kulcsbővítési folyamat 12 P-Boxot hoz létre három-három 32 bites elemmel, 12 S-Boxot 256 egyenként 32 bites elemmel, és két W-Boxot négy-négy elemmel.

Az F függvény egy 32 bites elem nemlineáris helyettesítése. Itt A' = (B XOR F(B';Pr, 1 ;Sa))>>>1, ami azt jelenti, hogy A'-t úgy kapjuk meg, hogy jobbra forgatjuk a B változó 2. modulo összeadásának eredményét egy F kimenettel függvény, amelynek kimenete B', a Pr kerek alkulcs, 1 , az S egység első eleme, S a , ahol r az aktuális kör.

Keresési táblázatok

A Feistel hálózaton alapuló klasszikus titkosítások (például a GOST 28147-89 hazai titkosítási szabvány ) nagymértékben függenek az alkalmazott helyettesítési táblától, amely az algoritmus nemlineáris része. De a Blowfish algoritmushoz hasonlóan a keresőtáblák is lehetnek titkosak és kulcsfüggőek. Ebben az esetben az S-Box táblákat egy kulcsütemezés generálja, ami egyfajta kriptográfiai PRNG. Ebben az esetben természetesen nem kizárt a gyenge kulcsok és az általuk generált gyenge helyettesítési táblák jelenléte sem. A probléma megoldására azonban több független tábla generálását és egy további diffúziós műveletet vezettek be. Ebben az esetben a gyenge kulcs valószínűsége olyan kicsi, hogy figyelmen kívül hagyható. Ez a tézis különösen igaz, és a megközelítés praktikus, ha hash függvényt használunk kulcskimeneti anyagként.

Megvalósítás

Az algoritmust, bár nem használják széles körben, Markus Hahn a népszerű Blowfish Advanced 97 titkosítási segédprogramban valósította meg, amely 64 bites blokkal és 256 bites kulccsal használt változatát használta. Ezután a segédprogram következő kiadásában - a CS verzióban - egy 128 bites blokkal és egy 576 bites kulccsal rendelkező kiadást valósítottak meg.

Lásd még

Linkek