Raiden | |
---|---|
Teremtő | Julio Castro, Javier Olabarrieta |
Létrehozva | 2006_ _ |
közzétett | 2006_ _ |
Kulcsméret | 128 bites |
Blokkméret | 64 bites |
A körök száma | 16 |
Típusú | Feistel hálózat |
A Raiden egy Feistel Network típusú blokkrejtjel , amelyet 2006 -ban mutatott be a Julio César Hernández Castro vezette szerzőcsoport . Az algoritmust genetikai programozással fejlesztették ki, és a TEA blokk titkosítás ötletein alapul , amely széles körben ismert a kompakt kód, az egyszerű és megjegyezhető szerkezet, valamint a nagy végrehajtási sebesség kombinációjáról. Mivel a TEA algoritmust a közelmúltban számos támadással szemben sebezhetőnek ismerték el, a szerzők véleményük szerint az algoritmus egyenértékű helyettesítését javasolták, amely feltehetően mentes a sebezhetőségektől és csak kissé gyengébb a sebessége.
A Raiden-rejtjel, teljesen megismételve a TEA algoritmus szerkezetét, egy 64 bites blokkot titkosít, két 32 bites alblokkja, egy 128 bites titkos kulcsa van, és alapértelmezés szerint 16 teljes kört hajt végre, amelyek mindegyikének két köre van Feistel hálózat . A rejtjel felépítése 32 vagy több kör használatát teszi lehetővé.
Mert ez egy blokk titkosítási algoritmus, ahol a blokk hossza 64 bit, és az adathossz nem lehet 64 bites többszöröse, a blokkot 64 bites többszörösére kiegészítő összes bájt értéke 0x01 .
Az algoritmust, a TEA-val ellentétben, jelenleg nem vizsgálták a kriptoanalitikusok. A szerzők szerint az algoritmus 16 teljes körének biztonsági szintje megegyezik a TEA algoritmus 32 teljes körével, miközben nem rendelkezik az eredeti algoritmus sebezhetőségeivel. A legfontosabb különbség a TEA titkosításhoz képest a kiterjesztett kulcsütemezés. Míg a TEA algoritmus csak egy állandó 0x9e3779b9 változó hozzáadását teszi lehetővé, a Raiden a PRNG-hez közeli kulcsütemezést használ , átalakítja a kulcsot és alkulcsokat generál minden körhöz. A rejtjel sikeresen átadja a Diehard , Sexton és ENT szövegeket. [egy]
A Raiden algoritmus megvalósítása is meglehetősen egyszerű, mindössze néhány sornyi kódot vesz igénybe . A TEA -hoz hasonlóan az algoritmus is a 32 bites előjel nélküli számokon ( unsigned long ) végzett műveleteken alapul.
void raiden_encode ( const u32 kulcs [ 4 ], const u32 adat [ 2 ], u32 eredmény [ 2 ]) { u32 b0 = adat [ 0 ], b1 = adat [ 1 ], k [ 4 ] = { kulcs [ 0 ], kulcs [ 1 ], kulcs [ 2 ], kulcs [ 3 ]}, sk ; int i ; for ( i = 0 ; i < 16 ; i ++ ) { sk = k [ i % 4 ] = (( k [ 0 ] + k [ 1 ]) + (( k [ 2 ] + k [ 3 ]) ^ ( k [ 0 ] << ( k [ 2 ] & 0x1F ) ))); b0 += (( sk + b1 ) << 9 ) ^ (( sk - b1 ) ^ (( sk + b1 ) >> 14 )); b1 += (( sk + b0 ) << 9 ) ^ (( sk - b0 ) ^ (( sk + b0 ) >> 14 )); } eredmény [ 0 ] = b0 ; eredmény [ 1 ] = b1 ; } void raiden_decode ( const u32 kulcs [ 4 ], const u32 adat [ 2 ], u32 eredmény [ 2 ]) { u32 b0 = adat [ 0 ], b1 = adat [ 1 ], k [ 4 ] = { kulcs [ 0 ], kulcs [ 1 ], kulcs [ 2 ], kulcs [ 3 ]}, alkulcsok [ 16 ]; int i ; az ( i = 0 ; i < 16 ; i ++ ) alkulcsokhoz [ i ] = k [ i % 4 ] = (( k [ 0 ] + k [ 1 ]) + ( ( k [ 2 ] + k [ 3 ] ) ^ ( k [ 0 ] << ( k [ 2 ] & 0x1F )))); for ( i = 15 ; i >= 0 ; i -- ) { b1 -= (( alkulcsok [ i ] + b0 ) << 9 ) ^ (( alkukulcsok [ i ] - b0 ) ^ (( alkukulcsok [ i ] + b0 ) >> 14 )); b0 -= (( alkukulcsok [ i ] + b1 ) << 9 ) ^ (( alkulcsok [ i ] - b1 ) ^ (( alkukulcsok [ i ] + b1 ) >> 14 )); } eredmény [ 0 ] = b0 ; eredmény [ 1 ] = b1 ; }
Szimmetrikus titkosítási rendszerek | |
---|---|
Rejtjelfolyam adatfolyam | |
Feistel hálózat | |
SP hálózat | |
Egyéb |