Forestall dig att du kan ta vilken data som helst -- ett enda ord, en roman, en 4 GB video -- och reducera den till en kort strang av tecken med fast langd som unikt identifierar den. Andra ett enda kommatecken i originalet och strangen blir helt annorlunda. Och det finns inget satt att vanda pa processen for att aterskapa originaldata.
Det ar exakt vad en kryptografisk hashfunktion gor. Det ar en av de mest grundlaggande byggstenarna i modern sakerhet, och den skyddar tyst nastan allt du gor online.
Fingeravtrycksmetaforen
En hash fungerar som ett digitalt fingeravtryck. Ditt fingeravtryck identifierar dig unikt, men ingen kan rekonstruera ditt ansikte fran det. Pa samma satt identifierar en kryptografisk hash unikt en del data utan att avsloja vad den datan ar.
Mata in vilken indata som helst i en hashfunktion och du far ett digest (ocksa kallat hashvarde eller kontrollsumma) -- en strang av hexadecimala tecken med fast langd. SHA-256, en av de vanligaste algoritmerna, producerar alltid en utdata pa 64 tecken oavsett indatastorlek.
| Indata | SHA-256-digest (forsta 16 tecken) |
|---|---|
Hello |
185f8db32271fe25... |
hello |
2cf24dba5fb0a30e... |
| Hela Wikipedia-dumpen | (fortfarande 64 tecken) |
De fyra grundlaggande egenskaperna
En funktion kvalificerar sig som en kryptografisk hash bara om den uppfyller dessa egenskaper:
- Deterministisk. Samma indata producerar alltid samma utdata, pa vilken maskin som helst, nar som helst.
- Envags (pre-image-resistens). Givet en hash ar det berakningsmaissigt genomforbart att hitta den ursprungliga indatan. Du kan inte "avhasha" data.
- Kollisionsresistent. Det ar praktiskt omojligt att hitta tva olika indatavarden som producerar samma digest. For SHA-256 ar oddsen for en oavsiktlig kollision ungefar 1 pa 2^128 -- ett tal storre an antalet atomer i det observerbara universum.
- Lavineffekt. Att andra en enda bit i indatan flippar ungefar halften av bitarna i utdatan. Det finns inget detekterbart monster eller samband mellan liknande indatavarden.
Viktig distinktion: Hashning ar inte kryptering. Kryptering ar reversibel med en nyckel; hashning ar avsiktligt irreversibel. Du krypterar data for att skydda den under transport. Du hashar data for att verifiera dess integritet eller lagra ett bevis utan att behalla originalet.
Vanliga hashalgoritmer
MD5 (1991)
- Utdata: 128 bitar (32 hex-tecken)
- Status: Kryptografiskt bruten. Forskare kan generera kollisioner pa sekunder pa en barbar dator.
- Ses fortfarande i: Icke-sakerhetsrelaterade kontrollsummor for filnedladdningar och aldre system.
SHA-1 (1995)
- Utdata: 160 bitar (40 hex-tecken)
- Status: Avgangsforklarad for sakerhet. Google demonstrerade en praktisk kollision 2017 (SHAttered-attacken).
- Ses fortfarande i: Aldre Git-repositorier, vissa aldre certifikat.
SHA-256 (2001)
- Utdata: 256 bitar (64 hex-tecken)
- Status: Nuvarande standard. Inga kanda praktiska attacker.
- Anvands i: TLS-certifikat, Bitcoin, losenordshashning, digitala signaturer, filintegritetsverifiering.
SHA-3 (2015)
- Utdata: Variabel (vanligtvis 256 bitar)
- Status: Senaste standarden, baserad pa en helt annan intern design (Keccak sponge construction) fran SHA-2-familjen.
- Anvands i: Framtidsinriktade system, Ethereum, situationer som kraver algoritmvarietet.
| Algoritm | Utdatastorlek | Saker? | Hastighet |
|---|---|---|---|
| MD5 | 128 bitar | Nej | Mycket snabb |
| SHA-1 | 160 bitar | Nej | Snabb |
| SHA-256 | 256 bitar | Ja | Mattlig |
| SHA-3-256 | 256 bitar | Ja | Mattlig |
Dar kryptografisk hashning anvands
Losenordslagring
Nar du skapar ett konto lagrar ett valmkonstruerat system aldrig ditt losenord i klartext. Det lagrar hashen. Nar du loggar in hashar systemet det du skriver och jamfor det med det lagrade vardet. Aven om databasen hackas far angriparna hashar -- inte losenord.
Moderna system gar langre genom att lagga till ett slumpmassigt salt (extra data som laggs till fore hashningen) och anvanda avsiktligt langsamma algoritmer som bcrypt, scrypt eller Argon2 for att gora brute-force-gissning opraktisk.
Filintegritetsverifiering
Programdistributorer publicerar SHA-256-kontrollsummor tillsammans med sina nedladdningar. Efter nedladdning beraknar du filens hash pa din maskin och jamfor. En matchning bevisar att filen inte skadades eller manipulerades under transport.
Digitala signaturer
Nar du digitalt signerar ett dokument hashar systemet forst dokumentet, sedan krypterar det hashen med din privata nyckel. Mottagaren dekrypterar den med din publika nyckel och jamfor med sin egen hash av dokumentet. Detta ar mycket effektivare an att kryptera hela dokumentet och bevisar bade upphovsmannaskap och integritet.
Blockkedja
Varje block i en blockkedja innehaller hashen av foregaende block, vilket skapar en oforanderlig kedja. Att andra nagon tidigare transaktion andrar blockets hash, vilket bryter kedjan fran den punkten framat och gor manipulation omedelbart synlig.
Varfor MD5 och SHA-1 anses brutna
En hashalgoritm ar "bruten" nar nagon avsiktligt kan skapa tva olika indatavarden som producerar samma hash (en kollision). Detta undergaver varje anvandningsfall som forlotar sig pa unikhet.
- MD5: Kollisioner kan genereras pa sekunder. Forskare har skapat tva olika PDF-filer med identiska MD5-hashar.
- SHA-1: SHAttered-attacken 2017 producerade tva olika PDF:er med samma SHA-1-hash, vilket kravde ungefar 6 500 ar av enkel-CPU-berakning (genomforbart med molnresurser).
Praktisk regel: Anvand aldrig MD5 eller SHA-1 for nagonting sakerhetsrelaterat -- losenord, certifikat, digitala signaturer eller integritetskontroller dar en motstandare kan vara inblandad. Anvand SHA-256 eller SHA-3 istallet.
Mer lasning
Hashning ar ett av de koncept som blir intuitivt nar du experimenterar med det. Prova att hasha en mening, andra sedan ett tecken och observera lavineffekten med egna ogon.
- Hur du genererar och verifierar hashar -- steg-for-steg-tutorial
- Hash-generator -- berakna SHA-256, MD5, SHA-512 och mer direkt i din webblasare
- Hash-identifierare -- klistra in en okand hash och identifiera dess algoritm
