Salsa20
Salsa20 | |
---|---|
General | |
Designeri | Daniel J. Bernstein |
Prima publicație | 2005 |
Detalii | |
Dimensiunea cheii | 128 sau 256 biți |
Dimensiunea vectorului de inițializare | 64 de biți |
Numărul de pase | 20 |
Criptanaliză mai bună | |
Nu se cunosc atacuri la Salsa20 și Salsa20 / 12 | |
Salsa20 este un cod de flux dezvoltat de Daniel J. Bernstein în 2005 și selectat pentru portofoliul de proiecte eSTREAM pentru Profilul 1 (implementare software ). Este construit pe o funcție pseudo-aleatorie bazată pe operațiuni de adăugare pe 32 de biți , OR exclusiv (XOR) și rotație de biți, care utilizează taste de 256 de biți (dar se pot utiliza și taste de 128 de biți) și nonce pe 64 de biți. Funcția funcționează efectuând 20 de pași, de unde și numele algoritmului.
Implementare
Salsa20 a fost dezvoltat concentrându-se pe două puncte principale:
- folosiți operații simple;
- obțineți viteză mare de calcul.
Primul punct a fost îndeplinit folosind operații simple de adăugare modulo 32, operații XOR și rotații de cuvinte pe 32 de biți.
Al doilea punct a fost satisfăcut parțial cu utilizarea operațiunilor menționate la punctul anterior și parțial prin structurarea algoritmului astfel încât cheia de criptare și nonce-ul să fie utilizate direct ca intrare a funcției interne fără a fi nevoie să recurgă la procesele inițiale. gestionarea cheii ( programarea cheii ) și configurarea vectorului de inițializare ( configurarea IV ), operațiuni în general destul de împovărătoare în ceea ce privește complexitatea procesării.
Salsa20 extinde cheia de 256 de biți și nonce pe 64 de biți într - un 2 70- octet de chei . Pentru a cripta sau decripta un mesaj de n octeți, algoritmul XOR combină acești octeți cu primii n octeți ai fluxului de chei, aruncând restul.
Fluxul de taste este generat în blocuri de 512 biți și fiecare bloc constă dintr-un hash independent al cheii, nonce și numărul blocului în sine exprimat cu un contor pe 64 de biți. Datorită acestui contor, fluxul de taste poate fi utilizat și cu acces aleatoriu, permițând astfel utilizatorului să utilizeze orice bloc dorit.
Variante
Salsa20 își datorează numele faptului că efectuează 20 de pași de amestecare din intrarea sa. Există, de asemenea, versiuni cu numărul de pași redus la 8 și, respectiv, 12 apeluri, Salsa20 / 8 și Salsa20 / 12 . Aceste versiuni au fost introduse nu pentru a înlocui algoritmul original, ci pentru a obține performanțe mai bune la valorile de referință efectuate la eSTREAM: Salsa20 / 12 a fost selectat pentru a fi inclus în portofoliul final al algoritmilor selectați de proiect, datorită echilibrului excelent dintre performanță și siguranță.
Siguranță
Primul atac reușit împotriva Salsa20 este de Paul Crowley, care în 2005 a folosit criptanaliza diferențială trunchiată pentru a încălca o versiune redusă în 5 pași (Salsa20 / 5) a algoritmului, cu un timp de calcul estimat la 2 165 [1] . În 2006 Fischer, Meier, Berbain, Biasse și Robshaw au descris un atac similar efectuat împotriva Salsa20 / 6, cu un timp estimat de calcul de 2 177 și unul împotriva Salsa20 / 7 (2 217 ) [2] .
În 2008 , Aumasson, Fischer, Khazaei, Meier și Rechberger au descris atât un atac împotriva Salsa20 / 7, cu un timp de calcul de 2 151 , cât și unul împotriva Salsa20 / 8, cu un timp de calcul de 2 251 [3] . Ultimul atac se bazează pe utilizarea unui nou concept de analiză probabilistică a biților neutri în cheia pentru detectarea probabilistică a unui atac diferențial trunchiat probabil. Acest atac poate fi folosit pentru a recupera o cheie de 128 biți a Salsa20 / 7.
Nu se cunosc atacuri împotriva Salsa20 / 12 și Salsa20.
Notă
- ^ Criptanaliza diferențială trunchiată a cinci runde de Salsa20
- ^ Non-aleatoriu în candidații eSTREAM Salsa20 și TSC-4 , Indocrypt 2006
- ^ Noi caracteristici ale dansurilor latine
linkuri externe
- Pagina de pornire Salsa20 , pe cr.yp.to.
- Specificații ( PDF )
- Salsa20 / 8 și Salsa20 / 12 ( PDF )
- Salsa20 la eSTREAM , pe ecrypt.eu.org .