Puncte:2

Care este principala problemă cu zero padding pentru cheia AES?

drapel cn

Încerc să înțeleg logica din spatele unor principii de bază ale umplerii tastelor AES. De ce folosim diferite tipuri de scheme de completare a tastelor AES în loc de cea mai simplă umplutură zero? Luați AES-128 de exemplu, dacă cheia mea este „cheie cifră”, Cum funcționează umplutura și care este problema din spatele ei?

Îmi pare rău dacă întrebarea este prea elementară, dar nu reușesc să găsesc o explicație bună.

drapel cn
De fapt, da, și am citit răspunsul tău, mulțumesc. Dar aș dori să am o explicație mai fundamentală despre asta... există un exemplu scurt pe care îl puteți arăta despre modul în care datele sunt pierdute sau interpretate greșit în timpul procesului de criptare/decriptare?
kelalaka avatar
drapel in
Parolele scurte nu sunt niciodată sigure [Este ușor să spargi un număr de telefon hashing?](https://crypto.stackexchange.com/a/81652/18298) și [Cât de nesigure sunt containerele VeraCrypt criptate cu parole scurte?](https ://crypto.stackexchange.com/a/81020/18298) alegeți întotdeauna o generare de parole bună, cum ar fi dicewire.
Puncte:4
drapel ng

Întrebarea ia în considerare completarea unui text memorabil, cum ar fi „cheie cifră”, într-o cheie AES, adăugând zero octeți la expresia (UTF-8) a acestui text ca octeți, până când se ajunge la 16, 24 sau 32 de octeți pentru AES-128, AES-192, sau AES-256.

The principal problema cu asta este ca este rapid si ieftin, ceea ce este un dezastru în context: permite unui adversar să aplice rapid și ieftin acel proces la parole plauzibile și să testeze cheile rezultate cu un text cifrat (cu text simplu cunoscut sau redundant), și astfel să găsească cheia. Aceasta este spargerea parolei, și există o mică industrie care dezvoltă combinații de software și hardware pentru asta.

Un dicționar cu cele mai comune milioane de cuvinte englezești (pentru o definiție extinsă a cuvântului) ar conține, cred, „cipherkey”. Cel puțin, o căutare Google a găsit 78.400 de apariții și se află în lista de domenii înregistrate în trei TLD-uri comune. Cu o pereche cunoscută text clar/text cifrat sau un text cifrat pentru un text simplu cu o anumită structură, acest lucru va dura câteva secunde pentru a se întrerupe pentru cineva cu instrumentele potrivite.

Chiar dacă acest lucru poate fi îmbunătățit enorm (vezi paragraful următor), „cheie cifră” nu este o parolă bună. Este recomandabil să alegeți o parolă care este mai greu de ghicit. Numindu-l doar expresie de acces va ajuta! Dar asta este o secundar problemă.

Când transformi ceva memorabil (parolă, expresie de acces..) într-o cheie, una trebuie sa utilizați o funcție de derivare a cheii destinată parolelor, adică una cu un parametru factor de lucru care să permită reglarea costului derivării cheii. Dacă acest cost este de 0,5 secunde din timpul unui computer puternic, mai degrabă decât 20 de nanosecunde pentru metoda propusă, acesta va deveni blocajul pentru spargerea parolelor și, probabil, le va da cel puțin o transpirație. Cu o frază de acces à la XKCD sau Diceware, poate fi destul de sigur.

Unul ar trebui să folosească sare, care va împiedica calcularea cheilor derivate în avans și va preveni amortizarea costului unor astfel de derivații pentru mai multe perechi parolă/cheie. Asta e alta secundar problemă.

Este important ca funcția de derivare a cheii să fie dureroasă de memorie, adică să folosească o cantitate considerabilă de memorie pe parcursul calculului său, pentru că aceasta crește foarte mult costul monetar al atacului, cu un cost mic pentru utilizatorii legitimi. Funcțiile recomandate includ Argon2 și cripta. Funcțiile comune, dar nerecomandate includ PBKDF2, care nu este greu de memorie și printre cele mai proaste utilizări posibile a timpului procesorului în scopul derivării de la parolă la cheie: maximizează marginea atacatorilor folosind ASIC-uri, FPGA-uri și chiar GPU-uri w.r.t. utilizatorii legitimi care folosesc procesoare. găsesc Recomandarea NIST pentru PBKDF2 în concordanţă cu forţa lor anterioară pentru Dual_EC_DRBG:

În timp ce PBKDF2 este greu de timp, dar nu de memorie, este atât de larg implementat încât nu este practic (în acest moment, oricum) să se introducă o cerință pentru o funcție de derivare a tastei de memorie.

Maarten Bodewes avatar
drapel in
Rețineți că AES în sine nu este afectat, problema este cheia/parola cu entropie scăzută. Dacă parola are prea puțină entropie, nici o funcție de derivare a cheii bazată pe parolă nu vă va salva; adaugă doar o cantitate constantă de securitate, de ex. ~20 de biți pentru un milion de iterații ale PBKDF2.
kelalaka avatar
drapel in
Ar trebui să sfătuiți; Indiferent de mecanismul de hashing al parolei, este nevoie de o parolă bună în prealabil. acesta trebuie să fie primul sfat. dicewire sau Bip39 etc.
fgrieu avatar
drapel ng
@kelalaka: Sunt de acord că este nevoie de o parolă mai bună și am adăugat acel sfat. Cu toate acestea, nu văd alegerea proastă a parolei ca fiind problema _principală_. Cred că este mai greu să spargi o parolă medie, cum ar fi "cipherkey" (sau a fost înainte de această întrebare) cu 0,1 secunde de KDF dur de memorie, în special sărate, decât să spargi cele mai multe parole memorabile fără KDF și direct. utilizați ca cheie AES.
kelalaka avatar
drapel in
Ei bine, este încă paralelizabil în procesoare și aș merge primul [~600K lista de parole pwned](https://haveibeenpwned.com/Passwords), deși lista este dată cu SHA-1 pentru a testa. S-ar putea să se găsească nedesprins într-o rețea profundă.
kelalaka avatar
drapel in
De asemenea, întotdeauna am sfătuit să folosești un manager de parole, cum ar fi password1, keepass, etc. Cu acestea, utilizatorii trebuie doar să folosească o parolă bună pentru a securiza seiful, ei pot genera o cheie aleatorie bună pentru celelalte parole. Firefox, Opera are acestea și asta devine din ce în ce mai standard.

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.