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.

Porównanie funkcji SHA
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).