Jaka jest różnica między SHA-3 a SHA-256?

Jestem nowy w kryptografii. Dowiedziałem się, że SHA-3 (Secure Hash Algorithm 3) jest najnowszym członkiem rodzina standardów Secure Hash Algorithm, wydana przez NIST.

Ale ostatnio widziałem SHA-256, ale nie rozumiem, co to jest w porównaniu z SHA-3?

Komentarze

  • SHA-256 to SHA-2 z 256-bitowym wyjściem. SHA-2 to poprzednik SHA-3. Mają niewiele wspólnego poza nazwą.
  • Ale nazwa oddaje istotę, jeśli nie zajmujesz się kryptografią, wszystkie są algorytmami Secure Hash. Umowa i oświadczenia dotyczące bezpieczeństwa są prawie identyczne .
  • @MeirMaor Biorąc pod uwagę istnienie SHA-1, które wydaje się być odważnym stwierdzeniem.
  • @Maeher, SHA1 został stworzony z zasadniczo tymi samymi wymaganiami, teraz wiemy, że tak nie jest ' nie spełniają co najmniej wymagań dotyczących odporności na kolizje. Ma również mniejszy rozmiar wyjściowy, SHA3 może mieć taki sam rozmiar wyjściowy jak SHA2.

Odpowiedź

Główne różnice między starszą wersją SHA-256 rodziny SHA-2 FIPS 180 i nowszego SHA3-256 z rodziny SHA-3 FIPS 202 , to:

  • Odporność na ataki związane z wydłużaniem. Z SHA-256, podano $ H (m) $ ale nie $ m $ , łatwo jest znaleźć $ H (m \ mathbin \ | m „) $ dla niektórych przyrostków $ m” $ . Inaczej jest w przypadku żadnej z funkcji SHA-3.

    Oznacza to, np. , że $ m \ mapsto H (k \ mathbin \ | m) $ jest nie bezpiecznym kodem uwierzytelniającym wiadomość w kluczu $ k $ , gdy $ H $ to SHA-256, ponieważ znajomość wartości uwierzytelniającej w jednej wiadomości umożliwia sfałszowanie jej w innej. Właściwość rozszerzenia długości częściowo wpłynęła na rozwój HMAC.

    W przeciwieństwie do tego, konstrukcja klucza-prefiksu jest bezpieczna jak MAC, gdy $ H $ to dowolna z funkcji SHA-3 – lub jedna z nowszych funkcji SHA-2 SHA-512/224 i SHA-512/256. W przypadku SHA-224, które jest zasadniczo 224-bitowym obcięciem SHA-256 (ale z innym IV), przeciwnik ma 2 $ ^ {- 32} $ zgadywania odrzuconych bitów wyniku w pojedynczej próbie – małe, ale nie bez znaczenia.

  • Wydajność. Funkcje SHA-2 – szczególnie SHA-512, SHA-512/224 i SHA-512/256 – generalnie mają wyższą wydajność niż funkcje SHA-3. Częściowo wynikało to z paranoi i powodów politycznych w procesie projektowania SHA-3.

    (W odpowiedzi jeden z finalistów SHA-3 został wyrzucony do znacznie szybszego BLAKE2 , również obecnie szeroko stosowany w internecie, a zwycięzca SHA-3 Keccak został wyrzucony do znacznie szybszego KangarooTwelve . )

  • Zupełnie inny projekt wewnętrzny. SHA-2 używa Daviesa –Struktura Meyera, instancja struktury Merkle – Damgård, z szyfrem blokowym (czasami nazywanym SHACAL-2) zbudowanym z sieci ARX, jak MD4; SHA-3 używa struktury gąbki z permutacją Keccak.

    Nie ma tutaj widocznej dla użytkownika różnicy, ale zrobiło to różnicę dla kryptografów „zaufanie do projektów po wielu DM / Projekty ARX oparte na MD4 zostały złamane pod koniec lat 90. i na początku 2000 roku.


