Puncte:0

Aducerea unei chei la 256 de biți printr-un algoritm hash

drapel us

De exemplu, dacă folosesc Rijndael pentru criptare, trebuie să specific o cheie de o anumită lungime. Pentru confortul utilizatorului, vreau ca utilizatorul să poată folosi o cheie de orice lungime. Apoi, pentru a obține cheia la lungimea necesară a algoritmului, construiesc valoarea hash, pe care apoi o folosesc pentru criptare și decriptare. Securitatea textului cifrat este încă garantată dacă folosesc SHA-256, de exemplu? Ar trebui mai degrabă să tampez cheia de utilizator și să scurtez cheile lungi? Care este cel mai bun mod de a obține o lungime a cheii de 256 de biți?

SAI Peregrinus avatar
drapel si
Ce bibliotecă criptografică folosești? Ar trebui să furnizeze o funcție de derivare a cheii (KDF) cum ar fi HKDF-SHA256 sau, dacă utilizați o parolă de utilizator, o funcție de derivare a cheii bazată pe parolă, cum ar fi Argon2id. SHA256 nu este sigur pentru această utilizare în sine, dar poate fi utilizat într-un KDF, cum ar fi HKDF-SHA256. De asemenea, de ce Rijndael în loc de AES? Ce mod de operare folosești, de ce nu AES-GCM-SIV, AES-GCM sau ChaCha20-Poly1305? Criptarea cu orice altceva decât unul dintre cele 3 este suspectă și ar trebui justificată.
Luqus avatar
drapel us
Folosesc biblioteca de criptare Java cu algoritmul AES în modul CBC (Rijndael).Securitatea algoritmului este suficientă pentru mine deocamdată, m-a interesat hash-ul ca cheie.
SAI Peregrinus avatar
drapel si
Există numeroase biblioteci de criptare Java. Acel mod CBC neautentificat pare ușor disponibil este un semn rău pentru utilizarea și securitatea oricărei alegeri.
Luqus avatar
drapel us
Folosesc [biblioteca javax.crypto.Cipher] standard (https://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html), care cel mai probabil nu este rău intenționat.
SAI Peregrinus avatar
drapel si
Nu spun că este rău intenționat, spun că este prost conceput. Face alegeri nesigure disponibile cu ușurință (de exemplu, modurile ECB și CBC sunt necesare, dar modurile sigure precum GCM și SIV sunt opționale) și include chiar și cifruri complet sparte, cum ar fi RC2 și RC4. Nu este că ar fi rău intenționat, ci că este conceput pentru a fi ușor de stricat catastrofal. Comparați cu ceva de genul libsodium, care este conceput pentru a face greu să dați peste cap, în timp ce ambele ar putea ajunge la aceeași siguranță dacă faceți alegeri bune, este mult mai greu să faceți alegeri proaste cu libsodium.
Puncte:2
drapel si

SHA-256 nu este o funcție de derivare a cheii (KDF) și nu trebuie utilizat ca una.

SHA-256 poate face parte dintr-un KDF, cum ar fi HKDF-SHA256 care folosește HMAC-SHA256 care la rândul său folosește SHA256. HKDF este supus abuz care îi poate afecta securitatea, asigurați-vă că îl utilizați corect (dacă îl utilizați).

HKDF este ADEVĂT NUMAI PENTRU INTRARI CU ENTROPIE MARE, ca și alte taste sau rezultatul unui schimb de curbe eliptice Diffie Hellman. Dacă obțineți chei din parole, aveți nevoie de o funcție de derivare a cheilor bazată pe parolă, cum ar fi Argon2id.

baro77 avatar
drapel gd
minunat link de blog! (y)
Puncte:0
drapel gd

Dacă aveți nevoie de securitatea oferită de parola de entropie de 256 de biți, hashingul singur nu vă va ajuta dacă cheia de pornire < 256 de biți de entropie, deoarece hashurile sunt funcții rapide, așa că testarea cheii originale din spațiul său de dimensiuni reduse sau cheia hashed este aproape aceeași . O funcție de derivare a cheii (alias CPU și/sau funcții de memorie/stocare hard) ar putea atenua problema, dar numai din punct de vedere computațional, nu teoretic (deci contează cât timp speri să fii ajutat de KDF). Desigur, dacă parola originală > 256 de biți și 256 de biți sunt suficiente pentru tine, SHA256 este ok, dar cred că nu este un caz de utilizator realist ;)

SAI Peregrinus avatar
drapel si
Ați confundat KDF-urile și PBKDF-urile. KDF-urile sunt încă rapide, PBKDF-urile au dificultăți reglabile.
baro77 avatar
drapel gd
Ai dreptate, scuze OP și mulțumesc pentru clarificare!

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.