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.
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.4A 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.
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.
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.
Szimmetrikus titkosítási rendszerek | |
---|---|
Rejtjelfolyam adatfolyam | |
Feistel hálózat | |
SP hálózat | |
Egyéb |