Deși nu ați menționat sursa, aici unu. De fapt, familia XSalsa este descrisă în lucrarea lui Bernstein;
„X” din XSalsa20Poly1305 înseamnă doar un nonce de 192 de biți?
Da, înseamnă că dimensiunile nonce ale XSalsa sunt de 192 de biți, în timp ce Salsa are 64 de biți. Acest lucru este atât de mare încât chiar și pentru non-uri aleatorii trebuie să generezi $2^{96}$ nonces uniforme astfel încât să se producă o coliziune cu 50% probabilitate. Acest lucru este foarte important în cheile pe termen lung. Dacă o pereche (cheie, nonce) este reluată, atunci confidențialitatea este pierdută. 192 de biți împiedică acest lucru. Este un eveniment aproape care nu se va întâmpla niciodată pentru Criptografie.
Există un avantaj semnificativ în utilizarea XSalsa20Poly1305?
Comparații OpenSSL (ChaCha nu Salsa);
tip |
16 octeți |
64 de octeți |
256 de octeți |
1024 de octeți |
8192 octeți |
16384 octeți |
chacha20 |
361334,62k |
665775,85k |
1334323.20k |
2750173,87k |
2945690.28k |
2972353.50k |
aes-128-ctr NI |
525049,40k |
1867614.12k |
3840132.18k |
5231174.31k |
5816388.27k |
5875471.70k |
aes-128-ctr |
190707,84k |
228983,55k |
236486,66k |
243153,92k |
242283,86k |
242614,27k |
De asemenea, rețineți că în lucrare Bernstein a furnizat dovada de securitate; dacă Salsa20 este sigur, atunci și XSalsa.
Este dovedit că 15 runde ale Salsa20 sunt sigure împotriva atacurilor diferențiale.
Rețineți că există o nouă variantă a familiei Salsa; familia ChaCha. Familia ChaCha are scopul de a crește difuzia pe rundă cu aproape aceeași viteză. Familia ChaCha este adaptată mai mult decât familia Salsa, TLS 1.3 folosește ChaCha20-Pol1305.
ChaCha20 are și XChaCha20-Poly1305 (ietf draft) care utilizează aceleași dimensiuni nonce de 192 de biți. Este de preferat XSalsa20-Poly1305. Rețineți că familia ChaCha este mai puțin studiată decât familia Salsa datorită faptului că Salsa este reprezentată în proiectul eSTREAM.
Preferă XChaCha20-Poly1305 dacă poți.
Rețineți că criptarea autentificată este o necesitate la transmitere, este recomandabilă pentru datele din rest.