Închis . Această întrebare trebuie să fie mai oncentrată
. În prezent, nu acceptă răspunsuri.
Comentarii
În primul rând, există o diferență între hashing și criptare . SHA256 este o funcție de hash, nu o funcție de criptare.
În al doilea rând, deoarece SHA256 nu este o funcție de criptare, nu poate fi decriptată. Ceea ce vrei să spui este probabil inversarea acestuia. În acest caz, SHA256 nu poate fi inversat deoarece este „sa funcție unidirecțională . Inversarea acestuia ar cauza o atac preimagine , care își învinge obiectivul de proiectare.
În al treilea rând, verificarea SHA256 funcționează calculând-o din nou și comparând rezultatul cu rezultatul la îndemână. Dacă ambele rezultate se potrivesc, atunci verificarea are succes. Fundamentul teoretic este că este dificil să găsești o altă intrare care să dea același rezultat hash. Încălcarea acestui fapt creează un al doilea atac preimagine , care își învinge obiectivul de proiectare.
În cele din urmă, semnăturile digitale nu sunt pur și simplu combinații hash și cheie . Dar o funcție hash poate îmbunătăți securitatea.
SHA256 nu este o funcție de criptare, ci un funcție hash . Diferența fundamentală este că, în timp ce criptarea este o funcție bidirecțională (dată fiind cheia) hash-ul este doar o funcție unidirecțională: având în vedere unele date, puteți calcula hash-ul, dat fiind hash-ul, este dificil (și matematic imposibil) să aveți datele înapoi. .
Am spus că este matematic imposibil să găsești datele din hash, deoarece de obicei o funcție hash are un cod de domeniu mic (de exemplu, 256 biți pentru SHA256), dar un domeniu mare (poți hash orice șir), deci vor exista coliziuni: șiruri diferite cu același hash.
Din acest motiv, dacă parola dvs. este salvată într-o formă hash, atunci există o parolă infinită (dar pot fi foarte lungi) care vă deblochează contul.
Vestea bună este că coliziunile sunt rare atunci când utilizați funcții hash criptografice , deci contul dvs. este încă în siguranță.
Răspunzând la prima parte a întrebării dvs., verificarea datelor este ușoară: dacă Alice îi trimite lui Bob un fișier cu suma de verificare hash Bob poate calcula cu ușurință hashul lui t depune dosarul primit și îl compară cu hashul primit de la Alice. Acest lucru este de obicei suficient pentru a afla dacă a existat vreo eroare în timpul transmisiei (deci fișierul este corupt), dar nu este suficient dacă transmisia a fost modificată de un atacator care a modificat și hash-ul. Deci Alice și Bob au nevoie de un canal securizat pentru a transmite hash-ul (de exemplu o pagină https cu un certificat valid) sau trebuie să semneze hash-ul într-un fel.
Așa că trecem la răspunsul la a doua întrebare: Alice poate semna hash folosind cheia sa privată înainte de a o trimite lui Bob, în acest fel un atacator nu îl poate manipula fără a invalida semnătura.
Acum puteți întreba de ce Alice semnează doar cu cheia RSA (sau similară) hashul și nu tot mesajul, acest lucru se datorează faptului că calculul RSA este mai lent decât calculul unui hash (deci ea trebuie să facă lucrul lent doar pe un șir mic: hashul). Acest lucru a fost adevărat mai ales atunci când PGP a fost creat și computerele au fost mai lente.