Historia. Istnieje długa linia funkcji skrótu znormalizowanych przez NIST w FIPS 180, Secure Hash Standard, a później w FIPS 202¸ SHA-3 Standard: Oparte na permutacji i rozszerzalne wyjście Funkcje. Więcej szczegółów i historii, w tym powiązane funkcje skrótu MD4 i MD5, na których oparto SHA-0, SHA-1 i SHA-2 – ale nie SHA-3:

\ begin {equation} \ begin {array} {ccc} \ text {hash} & \ text {year} & \ text {pot. res.} & \ text {rozmiar (bity)} & \ text {design} & \ text {uszkodzony?} \\ \ hline \ text {MD4} & 1990 & 64 & 128 & \ text {32-bitowy ARX DM} & 1995 \\ \ text {SHA-0 (SHA)} & 1993 & 80 & 160 & \ text {32 -bit ARX DM} & 1998 \\ \ text {MD5} & 1993 & 64 & 128 & \ text {32-bitowy ARX DM} & 2004 \\ \ text {SHA-1} & 1995 & 80 & 160 & \ text {32-bitowy ARX DM} & 2005 \\ \ hline \ text {SHA-256 (SHA-2)} & 2002 & 128 & 256 & \ text { 32-bitowy ARX DM} & \\ \ te xt {SHA-384 (SHA-2)} & 2002 & 192 & 384 & \ text {64-bitowy ARX DM} & \\ \ text {SHA-512 (SHA-2)} & 2002 & 256 & 512 & \ text {64-bitowy ARX DM} & \\ \ hline \ text {SHA-224 (SHA-2)} & 2008 & 112 & 224 & \ text {32-bitowy ARX DM} & \\ \ text {SHA-512/224} & 2012 & 112 & 224 & \ text {64-bitowy ARX DM} & \\ \ text {SHA-512/256 } & 2012 & 128 & 256 & \ text {64-bitowy ARX DM} & \\ \ hli ne \ text {SHA3-224} & 2013 & 112 & 224 & \ text {64-bitowa gąbka Keccak} & \\ \ text {SHA3-256} & 2013 & 128 & 256 & \ text {64-bitowa gąbka Keccak} & \\ \ text {SHA3-384} & 2013 & 192 & 384 & \ text {64-bitowa gąbka Keccak} & \\ \ text {SHA3-512 } & 2013 & 256 & 512 & \ text {64-bitowa gąbka Keccak} & \\ \ text {SHAKE128} & 2013 & {\ leq} 128 & \ text {any} & \ text {64-bitowa gąbka Keccak} \\ \ text {SHAKE256} & 2013 & {\ leq} 256 & \ text {any} & \ text {64-bitowa gąbka Keccak} \ end {array} \ end {equation}

  • W 1993 r. NIST opublikował FIPS 180 , Secure Hash Standard, definiując SHA-0 , pierwotnie nazwany SHA dla Secure Hash Algorithm, przeznaczone do użytku z nowo opublikowanym DSA. SHA-0 to pojedyncza 160-bitowa funkcja skrótu mająca na celu 80-bitowe zabezpieczenie przed kolizjami (teraz całkowicie zepsuta) na stosunkowo nowym i szybkim projekcie MD4 w 1990 roku.

  • W 1995 roku NIST po cichu wycofał FIPS 180 i zastąpił go FIPS 180-1 definiujący SHA-1 , który różni się od SHA-0 przez włączenie jednego -bitowa rotacja. Podobnie jak SHA-0, SHA-1 to pojedyncza 160-bitowa funkcja skrótu mająca na celu 80-bitowe zabezpieczenie przed kolizjami (teraz całkowicie zepsuta).

    Nie podano publicznego wyjaśnienia tej zmiany, ale wkrótce Eli Biham opublikował kryptoanalizę różnicową, a społeczność akademicka zdała sobie sprawę, że NSA modyfikuje skrzynki DES S w latach 70. faktycznie poprawiło bezpieczeństwo (nieważne, że zmniejszyło 128-bitowy rozmiar klucza Lucyfera do 56 bitów dla DES, całkowicie niszcząc jednocześnie bezpieczeństwo). W tym samym roku Dobbertin złamał MD4 [1] , aw następnym roku poważnie uszkodzony MD5 [2] . Niedługo potem, w 1998 r. Florent Chabaud i Antoine Joux zgłosili $ 2 ^ {61} $ -cost atak kolizyjny na SHA-0 [3] .

  • W 2002 roku NIST opublikował FIPS 180-2 , definiując SHA-2 , rodzina powiązanych funkcji skrótu o różnych rozmiarach: SHA- 256, SHA-384 i SHA-512, nazwane ze względu na ich rozmiary wyjściowe i mające na celu odpowiednio 112-, 128-, 192- i 256-bitową odporność na kolizje. SHA -2 funkcje kontynuowały zasady projektowania MD4, MD5, SHA-0 i SHA-1, z większą liczbą rund i większym stanem. Niedługo potem, w 2004 roku, zespół Xiaoyuna Wanga zgłosił pełne kolizje na MD5 i innych funkcjach skrótu [4] , aw 2005 opublikował 2 $ ^ {69} $ -koszt ataku na SHA-1 [5] , znacznie tańszy niż typowy. Ponieważ wiele projektów opartych na MD4 zostało zepsutych, wszyscy byli zdenerwowani tym projektem, więc…

  • W 2007 roku NIST ogłosił konkurs SHA-3 na zaprojektowanie następca SHA-2, na wypadek gdyby projekt okazał się zły. Konkurs trwałby kilka lat.

  • W międzyczasie w 2008 roku NIST zaktualizował Secure Hash Standard z FIPS 180-3 , dodając SHA-224 do rodziny SHA-2, a następnie w 2012 r. NIST zaktualizował ją ponownie o FIPS 180-4 (2012) , dodając SHA-512/224 i SHA-512/256 , szybsze 256-bitowe i 384-bitowe funkcje skrótu na maszynach 64-bitowych, odporne na ataki z rozszerzaniem długości, które pozwalają na obliczenia $ H (m \ mathbin \ | m „) $ podane $ H (m) $ i pewne $ m” $ bez znajomość $ mln .

  • W 2013 roku konkurs SHA-3 zakończył się zwycięstwem Keccaka jako wybranego przez NIST , który opublikowali w FIPS 202 . SHA-3 zawiera cztery funkcje skrótu o stałym rozmiarze, SHA3-224, SHA3-256, SHA3-384, SHA3-512 oraz dwie funkcje skrótu z możliwością rozszerzenia wyjścia SHAKE128 i SHAKE256 , które osiągają do 128-bitów lub 256 -bitowy poziom bezpieczeństwa, jeśli dane wyjściowe są wystarczająco długie.

    Konstrukcja SHA-3 jest zupełnie inna niż SHA-2, co daje pewność, że przełomy kryptoanalityczne w linii projektów opartych na MD4 prawdopodobnie nie wpłyną SHA-3, mimo że półtorej dekady po rzezi na początku 2000 roku nie było Nie ma również dużego postępu w SHA-2. Parametry wybrane dla funkcji SHA-3 o stałym rozmiarze zostały przypadkowo przeprojektowane z powodów politycznych [6] , więc funkcje SHA-3, takie jak SHA3-256, są wolniej niż to konieczne i generalnie powinieneś po prostu używać SHAKE128 lub SHAKE256.

