SHA är en akronym för Secure Hash Algorithm, en krypteringsstandard som uppfunnits av National Security Agency och publicerad av National Institutes of Standards and Technology. Den ursprungliga SHA-algoritmen visade sig ha svagheter i sina krypteringsmetoder och ersattes med SHA-1 för starkare säkerhet.
Säker Hash-algoritm
SHA är en kryptografisk hashfunktion. En hashfunktion tar en initial okrypterad text, kallad klartext, och producerar ett teoretiskt unikt nummer som utgör det krypterade meddelandet. SHA skapar ett 160-bitars nummer, vilket är ett tal mellan 0 och 1,46 x 10^48. Det är inte möjligt för detta nummer att garanteras unikt för alla möjliga klartextmeddelanden, eftersom antalet sådana meddelanden är teoretiskt oändliga, men oddsen är ungefär 2^80, eller 1,21 x 10^24, mot två meddelanden som producerar samma krypterade resultat. Om detta inträffar kallas detta en kollision. En kollision ger en matematisk attack på en krypteringsalgoritm, vilket gör det möjligt för en kryptograf att dekryptera klartexten.
Dagens video
SHA-0 och SHA-1
Efter publiceringen upptäcktes brister i den ursprungliga SHA-algoritmen som gjorde det möjligt för en kryptografisk attack att producera hashkollisioner, vilket kraftigt försvagade dess effektivitet. En reviderad SHA-version, SHA-1, utvecklades som skapade samma 160-bitars resultat utan de ursprungliga bristerna i algoritmen. Den ursprungliga SHA döptes retroaktivt om till SHA-0 för att skilja mellan dess användning och SHA-1-användning.
Ändringar i SHA-1
De ursprungliga bristerna i SHA-0 har aldrig publicerats, eftersom dessa brister tillhandahåller en verktygslåda för alla angripare som försöker dekryptera ett meddelande med SHA-0-kryptering. Den enda offentliga informationen om svagheterna i den ursprungliga algoritmen indikerar att hashkollisioner är mer sannolika än av en slump vid användning av SHA-0, och att kollisioner med den opublicerade metoden elimineras vid användning SHA-1. Eftersom SHA-1 och SHA-0 ger matematiska resultat av samma längd, kan SHA-1 användas som en drop-in-ersättning i datorprogramvara för den ursprungliga SHA-0-algoritmen utan att kräva större omskrivningar i resten av programvara.
SHA-2 och SHA-3
SHA-1 har visat sig vara mer robust än SHA-0, men lämnar utrymme för förbättringar. En matematisk analys av SHA-1-resultat visade en metod med vilken SHA-1-kryptering kunde brytas 2 000 gånger snabbare än vad som skulle vara teoretiskt möjligt genom att kontrollera alla 10^48 möjliga kombinationer av dess produktion. Eftersom en idealisk kryptografisk algoritm förhindrar dekrypteringshastighetsförbättringar av detta slag, undviker SHA-2-algoritmen både denna attack och ökar den möjliga hashstorleken till 512-bitar, eller 1,34 x 10^154. SHA-3, en ännu kraftfullare krypteringsalgoritm, är för närvarande under utveckling.