0Pricing
Cryptology Academy · Lekcja

RSA-PSS do podpisów cyfrowych

Poznać kodowanie PSS i sól oraz zrozumieć, dlaczego zastąpiło ono PKCS#1 v1.5 przy podpisywaniu

RSA-PSS do podpisów cyfrowych to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 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

RSA-PSS (Probabilistic Signature Scheme) jest bezpiecznym zamiennikiem podpisów PKCS#1 v1.5. Wykorzystuje losowe kodowanie, aby zapewnić podpisy z bezpieczeństwem popartym dowodem.

Słabości podpisów PKCS#1 v1.5

Podpisy PKCS#1 v1.5 wykorzystują deterministyczne kodowanie DigestInfo. Znane ataki fałszujące wykorzystują pobieżne implementacje weryfikacji. Bleichenbacher (2006) pokazał, że wobec niektórych weryfikatorów możliwe jest tworzenie fałszywych podpisów.

Cele projektowe PSS

Bellare i Rogaway, 1996: PSS dodaje losową sól, aby podpisy miały charakter probabilistyczny. Każde podpisanie daje inny podpis. Bezpieczeństwo jest dowiedzione w modelu losowej wyroczni — dzięki ścisłej redukcji do trudności problemu RSA.

Kroki kodowania PSS

1. mHash = Hash(M) 2. salt = random(sLen bytes) 3. M' = 0x00×8 || mHash || salt 4. H = Hash(M') 5. DB = PS || 0x01 || salt 6. dbMask = MGF1(H, emLen - hLen - 1) 7. maskedDB = DB XOR dbMask 8. EM = maskedDB || H || 0xbc

Wybór długości soli

Opcje PKCS#1 v2.2: - MAX_LENGTH: sól tak długa jak skrót (zalecane, maksymalne bezpieczeństwo) - DIGEST_LENGTH: salt = hash length (standard) - 0: deterministyczne PSS (traci właściwość probabilistyczną, niezalecane) Python: padding.PSS.MAX_LENGTH

Weryfikacja PSS

Odzyskaj EM = sig^e mod n. Odczytaj maskedDB i H. Oblicz M' na podstawie mHash (z wiadomości) i odzyskanej soli. Sprawdź, czy H == Hash(M'). Sól nie musi się zgadzać — weryfikacja musi powieść się jedynie dla H.

Porównanie bezpieczeństwa PSS i v1.5

PSS: bezpieczeństwo poparte dowodem, ścisła redukcja, podpisy probabilistyczne, nieco większy koszt obliczeniowy. v1.5: bezpieczeństwo oparte na heurystykach, deterministyczne działanie, większa szybkość, podatność na ataki z wyrocznią formatu. W całym nowym kodzie należy używać PSS.

PSS w TLS 1.3

TLS 1.3 wymaga RSA-PSS dla wszystkich podpisów RSA. PKCS#1 v1.5 jest zabronione w nowych rozszerzeniach TLS 1.3. Algorytmy podpisu: rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512.

PSS w Pythonie

from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives import hashes # Sign sig = private_key.sign( message, padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256() )

OID RSASSA-PSS

RSA-PSS ma własny identyfikator OID typu klucza: id-RSASSA-PSS (1.2.840.113549.1.1.10). Klucze generowane specjalnie dla PSS używają tego OID i wymagają podpisywania PSS (nie działają z v1.5). Jest to najlepsza praktyka w przypadku nowych wdrożeń.

Zalecenia dotyczące skróconych skrótów i soli

Bezpieczeństwo PSS = min(|modulus|/2, |hash|) - 1 bits, gdy salt_length = hash_length. Dla RSA-2048 z SHA-256: 128-bitowe bezpieczeństwo. Dopasuj poziom bezpieczeństwa: RSA-3072 + SHA-384 zapewnia 192-bitowe bezpieczeństwo.

Szybkie sprawdzenie

Co sprawia, że podpisy RSA-PSS są „probabilistyczne” w porównaniu z PKCS#1 v1.5?

Podsumowanie

RSA-PSS to bezpieczny sposób podpisywania za pomocą RSA. Następnie opanujemy kryptografię krzywych eliptycznych — zrozumiemy geometrię i algebrę krzywych.

Często zadawane pytania

Czy lekcja „RSA-PSS do podpisów cyfrowych” jest bezpłatna?

Tak — pełny tekst „RSA-PSS do podpisów cyfrowych” 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 „RSA-PSS do podpisów cyfrowych”?

Poznać kodowanie PSS i sól oraz zrozumieć, dlaczego zastąpiło ono PKCS#1 v1.5 przy podpisywaniu Ć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 4 z 4.

Ile czasu zajmuje lekcja „RSA-PSS do podpisów cyfrowych”?

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