Kommentarer
- Hash samma inmatning igen och jämför hash.
- SHA256 är en kryptografisk hash, inte kryptering … Och ja, poängen är specifikt att vara enkelriktad. Jag föreslår att du lär dig grunderna i dessa termer, t.ex. även från Wikipedia. Sedan kan du ställa mer specifika frågor …
- Möjlig duplikat av Varför är hashfunktioner ett sätt? Om jag känner till algoritmen, varför kan jag ' t beräkna ingången från den?
Svara
För det första är det skillnad mellan hashing och kryptering . SHA256 är en hashfunktion, inte en krypteringsfunktion.
För det andra, eftersom SHA256 inte är en krypteringsfunktion kan den inte dekrypteras. Vad du menar är förmodligen att vända det. I så fall kan SHA256 inte reverseras eftersom den ”sa enkelriktad funktion . Om du vänder om den skulle det orsaka en preimage attack , som besegrar dess designmål.
För det tredje fungerar SHA256-verifiering genom att beräkna den igen och jämföra resultatet med resultatet till hands. Om båda resultaten matchar är verifieringen framgångsrik. Den teoretiska bakgrunden är att det är svårt att hitta en annan input som ger samma hash-resultat. Överträdelse av detta skapar en andra preimage-attack , som besegrar dess designmål.
Slutligen digitala signaturer är inte bara hash- och tangentkombinationer . Men en hash-funktion kan förbättra säkerheten.
Svar
SHA256 är inte en krypteringsfunktion utan en hashfunktion . Den grundläggande skillnaden är att även om kryptering är en tvåvägsfunktion (med tanke på nyckeln) är hash bara en envägsfunktion: med viss data kan du beräkna hash, med tanke på hash är det svårt (och matematiskt omöjligt) att ha tillbaka data .
Jag sa att det är matematiskt omöjligt att hitta data från hash eftersom vanligtvis en hash-funktion har en liten kod (till exempel 256bit för SHA256) men en stor domän (du kan hash vilken sträng som helst), så det kommer att bli kollisioner: olika strängar med samma hash.
Om ditt lösenord sparas i en hashform finns det oändligt lösenord (men de kan vara mycket långa) som låser upp ditt konto.
Den goda nyheten är att kollisioner är sällsynta när du använder kryptografiska hashfunktioner , så ditt konto är fortfarande säkert.
Att svara på nävedelen av din fråga är att verifiera data enkelt: om Alice skickar en fil till Bob med haschkontrollsumman kan Bob enkelt beräkna hash av t han arkiverar han har fått och jämför den med hashen som fått från Alice. Detta räcker vanligtvis för att ta reda på om det har uppstått något fel under överföringen (så filen är korrupt), men det räcker inte om överföringen har ändrats av någon angripare som också ändrade hash. Så Alice och Bob behöver en säker kanal för att överföra hashen (till exempel en https-sida med ett giltigt certifikat) eller så måste de underteckna haschen på något sätt.
Så vi går till svaret på din andra fråga: Alice kan underteckna hash använder sin privata nyckel innan den skickas till Bob, på det här sättet kan en angripare inte manipulera den utan att ogiltigförklara signaturen.
Nu kan du fråga varför Alice bara signerar med sin RSA (eller liknande) nyckel hash och inte alla meddelanden, detta beror på att RSA-datorer är långsammare än att beräkna en hash (så hon måste göra det långsamma bara på en liten sträng: hash). Detta gällde särskilt när PGP skapades och datorer var långsammare.