Puncte:6

Codificarea sării ca hex înainte de hashing proaste practici?

drapel in

Citeam o întrebare despre cheile simetrice Aici și a găsit răspunsul destul de interesant. Se mentioneaza:

Asigurați-vă că treceți octeții bruti și nu, de exemplu, un șir codificat hex.

Poate cineva să detalieze de ce este rău? și, de asemenea, în contextul hashing-ului parolei, conversia unui salt în hex înainte de a o trimite prin HMAC este proastă și, dacă da, de ce?

Patrick Favre avatar
drapel us
Tema principală aici este că atunci când faceți codificare (de orice fel, fie că este hex, base64), asigurați-vă că ați decodat înainte de utilizare și NU utilizați reprezentarea ASCII octet a șirului de codificare. Primitivele criptografice sunt adesea optimizate pentru lungimi specifice de chei sau săruri, așa că, dacă treceți lungimi incorecte, acestea sunt adesea hashing, ceea ce poate crește riscul de coliziune
Puncte:17
drapel in

Aici nu se vorbește deloc despre sare, ci despre chei simetrice reale. Citând paragraful integral:

Majoritatea mediilor de programare oferă un fel de mecanism „aleatoriu securizat” (un CSPRNG). Puteți utiliza acest lucru pentru a obține o matrice de octeți de lungimea corespunzătoare (de exemplu, 32 de octeți pentru AES256), care poate fi folosită ca cheie. Asigurați-vă că treceți octeții bruti și nu, de exemplu, un șir codificat hex.

Aceasta înseamnă că, dacă veți genera o cheie de 32 de octeți (după cum se arată în paragraf), asigurați-vă că aceștia sunt 32 de octeți bruti și nu 32 de octeți ai cheii codificate hex.

Motivul pentru aceasta este simplu:

  • 32 de octeți bruti este 256^32 chei posibile
  • 32 de octeți de date hexazecimale este 16^32 chei posibile

Dacă trebuie să treceți cheia în reprezentare hexazecimală, utilizați întreaga ieșire care va avea o lungime de 64 de octeți.

În ceea ce privește sărarea, puterea sării dvs. depinde de mărimea acesteia.Nu contează dacă este crudă sau hexazecimală, contează numărul posibil de săruri.

Maarten Bodewes avatar
drapel in
Șirurile pot fi, de asemenea, mai greu de distrus, ele pot fi chiar „internalizate”, adică păstrate pe durata de viață a mașinii.
A Tea Kettle avatar
drapel in
Mulțumesc pentru explicația grozavă!
Ben avatar
drapel tr
Ben
Nu înțeleg cum 32 de octeți bruti diferă de 32 de octeți. Pe baza explicației dvs., un caracter hexadecimal este stocat într-un octet, dar acest lucru nu este normal. Ar trebui să existe două cifre hexazecimale pe octet care ar echivala cu 8 biți și un total de 256 de valori posibile.
Marc avatar
drapel in
Două cifre hexazecimale pot reprezenta un octet. Dar dacă aveți un șir cu această reprezentare hexazecimală, un singur octet din respectivul șir va fi doar un caracter. Aceasta este o greșeală comună pe care oamenii o fac: luarea primilor 32 de octeți ai unei reprezentări hexazecimale a datelor brute, fără să-și dea seama că scad jumătate din ei.
Patrick Favre avatar
drapel us
@marc răspuns excelent, totuși sunt de acord că descrierea a 32 de octeți hexadecimale este confuză: de ce nu „32 de caractere (care are nevoie de 32 de octeți) de date hexazecimale sunt `16^32` chei posibile”
Puncte:3
drapel my

Poate cineva să detalieze de ce este rău?

Cine a spus că codificarea sării înainte de hashing este rău? Când Tim McLean a scris:

Asigurați-vă că treceți octeții bruti și nu, de exemplu, un șir codificat hex.

el vorbea în mod special despre generarea unei chei pentru un cifru simetric; nu vorbea despre generarea unei imagini care să fie hashing.

Când generați o sare pentru un hash, nu este nimic în neregulă cu utilizarea codării hexadecimale.

drapel us
Este rău dacă creează confuzie cu privire la datele care urmează să fie analizate. Hashurile criptografice operează pe octeți, nu pe caractere, așa că textul trebuie să fie codificat în octeți. Desigur, cu excepția cazului în care utilizați EBCDIC, nu este probabil să existe nicio ambiguitate la codificarea cifrelor hexazecimale. Dar dacă o implementare vede textul ca octeți codificați hexadecimal și îi decodifică, în timp ce alta vede doar textul și îl codifică, ei nu vor produce același hash.

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.