RC5

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
RC5
RC5 InfoBox Diagram.png
Schema de cifrare RC5
General
Designeri Ronald Rivest
Prima publicație 1994
Succesori RC6 , Akelarre
Detalii
Dimensiunea cheii 0 la 2048 biți (128 sugerate)
Dimensiunea blocului 32, 64 sau 128 biți
Structura Rețeaua Feistel
Numărul de pase de la 1 la 255 (inițial sugerat 12)
Criptanaliză mai bună
Implementarea RC5 cu 12 bucle și blocuri pe 64 de biți este sensibilă la un atac diferențial cu utilizarea a 2 44 de texte în clar alese [1]

În criptografie, RC5 este un algoritm de cifrare bloc conceput de Ronald Rivest în 1994 . Este de remarcat pentru simplitatea sa și pentru că o evoluție a acestuia ( RC6 ) a fost printre candidații la Standardul de criptare avansată .

Descriere

Spre deosebire de majoritatea algoritmilor de criptare a blocurilor, în care cel mult una dintre constantele de procesare poate fi parametrizată, de obicei dimensiunea cheii , în RC5 toți parametrii de bază sunt variabili: este posibil să alegeți între diferite dimensiuni ale blocului (32, 64 sau 128 biți ), a tastei (de la 0 la 2048 biți) și a numărului de treceri sau runde (de la 0 la 255). Nu toate valorile permise duc la un rezultat utilizabil; de exemplu, dacă dimensiunea cheii sau numărul de treceri este 0, practic nu are loc nicio procesare. Combinația sugerată de autor este de 12 pase cu o cheie pe 128 de biți și cu blocuri pe 64 de biți.

Una dintre operațiile centrale ale RC5 constă într-o rotație a biților de date cu o valoare dependentă de datele de intrare; se poate spune, de asemenea, că cifrul în sine s-a născut tocmai pentru a studia proprietățile criptografice ale acestei operații. În fiecare ciclu, se efectuează, de asemenea, operațiuni OR exclusive și adăugiri modulare , organizate într-o rețea Feistel care poate fi exprimată cu câteva linii de cod.

Managerul de chei , pe de altă parte, este mai complex: extinde cheia folosind o funcție unidirecțională care folosește expansiunile binare ale e și secțiunea aurie ca surse de „numere cu proprietăți non-ascunse” (sau nimic în sus numere de mânecă "în engleză ).

Simplitatea algoritmului combinată cu noutatea rotațiilor dependente de date a făcut din RC5 un obiect de studiu interesant pentru criptanalizatori .

RC5 orientat spre cuvânt

Caracteristica principală a RC5 este de a fi un algoritm orientat către arhitectura computerului pe care rulează. În special, toate procesările se efectuează pe șiruri de lungime egală cu cea a cuvântului mașinii , adică depind de arhitectura computerului pe care rulează cifrul , cu avantaje evidente în ceea ce privește performanța: operații pe șiruri de lungime egală cu cea a cuvântului calculatorului necesită mai puține cicluri de mașină). O altă caracteristică este utilizarea instrucțiunilor „de bază”, comune majorității procesoarelor , deoarece operează pe date a căror lungime este identică cu acel cuvânt , chiar dacă aceeași lungime poate fi de lungime diferită (așa cum am menționat deja, lungimea unui cuvânt poate varia conform arhitecturii computerului), precum și rotații dependente de date.

RC5 este un algoritm care utilizează puțină memorie , de aceea este potrivit pentru dispozitive precum carduri inteligente și este simplu de analizat și implementat ; de fapt, RC5 a fost utilizat în mai multe produse , cum ar fi bibliotecile criptografice RSA Security BSAFE și JSAFE . De asemenea, trebuie să ne amintim că RC5 se bazează pe o mașină cu o arhitectură puțin endiană (bitul cel mai puțin semnificativ este în dreapta; de obicei procesoare Intel); în realitate, poate funcționa și pe o mașină de arhitectură mare endiană (adică, de obicei, procesoare Motorola), dar procesul de expansiune cheie necesită unele modificări.

