Pagina listată vorbește despre criptarea AES-128-CBC cu Encrypt-then-MAC Mac cu HMAC.
The obligația utilizatorului este de a furniza mesajul, cheia uniformă aleatorie pe 256 de biți și o ștampilă de timp.
Fernet-ul împarte cei 256 de biți ai cheii în două părți de dimensiuni egale.În primul rând, o parte este utilizată în criptarea mesajului cu AES-128-CBC, apoi eticheta de autentificare $t$
$$ t = \operatorname{HMAC-SHA-256}( Versiune â Timp â IV â Text cifrat)$$ se calculează cu cealaltă parte a cheii.
ce poate merge prost dacă refolosesc o cheie cu Fernet?
Criptarea prea mult mesaj cu aceeași cheie poate provoca coliziunea IV sub aceeași cheie.
Acest lucru poate scurge că începutul mesajelor este același. Dacă editați fișierul și nu îl criptați cu un IV diferit, atunci acesta va scurge același prefix al fișierelor.
Ei bine, trebuie să criptezi $2^{64}$ mesajele să aibă coliziune IV sub aceeași cheie. 50% este prea mare pentru avantajul atacatorului ar trebui să ia în considerare probabilități mai mici.
Criptarea prea mult bloc de date
Poate provoca coliziuni de text cifrat care utilizează dulce32 atac. X-sau al blocului de mesaje pot fi obined daca $c_i = c_j$ cu $i \neq j$ $$m_i \oplus m_j = c_{1-1} \oplus c_{j-1}.$$
Din nou, 50% este prea mare pentru avantajul atacatorului ar trebui să ia în considerare probabilități mai mici.
Aceste două probleme depind într-adevăr de câte fișiere aveți și de câtă dimensiune au.
Nu este complet sigur, este mai bine să folosiți diferite chei și IV-uri pe fișier. De fapt, API-ul lui Fernet permite acest lucru.
Abordarea mea alternativă, dacă reutilizarea cheilor este nesigură, ar fi să criptez fișierele după cum urmează:
- Alegeți o sare aleatorie
- Utilizați un KDF pentru a calcula cheia individuală din cheia partajată și sare
- Criptați fișierul cu cheia individuală și adăugați sare
Dar acest lucru pare greșit (sarea este doar pentru utilizare cu parole, nu cu date aleatorii...) și, mai important, îmi cere să folosesc primitive de criptare de nivel scăzut care în mod explicit nu sunt rezistente la idioți.
Aceasta este ceea ce facem; au chei diferite și IV per fișier. Poți să folosești HKDF chiar și numai cel extinde parte pentru a deriva cheia și IV-urile.
Ca să fiu sincer, Întotdeauna mă întreb de ce are cineva nevoie de lucruri complicate, în timp ce containerele criptate ale VeraCrypt se ocupă de asta mai bine decât experții.Nu trebuie să luați în considerare deloc criptarea. Doar învață să ai o parolă bună, cum ar fi dicewire, și ai terminat.