Bezpieczne algorytmy mieszania
Bezpieczne algorytmy skrótu to rodzina kryptograficznych funkcji skrótu opublikowanych przez National Institute of Standards and Technology (NIST) jako amerykański federalny standard przetwarzania informacji (FIPS), w tym:
- SHA-0 : Retronim zastosowany do oryginalnej wersji 160-bitowej funkcji skrótu opublikowanej w 1993 roku pod nazwą „SHA”. Został wycofany wkrótce po publikacji z powodu nieujawnionej „istotnej wady” i zastąpiony nieco poprawioną wersją SHA-1.
- SHA-1 : 160-bitowa funkcja skrótu, która przypomina wcześniejszy algorytm MD5 . Zostało to zaprojektowane przez Agencję Bezpieczeństwa Narodowego (NSA) jako część algorytmu podpisu cyfrowego . Kryptograficzne słabości zostały odkryte w SHA-1, a standard nie był już zatwierdzony do większości zastosowań kryptograficznych po 2010 roku.
- SHA-2 : Rodzina dwóch podobnych funkcji skrótu, z różnymi rozmiarami bloków, znanych jako SHA-256 i SHA-512 . Różnią się wielkością słowa; SHA-256 używa słów 32-bitowych, podczas gdy SHA-512 używa słów 64-bitowych. Istnieją również skrócone wersje każdego standardu, znane jako SHA-224 , SHA-384 , SHA-512/224 i SHA-512/256 . Zostały one również zaprojektowane przez NSA.
- SHA-3 : Funkcja skrótu, wcześniej nazywana Keccak , wybrana w 2012 roku po publicznym konkursie wśród projektantów spoza NSA. Obsługuje te same długości skrótu co SHA-2, a jego wewnętrzna struktura znacznie różni się od reszty rodziny SHA.
Odpowiednie standardy to FIPS PUB 180 (oryginalny SHA), FIPS PUB 180-1 (SHA-1), FIPS PUB 180-2 (SHA-1, SHA-256, SHA-384 i SHA-512). NIST zaktualizował projekt publikacji FIPS 202, standard SHA-3 niezależnie od standardu Secure Hash (SHS).
Porównanie funkcji SHA
W poniższej tabeli stan wewnętrzny oznacza „wewnętrzną sumę skrótu” po każdej kompresji bloku danych.
Algorytm i wariant |
Rozmiar wyjściowy (bity) |
Rozmiar stanu wewnętrznego (bity) |
Rozmiar bloku (bity) |
Rundy | Operacje | Zabezpieczenie przed atakami kolizyjnymi (bity) |
Zabezpieczenie przed atakami wydłużającymi długość (bity) |
Wydajność w Skylake (mediana CPB ) | Opublikowane po raz pierwszy | ||
---|---|---|---|---|---|---|---|---|---|---|---|
Długie wiadomości | 8 bajtów | ||||||||||
MD5 (jako odniesienie) | 128 |
128 (4 × 32) |
512 | 64 | I, Xor, Or, Rot, Add (mod 2 32 ) |
≤ 18 (znaleziono kolizje) |
0 | 4,99 | 55.00 | 1992 | |
SHA-0 | 160 |
160 (5 × 32) |
512 | 80 | I, Xor, Or, Rot, Add (mod 2 32 ) |
< 34 (znaleziono kolizje) |
0 | ≈ SHA-1 | ≈ SHA-1 | 1993 | |
SHA-1 |
< 63 (znaleziono kolizje) |
3.47 | 52.00 | 1995 | |||||||
SHA-2 |
SHA-224 SHA-256 |
224 256 |
256 (8 × 32) |
512 | 64 |
I, Xor, Or, Rot, Shr, Add (mod 2 32 ) |
112 128 |
32 0 |
7,62 7,63 |
84,50 85,25 |
2004 2001 |
SHA-384 | 384 |
512 (8 × 64) |
1024 | 80 |
I, Xor, Or, Rot, Shr, Add (mod 2 64 ) |
192 | 128 (≤ 384) | 5.12 | 135,75 | 2001 | |
SHA-512 | 512 | 256 | 0 | 5.06 | 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 | I Xor, Rot, Not |
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 |
WSTRZĄŚNIJ 128 WSTRZĄŚNIJ 256 |
d (dowolny) d (dowolny) |
1344 1088 |
min( d /2, 128) min ( d /2, 256) |
256 512 |
7,08 8,59 |
155,25 155,50 |
Walidacja
Wszystkie algorytmy rodziny SHA, jako funkcje bezpieczeństwa zatwierdzone przez FIPS, podlegają oficjalnej walidacji przez CMVP (Cryptographic Module Validation Program), wspólny program prowadzony przez American National Institute of Standards and Technology ( NIST ) i Canadian Communications Security Establishment (CSE).