Bazele.
În criptografia simetrică, criptarea și decriptarea unui text simplu se realizează folosind aceeași cheie (spre deosebire de criptografia cu cheie publică).Trivium este un cifru simetric și mai precis un flux de cifruri, ceea ce înseamnă că un flux de biți cu aspect aleatoriu (pseudoranat) este utilizat pentru criptare/decriptare (spre deosebire de cifrurile bloc în care textul simplu este împărțit în bucăți). În timpul fazei de criptare, textul simplu este XOR cu așa-numitul flux cheie / flux de ieșire pentru a da textul cifrat. Decriptarea se face în mod analog, adică textul cifrat este XOR cu fluxul de chei pentru a oferi textul simplu original.
NLFSR.
Un element de construcție principal al Trivium sunt așa-numitele registre de deplasare cu feedback neliniar (NLFSRs), care sunt extrem de eficiente de implementat în hardware.
Un NLFSR constă dintr-o matrice de registre, unde dimensiunea matricei este cunoscută sub numele de grad a NLFSR. În plus, o buclă de feedback este specificată de un set de valori booleene coeficienții de feedback.
Starea unui NLFSR este actualizată la fiecare „tic de ceas” prin deplasarea valorilor din toate registrele la dreapta și setarea noii valori a registrului din stânga egală cu unele neliniară funcţie a unui subset al registrelor curente determinate de coeficienţii de feedback. La fiecare bifă de ceas, NLFSR emite valoarea registrului din dreapta. Dacă NLFSR are diplomă $n$, apoi primul $n$ biții din fluxul de ieșire sunt exact starea inițială.
Fundal.
Cifrul de flux Trivium a fost selectat ca parte a portofoliului proiectului eSTREAM, un efort european finalizat în 2008 al cărui scop a fost dezvoltarea de noi cifruri de flux. Designul său a fost menit să aibă o descriere simplă și o descriere hardware compactă.
Trivium.
Trivium folosește trei NLFSR cuplate, numiți-le $A$, $B$, și $C$, având diplome $93$, $84$, și $111$, respectiv. Starea de Trivium este pur și simplu $288$ biți cuprinzând valorile din toate registrele celor trei NLFSR-uri.La fiecare tic de ceas, ieșirea fiecărui NLFSR este XORed cu registrul din dreapta și un registru suplimentar; ieșirea lui Trivium este XOR-ul biților de ieșire ai celor trei NLFSR.
La fiecare tic de ceas, noua valoare a registrului din stânga al fiecărui NLFSR este calculată ca o funcție a unuia dintre registrele din același NLFSR și a unui subset de registre dintr-un al doilea NLFSR.
Trivium folosește un $80$cheie -bit și a $80$-pic vector de inițializare (IV). Cheia este încărcată în $80$ cele mai din stânga registre ale $A$, iar IV-ul este încărcat în $80$ cele mai din stânga registre ale $B$. Celelalte registre sunt setate la $0$, cu excepția celor trei registre de drept ale $C$, care sunt setate la $1$. NLFSR-urile sunt apoi executate pentru $4\cdot 288$ ceasul bifează, (cu ieșirea aruncată), iar starea rezultată este luată ca stare inițială. Specificația de cifrare afirmă că cel mult $2^{64}$ Biți de flux cheie pot fi generați din fiecare pereche cheie/IV.
Referinţă
Jonathan Katz și Yehuda Lindell. 2021. Introducere în criptografia modernă, ediția a doua (ed. a 3-a). Chapman & Hall/CRC.