0Pricing
Cryptology Academy · Lekcja

Schematy podpisów DSA i ECDSA

Porównać podpisy RSA z DSA i jego wariantem opartym na krzywych eliptycznych

Schematy podpisów DSA i ECDSA 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

DSA i ECDSA to alternatywne schematy podpisów wykorzystujące trudność problemu logarytmu dyskretnego. ECDSA dominuje we współczesnych systemach dzięki mniejszym kluczom i szybszym operacjom.

Przegląd DSA

DSA (NIST, 1994) wykorzystuje cykliczną grupę rzędu pierwszego q w obrębie Z*p. Generowanie kluczy: klucz prywatny x; klucz publiczny y = g^x mod p. Standardowe rozmiary: p o długości 2048 bitów, q o długości 256 bitów.

Algorytm podpisywania DSA

1. Wygeneruj losowy nonce k (1 < k < q) 2. r = (g^k mod p) mod q 3. s = k^(-1) × (Hash(M) + x×r) mod q 4. Podpis: (r, s)

Weryfikacja DSA

1. u1 = Hash(M) × s^(-1) mod q 2. u2 = r × s^(-1) mod q 3. v = (g^u1 × y^u2 mod p) mod q 4. Poprawny, jeśli v == r

Podatność DSA związana z nonce

Jeśli ta sama wartość k zostanie użyta dwukrotnie, oba podpisy będą miały wspólne r. Na podstawie dwóch par (r,s1) i (r,s2) można bezpośrednio obliczyć klucz prywatny x. Doprowadziło to do zniszczenia zabezpieczeń PS3 (k=1 było używane za każdym razem).

Przegląd ECDSA

ECDSA to DSA zrealizowane w grupie krzywej eliptycznej zamiast Z*p. Krzywa zapewnia równoważny poziom bezpieczeństwa przy znacznie mniejszych parametrach: ECDSA-256 ≈ DSA-3072 pod względem bezpieczeństwa.

ECDSA w Pythonie

from cryptography.hazmat.primitives.asymmetric import ec from cryptography.hazmat.primitives import hashes private_key = ec.generate_private_key(ec.SECP256R1()) sig = private_key.sign(message, ec.ECDSA(hashes.SHA256())) public_key = private_key.public_key() public_key.verify(sig, message, ec.ECDSA(hashes.SHA256()))

Deterministyczny ECDSA (RFC 6979)

RFC 6979 wyprowadza k w sposób deterministyczny z klucza prywatnego i skrótu wiadomości. Eliminuje to zależność od generatora liczb losowych i uniemożliwia ponowne użycie nonce. Wszystkie nowoczesne implementacje korzystają z RFC 6979.

EdDSA: Ed25519

Ed25519 (Edwards-curve DSA) wykorzystuje skręconą postać krzywej Edwardsa Curve25519. Jest deterministyczny z założenia. Działa w czasie stałym. Jest szybszy niż ECDSA. Jest zalecany w nowych protokołach (klucze SSH, TLS 1.3, Signal).

Porównanie rozmiarów kluczy

Podpis RSA-2048: 256 bajtów. Podpis ECDSA-256: około 71 bajtów. Podpis Ed25519: 64 bajty. Klucz publiczny Ed25519: 32 bajty. Różnica rozmiarów ma znaczenie w przypadku urządzeń o ograniczonych zasobach.

Standardowe krzywe

NIST P-256 (secp256r1): TLS, zgodność z FIPS. secp256k1: Bitcoin, Ethereum. Curve25519/Ed25519: Signal, WireGuard, nowsze wersje SSH. Brainpool: niektóre europejskie standardy.

Szybki sprawdzian

Jaka katastrofalna podatność pojawia się w przypadku ponownego użycia nonce k w DSA/ECDSA?

Podsumowanie

Rozumieją już Państwo DSA, ECDSA i Ed25519. Następnie omówimy, jak podpisy cyfrowe chronią rzeczywiste aplikacje: podpisywanie kodu i wiadomości e-mail.

Często zadawane pytania

Czy lekcja „Schematy podpisów DSA i ECDSA” jest bezpłatna?

Tak — pełny tekst „Schematy podpisów DSA i ECDSA” 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 „Schematy podpisów DSA i ECDSA”?

Porównać podpisy RSA z DSA i jego wariantem opartym na krzywych eliptycznych Ć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 „Schematy podpisów DSA i ECDSA”?

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