ENRUPT

ENRUPT
Creator Sean O'Neil _  _
Creată 2007 _
publicat 2008 _
Dimensiunea cheii min. 32 de biți în trepte de 32 de biți
Dimensiunea blocului min. 64 de biți în trepte de 32 de biți
Numărul de runde 8×(xw/32) + 4×(kw/32)
Tip de Rețea Feistel modificată dezechilibrat [1]

EnRUPT  este un algoritm criptografic bloc simetric și o primitivă cripto în criptografie dezvoltat de Sean O'Neil . 

O caracteristică a algoritmului este flexibilitatea sa extremă. De fapt, algoritmul este un criptoprimitiv care vă permite să implementați un cifr de bloc cu o dimensiune de bloc arbitrară - de la 64 de biți și o lungime a cheii de la 32 de biți . În acest caz, numărul de runde va fi egal cu 4 × (2 × xw + kw), unde xw este dimensiunea blocului în cuvinte, kw este lungimea cheii în cuvinte. Dimensiunea cuvântului poate fi de 32 sau 64 de biți . Cu un cuvânt de 32 de biți, numărul de runde este de 8 × (xb / 32) + 4 × (kb / 32), unde xb este dimensiunea blocului în biți, kb este lungimea cheii în biți. Pentru un cifru cu un bloc de 128 de biți și o cheie de 512 de biți, sunt utilizate 96 de runde, iar cu o cheie de 256 de biți, 64 de runde.

Domeniul de utilizare

Deoarece EnRUPT este o cripto-primitivă de facto, poate fi folosit ca un cifr bloc simetric rapid, cifr de flux ( EnRUPT ireversibil, irRUPT), funcție hash (mdRUPT), MAC, RNG , PRNG .

Exemplu de implementare

La fel ca algoritmul TEA , EnRUPT este foarte ușor de implementat. De fapt, cifrul este o versiune simplificată, consolidată și accelerată a algoritmului XXTEA . Mai jos este un exemplu simplu și flexibil de implementare a algoritmului în modul de criptare bloc pe 32 de biți.

#definiți er1(k) (rotr(2*x[(r-1)%xw]^x[(r+1)%xw]^k^r,8)*9^k) enRUPT ( u32 * x , const u32 xw , u32 * cheie , const u32 kw ) { u32 r , s = 4 , n = s * ( 2 * xw + kw ); pentru ( r = 1 ; r <= n ; r ++ ) x [ r % xw ] ^= er1 ( cheia [ r % kw ]); } unRUPT ( u32 * x , const u32 xw , u32 * cheie , const u32 kw ) { u32 r , s = 4 , n = s * ( 2 * xw + kw ); pentru ( r = n ; r ; r -- ) x [ r % xw ] ^= er1 ( cheia [ r % kw ]); }

Unde x este un bloc de numere nesemnate pe 32 de biți, cheia este cheia, xw este lungimea mesajului, kw este lungimea cheii.

Securitate

Există un atac asupra versiunii pe 32 de biți a cifrului bloc EnRUPT, cu condiția ca criptoanalistul să aibă capacitatea de a modifica cheia și de a obține un număr mare de perechi de text simplu și de text cifrat, pentru o cheie de 256 de biți și un bloc de 128 de biți , sunt necesare aproximativ 2 64 de texte selectate. Acest atac este aplicabil și pentru cifrul XXTEA . [2] [3]

În competiția SHA-3 , s-a determinat că o funcție hash bazată pe algoritmul EnRUPT are coliziuni pentru toți cei șapte parametri de securitate declarați. Complexitatea găsirii unei coliziuni a variat de la 236 la 240 de operații pentru diferite variante ale algoritmului, ceea ce a făcut posibilă demonstrarea [4] a unei coliziuni practice pentru varianta EnRUPT-256.

Potrivit autorilor algoritmului EnRUPT, un atac de succes ( ing.  atac de liniarizare ) a fost efectuat nu asupra funcției hash în ansamblu și nu asupra structurii acesteia, ci doar asupra variantei declarate cu un parametru specific s = 4. Creșterea parametrul s la 8 ar trebui să conducă la o difuzie crescută și să asigure un nivel mai ridicat de securitate, prin reducerea vitezei de calcul a funcției la jumătate. Cu toate acestea, studii independente ale acestei versiuni a algoritmului nu au fost efectuate.

În cadrul aceleiași competiții SHA-3 , a fost publicată lucrarea [5] , care arată posibilitatea găsirii unui prototip pentru varianta EnRUPT-512. Acest atac necesită aproximativ 2480 de operații, ceea ce este doar puțin mai bun decât 2512 pentru o căutare completă, dar arată totuși o slăbiciune în structura algoritmului.

Note

  1. EnRUPT: Prima primitivă criptografică simetrică all-in-one Arhivată la 14 iulie 2010 la Wayback Machine .
  2. Declanșează atacul cu chei asociate (link indisponibil) . Data accesului: 21 ianuarie 2009. Arhivat din original la 29 ianuarie 2009. 
  3. Atacul cu chei legate de EnRUPT  (link descendent)
  4. Coliziuni practice pentru EnRUPT . Preluat la 22 decembrie 2009. Arhivat din original la 5 martie 2016.
  5. Criptoanaliza lui EnRUPT . Consultat la 22 decembrie 2009. Arhivat din original la 11 decembrie 2010.

Link -uri

  1. Consultați codul sursă EnRUPT
  2. Codul sursă al algoritmului EnRUPT portat la Delphi