RC5 | |
---|---|
Creator | Ron Rivest |
Creată | 1994 |
publicat | 1994 |
Dimensiunea cheii | 0-2040 biți (128 în mod implicit) |
Dimensiunea blocului | 32, 64 sau 128 de biți (64 este valoarea implicită pentru platformele pe 32 de biți) |
Numărul de runde | 1-255 (12 în mod implicit) |
Tip de | Rețeaua Feistel |
RC5 ( Ron's Code 5 sau Rivest's Cipher 5 ) este un cifru bloc dezvoltat de Ron Rivest de la RSA Security cu un număr variabil de runde , lungime bloc și lungime cheie . Acest lucru extinde domeniul de utilizare și simplifică tranziția la o versiune mai puternică a algoritmului.
Există mai multe variante diferite ale algoritmului , în care transformările în „jumătățile” ale clasicului RC5 sunt oarecum modificate. Algoritmul clasic folosește trei operații primitive și inversiunile acestora:
Principala inovație este utilizarea unei operații de deplasare cu un număr variabil de biți, care nu a fost folosită în algoritmii de criptare anteriori. Aceste operațiuni sunt la fel de rapide pe majoritatea procesoarelor , dar în același timp complică semnificativ criptoanaliza diferențială și liniară a algoritmului.
Criptarea folosind algoritmul RC5 constă în două etape. Procedura de extindere a cheii și criptarea în sine . Pentru decriptare, se efectuează mai întâi procedura de extindere a cheii, iar apoi operațiunile inversează procedura de criptare. Toate operațiile de adunare și scădere sunt efectuate modulo .
Deoarece algoritmul RC5 are parametri variabili, desemnarea algoritmului cu parametri specifici este RC5-W/R/b , unde
Înainte de criptarea sau decriptarea directă a datelor, se efectuează o procedură de extindere a cheii. Procedura de generare a cheii constă din patru pași:
Pentru un parametru dat , două variabile pseudoaleatoare sunt generate folosind două constante matematice: ( exponent ) și ( Rata de aur ).
,unde este rotunjirea la cel mai apropiat număr întreg impar.
Pentru că obțineți următoarele constante:
În această etapă, cheia este copiată într-o matrice de cuvinte ... , unde , unde , adică numărul de octeți dintr-un cuvânt.
Dacă nu este un multiplu de , atunci completați cu zero biți la cel mai apropiat multiplu mai mare de .
Dacă , atunci setăm valoarea lui , și .
Construirea unui tabel de chei extinseÎn această etapă, este construit tabelul de chei extins , care se realizează după cum urmează:
AmestecăUrmătoarele acțiuni sunt efectuate ciclic de N ori:
unde sunt variabile temporare ale căror valori inițiale sunt egale cu 0. Numărul de iterații ale buclei este maximul dintre cele două valori și .
Înainte de prima rundă, se efectuează operațiunile de impunere a unei chei extinse asupra datelor criptate:
În fiecare rundă se efectuează următoarele acțiuni:
Pentru Decriptarea datelor, se folosesc operațiuni inverse, adică se efectuează următoarele runde:
După ce toate rundele au fost finalizate, mesajul original este găsit din expresia:
Algoritmul RC5 are următoarele proprietăți: [1]
RSA a petrecut mult timp analizând modul în care funcționează cu un bloc pe 64 de biți. Așa că în perioada 1995-1998 au publicat o serie de rapoarte în care au analizat în detaliu puterea criptografică a algoritmului RC5. Scorul pentru criptoanaliza liniară arată că algoritmul este sigur după 6 runde. Criptanaliza diferențială necesită texte clare selectate pentru algoritmul cu 5 runde, pentru 10 runde, pentru 12 runde și pentru 15 runde. Și din moment ce sunt posibile doar texte clare diferite, criptoanaliza diferențială este imposibilă pentru un algoritm de 15 sau mai multe runde. Deci este recomandat să folosiți 18-20 de runde, sau cel puțin 15 runde în loc de cele 12 runde pe care însuși Rivest le-a recomandat.
Pentru a stimula studiul și utilizarea cifrului RC5, RSA Security la 28 ianuarie 1997 s-a oferit să spargă o serie de mesaje criptate cu algoritmul RC5 cu parametri diferiți [2] , atribuind un premiu de 10.000 USD pentru spargerea fiecărui mesaj. cei mai slabi parametri este RC5-32/12/5 a fost spart în câteva ore. Cu toate acestea, ultimul cifr RC5-32/12/8 care a fost spart a necesitat 5 ani de calcul de către proiectul de calcul distribuit RC5-64 (aici 64= b 8, lungimea cheii în biți) condus de distributed.net . RC5-32 /12/ b pentru b de la 9 la 16 este încă impenetrabil .% taste. [3]
În mai 2007, RSA Security Inc. a anunțat încetarea sprijinului pentru concurs și plata recompenselor bănești. Pentru a menține proiectul RC-72 în funcțiune , distributed.net a decis să sponsorizeze un premiu de 4.000 USD pentru acesta din fonduri proprii. [patru]
Pe platformele în care se efectuează o operație de rotație cu un număr variabil de biți pentru un număr diferit de cicluri de procesor , este posibil un atac de rulare asupra algoritmului RC5. Două variante ale unui astfel de atac au fost formulate de către criptoanalistii Howard Hayes și Helena Handschuh . Ei au descoperit că cheia ar putea fi calculată după efectuarea a aproximativ 220 de operațiuni de criptare cu timpi de execuție foarte precisi și apoi 228 până la 240 de operațiuni de criptare de probă. Cea mai simplă metodă de combatere a unor astfel de atacuri este de a forța ca schimburile să fie executate într-un număr constant de cicluri (de exemplu, în timpul executării celei mai lente schimburi).
Deoarece una dintre proprietățile RC5 este ușurința de implementare și analiză, este logic ca mulți criptologi[ cine? ] a dorit să îmbunătățească algoritmul clasic. Structura generală a algoritmului a rămas neschimbată, s-au schimbat doar acțiunile efectuate pe fiecare bloc în procesul de criptare în sine . Deci, au existat mai multe versiuni diferite ale acestui algoritm:
În acest algoritm, adăugarea cu cheia rotundă modulo este înlocuită cu operația XOR:
Acest algoritm s-a dovedit a fi vulnerabil la criptoanaliza diferențială și liniară. Biryukov și Kushilevits au reușit să găsească un atac de criptoanaliza diferențială pentru algoritmul RC5XOR-32/12/16 folosind 228 de texte clare selectate.
În acest algoritm, adăugarea a două „subblocuri” procesate prin operația XOR este înlocuită cu adăugarea modulo :
Acest algoritm s-a dovedit a fi vulnerabil la criptoanaliza diferențială.
În acest algoritm, deplasarea ciclică este efectuată de un număr fix de biți pentru o rundă dată, și nu de unul variabil.
,unde este un număr fix.
Acest algoritm nu este bine înțeles, dar se presupune că[ de cine? ] că este instabil la criptoanaliza diferențială.
În acest algoritm, numărul de biți de mutat depinde de cheia algoritmului și de runda curentă:
,De asemenea, acest algoritm nu este bine înțeles.
În acest algoritm, numărul de biți de deplasare este determinat folosind o funcție dintr-un alt „subbloc”:
,Presupus,[ de cine? ] că algoritmul RC5RA este și mai rezistent la metodele de criptoanaliza cunoscute decât RC5.
Criptosisteme simetrice | |
---|---|
Cifruri în flux | |
Rețeaua Feistel | |
Rețeaua SP | |
Alte |