Cryptology Academy · Lekcja

Rodzina SHA-1 i SHA-2

Poznaj słabość SHA-1 oraz różnice między SHA-256 i SHA-512.

Lekcja 3 z 413 kroki

Rodzina SHA-1 i SHA-2 to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Wprowadzenie

SHA-1 i SHA-2 to zaprojektowani przez NSA następcy MD5. SHA-1 został już wycofany. SHA-256 i SHA-512 pozostają standardem branżowym w większości zastosowań.

Przegląd SHA-1

SHA-1 generuje hash o długości 160 bitów (20 bajtów). Zaprojektowany przez NSA i opublikowany w 1995 roku. Przykład: SHA1('hello') = aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

Struktura SHA-1

SHA-1 wykorzystuje 80 rund podzielonych na 4 etapy po 20 rund. Każdy etap korzysta z innych funkcji logicznych (Ch, Parity, Maj). Rozszerza 16 słów wejściowych do 80 za pomocą operacji XOR i rotacji.

Kolizja SHA-1: SHAttered (2017)

W 2017 roku Google i CWI Amsterdam wytworzyły pierwszą praktyczną kolizję SHA-1 (atak SHAttered). Były to dwa pliki PDF o identycznych hashach SHA-1, ale różnej zawartości. Koszt: około 6500 lat obliczeń GPU.

Rodzina SHA-2

SHA-2 obejmuje: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 i SHA-512/256. Wszystkie warianty wykorzystują konstrukcję Merkle-Damgårda. Najczęściej używanym wariantem jest SHA-256.

Struktura SHA-256

SHA-256 wykorzystuje 64 rundy na blokach o długości 512 bitów. Przechowuje 8 słów stanu po 32 bity każde (a,b,c,d,e,f,g,h). W każdej rundzie miesza słowa wejściowe za pomocą funkcji Ch, Maj, Σ0 i Σ1.

SHA-256 w Pythonie

import hashlib msg = b'hello' digest = hashlib.sha256(msg).hexdigest() print(digest) # 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

SHA-512 a SHA-256

SHA-512 wykorzystuje 80 rund ze słowami 64-bitowymi i generuje 512 bitów. Jest szybszy na sprzęcie 64-bitowym, ale tworzy większe skróty. SHA-512 należy stosować, gdy potrzebny jest poziom bezpieczeństwa odpowiadający 256 bitom.

SHA-3 (Keccak)

SHA-3 został ustandaryzowany w 2015 roku jako alternatywna konstrukcja. Wykorzystuje konstrukcję gąbczastą zamiast Merkle-Damgårda, dzięki czemu jest odporny na ataki rozszerzenia długości.

Ataki rozszerzenia długości na SHA-2

SHA-256(secret || message) jest podatny na atak: atakujący znający Hash(message) może obliczyć Hash(message || padding || extra). Z tego powodu HMAC wykorzystuje konstrukcję z podwójnym haszowaniem.

Kiedy używać którego wariantu

SHA-256: zastosowania ogólne, TLS, certyfikaty i HMAC. SHA-512: aplikacje wymagające większego marginesu bezpieczeństwa. SHA-3: nowe protokoły, w których nie ma zagrożenia atakami rozszerzenia długości. W nowych projektach nigdy nie należy używać SHA-1 ani MD5.

Szybkie sprawdzenie

Jakiej konstrukcji używa SHA-3, dzięki czemu jest odporny na ataki rozszerzenia długości?

Podsumowanie

Mają już Państwo wiedzę o ewolucji rodziny SHA. Następnie omówimy praktyczne zastosowania hashy: sumy kontrolne, HMAC i wykorzystanie SHA przez Git.
Bezpłatny start

Ucz się Cryptology Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
67
Lekcje
261

Często zadawane pytania

Czy lekcja „Rodzina SHA-1 i SHA-2” jest bezpłatna?

Tak — pełny tekst „Rodzina SHA-1 i SHA-2” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Rodzina SHA-1 i SHA-2”?

Poznaj słabość SHA-1 oraz różnice między SHA-256 i SHA-512. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Rodzina SHA-1 i SHA-2”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Co wyróżnia dobrą funkcję skrótu
  2. MD5: historia, zastosowania i przyczyny złamania
  3. Rodzina SHA-1 i SHA-2
  4. Zastosowania funkcji skrótu: sumy kontrolne, HMAC i Git
← Powrót do Cryptology Academy