0Pricing
Cryptology Academy · Lekcja

Koncepcje MAC i ataki polegające na rozszerzeniu długości

Wyjaśnić, dlaczego dołączanie sekretu na początku jest niebezpieczne w obliczu rozszerzania długości

Koncepcje MAC i ataki polegające na rozszerzeniu długości to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 1 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

Kody uwierzytelniania wiadomości (MAC) zapewniają integralność i autentyczność dzięki wspólnemu tajnemu kluczowi. W tej lekcji poznamy MAC, ich właściwości oraz krytyczną podatność naiwnych hashy z kluczem.

Czym jest MAC?

MAC to krótki kod uwierzytelniający obliczany na podstawie wiadomości i tajnego klucza. Odbiorca posiadający ten sam klucz ponownie oblicza MAC i weryfikuje go. Uniemożliwia to fałszowanie bez znajomości klucza.

MAC a hash i podpis

Hash: bez klucza, publiczny, zapewnia wyłącznie integralność. MAC: wspólny tajny klucz, symetryczny, zapewnia integralność i autentyczność. Podpis cyfrowy: klucz prywatny, asymetryczny, zapewnia także niezaprzeczalność. Tylko podpisy zapewniają niezaprzeczalność.

Niemogućność sfałszowania

Bezpieczny MAC musi być egzystencjalnie odporny na fałszowanie w warunkach ataku z wyborem wiadomości (EUF-CMA): atakujący, który może pytać o MAC dla dowolnej wiadomości, nie może utworzyć poprawnego MAC dla nowej wiadomości, o którą wcześniej nie pytał.

Naiwny hash z kluczem: MAC z prefiksem

Naiwna próba: MAC(K, M) = H(K || M). Wygląda bezpiecznie, ale jest podatna na ataki rozszerzenia długości w przypadku funkcji skrótu Merkle’a-Damgårda (SHA-256, SHA-512, MD5).

Atak rozszerzenia długości

Stan SHA-256 po zhaszowaniu M to po prostu H(M). Mając H(K || M), atakujący może obliczyć H(K || M || padding || extra) dla dowolnej wartości „extra”, nie znając K. W ten sposób rozszerza wiadomość o nowe dane.

Praktyczne skutki ataku

Flickr (2009): API używało H(K || params). Atakujący dołączali &api_sig=forgery do uwierzytelnionych żądań. W rezultacie nieautoryzowane wywołania API wyglądały na poprawne. Był to czysty atak rozszerzenia długości.

MAC z sufiksem również zawodzi

MAC(K, M) = H(M || K): podatny na ataki offline. Atakujący oblicza H(message) bez K, a następnie używa ataku urodzinowego, aby znaleźć M' z tym samym haszem. Klucz jest dołączany po kolizji.

Dlaczego HMAC rozwiązuje ten problem

HMAC opakowuje hash dwukrotnie, używając różnych dopełnień klucza: HMAC(K, M) = H((K⊕opad) || H((K⊕ipad) || M)) Hash wewnętrzny tworzy H(ipad_key || M). Hash zewnętrzny opakowuje go za pomocą opad_key. Rozszerzenie długości kończy się niepowodzeniem, ponieważ atakujący nie może ustawić stanu początkowego zewnętrznego hasha.

SHA-3 a rozszerzenie długości

SHA-3 wykorzystuje konstrukcję sponge, która z natury jest odporna na ataki rozszerzenia długości. H_SHA3(K || M) jest poprawną prostą konstrukcją MAC. SHA-2 nie jest — zawsze należy używać HMAC z SHA-2.

Ataki czasowe podczas weryfikacji MAC

Porównywanie MAC z wcześniejszym wyjściem przy użyciu (==) ujawnia informacje przez czas wykonania. „Poprawny” pierwszy bajt zajmuje nieco więcej czasu niż „błędny” pierwszy bajt. Po 256 zapytaniach: znaleziono bajt 1. Po kolejnych 256: bajt 2. Pełny MAC można odzyskać w 16×256 zapytaniach.

Szybkie sprawdzenie

Dlaczego MAC(K, M) = SHA256(K || M) jest niebezpieczny?

Podsumowanie

Ataki rozszerzenia długości pokazują, dlaczego naiwne hashe z kluczem zawodzą. Następnie omówimy konstrukcję HMAC i dowód jej bezpieczeństwa.

Często zadawane pytania

Czy lekcja „Koncepcje MAC i ataki polegające na rozszerzeniu długości” jest bezpłatna?

Tak — pełny tekst „Koncepcje MAC i ataki polegające na rozszerzeniu długości” 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 „Koncepcje MAC i ataki polegające na rozszerzeniu długości”?

Wyjaśnić, dlaczego dołączanie sekretu na początku jest niebezpieczne w obliczu rozszerzania długości Ć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 1 z 4.

Ile czasu zajmuje lekcja „Koncepcje MAC i ataki polegające na rozszerzeniu długości”?

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. Koncepcje MAC i ataki polegające na rozszerzeniu długości
  2. Konstrukcja HMAC i dowód bezpieczeństwa
  3. HMAC w API: podpisywanie żądań
  4. CMAC i Poly1305: MAC oparte na szyfrze blokowym
← Powrót do Cryptology Academy