Salsa20

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
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:

  1. folosiți operații simple;
  2. 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ă

linkuri externe