0Pricing
Cryptology Academy · Lekcja

ECB a CBC: wzorce i wektory IV

Pokazać atak z pingwinem ECB i wyjaśnić, dlaczego CBC wymaga losowego IV

ECB a CBC: wzorce i wektory IV to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 2 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

ECB i CBC to dwa tryby szyfru blokowego. ECB jest powszechnie uznawany za niebezpieczny z powodu ujawniania wzorców. CBC z losowym wektorem IV jest znacznie bezpieczniejszy. Przyjrzyjmy się dokładnie obu trybom.

Tryb ECB: Electronic Codebook

ECB szyfruje każdy blok niezależnie: Ci = AES(K, Pi). Ten sam blok tekstu jawnego zawsze daje ten sam blok szyfrogramu. Bloki w jednej wiadomości lub w różnych wiadomościach są identyczne, jeśli ich zawartość się zgadza.

Pingwin ECB

„Pingwin ECB” to klasyczna demonstracja: zaszyfruj obraz PNG Tuxa, pingwina z systemu Linux, za pomocą AES-ECB. Wynik nadal przypomina pingwina — obszary o tych samych kolorach są szyfrowane do tych samych wzorców.

Podatność trybu ECB: powtarzanie bloków

W trybie ECB atakujący może zmieniać kolejność bloków szyfrogramu bez znajomości klucza: - Bloki są niezależne - Zmiana kolejności bloków → zmiana kolejności odszyfrowanego tekstu jawnego - Powielanie bloków → powielanie zawartości - Usuwanie bloków → usuwanie zawartości

Tryb CBC: Cipher Block Chaining

CBC wykonuje operację XOR każdego bloku tekstu jawnego z poprzednim blokiem szyfrogramu przed szyfrowaniem: C0 = AES(K, P0 XOR IV) Ci = AES(K, Pi XOR C(i-1)) Ten sam tekst jawny w różnych miejscach → inny szyfrogram.

Wektor inicjalizacyjny (IV)

IV pełni rolę „C(-1)” dla pierwszego bloku. Musi być: - Losowy i unikatowy dla każdej wiadomości - Niejawny (jest przesyłany razem z szyfrogramem) - Nigdy nieużywany ponownie z tym samym kluczem Przewidywalny IV łamie bezpieczeństwo CBC.

Odszyfrowywanie CBC

Pi = AES_Dec(K, Ci) XOR C(i-1) P0 = AES_Dec(K, C0) XOR IV Uwaga: do odszyfrowania bloku i potrzebne są tylko Ci i C(i-1). Bloki można odszyfrowywać równolegle (w przeciwieństwie do szyfrowania).

Atak CBC z odwracaniem bitów

Odwrócenie bitu i w bloku Ci powoduje: (1) zniekształcenie Pi, (2) przewidywalne odwrócenie bitu i w P(i+1). Bez uwierzytelniania atakujący może modyfikować konkretne bity tekstu jawnego, wiedząc, gdzie się znajdują.

Atak BEAST na TLS 1.0 (2011)

Atak BEAST wykorzystywał użycie przez TLS 1.0 trybu CBC z przewidywalnymi wektorami IV. Ostatni blok jednego rekordu był używany jako IV dla następnego. Atak zademonstrowali Rizzo i Duong, co wymusiło aktualizację przeglądarek do TLS 1.1 lub nowszego.

Dlaczego CBC wymaga uwierzytelniania

Szyfrowanie CBC bez kodu MAC umożliwia ataki z odwracaniem bitów i ataki typu padding oracle. Zawsze łącz CBC z HMAC (Encrypt-then-MAC) albo przełącz się na AES-GCM (z wbudowanym AEAD).

Praktyczne użycie CBC w Pythonie

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os iv = os.urandom(16) key = os.urandom(32) cipher = Cipher(algorithms.AES(key), modes.CBC(iv)) enc = cipher.encryptor() ciphertext = enc.update(padded_plaintext) + enc.finalize()

Szybkie sprawdzenie

Dlaczego tryb ECB ujawnia informacje o strukturze tekstu jawnego?

Podsumowanie

ECB jest niebezpieczny, a CBC jest lepszy, ale wymaga uwierzytelniania. Następnie omówimy tryb CTR — przekształcający AES w szyfr strumieniowy.

Często zadawane pytania

Czy lekcja „ECB a CBC: wzorce i wektory IV” jest bezpłatna?

Tak — pełny tekst „ECB a CBC: wzorce i wektory IV” 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 „ECB a CBC: wzorce i wektory IV”?

Pokazać atak z pingwinem ECB i wyjaśnić, dlaczego CBC wymaga losowego IV Ć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 2 z 4.

Ile czasu zajmuje lekcja „ECB a CBC: wzorce i wektory IV”?

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. Podstawy szyfrów blokowych i dopełnianie
  2. ECB a CBC: wzorce i wektory IV
  3. Tryb CTR i działanie szyfrów strumieniowych
  4. GCM i szyfrowanie uwierzytelnione
← Powrót do Cryptology Academy