Komentarze

  • Gdy powiedz " całkowicie uszkodzony ", o ile rozumiem, można obliczyć m1 , m2 taki, że H ( m1 ) = H ( m2 ). Jednak nikomu jeszcze nie udało się, mając ustaloną wiadomość M , obliczyć wiadomość m (różną od M ) taką, że H ( M ) = H ( m ).
  • @MartinBonner Tak, ja ' m mówię o odporności na kolizje tutaj, dlatego dwa słowa tuż przed „a teraz całkowicie zepsute” to „zabezpieczenie przed kolizją”. I ' nie zajmuję się tutaj odpornością na przedobraz, ponieważ bezpieczne użycie odpornej na przedobraz ale nie funkcji skrótu odpornej na kolizje to bardzo subtelne i ' staram się nie zostawiać pułapek na nieostrożnych czytelników ; Adresuję stan MD5 ' s preimage opór gdzie indziej , gdy ' s specjalnie zadane.

Odpowiedź

Różnica między SHA256 a SHA3

Główną różnicą między SHA256 i SHA3 jest ich wewnętrzny projekt algorytmu .

SHA2 (i SHA1) są budowane przy użyciu struktury Merkle – Damgård .

SHA3 z drugiej strony jest zbudowany przy użyciu Funkcja Sponge i należy do rodziny Keccak.