Se poate spune că RC5 este o familie de cifre în care fiecare membru este indicat ca RC5-w / r / b , cu literele w / r / b indicând următorii parametri:

  • w , cuvânt , indică lungimea cuvântului calculatorului ( 32 , 64 sau 128 biți ). Dimensiunea blocului este egală cu dublul lungimii cuvântului sau 2w , în timp ce toate funcțiile interne ale RC5 primesc și emit date exact cu w biți în lungime.
  • r , rotund , indică numărul de treceri cuprinse între 0 și 255 (deși, așa cum este specificat, utilizarea de 0 treceri este echivalentă cu neefectuarea procesului de criptare pentru care numărul minim de treceri este 1). RC5 folosește un pas inițial diferit de toate celelalte utilizate în timpul procesului de criptare; fiecare pas folosește 2 subchei. Din cheia inițială, sunt generate 2 subchei pentru fiecare pasaj comun, apoi 2r și 2 subchei pentru faza inițială, pentru un total de 2r + 2 .
  • b , octeți , este lungimea cheii exprimată în octeți , care variază de la 0 la 255 (din nou, utilizarea unei chei de 0 octeți este echivalentă cu neefectuarea unor operațiuni de criptare). Managerul de chei generează 2r + 2 subchei fiecare w bit lung.

Deci, atunci când scrieți RC5 w / r / b înseamnă că indicați RC5 care funcționează pe 2 cuvinte de w biți cu un număr de pași egal cu r și cu o tastă lungă b octet.

Operațiunile RC5

După cum s-a menționat, operațiunile efectuate de RC5 sunt toate operațiuni pe w bit și sunt următoarele:

  • suma a + b modulo 2w ;
  • scăderea ab modulului 2w ;
  • a XOR b în sens bit
  • a << b , adică rotația la stânga bitului b aplicată cuvântului a
  • a >> b , adică rotație la dreapta b bit aplicată cuvântului a

Primul lucru de văzut este programarea cheii . Pornind de la o cheie de b octeți, unde b este un parametru al RC5, să ne imaginăm că acești octeți sunt stocați într-o matrice K :

 K [0, ..., B-1]

Pornind de la această cheie, algoritmul produce o altă matrice numită S , matricea de subchei, deoarece în total sunt necesare 2r + 2 subchei:

 S [0, ...., 2r + 1]

De fapt, pentru a produce S , care va fi apoi utilizat în faza de criptare, este necesar să se efectueze o conversie de la octeți pentru a obține cuvinte , după care se vor efectua operațiuni asupra acestuia din urmă pentru a actualiza conținutul S (funcția de amestecare , o Funcție de amestecare ). Această matrice intermediară se numește L și se obține din matricea K. Pe un computer cu arhitectură puțin endiană , conținutul matricei K este pur și simplu copiat în matricea L ; în total, L va avea c locații, unde c = (8 * b) / w . Dacă 8 * b nu este un multiplu al lui w , se vor adăuga „zerouri” pentru a finaliza valoarea (operație de umplere ).

Algoritm de programare

