ENRUPT | |
---|---|
Skapare | Sean O'Neil _ _ |
Skapad | 2007 _ |
publiceras | 2008 _ |
Nyckelstorlek | min. 32 bitar i steg om 32 bitar |
Block storlek | min. 64 bitar i steg om 32 bitar |
Antal omgångar | 8×(xw/32) + 4×(kw/32) |
Sorts | Obalanserat modifierat Feistel-nätverk [1] |
EnRUPT är en symmetrisk blockkrypteringsalgoritm och kryptoprimitiv i kryptografi utvecklad av Sean O'Neil .
En egenskap hos algoritmen är dess extrema flexibilitet. Faktum är att algoritmen är en kryptoprimitiv som låter dig implementera ett blockchiffer med en godtycklig blockstorlek - från 64 bitar och en nyckellängd från 32 bitar . I det här fallet kommer antalet omgångar att vara lika med 4 × (2 × xw + kw), där xw är blockstorleken i ord, kw är nyckellängden i ord. Ordstorleken kan vara 32 eller 64 bitar . Med ett ord på 32 bitar är antalet rundor 8 × (xb / 32) + 4 × (kb / 32), där xb är blockstorleken i bitar, kb är nyckellängden i bitar. För ett chiffer med ett 128-bitars block och en 512-bitars nyckel används 96 rundor och med en 256-bitars nyckel 64 rundor.
Eftersom EnRUPT är en de facto krypto-primitiv kan den användas som ett snabbt symmetriskt blockchiffer , strömchiffer (irreversibel EnRUPT, irRUPT), hashfunktion (mdRUPT), MAC, RNG , PRNG .
Liksom TEA -algoritmen är EnRUPT mycket lätt att implementera. I själva verket är chifferet en förenklad, förstärkt och accelererad version av XXTEA- algoritmen . Nedan är ett enkelt och flexibelt exempel på implementeringen av algoritmen i 32-bitars blockchifferläge.
#define er1(k) (rotr(2*x[(r-1)%xw]^x[(r+1)%xw]^k^r,8)*9^k) enRUPT ( u32 * x , const u32 xw , u32 * key , const u32 kw ) { u32 r , s = 4 , n = s * ( 2 * xw + kw ); för ( r = 1 ; r <= n ; r ++ ) x [ r % xw ] ^= er1 ( nyckel [ r % kw ]); } unRUPT ( u32 * x , const u32 xw , u32 * key , const u32 kw ) { u32 r , s = 4 , n = s * ( 2 * xw + kw ); för ( r = n ; r ; r -- ) x [ r % xw ] ^= er1 ( nyckel [ r % kw ]); }Där x är ett block med 32-bitars osignerade nummer, nyckel är nyckeln, xw är meddelandelängden, kw är nyckellängden.
Det finns en attack på 32-bitarsversionen av EnRUPT-blockchifferet, förutsatt att kryptoanalytikern har möjlighet att modifiera nyckeln och få ett stort antal klartext- och chiffertextpar, för en 256-bitars nyckel och ett 128-bitars block , behövs ca 2 64 utvalda texter. Denna attack är även tillämplig på XXTEA- chifferet . [2] [3]
I SHA-3- tävlingen fastställdes en hashfunktion baserad på EnRUPT-algoritmen ha kollisioner för alla sju deklarerade säkerhetsparametrarna. Komplexiteten i att hitta en kollision varierade från 236 till 240 operationer för olika varianter av algoritmen, vilket gjorde det möjligt att demonstrera [4] en praktisk kollision för EnRUPT-256-varianten.
Enligt författarna till EnRUPT-algoritmen utfördes en framgångsrik attack ( eng. linearization attack ) inte på hashfunktionen som helhet och inte på dess struktur, utan bara på den deklarerade varianten med en specifik parameter s = 4. Ökar parametern s till 8 bör leda till ökad spridning och säkerställa en högre säkerhetsnivå genom att halvera beräkningshastigheten för funktionen. Oberoende studier av denna version av algoritmen har dock inte utförts.
Inom ramen för samma SHA-3- tävling publicerades arbete [5] som visar på möjligheten att hitta en prototyp för EnRUPT-512-varianten. Denna attack kräver cirka 2480 operationer, vilket bara är något bättre än 2512 för en fullständig sökning, men visar fortfarande en svaghet i algoritmens struktur.
Symmetriska kryptosystem | |
---|---|
Streama chiffer | |
Feistel nätverk | |
SP nätverk | |
Övrig |