Nazwa może być myląca, sądząc, że SHA3 w porównaniu z SHA2 to tylko " nowsza " wersja algorytmu. Jak powiedział SEJPM: " […] Mają niewiele wspólnego poza nazwą." Nazwa pochodzi właśnie z NIST i oznacza " Bezpieczny algorytm mieszający ", rodzina oficjalnych standardów.

Chociaż możesz skonstruować MAC s z SHA256 i SHA3, SHA3 MAC jest łatwiejszy w użyciu (zobacz komentarz fgrieu poniżej).

Wyjście

SHA256 wysyła 256-bitowy hash.

SHA3 dopuszcza wyjścia

  • 224-bitowe
  • 256-bitowe
  • 384-bitowe
  • 512-bitowy

Hash, chociaż warianty SHA2 (SHA256 jest jednym z tych wariantów) również dopuszczają te długości.

Algorytmy SHA3 można zmodyfikować na " WSTRZĄŚNIJ " algorytmy i pozwalają na wyjście o dowolnej długości. Więcej informacji znajdziesz w to wcześniej zadane pytanie .

Bezpieczeństwo

Hashe, które używają tylko struktury Merkle – Damgård i wyświetlają pełne Stan l (lub prawie pełny) jest podatny na ataki przedłużające długość .

Algorytmy SHAKE są również przydatne w przypadku Optymalne asymetryczne dopełnienie szyfrowania .


Bezpośrednie porównanie możesz zobaczyć tutaj (wikipedia) .

Komentarze

  • Ściśle mówiąc, " Hashe korzystające z Merkle – Damg å struktura rd jest podatna na ataki przedłużające. " jest niepoprawne. Kontrprzykłady obejmują SHA-512/256 i SHA-384, ponieważ nie wyświetlają swojego pełnego stanu. Innym jest SHA-256d, zdefiniowany jako SHA-256d (m) = SHA-256 (SHA-256 (m)), ponieważ ukrywa stan pierwszego skrótu. Chodzi o to, że " Hashe, które tylko wykorzystują strukturę Merkle – Damg å rd i wyprowadzają swój pełny (lub prawie pełny) stan są podatne na ataki przedłużające ". Istnieje ' inna różnica między SHA-2 a SHA-3: późniejszy jest łatwiejszy w użyciu jako MAC.
  • Co masz na myśli przez " łatwiejszy w użyciu " jako MAC? Bezpieczniejsze / szybsze / implementacja?
  • Możemy zbudować MAC z argumentem bezpieczeństwa z SHA-3 jako $ \ text {SHA-3} (K \ | M) $ (dla jakiejś długości $ K $ to zależy od wariantu SHA-3 i powinno być uh, nie ' nie wiem na pewno); kiedy nie ' nie mamy takiego argumentu z SHA-2 (nawet jeśli właściwość rozszerzenia długości nie ma zastosowania). Zobacz sekcję 5.1.12 z Kryptograficzne funkcje gąbki .

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *