Puncte:0

Utilizarea hash de date ca dovadă a integrității și prevenirea coliziunii

drapel us

În loc să stochez datele utilizatorului atunci când interacționez cu o aplicație, stochez SHA3-256 al datelor.Acest lucru se datorează faptului că stocarea datelor în acest mediu special este foarte limitată.

Datele pot fi mai multe variabile, de exemplu, a, b și, c, dar în loc să le salvez individual, salvez hash-ul concatenării: SHA3(a,b,c).

Când utilizatorul dorește să interacționeze cu sistemul, ar trebui să trimită din nou variabilele, iar sistemul va compara hash-ul variabilelor sumate cu hash-ul stocat. Dacă se potrivesc, sistemul presupune că variabilele sunt aceleași cu cele ale summit-ului inițial. Deci, ajung să salvez doar o variabilă în loc de 3 în acest exemplu.

Datele sunt publice, deci sunt cunoscute de toată lumea. Întrebarea pe care o am este dacă există o problemă de securitate prin hashingul concatenării variabilelor (acesta face ca utilizatorii să găsească mai ușor o coliziune). Există vreo diferență dacă, în schimb, hash fiecare variabilă și apoi hash concatenarea hashurilor?

Pentru a elabora cele de mai sus, motivul pentru care cred că acest lucru ar putea face mai ușor pentru utilizatori să găsească coliziuni este că a, b și c sunt de diferite tipuri și au valori minime și maxime; de exemplu, dacă c poate avea doar valori între 10 și 1000, utilizatorii pot încerca doar toate valorile posibile ale lui C pentru a testa o coliziune norocoasă fără prea mult efort. Este aceasta o preocupare rezonabilă?

Rețineți că nu este important cine trimite datele, doar că datele însumate sunt exact aceleași cu cele trimise anterior.

SEJPM avatar
drapel us
Atacul clasic asupra acestui lucru este trimiterea a ca un octet 0 și b ca doi octeți zero și schimbarea ulterioară a asocierii acestor bucăți de date. Acest lucru va avea ca rezultat hashe-uri identice pentru cazul de concatenare, dar diferite pentru cazul individual pre-hash.
Jaime avatar
drapel us
Multumesc pentru comentariu. parametrii sunt tipuri cu lungimi predeterminate, de exemplu "a" poate fi de 32 de octeți, "b" de 64 de octeți și "c" de 128 de octeți. În acest caz, atacul nu este aplicabil, nu? În general, dacă lungimea variabilei este fixă, să spunem la 32 de octeți, atacul pe care îl descrieți nu poate fi făcut, nu?
SEJPM avatar
drapel us
Da, dacă puteți _garanta_ ca lungimile a cel puțin tuturor intrărilor, cu excepția uneia, să fie întotdeauna fixate, atunci obțineți de obicei toate proprietățile de securitate ale construcțiilor de tip integritate.
Puncte:1
drapel in

Atâta timp cât hash-ul stocat în siguranță este peste o reprezentare canonică a datelor (adică variabilele și codificarea lor nu se pot suprapune), atunci stocarea hash-ului este sigură. Ar fi o securitate similară cu a avea o semnătură peste date, dar acestea sunt mai mari. Un lucru de care m-aș asigura este că stocați hash-ul folosind o tranzacție; în caz contrar, utilizatorul poate să întrerupă și să nu scrieți nimic sau doar o parte din hash.

Dacă doriți să faceți și mai greu atacul sau doriți să utilizați mai puțin spațiu de stocare, puteți lua în considerare stocarea unui hash cu cheie, pentru SHA-3, acesta ar fi KMAC. În acest caz, puteți de ex.utilizați 128 de biți ai ieșirii în loc de toți cei 256 de biți, menținând în același timp 128 de biți de securitate, dar cu dezavantajul că, dacă scurgeți cheia, atacurile de coliziune asupra ieșirii vă vor lăsa doar 64 de biți de securitate.

Puncte:0
drapel de

Cred că nu înțelegeți cum funcționează funcțiile hash. Vă sfătuiesc câteva cărți introductive ca început. Criteriul strict de avalanșă asigură că, chiar dacă un bit se modifică la orice reprezentare, este practic imposibil de găsit coliziuni.

Configurația dvs. este cu siguranță nesigură împotriva atacurilor de reluare. Veți urma câteva tehnici de randomizare sau sare

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.