Puncte:1

Chei bloc xChaCha20 pentru Poly1305

drapel cn

Deci, xChaCha20 are o dimensiune nonce suficient de mare pentru a utiliza în siguranță un nonce aleatoriu cu aceeași cheie. Poly1305 utilizează în general primul bloc al ieșirii cifrului pentru a-și genera nonce. Pentru xChaCha20 ar fi blocul zero pentru cheia poly1305/nonce, iar restul datelor ar fi criptate cu blocul 1 și mai sus. Deci, dacă cineva ar trimite un mesaj, ați primi ceva în acest sens (ordinea poate fi diferită în funcție de protocol):

$$\text{Msg} = \{ \text{Etichetă Poly1305}\} \mathbin\| \{\text{24 Bytes Nonce} \} \mathbin\| \{ \text{Date asociate} \}\mathbin\| \{\text{Text cifrat} \}$$

Acum, cu acest aspect, pare puțin irositor trimiterea și generarea de noi nonce cu fiecare mesaj, de ex. Overhead de pachet/mesaj de 24 de octeți și timp CPU care generează non-uri aleatorii. Mai ales că xChaCha20 poate trimite $2^{64}$ blocuri cu o cheie și pereche nonce. S-ar putea trimite pur și simplu nonce o dată și apoi începe să-și trimită fluxul de date, iar la ultimul mesaj trimite eticheta poly1305. Cu toate acestea, dacă a fost o mulțime de date, a trebuit să aștepte ca toate acestea să fie trimise înainte de a verifica eticheta poly1305 are propria sa serie de probleme. Pare mai practic să generați etichete Poly1305 pe măsură ce mergeți.

Cu toate acestea, aproape toate construcțiile pe care le văd folosesc doar blocul 0 pentru cheia Poly1305/nu mi se pare perfect rezonabil să folosesc alte contoare de bloc pentru cheia Poly1305. De exemplu, să presupunem că cineva dorește să trimită un flux lung de date. Pentru scopuri ilustrative, să luăm în considerare o construcție brută care trimite 7 blocuri xChaCha20 la un moment dat:

Exemplu de construcție

Acum, întrebarea mea este de ce nu am văzut o construcție în acest sens? Există ceva ce trec cu vederea sau xChaCha20 este prea nou sau este o preocupare destul de de nișă sau nu m-am uitat suficient de bine? Deoarece unele construcții de-a lungul acestor linii permit verificarea datelor pe măsură ce le primesc și, de asemenea, evită generarea de multe non-uri noi și nevoia de a le trimite în mod repetat, adăugând mesaje.

Editați | ×: Probabil că ar fi trebuit să fie mai clar aici poly1305_tag(block_x) ar trebui să includă atât text cifrat, cât și datele asociate. Imaginea de mai sus era deja cam largă pentru ceva de genul

$$poly1305_{tag}(block_x, \text{date asociate} \mathbin\| ciphertext).$$

Similar așa cum este menționat în nota de mai jos, xChaCha20_x() include cheia și nonce. În principal, aceasta este întrebarea despre utilizarea altor contoare de blocuri, altele decât zero, pentru a fi o cheie pentru poly1305 pentru a genera mai multe etichete pentru un flux de date mai lung.

kelalaka avatar
drapel in
Datele asociate trebuie autentificate. Aveți o problemă [similară cu aceasta](https://crypto.stackexchange.com/q/86080/18298).
drapel cn
Poate că nu am fost suficient de clar că datele asociate sunt rulate prin poly1305, cel puțin asta a fost intenția mea când am descris asta. Altfel, desigur, ar putea fi manipulat. Ceea ce spuneam mai sus este că rulează poly1305 cu numărul blocului x ca cheie poly1305.
drapel cn
De asemenea, nu, este mai mult despre utilizarea diferitelor blocuri pentru a cheia eticheta de autentificare poly1305 pe parcurs. Când mă uit la implementări, ele folosesc destul de mult blocul 0 al chacha20. Nu văd motivul pentru care utilizarea altor blocuri de ieșire de la chacha20/xchacha20 ar cauza o problemă, deoarece poly1305 va continua să primească intrări unice. Pe care apoi îl puteți folosi pentru a genera o etichetă pentru a autentifica textul cifrat și orice date asociate. Practic aceeași construcție ca ceea ce faci în mod normal pentru block_0 și apoi criptezi block_1 în block_n, dar în schimb folosești mai multe blocuri din xchacha20 pentru mai multe etichete poly1305
kelalaka avatar
drapel in
Puteți edita întrebarea pentru a clarifica în special scopul dvs. Diavolul sta in detalii.
drapel cn
Am adăugat un fel de editare care rezumă ceea ce am spus aici.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.