Megjegyzések
- Ugyanezt a bevitelt vágja el újra, és hasonlítsa össze a kivonatot.
- Az SHA256 kriptográfiai kivonat, nem titkosítás … És igen, a lényeg konkrétan egyirányú. Javaslom, hogy tanulja meg e kifejezések alapjait, pl. akár a Wikipédiából. Ezután konkrétabb kérdéseket tehet fel …
- A lehetséges másolatai miért vannak a hash függvények egyféleképpen? Ha ismerem az algoritmust, miért ' t nem számíthatom ki belőle a bemenetet?
Válasz
Először is különbség van hash és között titkosítás . Az SHA256 kivonatoló funkció, nem titkosítási funkció.
Másodszor, mivel az SHA256 nem titkosítási funkció, ezért nem lehet visszafejteni. Amire gondol, valószínűleg megfordítja. Ebben az esetben az SHA256 nem vonható vissza, mert “sa egyirányú függvény . A megfordítása preimage támadás , amely legyőzi tervezési célját.
Harmadszor, az SHA256 ellenőrzése úgy működik, hogy újra kiszámítja és összehasonlítja az eredményt a kapott eredménnyel. Ha mindkét eredmény egyezik, akkor az ellenőrzés sikeres. Az elméleti háttér az, hogy nehéz olyan újabb bemenetet találni, amely ugyanazt a hash eredményt adja. Ennek megsértése második kép előtti támadást hoz létre , amely legyőzi tervezési célját.
Végül: digitális aláírások nem egyszerűen hash és key kombinációk. De egy hash függvény javíthatja a biztonságát.
Answer
Az SHA256 nem titkosítási függvény, hanem hash függvény . Az alapvető különbség az, hogy míg a titkosítás kétirányú függvény (a kulcs megadásával), a hash csak egyirányú függvény: adott adatokkal kiszámolhatja a kivonatot, a kivonat miatt nehéz (és matematikailag lehetetlen) visszaküldeni az adatokat .
Azt mondtam, matematikailag lehetetlen megtalálni az adatokat a kivonatból, mert általában egy hash függvénynek van egy kis kodomainje (például 256bit az SHA256-hoz), de nagy a tartománya (bármilyen karakterláncot kivonatolhat), tehát ütközések lesznek: különböző karakterláncok ugyanazzal a kivonattal.
Ezért, ha a jelszavát kivonatolt formában menti, akkor létezik végtelen jelszó (de nagyon hosszú lehet), amely feloldja a fiókját.
A jó hír az, hogy az ütközések ritkák, ha kriptográfiai hash funkciókat használ , így fiókja továbbra is biztonságos.
A kérdés első részének megválaszolásával az adatok ellenőrzése egyszerű: ha Alice elküldi Bobnak a hash ellenőrző összegű fájlt, akkor Bob könnyedén kiszámíthatja a t iratba kapja, és összehasonlítja az Alice-től kapott hash-szal. Ez általában elég ahhoz, hogy megtudja, történt-e hiba az átvitel során (tehát a fájl sérült), de ez nem elég, ha az átvitelt megváltoztatta valamely támadó, amely megváltoztatta a hash-t is. Tehát Alice-nek és Bob-nak szüksége van egy biztonságos csatorna a kivonat továbbításához (például egy érvényes tanúsítvánnyal rendelkező https oldal), vagy valamilyen módon alá kell írniuk a kivonatot.
Tehát áttérünk a második kérdésére adott válaszra: Alice aláírhatja a kivonatolja a magánkulcsát, mielőtt elküldené Bobnak, ily módon a támadó nem tudja azt megváltoztatni anélkül, hogy érvénytelenítené az aláírást.
Most megkérdezhetné, miért ír alá Alice csak az RSA (vagy hasonló) kulcsával a hash és nem az összes üzenet, ez azért van, mert az RSA kiszámítása lassabb, mint a hash kiszámítása (tehát a lassú dolgot csak egy kis sztringen kell elvégeznie: a hash). Ez különösen akkor volt igaz, amikor a PGP-t létrehozták, és a számítógépek lassabbak voltak.