Puncte:2

CTR se suprapune cu IV aleatoriu

drapel cn

Problemă:

Sunt puțin îngrijorat de repetarea contorului în modul CTR când folosesc IV aleatoriu.

  • Dacă îl împărțiți (cum ar fi jumătate de IV, jumătate de contor), crește șansele de același IV (este mai mic) și limitează lungimea mesajului (dacă este mai mică de jumătate).
  • Dacă începeți cu blocul IV complet, contoarele se pot suprapune.

Aș dori cumva să obțin blocul complet IV și contorul de jumătate de bloc fără suprapuneri.

Soluția propusă:

În loc să folosim IV aleatoriu ca nonce în contor, creăm o cheie nouă prin criptarea IV cu cheie. Apoi folosim acea nouă cheie pentru criptare. Contorul începe cu jumătate de zero și cu jumătate de IV sau cu jumătate de cheie principală a face atacuri cu mai multe ținte Mai tare.

Să presupunem că cheia, IV, cifrul bloc au toate aceeași dimensiune.

$k_{date} = E_{k_{master}}(IV)$

$keystream_i = E_{k_{date}}(jumătate(IV) || counter_i)$

Este mai bine/mai rău?

Mă tem că asta ar slăbi cheia. O combinație diferită de cheie și IV ar da aceeași cheie nouă. Dar aceasta este în esență ca o simplă funcție de derivare a tastei cu sare.Acest lucru ar trebui să permită fiecărui mesaj să ajungă până la ziua de naștere.

kelalaka avatar
drapel in
Există deja un contor de ghiduri/LFSR [NIST 800-38-a](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf) și [AES CTR: Random IV](https: //crypto.stackexchange.com/q/87064/18298)
drapel cn
Prima abordare este perfectă, dar nu practică. A doua abordare cu IV aleatoriu este oarecum limitată la numărul de mesaje sau lungimea mesajelor, așa cum sa menționat.
Maarten Bodewes avatar
drapel in
Cred că cel mai bine este să vă gândiți la construcția dvs. ca la un KBKDF. În acest caz, întrebarea devine: cât de sigur este acel KDF? Dar sunt câteva lucruri neclare pentru mine. Dacă scrii $k = E_k(IV)$, vrei să spui că $k$ va fi înlocuit? În acest caz, ați creat un protocol cu ​​stare. În mod normal, ați avea un $k_{master}$ și mai multe $k_{date}$. În plus, ar trebui să presupunem întotdeauna AES pe 128 de biți? O singură criptare bloc nu va genera o cheie de 192 sau 256 de biți.
drapel cn
Cheia este înlocuită doar pentru un mesaj. Nu schimbă cheia principală. Presupun că cheia are aceeași dimensiune cu cifrul bloc.
Maarten Bodewes avatar
drapel in
Nu știu de unde provine dintr-o dată acel $half(k_{master})$, dar, în general, nu veți include niciodată informații cheie în fluxul cheie. Dacă îmi amintesc bine, ai avut mai întâi un numărător bazat pe zero.
drapel cn
L-am mentionat ca optional. Acest lucru este pentru a îngreuna atacurile cu mai multe ținte. Ar putea fi și $half(IV)$, dar m-am gândit că $k_{master}$ este mai bun pentru că este secret.
drapel cn
Gândindu-mă, cred că $half(IV)$ ar fi mai sigur. Este mai puțin probabil să se repete.
Puncte:-1
drapel mc

Dacă puteți spune că există o limită a cantității de date care sunt criptate într-un singur flux, puteți împărți IV-ul într-o parte aleatorie și o parte contrară (de exemplu, 64 de biți aleatoriu, generați o dată pe flux) și partea contrară ( începând cu 0). Îl puteți împărți oricum doriți, trebuie doar să vă faceți griji cu privire la problema zilei de naștere pentru dimensiunea aleatorie.

Sau pur și simplu utilizați o cheie diferită pentru fiecare flux și porniți contorul la 0. Nu trebuie să vă faceți griji cu privire la suprapunerea în această situație.

drapel cn
Da, dar în acest caz, IV aleatoriu pe 64 de biți sunt cam mici. După cum este descris aici: https://crypto.stackexchange.com/questions/1849/why-should-i-avoid-using-a-randomized-iv-for-ctr-mode
drapel cn
Crezi că soluția mea propusă (cheia derivată din IV aleatoriu) este la fel de bună ca utilizarea unei chei diferite pentru fiecare flux?
Swashbuckler avatar
drapel mc
@LightBit Dacă te confrunți cu problema despre care vorbesc, ai deja alte probleme mai mari. Există cercetări care sugerează că modul CTR este un fel de scurs și ar trebui să criptați doar atâtea date cu ONE KEY cât faceți cu modul CBC, care pentru mine este în jur de 64 GB (în funcție de cât timp doriți să păstrați datele). Sunt mult mai puține date decât au în vedere.
Swashbuckler avatar
drapel mc
Cât despre derivarea unei chei dintr-un IV aleatoriu, nu aș face-o. IV-ul nu este un secret, cheia trebuie să fie secretă. Dacă ați folosit un proces fix pentru a obține cheia din IV, atunci un atacator poate repeta acel proces și obține cheia.
drapel cn
Pentru a obține cheia din IV, aș cripta-o cu cheia principală. Deci cheia derivată ar fi secretă.

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.