Cryptology Academy · Lekcja

OAEP: optymalne dopełnianie szyfrowania asymetrycznego

Prześledzić kodowanie OAEP i sposób osiągania bezpieczeństwa IND-CCA2

Lekcja 3 z 413 kroki

OAEP: optymalne dopełnianie szyfrowania asymetrycznego 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

OAEP (Optimal Asymmetric Encryption Padding) zapewnia szyfrowanie RSA z formalnie dowiedzionym bezpieczeństwem IND-CCA2. Wykorzystuje losowe kodowanie, które sprawia, że zapytania do wyroczni stają się kryptograficznie bezużyteczne.

Cele OAEP

OAEP zostało zaprojektowane przez Bellare’a i Rogawaya (1994) z dwoma celami: (1) zapobieganie wszystkim atakom na RSA w wersji podręcznikowej za pomocą randomizacji, (2) osiągnięcie bezpieczeństwa IND-CCA2 z formalnym dowodem bezpieczeństwa w modelu losowej wyroczni.

Dane wejściowe OAEP

M: wiadomość do zaszyfrowania (|M| ≤ |n| - 2*hLen - 2 bytes) L: opcjonalna etykieta (zwykle pusta) MGF: Mask Generation Function (na podstawie SHA-256) r: losowe ziarno (hLen bajtów)

Krok 1 kodowania OAEP: blok danych

DB = lHash || PS || 0x01 || M gdzie: - lHash = Hash(L) (skrót etykiety) - PS = bajty zerowe dopełniające do stałej długości - 0x01 oznacza początek wiadomości

Krok 2 kodowania OAEP: maskowanie

maskedDB = DB XOR MGF(r, len(DB)) maskedSeed = r XOR MGF(maskedDB, hLen) EM = 0x00 || maskedSeed || maskedDB Jest to wiadomość po dopełnieniu, przekazywana do szyfrowania RSA.

MGF1: Mask Generation Function

MGF1(Z, L) = Hash(Z || 0x00000000) || Hash(Z || 0x00000001) || ... MGF1 z SHA-256 generuje pseudolosowy wynik o dowolnej długości na podstawie ziarna. Jest używany w OAEP i RSA-PSS.

Dekodowanie OAEP

Mając EM: 1. Podziel EM na maskedSeed i maskedDB 2. r = maskedSeed XOR MGF(maskedDB, hLen) 3. DB = maskedDB XOR MGF(r, len(DB)) 4. Sprawdź zgodność lHash, znajdź separator 0x01 i wyodrębnij M 5. Dowolny błąd → deszyfrowanie nie powiodło się (zawsze ten sam błąd)

Dlaczego OAEP pokonuje ataki z wyrocznią

Losowe ziarno r w OAEP zmienia się przy każdym szyfrowaniu. Zmieniony szyfrogram z przytłaczającym prawdopodobieństwem zostanie odszyfrowany do równomiernie losowej wiadomości po dopełnieniu. Wyrocznia widzi „nieprawidłowe” dla wszystkich modyfikacji.

Bezpieczeństwo IND-CCA2

IND-CCA2 (Indistinguishability under Chosen-Ciphertext Attack 2): atakujący nie może odróżnić Enc(M0) od Enc(M1), nawet mając dostęp do wyroczni deszyfrującej dla wszystkich szyfrogramów poza szyfrogramem będącym wyzwaniem. OAEP zapewnia tę własność.

OAEP a v1.5 w praktyce

Biblioteka Python cryptography: używaj padding.OAEP(), a nie padding.PKCS1v15(). Java: używaj szyfru 'RSA/ECB/OAEPWithSHA-256AndMGF1Padding'. W nowym kodzie nigdy nie używaj 'RSA/ECB/PKCS1Padding'.

Maksymalny rozmiar wiadomości OAEP

Dla RSA-2048 z SHA-256: Max message = 256 - 2×32 - 2 = 190 bytes Narzut OAEP wynosi 2×hLen + 2 bajty. W przypadku dłuższych wiadomości użyj szyfrowania hybrydowego AES: zaszyfruj klucz AES za pomocą OAEP, a dane — za pomocą AES-GCM.

Szybkie sprawdzenie

Jaka właściwość sprawia, że OAEP jest odporne na ataki z wyrocznią dopełniania?

Podsumowanie

OAEP zapewnia bezpieczeństwo szyfrowania RSA poparte dowodem. Następnie omówimy RSA-PSS — analogiczne ulepszenie dla podpisów RSA.
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 „OAEP: optymalne dopełnianie szyfrowania asymetrycznego” jest bezpłatna?

Tak — pełny tekst „OAEP: optymalne dopełnianie szyfrowania asymetrycznego” 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 „OAEP: optymalne dopełnianie szyfrowania asymetrycznego”?

Prześledzić kodowanie OAEP i sposób osiągania bezpieczeństwa IND-CCA2 Ć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 „OAEP: optymalne dopełnianie szyfrowania asymetrycznego”?

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. RSA w wersji podręcznikowej i powody jego niebezpieczeństwa
  2. Dopełnianie PKCS#1 v1.5 i atak Bleichenbachera
  3. OAEP: optymalne dopełnianie szyfrowania asymetrycznego
  4. RSA-PSS do podpisów cyfrowych
← Powrót do Cryptology Academy