Veilige hash-algoritmen - Secure Hash Algorithms

De veilige hash- algoritmen zijn een familie van cryptografische hashfuncties die zijn gepubliceerd door het National Institute of Standards and Technology (NIST) als een Amerikaanse Federal Information Processing Standard (FIPS), waaronder:

  • SHA-0 : een retroniem toegepast op de originele versie van de 160-bits hashfunctie die in 1993 werd gepubliceerd onder de naam "SHA". Het werd kort na publicatie ingetrokken vanwege een niet nader genoemd "belangrijk gebrek" en vervangen door de licht herziene versie SHA-1.
  • SHA-1 : Een 160-bit hash-functie die lijkt op het eerdere MD5- algoritme. Dit is ontworpen door de National Security Agency (NSA) om deel uit te maken van het Digital Signature Algorithm . Er werden cryptografische zwakheden ontdekt in SHA-1 en de standaard werd na 2010 niet langer goedgekeurd voor de meeste cryptografische toepassingen.
  • SHA-2 : Een familie van twee vergelijkbare hashfuncties, met verschillende blokgroottes, bekend als SHA-256 en SHA-512 . Ze verschillen in de woordgrootte; SHA-256 gebruikt 32-bits woorden waar SHA-512 64-bits woorden gebruikt. Er zijn ook verkorte versies van elke standaard, bekend als SHA-224 , SHA-384 , SHA-512/224 en SHA-512/256 . Deze zijn ook ontworpen door de NSA.
  • SHA-3 : een hashfunctie die voorheen Keccak heetteen in 2012 werd gekozen na een openbare wedstrijd tussen niet-NSA-ontwerpers. Het ondersteunt dezelfde hash-lengtes als SHA-2 en de interne structuur verschilt aanzienlijk van de rest van de SHA-familie.

De bijbehorende standaarden zijn FIPS PUB 180 (originele SHA), FIPS PUB 180-1 (SHA-1), FIPS PUB 180-2 (SHA-1, SHA-256, SHA-384 en SHA-512). NIST heeft Draft FIPS-publicatie 202 bijgewerkt, SHA-3 Standard, los van de Secure Hash Standard (SHS).

Vergelijking van SHA-functies

In de onderstaande tabel betekent interne toestand de "interne hash-som" na elke compressie van een datablok.

Vergelijking van SHA-functies
Algoritme en variant Uitvoergrootte
(bits)
Interne statusgrootte
(bits)
Blokgrootte
(bits)
rondes Activiteiten Beveiliging tegen botsingsaanvallen
(bits)
Beveiliging tegen lengteverlengingsaanvallen
(bits)
Prestaties op Skylake (mediaan cpb ) Eerste druk
Lange berichten 8 bytes
MD5 (als referentie) 128 128
(4 × 32)
512 64 En, Xor, Rot, Add (mod 2 32 ), Or ≤ 18
(aanvaringen gevonden)
0 4.99 55,00 1992
SHA-0 160 160
(5 × 32)
512 80 En, Xor, Rot, Add (mod 2 32 ), Or < 34
(aanvaringen gevonden)
0 ≈SHA-1 ≈SHA-1 1993
SHA-1 < 63
(aanvaringen gevonden)
3.47 52,00 1995
SHA-2 SHA-224
SHA-256
224
256
256
(8 × 32)
512 64 En, Xor, Rot, Add (mod 2 32 ), Or, Sh 112
128
32
0
7,62
7,63
84.50
85.25
2004
2001
SHA-384
SHA-512
384
512
512
(8 × 64)
1024 80 En, Xor, Rot, Add (mod 2 64 ), Or, Sh 192
256
128 (≤ 384)
0
5.12
5.06
135.75
135.50
2001
SHA-512/224
SHA-512/256
224
256
112
128
288
256
≈SHA-384 ≈SHA-384 2012
SHA-3 SHA3-224
SHA3-256
SHA3-384
SHA3-512
224
256
384
512
1600
(5 × 5 × 64)
1152
1088
832
576
24 En, Xor, Rot, niet 112
128
192
256
448
512
768
1024
8.12
8.59
11.06
15.88
154,25
155,50
164,00
164,00
2015
SHAKE128
SHAKE256
d (willekeurig)
d (willekeurig)
1344
1088
min( d /2, 128)
min( d /2, 256)
256
512
7.08
8.59
155.25
155.50

Geldigmaking

Alle algoritmen van de SHA-familie, als door FIPS goedgekeurde beveiligingsfuncties, zijn onderworpen aan officiële validatie door het CMVP (Cryptographic Module Validation Program), een gezamenlijk programma van het American National Institute of Standards and Technology (NIST) en de Canadian Communications Security Establishment (CSE).

Referenties