În prezent lucrez la înlocuirea criptării chacha20 din aplicația mea cu chacha20poly1305, dar mă confrunt cu câteva întrebări la care par să nu găsesc răspunsuri clare, care provin în principal din Rust chacha20poly1305
ladă:
- De ce
chacha20poly1305
lada necesită un nonce pentru fiecare mesaj, dar chacha20
necesită doar un singur nonce la inițializarea cifrului? De ce nu pare să fie cazul altor biblioteci, cum ar fi cea a lui Python PyCryptodome
?
- Algoritmul ChaCha20Poly1305 necesită un nou nonce pentru fiecare mesaj?
- Am înțeles că algoritmul ChaCha20 are un contor intern pe care îl combină cu cheia și nonce pentru a genera blocuri ale fluxului de chei (un bloc pe creștere a contorului). Nu este acesta cazul când este folosit în ChaCha20Poly1305?
În cele din urmă, dacă ChaCha20Poly1305 (sau în cazul meu XChaCha20Poly1305) are nevoie de un nou nonce pentru fiecare mesaj, un contor de 4 octeți per mesaj combinat cu un nonce aleatoriu de 20 de octeți pe sesiune ar fi potrivit pentru a fi folosit ca nonce per mesaj ? (cheia este derivată din parolă și este atât de probabil să se repete între sesiuni și, cumva, stocarea unui contor universal în toate sesiunile nu este fezabilă.)
Mulțumiri!