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

SHA-1 räsifunktsiooni skeem

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.

SHA-2 räsifunktsiooni ühe iteratsiooni skeem

Teadaolevad rünnakud

ArtikkelAastaRündemeetodRünnakVariantTsükleidKeerukus
New Collision Attacks Against
Up To 24-step SHA-2
[9]
2008DeterministlikKollisioonSHA-25624/64228.5
SHA-51224/80232.5
Preimages for step-reduced SHA-2[10]2009KeskelkohterünneOriginaalirünneSHA-25642/642251.7
43/642254.9
SHA-51242/802502.3
46/802511.5
Advanced meet-in-the-middle
preimage attacks
[11]
2010KeskelkohterünneOriginaalirünneSHA-25642/642248.4
SHA-51242/802494.6
Higher-Order Differential Attack
on Reduced SHA-256
[12]
2011Diferentsiaalne krüptoanalüüsPseudokollisioonSHA-25646/642178
33/64246
Bicliques for Preimages: Attacks on
Skein-512 and the SHA-2 family
[13]
2011KeskelkohterünneOriginaalirünneSHA-25645/642255.5
SHA-51250/802511.5
Pseudo-originaalirünneSHA-25652/642255
SHA-51257/802511
Improving Local Collisions: New
Attacks on Reduced SHA-256
[14]
2013Diferentsiaalne krüptoanalüüsKollisioonSHA-25631/64265.5
PseudokollisioonSHA-25638/64237
Branching Heuristics in Differential Collision
Search with Applications to SHA-512
[15]
2014Heuristiline

diferentsiaalne krüptoanalüüs

PseudokollisioonSHA-51238/80240.5
Analysis of SHA-512/224 and SHA-512/256[16]2016Diferentsiaalne krüptoanalüüsKollisioonSHA-25628/64praktiline
SHA-51227/80praktiline
PseudokollisioonSHA-51239/80praktiline

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

SHA funktsioonide võrdlus
Algoritmi variantVäljundi suurus
(bittides)
Sisemise oleku suurus
(bittides)
Ploki suurus
(bittides)
Maksimaalne sisendi suurus
(bittides)
Tsüklite arvTehtedTurvalisus
(bittides)
Arvutuskiirus [1]
(MiB/s)
MD5 (võrdluseks)128128
(4 × 32)
512Piiramatu[19]64And, Xor, Rot, Add (mod 232), Or<64
(on leitud kollisioone)
335
SHA-0160160
(5 × 32)
512264 − 180And, Xor, Rot, Add (mod 232), Or<80
(on leitud kollisioone)
-
SHA-1160160
(5 × 32)
512264 − 180<80
(teoreetiline rünnak[20])
192
SHA-2SHA-224
SHA-256
224
256
256
(8 × 32)
512264 − 164And, Xor, Rot, Add (mod 232), Or, Shr112
128
139
SHA-384
SHA-512
SHA-512/224
SHA-512/256
384
512
224
256
512
(8 × 64)
10242128 − 180And, Xor, Rot, Add (mod 264), Or, Shr192
256
112
128
154
SHA-3SHA3-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, Not112
128
192
256
-
SHAKE128
SHAKE256
d (arbitraarne)
d (arbitraarne)
1344
1088
min(d/2, 128)
min(d/2, 256)
-

Viited