Trivium (cifru)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

„Trivium” a fost specificat ca standard internațional în conformitate cu ISO / IEC 29192-3 (Tehnologia informației - Tehnici de securitate - Criptografie ușoară - Partea 3: Cifre de flux).

Trivium
Trivium (cifru) .png
Structura lui Trivium: observați rotația triplă, de unde și numele algoritmului
General
Designeri Christophe De Cannière , Bart Preneel
Prima publicație 2003
Detalii
Dimensiunea cheii 80 de biți
Dimensiunea vectorului de inițializare 80 de biți
Structura Registrul de deplasare
Criptanaliză mai bună
În ciuda simplității sale, Trivium rămâne neatins

Trivium este un cod de flux de chei simetric dezvoltat de Christophe De Cannière și Bart Preneel în 2003 , care l-a prezentat ca candidat pentru proiectul eSTREAM , unde a fost selectat ca element de portofoliu oficial pentru profilul 2 , care include algoritmii optimizați pentru hardware implementări. Trivium nu este brevetat.

Algoritmul generează până la 2 64 de biți de ieșire dintr-un vector cheie și de inițializare (VI), care au o lungime de 80 de biți. Este cel mai simplu dintre algoritmii prezentați la eSTREAM, dar, în ciuda acestui fapt, prezintă o rezistență considerabilă la criptanaliză .

Descriere

Trivium se bazează pe o stare internă la 288 de biți constă din trei registre de schimbare (registru de schimbare) de lungimi diferite. Generarea Keystream este un proces iterativ care extrage valorile a 15 biți de stare specifici și îi folosește atât pentru a actualiza 3 biți de stare, cât și pentru a calcula 1 bit de flux de chei . Acest bit este folosit pentru a cripta sau decripta mesajul printr-o operație simplă XOR . Biții de stare interni sunt apoi rotiți și procesul se repetă până când au fost generați cât mai mulți biți necesari pentru procesarea datelor de intrare.

Se efectuează două operații pentru inițializarea algoritmului, configurarea cheii (sau inițializarea cheii) și configurarea IV (sau inițializarea VI), în timpul cărora cei 80 de biți ai cheii și cei 80 de biți ai VI sunt scrise în primii 160 de biți Stare internă: Ceilalți biți de stare (161 la 288) sunt setați la valorile implicite. În acest moment, se efectuează 4 rotații complete, corespunzătoare 1152 actualizări (4 × 288 biți), similare cu cele utilizate pentru a genera fluxul de taste, dar cu diferența că nu sunt furnizați biți în ieșire.

Rețineți că nu sunt folosiți biți de stare noi înainte de a fi supus cel puțin 64 de rotații în registrele Trivium: aceasta este cheia pentru performanța software și flexibilitatea hardware a algoritmului.

Pseudo cod

Următoarele sunt reprezentările pseudo-cod ale funcțiilor interne ale Trivium. Acesta este simbolismul adoptat:

  1. s1..s287 reprezintă singurii biți ai stării interne;
  2. t1, t2 și t3 sunt variabile de stare;
  3. zi reprezintă bitul de ieșire keystream;
  4. simbolul "+" reprezintă o operație XOR;
  5. simbolul „x” indică o operație ȘI ;
  6. K1..K80 reprezintă biții cheii;
  7. IV1..IV80 reprezintă biții VI;
  8. N este lungimea în biți a mesajului care trebuie criptat / decriptat.

Iată reprezentarea configurării cheii și a configurării IV :

 (s1, s2, ..., s93) ← (K1, ..., K80, 0, ..., 0)
(s94, s95, ..., s177) ← (IV1, ..., IV80, 0, ..., 0)
(s178, s279, ..., s288) ← (0, ..., 0, 1, 1, 1)
pentru i = 1 to (4 * 288) do
  t1 ← s66 + s91 x s92 + s93 + s171
  t2 ← s162 + s175 x s176 + s177 + s264
  t3 ← s243 + s286 x s287 + s288 + s69
  (s1, s2, ..., s93) ← (t3, s1, ..., s92)
  (s94, s95, ..., s177) ← (t1, s94, ..., s176)
  (s178, s279, ..., s288) ← (t2, s178, ..., s287)
sfârșit pentru

Aceasta este în schimb reprezentarea generației fluxului de chei :

 pentru i = 1 până la N do
  t1 ← s66 + s93
  t2 ← s162 + s177
  t3 ← s243 + s288
  zi ← t1 + t2 + t3
  t1 ← t1 + s91 x s92 + s171
  t2 ← t2 + s175 x s176 + s264
  t3 ← t3 + s286 x s287 + s69
  (s1, s2, ..., s93) ← (t3, s1, ..., s92)
  (s94, s95, ..., s177) ← (t1, s94, ..., s176)
  (s178, s279, ..., s288) ← (t2, s178, ..., s287)
sfârșit pentru

Performanţă

Cea mai simplă dintre implementările hardware Trivium necesită doar 3488 de dispozitive electronice și produce aproximativ 1 bit pe ciclu de ceas. Dar, întrucât fiecare bit al stării interne nu este utilizat pentru cel puțin 64 de pași, aceasta înseamnă că 64 de biți de stare pot fi generați în paralel cu costul creșterii numărului de dispozitive electronice până la valoarea maximă de 5504. Evident, intermediar soluțiile sunt posibile la cele două extreme indicate aici cu ieșiri de 8, 16 și 32 de biți calculate în paralel.

Aceeași proprietate permite implementarea software-ului discret al algoritmului: testele efectuate la eSTREAM au arătat cum este posibil să se obțină viteze de aproximativ 4 octeți / ciclu pe unele arhitecturi x86 , o valoare foarte pozitivă în comparație cu cei 19 cicli / octeți obținut.pe aceeași platformă de la AES .

Siguranță

Un atac mai bun nu este cunoscut din 2008 pentru a recupera cheia forței brute secrete, care necesită un timp de calcul de 2 135 . Un atac capabil să recupereze starea internă a fost descris în 2006 de Alexander Maximov și Alex Biryukov, care au demonstrat cum acest atac necesită un timp de 2 83,5 [1]

Curiozitate

Numele Trivium derivă din termenul latin al aceluiași nume care înseamnă „ trivium ” și a fost ales atât pentru că reprezentarea grafică a algoritmului amintește de o intersecție cu 3 căi, cât și pentru că adjectivul trivial , care este derivat din trivio, înseamnă vulgar, dar și comun sau simplu, indicând simplitatea structurii algoritmului.

Notă

Elemente conexe

linkuri externe