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.
| 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).