SHA
Secure Hash Algorithm ehk SHA on krüptograafiliste räsifunktsioonide tootepere, mis töötati välja Ameerika Ühendriikide Riiklikus Standardite ja Tehnoloogia Instituudis (NIST) koostöös Riikliku julgeolekuagentuuriga.
SHA algoritmide tooteperre kuuluvad SHA-0, SHA-1, SHA-2 ja SHA-3.
SHA-0 ja SHA-1
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e2/SHA-1.svg/220px-SHA-1.svg.png)
SHA-0 algoritmi algne nimi oli SHA, kuid uuemate sarnase põhimõttega algoritmide lisandumisel võeti kasutusele nimi SHA-0. 1993. aastal avaldati algse algoritmi edasiarendus SHA-1. Uues algoritmis oli parandatud varem leitud turvaauk, kusjuures SHA-0 ja SHA-1 erinevad ainult ühe tehte võrra. Praeguseks on SHA-1 algoritm kuulutatud ebaturvaliseks ning NIST soovitab riigiorganisatsioonidel kasutada uuemaid SHA räsifunktsioone[1].
Microsoft[2], Google[3] ja Mozilla[4] lõpetasid 2017. aastast brauserites SHA-1 kasutavate SSL sertifikaatide toetamise.
SHA-1 on kasutusel Giti[5] ja Mercuriali versioonihaldustarkvaras andmete terviklikkuse kontrollimise eesmärgil.
SHA-2
SHA-2 perekonda kuuluvad räsifunktsioonid SHA-256 ja SHA-512. SHA-256 kasutab 32-bitiseid sõnu ning SHA-512 64-bitiseid sõnu.
Rakendused
SHA-2 räsifunktsioon on kasutusel sellistes rakendustes ja protokollides nagu TLS, SSL, PGP, SSH, S/MIME ja IPsec.
SHA-256 funktsiooni kasutatakse Debian GNU ja Linuxi tarkvarapakkide autentimisel[6] ja DKIM sõnumite allkirjastamise standardis. SHA-512 on kasutusel süsteemis, mis autendib arhiivitud videoid Rwanda genotsiidi tribunalist[7]. Linuxi ja UNIXi arendajatel on kavas paroolide räsimiseks võtta kasutusele SHA-256 ja SHA-512[8].
Bitcoin kasutab SHA-256 funktsiooni tehingute verifitseerimiseks ja toimingutõestuse arvutamisel.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/SHA-2.svg/220px-SHA-2.svg.png)
Teadaolevad rünnakud
Artikkel | Aasta | Ründemeetod | Rünnak | Variant | Tsükleid | Keerukus |
---|---|---|---|---|---|---|
New Collision Attacks Against Up To 24-step SHA-2[9] | 2008 | Deterministlik | Kollisioon | SHA-256 | 24/64 | 228.5 |
SHA-512 | 24/80 | 232.5 | ||||
Preimages for step-reduced SHA-2[10] | 2009 | Keskelkohterünne | Originaalirünne | SHA-256 | 42/64 | 2251.7 |
43/64 | 2254.9 | |||||
SHA-512 | 42/80 | 2502.3 | ||||
46/80 | 2511.5 | |||||
Advanced meet-in-the-middle preimage attacks[11] | 2010 | Keskelkohterünne | Originaalirünne | SHA-256 | 42/64 | 2248.4 |
SHA-512 | 42/80 | 2494.6 | ||||
Higher-Order Differential Attack on Reduced SHA-256[12] | 2011 | Diferentsiaalne krüptoanalüüs | Pseudokollisioon | SHA-256 | 46/64 | 2178 |
33/64 | 246 | |||||
Bicliques for Preimages: Attacks on Skein-512 and the SHA-2 family[13] | 2011 | Keskelkohterünne | Originaalirünne | SHA-256 | 45/64 | 2255.5 |
SHA-512 | 50/80 | 2511.5 | ||||
Pseudo-originaalirünne | SHA-256 | 52/64 | 2255 | |||
SHA-512 | 57/80 | 2511 | ||||
Improving Local Collisions: New Attacks on Reduced SHA-256[14] | 2013 | Diferentsiaalne krüptoanalüüs | Kollisioon | SHA-256 | 31/64 | 265.5 |
Pseudokollisioon | SHA-256 | 38/64 | 237 | |||
Branching Heuristics in Differential Collision Search with Applications to SHA-512[15] | 2014 | Heuristiline diferentsiaalne krüptoanalüüs | Pseudokollisioon | SHA-512 | 38/80 | 240.5 |
Analysis of SHA-512/224 and SHA-512/256[16] | 2016 | Diferentsiaalne krüptoanalüüs | Kollisioon | SHA-256 | 28/64 | praktiline |
SHA-512 | 27/80 | praktiline | ||||
Pseudokollisioon | SHA-512 | 39/80 | praktiline |
SHA-3
SHA-3 loodi Riikliku Standardite ja Tehnoloogia Instituudi poolt peetud avaliku konkursi käigus. Konkursi komisjoni poolt väljavalituks osutunud räsialgoritmi Keccak loojateks on Guido Bertoni, Joan Daemen, Michaël Peeters ja Gilles Van Assche[17]. SHA-3 loomise eesmärk ei olnud SHA-2 väljavahetamine, vaid sellele alternatiivi pakkumine juhul kui SHA-2 algoritmis avastatakse turvaauke.
SHA-3 perekonda kuuluvad laiendatava väljundiga räsifunktsioonid (ingl extendable-output function, XOF) SHAKE128 ja SHAKE256, mille väljundi suurus on vabalt muudetav. SHAKE-funktsioonid on esimesed Riikliku Standardite ja Tehnoloogia Instituudi poolt standardiseeritud XOF funktsioonid[18].
SHA funktsioonide võrdlus
Algoritmi variant | Väljundi suurus (bittides) | Sisemise oleku suurus (bittides) | Ploki suurus (bittides) | Maksimaalne sisendi suurus (bittides) | Tsüklite arv | Tehted | Turvalisus (bittides) | Arvutuskiirus [1] (MiB/s) | |
---|---|---|---|---|---|---|---|---|---|
MD5 (võrdluseks) | 128 | 128 (4 × 32) | 512 | Piiramatu[19] | 64 | And, Xor, Rot, Add (mod 232), Or | <64 (on leitud kollisioone) | 335 | |
SHA-0 | 160 | 160 (5 × 32) | 512 | 264 − 1 | 80 | And, Xor, Rot, Add (mod 232), Or | <80 (on leitud kollisioone) | - | |
SHA-1 | 160 | 160 (5 × 32) | 512 | 264 − 1 | 80 | <80 (teoreetiline rünnak[20]) | 192 | ||
SHA-2 | SHA-224 SHA-256 | 224 256 | 256 (8 × 32) | 512 | 264 − 1 | 64 | And, Xor, Rot, Add (mod 232), Or, Shr | 112 128 | 139 |
SHA-384 SHA-512 SHA-512/224 SHA-512/256 | 384 512 224 256 | 512 (8 × 64) | 1024 | 2128 − 1 | 80 | And, Xor, Rot, Add (mod 264), Or, Shr | 192 256 112 128 | 154 | |
SHA-3 | SHA3-224 SHA3-256 SHA3-384 SHA3-512 | 224 256 384 512 | 1600 (5 × 5 × 64) | 1152 1088 832 576 | Piiramatu[21] | 24[22] | And, Xor, Rot, Not | 112 128 192 256 | - |
SHAKE128 SHAKE256 | d (arbitraarne) d (arbitraarne) | 1344 1088 | min(d/2, 128) min(d/2, 256) | - |