Raiden (algoritmus)

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 .

Biztonság

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]

Példakód C nyelven

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 ; }

Lásd még

Jegyzetek

  1. [ Raiden: A TEA Block Cipher alternatívája   ] . Hozzáférés dátuma: 2009. január 28. Az eredetiből archiválva : 2016. március 5. Raiden: A TEA Block Cipher   alternatívája


Linkek