Komentáře
- Znovu hashujte stejný vstup a porovnejte hash.
- SHA256 je kryptografický hash, ne šifrování … A ano, jde konkrétně o jednosměrku. Navrhuji, abyste se naučili úplně základy těchto pojmů, např. dokonce z Wikipedie. Pak můžete přijít na konkrétnější otázky …
- Možný duplikát Proč jsou hašovací funkce jedním způsobem? Pokud znám tento algoritmus, proč ' t z něj nevypočítám vstup?
Odpovědět
Nejprve je rozdíl mezi hashováním a šifrování . SHA256 je hashovací funkce, nikoli šifrovací funkce.
Zadruhé, protože SHA256 není šifrovací funkce, nelze ji dešifrovat. Myslíš tím pravděpodobně obrácení. V takovém případě nelze SHA256 obrátit, protože je to „sa jednosměrná funkce . Jeho obrácení by způsobilo preimage útok , který poruší svůj cíl návrhu.
Zatřetí, ověřování SHA256 funguje tak, že jej znovu spočítáme a porovnáme výsledek s dosaženým výsledkem. Pokud se oba výsledky shodují, je ověření úspěšné. Teoretické pozadí je, že je obtížné najít další vstup, který poskytuje stejný hash výsledek. Porušení tohoto pravidla způsobí útok druhé preimage , který poruší jeho designový cíl.
Nakonec digitální podpisy nejsou jen kombinace hash a klíč . Hašovací funkce však může zlepšit jeho zabezpečení.
Odpověď
SHA256 není šifrovací funkce, ale hashovací funkce . Zásadní rozdíl je v tom, že zatímco šifrování je dvousměrná funkce (vzhledem k klíči), hash je pouze jednosměrná funkce: vzhledem k určitým datům můžete hash vypočítat, vzhledem k hash je obtížné (a matematicky nemožné) mít data zpět .
Řekl jsem, že je matematicky nemožné najít data z hash, protože hash funkce má obvykle malou codomain (například 256bit pro SHA256), ale velkou doménu (můžete hash libovolný řetězec), takže dojde ke kolizím: různé řetězce se stejným hashem.
Z tohoto důvodu, pokud je vaše heslo uloženo v hašované podobě, existuje nekonečné heslo (ale může být velmi dlouhé), které odemkne váš účet.
Dobrou zprávou je, že ke kolizím dochází při použití kryptografických hash funkcí , takže váš účet je stále v bezpečí.
Odpověď na první část vaší otázky, ověření dat je snadné: pokud Alice pošle Bobovi soubor s kontrolním součtem hash, Bob může snadno vypočítat hash t soubor, který obdržel, a porovnejte jej s hashem přijatým od Alice. To obvykle stačí k tomu, abyste zjistili, zda během přenosu došlo k nějaké chybě (soubor je poškozený), ale to nestačí, pokud byl přenos změněn nějakým útočníkem, který také změnil hash. Takže Alice a Bob potřebují zabezpečený kanál pro přenos hash (například stránka https s platným certifikátem) nebo musí nějakým způsobem hash podepsat.
Takže přejdeme k odpovědi na vaši druhou otázku: Alice může podepsat hash používá svůj soukromý klíč před odesláním Bobovi, takže útočník s ním nemůže „manipulovat“, aniž by zneplatnil podpis.
Nyní byste se mohli zeptat, proč Alice podepisuje pouze svým klíčem RSA (nebo podobným) hash a ne celá zpráva, je to proto, že výpočet RSA je pomalejší než výpočet hash (takže musí dělat pomalou věc pouze na malém řetězci: hash). To platilo zejména tehdy, když bylo vytvořeno PGP a počítače byly pomalejší.