Cryptology Academy · Lekcja

Podpisy RSA: podpisywanie i weryfikacja

Prześledzić obliczenia związane z podpisywaniem skrótu dokumentu kluczem prywatnym

Lekcja 2 z 413 kroki

Podpisy RSA: podpisywanie i weryfikacja 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

Podpisy RSA odwracają role kluczy: klucz prywatny służy do podpisywania, a klucz publiczny do weryfikacji. Dzięki temu każdy może zweryfikować tożsamość osoby podpisującej za pomocą jej klucza publicznego.

Matematyka podpisywania RSA

Aby podpisać wiadomość M kluczem prywatnym (d, n): 1. H = SHA256(M) 2. sig = H^d mod n Podpis jest liczbą o takiej samej długości bitowej jak n.

Matematyka weryfikacji RSA

Aby zweryfikować podpis sig za pomocą klucza publicznego (e, n): 1. H' = sig^e mod n 2. H = SHA256(M) 3. Podpis jest poprawny, jeśli H == H' Każdy, kto ma klucz publiczny, może przeprowadzić weryfikację — nie jest potrzebny żaden sekret.

Dopełnianie podpisu PKCS#1 v1.5

Surowe podpisy RSA są podatne na modyfikacje. PKCS#1 v1.5 dopełnia skrót przed podpisaniem: 0x00 0x01 [0xFF padding] 0x00 [DigestInfo] [Hash] Podczas weryfikacji sprawdzana jest dokładna struktura dopełnienia.

RSA-PSS: lepsze dopełnianie

RSA-PSS (Probabilistic Signature Scheme) wykorzystuje losową sól, dzięki czemu każdy podpis jest inny, nawet dla tej samej wiadomości. Jest dowodliwie bezpieczny w modelu losowej wyroczni. Jest preferowany względem PKCS#1 v1.5.

Podpisywanie RSA w Pythonie (PSS)

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

Weryfikacja RSA w Pythonie

try: public_key.verify( signature, message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() ) print('Valid!') except InvalidSignature: print('Invalid!')

Długość podpisu

Podpis RSA-2048: 256 bajtów. RSA-4096: 512 bajtów. Podpis ECDSA-256: około 71 bajtów (zmienna długość kodowania DER). Podpis zawiera pełny wynik potęgowania modularnego.

Ślepe podpisy

Ślepy podpis umożliwia osobie podpisującej podpisanie wiadomości bez wglądu w jej treść. Stosuje się go w głosowaniu elektronicznym i elektronicznej gotówce: bank podpisuje zaślepiony token, a użytkownik usuwa zaślepienie — powstaje gotówka niemożliwa do prześledzenia.

Podpis RSA w łańcuchu certyfikatów

Let's Encrypt podpisuje certyfikat serwera za pomocą prywatnego klucza RSA pośredniego urzędu certyfikacji. Klucz publiczny serwera znajduje się w treści certyfikatu. Klienci TLS automatycznie weryfikują ten łańcuch.

Przejrzystość certyfikatów

Certificate Transparency rejestruje wszystkie wydane certyfikaty w kryptograficznie weryfikowalnym drzewie Merkle'a. Signed Certificate Timestamps (SCTs) potwierdzają uwzględnienie certyfikatu w rejestrze przed jego wydaniem.

Szybki sprawdzian

Którego klucza używa się do weryfikacji podpisu RSA?

Podsumowanie

Podpisy RSA są bezpieczne przy prawidłowym dopełnianiu. Następnie porównamy schematy podpisów RSA, DSA i ECDSA.
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 „Podpisy RSA: podpisywanie i weryfikacja” jest bezpłatna?

Tak — pełny tekst „Podpisy RSA: podpisywanie i weryfikacja” 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 „Podpisy RSA: podpisywanie i weryfikacja”?

Prześledzić obliczenia związane z podpisywaniem skrótu dokumentu kluczem prywatnym Ć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 „Podpisy RSA: podpisywanie i weryfikacja”?

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. Czym jest podpis cyfrowy?
  2. Podpisy RSA: podpisywanie i weryfikacja
  3. Schematy podpisów DSA i ECDSA
  4. Podpisy w praktyce: podpisywanie kodu i poczty e-mail
← Powrót do Cryptology Academy