Algoritmul de planificare cheie este împărțit în 2 faze:

  1. prima fază inițializează matricea S (cea finală) cu valori care depind de unele constante definite Pw și Qw , de w biți. Pw este extinderea binară w- bit a numărului Napier (e = 2.71828182459045 ... în zecimal): în special Pw = Odd [(e-2) 2w] unde Odd (x) indică întregul impare plus aproape de x . Qw este expansiunea binară w- bit a raportului auriu (φ = 1,6180339887 ... în zecimal): în special, Qw = Odd [(φ-1) 2w] . Aceste valori au fost deja calculate și stocate într-un tabel, iar valoarea lor depinde de w . Apoi tabloul S este modificat folosind tabloul L , care conține cheia. În special, în prima locație a lui S , Pw este plasat și apoi, de la locația 1 la 2r + 1 , locația S [i] este actualizată prin adăugarea constantei Qw la locația imediat precedentă. Cheia nu a fost încă utilizată.
  2. A doua fază, numită Funcție de amestecare , exploatează matricea L , în care cheia a fost copiată anterior: se execută un ciclu care este executat de 3 ori numărul maxim de elemente cuprinse între c și 2r + 2 . La fiecare ciclu S și L sunt actualizate. Două indicii i și j sunt utilizate: S este actualizat în funcție de valoarea curentă a S [i] și la 2 cuvinte biți W- numit X și Y, setați inițial la 0, și apoi cu o rotație stânga a 3 locații; L este actualizate pe baza valorii curente a L [j] și 2 cuvinte biți W- numit X și Y și apoi o rotație care depinde de date, și anume rotația depinde de valoarea lui X + Y. După aceea, de fiecare dată, indicii i și j sunt incrementați.

În practică, tabloul S care a fost inițializat cu constantele Pw și Qw suferă actualizări care depind de tabloul L , un tablou de c cuvinte obținut din cheia inițială. Rezultatul final este echivalent cu o matrice S actualizată, matrice de 2r + 2 locații, fiecare cu w biți. Prin urmare, faza de planificare a cheii ia ca intrare o cheie de b octeți și produce 2r + 2 subchei, fiecare din w biți.

Faza de criptare

Faza de criptare începe de la un bloc de 2 cuvinte de w bit și produce un alt bloc de 2 cuvinte de w bit, prin r pasaje. Există un pas inițial care folosește 2 subchei și apoi fiecare pas ulterior folosește încă 2 subchei, pentru un total de 2r + 2 . În practică, algoritmul efectuează operații de adăugare pe cuvinte de biți w , operații XOR și rotații de biți. Textul simplu este stocat în 2 cuvinte numite A și B , fiecare din w biți, în care este returnată și ieșirea algoritmului.

Actualizăm A cu prima subcheie și B cu a doua subcheie (primele 2 subchei utilizate), după care se efectuează r pași în care se utilizează 2 subchei diferite S [2i] și S [2i + 1] (alte 2chei secundare) . În timpul unei singure treceri, se efectuează mai întâi operația XOR bit între A și B , apoi o rotație a lui B și, în final, o adăugare cu subcheia S [2i] cu rezultatul final actualizarea A. Mai mult decât atât, în trecerea câte un bit XOR se efectuează și între B și A , apoi se efectuează o rotație la stânga care depinde de valoarea lui A și, în final, o sumă cu subcheia S [2i + 1] , actualizând valoarea B.

Spre deosebire de cifrele DES și Feistel , în RC5 ambele jumătăți ale blocului de date sunt actualizate în trecere, atât partea A , cât și partea B. Pe de altă parte, în cifrele Feistel, o parte este copiată, iar cealaltă jumătate a blocului este actualizată. Decriptarea este operația inversă a criptării: de fapt, pașii r sunt efectuați mai întâi de la ultimul la primul și apoi ultimele 2 actualizări. Singura diferență între faza de criptare și faza de decriptare este că în aceasta din urmă operațiile sunt mai degrabă de scădere decât de adunare; XOR și operațiile de rotație rămân neschimbate.

Caracteristicile RC5

Caracteristicile principale ale RC5 sunt:

  1. rotațiile sunt dependente de date și nu sunt fixe; acest fapt complică atacurile de criptanaliză diferențială și liniară , tocmai pentru că cantitatea de schimbare depinde de date;
  2. în fiecare pas operațiile implică întregul bloc, spre deosebire de ceea ce s-a întâmplat în DES;
  3. RC5 este o familie care depinde de parametrii w / r / b , deci pentru a specifica un anumit cifru trebuie să specificăm aceste valori.

Notă

  1. ^ Biryukov A. și Kushilevitz E. (1998). Criptanaliza îmbunătățită a RC5. EUROCRYPT 1998.

Elemente conexe

linkuri externe