HashfunktionEn hashfunktion är en deterministisk funktion som omvandlar (engelska hash = hacka sönder[1]) en godtycklig datamängd till en hashsumma av känd storlek. Inom datavetenskap används hashfunktioner bland annat för att skapa och söka i hashtabeller, en datastruktur som adresseras genom hashning av söknycklar. En hashsumma kan även användas för att jämföra dataobjekt, eftersom ett givet invärde alltid gör upphov till samma hashsumma, vilken kan användas som kontrollsumma. Hashkollisioner (när olika ingångsvärden resulterar i samma hashsumma) kan till exempel hanteras genom att ytterligare en hashfunktion nyttjas för särskiljning.[1] Olika hashfunktioner har olika egenskaper och användningsområden. Exempelvis: en hashfunktion som adresserar en hashtabell har fördel av att vara snabb medan en hashfunktion som används för att dölja lösenord i en lösenordsdatabas saknar fördel av att vara snabb, då snabbhet i det fallet tillåter en crackare att snabbare få fram lösenorden i klartext vid ett dataintrång. Kryptografiska hashfunktionerEn kryptografisk hashfunktion måste vara enkelriktad och kollisionsresistent (att varje ingångsvärde i praktiken resulterar i en unik hashsumma).[2] En avgörande skillnad gentemot mellan en kryptografisk funktion och en kryptografisk hashfunktion är att den senare är enkelriktad (hashning) medan den förra är dubbelriktad (kryptering och dekryptering). Användningsområden
ExempelSHA-256 (Secure Hash Algorithm-256) genererar 256-bitars hashsummor vilka används av kryptovalutan Bitcoin för att verifiera transaktioner.[5] MD5 och SHA-1 ansågs tidigare[när?] vara säkra men har visat sig[förtydliga] ha dålig kollisionsresistens. Hashen måste vara lång för att hindra Brute force-attacker, så vanligtvis används 128 bitar eller mer. Kryptografiska hashfunktioner optimeras för att vara snabba.[källa behövs] Exempel på kryptografiska hash-funktioner som år 2017 anses som relativt säkra[källa behövs] är SHA-2, SHA-3 och BLAKE2, PBKDF2, Bcrypt, Scrypt och argon2. EtymologiNamnet hashfunktion kommer av engelskans hash, det som på svenska skulle heta pyttipanna. Det är en måltid där man hackar kött och potatis för att sedan tillaga detta i en röra, på samma sätt som en hashfunktion tar in ett binärt tal och hackar det i delar för att sedan kasta om delarna.[6] TerminologiDe värden som en hashfunktion ger upphov till kan kallas hashsumma, hashvärde eller kondensat.[7] Referenser
|