1/55
Kryptografia asymetryczna i podpisy cyfrowe
Cel slajdu: Slajd wprowadza w tematykę kryptografii asymetrycznej i podpisów cyfrowych opartych na kluczach publicznych.

Kryptologia i bezpieczna wymiana informacji

Część 4 - Kryptografia asymetryczna: RSA, ECC, Diffie-Hellman i podpisy cyfrowe

Kryptografia asymetryczna (ang. Asymmetric Cryptography): Kryptografia asymetryczna wykorzystuje parę powiązanych matematycznie kluczy, z których publiczny można jawnie udostępniać, a prywatny musi pozostać tajny. Operację wykonaną jednym kluczem odwraca wyłącznie drugi klucz z pary, co umożliwia szyfrowanie bez wcześniejszej wymiany sekretu. Stanowi ona fundament podpisów cyfrowych, wymiany kluczy oraz nowoczesnej infrastruktury zaufania.
Kryptologia – Kryptografia asymetryczna i infrastruktura klucza publicznego PUB PRIV Algorytm RSA Faktoryzacja, OAEP Diffie-Hellman Wymiana sekretu Krzywe ECC P-256, Ed25519 Podpisy cyfrowe ECDSA, EdDSA, PQC Część 4: Kryptografia asymetryczna, RSA, Diffie-Hellman, ECC i podpisy cyfrowe
Schemat slajdu 1 – Kryptografia asymetryczna i podpisy cyfrowe
2/55
Spis treści części 4
Cel slajdu: Slajd przedstawia spis treści części czwartej, porządkujący drogę od RSA po kryptografię postkwantową.

Plan materiału

Plan wykładu (ang. Course Outline): Plan wykładu porządkuje materiał części czwartej od wprowadzenia i problemów matematycznych przez RSA, Diffiego-Hellmana i ECC aż po podpisy cyfrowe. Obejmuje także studium kolizji funkcji skrótu, szyfrowanie hybrydowe oraz kryptografię postkwantową. Taka kolejność ułatwia łączenie teorii z praktycznymi demonstracjami i analizą podatności.
Plan materiału – Przegląd kryptografii asymetrycznej i podpisów 1. Algorytm RSA i faktoryzacja • Para kluczy: moduł n, wykładniki e i d • Trudność rozkładu liczb pierwszych • Dopełnienia OAEP i PSS 2. Protokół Diffiego-Hellmana (DH) • Wymiana klucza przez podsłuchiwany kanał • Problem logarytmu dyskretnego (DLP) • Zagrożenie atakiem Man-in-the-Middle 3. Krzywe eliptyczne (ECC) • Geometria i algebra grup punktów • Skrajnie krótkie klucze (256 vs 3072 bity) • Standardy NIST P-256 oraz Curve25519 4. Podpisy cyfrowe i era PQC • Schemat Hash-then-Sign: ECDSA, Ed25519 • Atak Nonce Reuse (katastrofa Sony PS3) • Kryptografia postkwantowa NIST (ML-KEM) Program części 4 obejmuje matematykę, protokoły i wdrożenia kryptografii asymetrycznej
Schemat slajdu 2 – Spis treści części 4
3/55
Cele uczenia się
Cel slajdu: Slajd określa cele uczenia się, czyli umiejętności zdobywane przy kluczach publicznych i podpisach.

Kluczowe zagadnienia części 4

  • W2 - zna algorytmy kryptografii asymetrycznej: RSA, ECC, ElGamal, DH/ECDH; ich parametry (rozmiary kluczy, krzywe) i bezpieczeństwo.
  • W3 - rozumie działanie podpisów cyfrowych: schemat hash-then-sign, RSA-PSS, DSA, ECDSA, EdDSA; rola funkcji skrótu i paddingów.
  • U1 - potrafi dobrać algorytm do zastosowania: wybór rozmiaru klucza RSA/ECC, krzywej, metody podpisu zależnie od potrzeb (TLS, karty, dokumenty).
  • U2 - implementuje podstawowe mechanizmy: generowanie kluczy, szyfrowanie, podpisywanie i weryfikacja w Pythonie (cryptography/pycryptodome) i OpenSSL.
  • U3 - analizuje podatności: ponowne użycie nonce w ECDSA, kolizje MD5/SHA-1 w podpisach, atak MITM na DH.
Cele uczenia się (ang. Learning Objectives): Cele uczenia się określają wiedzę o algorytmach RSA, DH, ElGamala i ECC oraz rozumienie schematu podpisów hash-then-sign z paddingami. Obejmują umiejętność doboru rozmiaru klucza i krzywej do zastosowania w TLS, dokumentach czy kartach. Kładą również nacisk na implementację w Pythonie i OpenSSL oraz analizę podatności takich jak nonce reuse czy kolizje skrótów.
Kluczowe zagadnienia części 4 – Teoria i praktyka algorytmów asymetrycznych W2: Algorytmy asymetryczne • Znajomość budowy i parametrów: RSA (2048/3072/4096), DH/ECDH, ECC • Trudność problemów matematycznych: Faktoryzacja liczb złożonych, DLP i ECDLP • Dobór krzywych eliptycznych: Krzywe Weierstrassa (P-256) i Edwardsa W3: Podpisy cyfrowe i paddingi • Paradygmat Hash-then-Sign: Integralność + autentyczność + niezaprzeczalność • Schematy podpisów cyfrowych: RSA-PSS, DSA, ECDSA, Ed25519 (EdDSA) • Bezpieczeństwo implementacji: Rola OAEP i katastrofa ponownego użycia nonce Kluczowe efekty kształcenia obejmują algorytmy asymetryczne, protokoły DH i podpisy cyfrowe
Schemat slajdu 3 – Cele uczenia się
4/55
Kryptografia asymetryczna - wprowadzenie
Cel slajdu: Slajd wprowadza kryptografię asymetryczną z parą kluczy publicznej i prywatnej rozwiązującą dystrybucję kluczy.

Dwa klucze: publiczny i prywatny

  • Klucz publiczny: szyfrowanie wiadomości przeznaczonych dla właściciela i weryfikacja jego podpisów.
  • Klucz prywatny: deszyfrowanie przychodzących wiadomości i podpisywanie dokumentów - musi pozostać w tajemnicy.
  • Zalety: rozwiązanie problemu dystrybucji kluczy (klucz publiczny można jawnie rozesłać), podpisy cyfrowe, niezaprzeczalność.
  • Wady: znacznie wolniejsze niż kryptografia symetryczna (potęgowanie dużych liczb), większe klucze, wrażliwość na niedopracowane implementacje.
  • W praktyce asymetrii nie używa się do danych - służy do uzgodnienia klucza sesji (schemat hybrydowy, slajd 33).
Kryptografia klucza publicznego (ang. Public-Key Cryptography): Kryptografia klucza publicznego opiera się na parze kluczy, gdzie klucz publiczny służy do szyfrowania i weryfikacji podpisów, a prywatny do deszyfrowania i podpisywania. Rozwiązuje ona problem dystrybucji kluczy, ponieważ klucz publiczny można swobodnie rozsyłać. Jest znacznie wolniejsza od kryptografii symetrycznej, dlatego w praktyce służy głównie do uzgadniania klucza sesyjnego.
Para kluczy asymetrycznych – Role klucza publicznego i prywatnego 1. Poufność (Szyfrowanie) Szyfrowanie (Nadawca): Używa KLUCZA PUBLICZNEGO odbiorcy Deszyfrowanie (Odbiorca): Wyłącznie KLUCZEM PRYWATNYM odbiorcy Każdy może zaszyfrować, 1 odczyta 2. Autentyczność (Podpis) Podpisywanie (Twórca): Używa swojego KLUCZA PRYWATNEGO Weryfikacja (Cały świat): KLUCZEM PUBLICZNYM twórcy Tylko 1 utworzy, każdy zweryfikuje Para kluczy asymetrycznych realizuje podwójną rolę: poufność wiadomości lub podpis cyfrowy
Schemat slajdu 4 – Kryptografia asymetryczna - wprowadzenie
5/55
Problem matematyczny - ogólne pojęcia
Cel slajdu: Slajd wyjaśnia ogólne pojęcia trudnych problemów matematycznych leżących u podstaw klucza publicznego.

Funkcje jednokierunkowe

  • Faktoryzacja liczb (problem RSA): łatwo pomnożyć p x q = n, trudno rozłożyć duże n na czynniki pierwsze.
  • Logarytm dyskretny (problem DH): łatwo obliczyć g^a mod p, trudno z wyniku odtworzyć wykładnik a.
  • Logarytm dyskretny na krzywych eliptycznych (ECDLP): łatwo policzyć Q = k*P (mnożenie punktu), trudno odtworzyć k z Q.
  • Bezpieczeństwo opiera się na przypuszczeniu o trudności tych problemów - nie na dowodzie (jak w teorii informacji dla OTP).
  • Komputer kwantowy z algorytmem Shora zagrażałby wszystkim trzem problemom - stąd kierunek post-kwantowy (slajd 34).
Funkcja jednokierunkowa z zapadnią (ang. Trapdoor One-Way Function): Funkcja jednokierunkowa z zapadnią jest łatwa do obliczenia w jedną stronę, lecz praktycznie nieodwracalna bez dodatkowej tajnej informacji. W kryptografii asymetrycznej rolę tę pełnią faktoryzacja liczb, logarytm dyskretny oraz logarytm dyskretny na krzywych eliptycznych. Bezpieczeństwo opiera się na przypuszczeniu o ich trudności, które podważałby skuteczny komputer kwantowy z algorytmem Shora.
Funkcje jednokierunkowe z zapadnią – Matematyczny fundament kryptografii asymetrycznej Wejście x np. liczby pierwsze p, q ŁATWE f(x) Wynik y = f(x) Iloczyn n = p × q BEZ ZAPADNI: NIEMOŻLIWE (faktoryzacja n) ZAPADNIA (Trapdoor K) Odtwarza x! Funkcja z zapadnią: prosta w obliczeniu, nie do odwrócenia bez sekretnej informacji (klucza prywatnego)
Schemat slajdu 5 – Problem matematyczny - ogólne pojęcia
6/55
RSA - historia
Cel slajdu: Slajd przedstawia historię RSA od memorandum MIT po publikację pierwszego pełnego systemu klucza publicznego.

Rivest, Shamir, Adleman (1977)

  • Opracowany w MIT przez Rona Rivesta, Adiego Shamira i Leonarda Adlemana; ogłoszony w 1977 roku.
  • Pierwszy praktyczny system klucza publicznego - umożliwiał szyfrowanie i podpisy bez wcześniejszej wymiany sekretu.
  • Wcześniej (1976) Diffie i Hellman opublikowali koncepcję kryptografii klucza publicznego oraz protokół wymiany kluczy; rozwiązanie z RSA było pełnym systemem szyfrowania.
  • Patent z 1983 r. wygasł w 2000 r. - przez 17 lat ograniczał rozpowszechnienie; obecnie RSA w praktyce należy do domeny publicznej.
  • Znaczenie: fundament bezpiecznej komunikacji cyfrowej - TLS, PGP/GPG, podpisy elektroniczne, karty chipowe.
Algorytm RSA (ang. RSA Algorithm): Algorytm RSA, opracowany w MIT przez Rivesta, Shamira i Adlemana i ogłoszony w 1977 roku, był pierwszym praktycznym systemem klucza publicznego. Umożliwił szyfrowanie i podpisy cyfrowe bez wcześniejszej wymiany sekretu, uzupełniając koncepcję Diffiego i Hellmana z 1976 roku. Po wygaśnięciu patentu w 2000 roku stał się fundamentem TLS, PGP oraz podpisów elektronicznych.
Algorytm RSA – Historia, twórcy z MIT i geneza kryptosystemu Algorytm RSA – Ron Rivest, Adi Shamir, Leonard Adleman (MIT, 1977) Pierwszy w historii w pełni funkcjonalny algorytm szyfrowania i podpisu klucza publicznego R Ron Rivest • Architektura i projekt • Funkcje potęgowania • Późniejszy twórca MD5 S Adi Shamir • Kryptoanaliza i algebra • Schemat progowy (Shamir's Secret Sharing) A Leonard Adleman • Dowody matematyczne • Testy pierwszości • Pionier DNA computing RSA oparł bezpieczeństwo na problemie rozkładu iloczynu dwóch wielkich liczb pierwszych
Schemat slajdu 6 – RSA - historia
7/55
RSA - generowanie kluczy
Cel slajdu: Slajd wyjaśnia generowanie kluczy RSA poprzez wybór liczb pierwszych i wyznaczenie wykładników.

Jak powstaje para kluczy

  1. Wybór dwóch dużych liczb pierwszych p i q (losowych, porównywalnej długości, np. 1024-bitowych).
  2. Obliczenie modułu n = p * q (jawne, część obu kluczy).
  3. Obliczenie funkcji Eulera phi(n) = (p-1)(q-1) (tajne).
  4. Wybór wykładnika publicznego e względnie pierwszego z phi(n), zwykle e = 65537 (0x10001).
  5. Obliczenie wykładnika prywatnego d jako odwrotności e modulo phi(n): d*e ≡ 1 (mod phi(n)).
  6. Klucz publiczny: (n, e); klucz prywatny: (n, d). Znajomość p i q (lub phi(n)) pozwala odtworzyć d.
Jeśli atakujący potrafi rozłożyć n na p*q (faktoryzacja), klucz prywatny jest wyliczalny - dlatego klucze muszą być duże (2048+ bitów).
Generowanie kluczy RSA (ang. RSA Key Generation): Generowanie kluczy RSA polega na losowym wyborze dwóch dużych liczb pierwszych p i q oraz obliczeniu modułu n i funkcji Eulera phi. Następnie wybiera się publiczny wykładnik e względnie pierwszy z phi, zwykle 65537, oraz wyznacza prywatny wykładnik d jako odwrotność modularną e. Tajność rozkładu n na czynniki pierwsze gwarantuje, że znajomość e nie pozwala odtworzyć d.
Generowanie kluczy RSA – Moduł n, funkcja Eulera φ(n) i wykładniki e oraz d 1 Wybór liczb pierwszych: p, q (tajne, losowe, np. po 1024 bity) 2 Obliczenie modułu: n = p × q (jawny, część klucza) 3 Funkcja Eulera: φ(n) = (p - 1) × (q - 1) (ściśle tajne!) 4 Wykładnik publiczny: e = 65537 (standard FIPS, NWD(e, φ(n))=1) 5 Wykładnik prywatny: d = e⁻¹ mod φ(n) (klucz prywatny: d, n) Znajomość p i q pozwala wyliczyć φ(n) oraz klucz prywatny d; bez nich faktoryzacja n jest barierą
Schemat slajdu 7 – RSA - generowanie kluczy
8/55
RSA - szyfrowanie i deszyfrowanie
Cel slajdu: Slajd opisuje szyfrowanie i deszyfrowanie RSA jako potęgowanie modularne kluczem publicznym i prywatnym.

Potęgowanie modularne

  • Klucz e (publiczny) służy do zaszyfrowania; tylko właściciel d (prywatnego) odtwarza m - dzięki równości e*d ≡ 1 (mod phi(n)).
  • Poprawność wynika z twierdzenia Eulera: m^(phi(n)) ≡ 1 (mod n) dla gcd(m,n)=1; wtedy m^(e*d) = m^(k*phi(n)+1) = m.
  • Ograniczenie: m musi być < n - szyfrujemy małe fragmenty (klucze sesji), a nie całe pliki.
  • Potęgowanie dużym wykładnikiem wykonuje się efektywnie szybkim potęgowaniem (square-and-multiply, ok. log2(n) kroków).
Szyfrowanie RSA (ang. RSA Encryption): Szyfrowanie RSA realizuje potęgowanie modularne, w którym szyfrogram powstaje jako c równe m do potęgi e modulo n, a odszyfrowanie jako m równe c do potęgi d modulo n. Poprawność wynika z twierdzenia Eulera, ponieważ e pomnożone przez d przystaje do jedności modulo phi. Klucz publiczny szyfruje, a wyłącznie właściciel klucza prywatnego odtwarza wiadomość.
Potęgowanie modularne – Matematyczne formuły szyfrowania i deszyfrowania RSA Szyfrowanie (Klucz Publiczny) c = mᵉ mod n • m: wiadomość liczbowa (m < n) • e: najczęściej 65537 (2¹⁶ + 1) • Szybkie potęgowanie binarne Deszyfrowanie (Klucz Prywatny) m = cᵈ mod n • d: tajny wykładnik prywatny • Tożsamość: (mᵉ)ᵈ ≡ m mod n • Z twierdzenia Eulera (e·d ≡ 1) Odwracalność operacji wynika bezpośrednio z twierdzenia Eulera i arytmetyki modularnej
Schemat slajdu 8 – RSA - szyfrowanie i deszyfrowanie
9/55
RSA - przykład liczbowy
Cel slajdu: Slajd ilustruje działanie RSA na przykładzie liczbowym z małymi liczbami pierwszymi.

Małe liczby - pełny obieg

  1. Klucze: p = 61, q = 53; n = 61*53 = 3233; phi = 60*52 = 3120; wybieramy e = 17 (gcd(17,3120)=1).
  2. Klucz prywatny: d = 17^-1 mod 3120 = 2753 (sprawdzenie: 17*2753 = 46801 = 15*3120 + 1).
  3. Szyfrowanie: m = 65; c = 65^17 mod 3233 = 2790.
  4. Deszyfrowanie: 2790^2753 mod 3233 = 65 - odzyskaliśmy wiadomość.
Weryfikacja: python3 -c "print(pow(65,17,3233))" -> 2790 oraz python3 -c "print(pow(2790,2753,3233))" -> 65. Wszystko w arytmetyce modularnej.
Przykład liczbowy RSA (ang. RSA Numerical Example): Przykład liczbowy RSA z małymi liczbami pierwszymi p równym 61 i q równym 53 ilustruje pełny obieg od generowania kluczy po odszyfrowanie. Dla modułu 3233 i phi 3120 przy wykładniku e równym 17 klucz prywatny d wynosi 2753. Szyfrowanie wiadomości 65 daje szyfrogram 2790, którego podniesienie do potęgi d odtwarza pierwotną wartość.
Przykład liczbowy RSA – Weryfikacja krok po kroku dla małych liczb pierwszych Ścieżka obliczeniowa RSA dla p=61, q=53 1. Klucze: n = 61 × 53 = 3233 φ(n) = 60 × 52 = 3120 e = 17 (NWD(17, 3120) = 1) d = 17⁻¹ mod 3120 = 2753 (17 × 2753 = 46801 = 15×3120+1) 2. Test m = 65 ("A"): Szyfrowanie: c = 65¹⁷ mod 3233 = 2790 Deszyfrowanie: m = 2790²⁷⁵³ mod 3233 = 65 ! Mały przykład liczbowy ilustruje precyzyjną odwracalność szyfrowania i deszyfrowania RSA
Schemat slajdu 9 – RSA - przykład liczbowy
10/55
RSA - bezpieczeństwo
Cel slajdu: Slajd omawia bezpieczeństwo RSA oparte na trudności faktoryzacji dużych liczb złożonych.

Trudność faktoryzacji

  • Bezpieczeństwo RSA zależy od trudności rozkładu n na czynniki pierwsze (problem faktoryzacji liczb złożonych).
  • Aktualny rekord: RSA-250 (2020) - rozłożony 829-bitowy moduł kosztem ~2700 lat CPU; świadczy o granicy praktycznej faktoryzacji.
  • Rekomendowane rozmiary kluczy (SP 800-57): RSA-2048 = 112 bitów siły bezpieczeństwa (dopuszczalne do 2030 r.); RSA-3072 = 128 bitów, zalecane długoterminowo; 4096 bitów przy wymaganiach na 140+ bitów.
  • NIST SP 800-57 podaje okresy bezpieczeństwa: 112 bitów odporności dla RSA-2048, 128 dla RSA-3072 (od strony "security strength").
  • Efekt: klucze RSA są wielokrotnie większe od symetrycznych (2048-bitowy RSA ≈ 112-bitowy klucz symetryczny; poziom AES-128 osiąga dopiero RSA-3072).
Bezpieczeństwo RSA (ang. RSA Security): Bezpieczeństwo RSA zależy od praktycznej niewykonalności rozkładu dużego modułu n na czynniki pierwsze. Rekord faktoryzacji RSA-250 o długości 829 bitów pokazuje granice klasycznych ataków przy ogromnym koszcie obliczeniowym. Dlatego zaleca się klucze RSA-2048 o sile 112 bitów jako minimum do 2030 roku oraz RSA-3072 dla wyższego poziomu ochrony.
Trudność faktoryzacji – Sito GNFS, rekordy obliczeniowe i zalecenia rozmiaru kluczy Algorytm GNFS (Sito Ciał) • General Number Field Sieve Najszybszy znany algorytm faktoryzacji klasycznej na PC Złożoność subwykładnicza: exp((c + o(1)) (ln n)¹/³ (ln ln n)²/³) Szybciej niż pełny brute-force! Rekordy faktoryzacji RSA-768 (2009 r.): Złamany 768-bitowy moduł RSA-250 (2020 r.): Złamany moduł 829 bitów (~2700 lat CPU) Obecny standard IT: RSA-2048 / 3072 / 4096 bity (poza zasięgiem obliczeniowym) Rekord RSA-250 (829 bitów) potwierdza konieczność stosowania kluczy RSA o długości minimum 2048 bitów
Schemat slajdu 10 – RSA - bezpieczeństwo
11/55
RSA - ataki i podatności
Cel slajdu: Slajd przedstawia ataki i podatności RSA: mały wykładnik, wspólny moduł i zły generator losowy.

Słabe implementacje, nie sam szyfr

  • Wspólny moduł / mały wykładnik: n dzielone między użytkowników, e=3 bez paddingu, wspólne p - prowadzą do odtworzenia klucza (ataki algebraiczne Wienera, Håstada, Coppersmitha).
  • Atak wybranego szyfrogramu (Bleichenbacher, 1998): podatność formatu PKCS#1 v1.5 jako "wyroczni paddingu" - stąd zalecenie OAEP.
  • Atak czasowy (timing attack): zależność czasu deszyfrowania od danych/klucza - mierzalna przez sieć; obrona: implementacje o stałym czasie.
  • Brak losowości: deterministyczne szyfrowanie (bez paddingu) pozwala na sprawdzenie zgadniętej wiadomości (m^e = c).
  • Obrona: poprawny padding (OAEP/PSS), losowość, duży wykładnik, stały czas, bezpieczne biblioteki.
Ataki na RSA (ang. Attacks on RSA): Ataki na RSA wykorzystują zwykle słabe implementacje, a nie samą matematykę szyfru. Należą do nich wspólny moduł, mały wykładnik bez paddingu, ataki Wienera, Håstada i Coppersmitha oraz atak Bleichenbachera na PKCS#1 v1.5. Groźne są także ataki czasowe i na generatory losowe, które ujawniają klucz przez kanały boczne.
Podatności implementacji RSA – Mały wykładnik, atak Wienera i padding oracle 1 Mały wykładnik e=3 • Jeśli m³ < n: c = m³ (brak modulo!) • Pierwiastek 3. stopnia w ułamku sekundy Atak Håstada 2 Mały klucz d • Optymalizacja d dla szybszego deszyfru • Atak Wienera: Gdy d < (1/3) n¹/⁴ Ułamki łańcuchowe 3 Padding Oracle • Bleichenbacher (1998) na format PKCS#1 v1.5 • Odpowiedzi serwera ujawniają bajty m Wymusza OAEP Podatności RSA wynikają ze złych założeń implementacyjnych, a nie z samej matematyki szyfru
Schemat slajdu 11 – RSA - ataki i podatności
12/55
Wypełnianie (padding) w RSA
Cel slajdu: Slajd wyjaśnia wypełnianie OAEP i PKCS jako zabezpieczenie RSA przed atakami na szyfr deterministyczny.

OAEP i PSS - dlaczego są konieczne

  • PKCS#1 v1.5: dwa warianty wypełnienia - typ 2 (bajt 0x02, losowe bajty) dla szyfrowania, typ 1 (bajt 0x01, bajty 0xFF) dla podpisów; w szyfrowaniu podatne na atak Bleichenbachera - obecnie odradzane.
  • OAEP (Optimal Asymmetric Encryption Padding): dodaje losowy nonce i hash; przekształca RSA w szyfrowanie probabilistyczne - ten sam tekst jawny daje różne szyfrogramy.
  • PSS (Probabilistic Signature Scheme): bezpieczny schemat podpisu RSA z losowością i hashowaniem (zalecany np. w TLS 1.3, RFC 8446).
  • Bez paddingu RSA traci gwarancje bezpieczeństwa (deterministyczne szyfrowanie, ataki na strukturę).
Zasada: nigdy nie używaj "gołego" RSA. Zawsze OAEP do szyfrowania i wyłącznie PSS do podpisów (PKCS#1 v1.5 jest deterministyczny i podatny na opublikowane ataki).
Dopełnienie OAEP (ang. Optimal Asymmetric Encryption Padding): Dopełnienie OAEP przekształca deterministyczne RSA w szyfrowanie probabilistyczne poprzez dodanie losowości i funkcji skrótu przed potęgowaniem. Eliminuje ono wycieki struktury wiadomości oraz odporność na ataki wybranego szyfrogramu typowe dla PKCS#1 v1.5. W podpisach analogiczną rolę pełni probabilistyczny padding PSS, obecnie zalecany zamiast deterministycznego PKCS#1 v1.5.
Dopełnienia OAEP i PSS – Konieczność ochrony przed atakami na surowe RSA RSA-OAEP (Szyfrowanie) • Sieć Feistela z maskami MGF • Dodaje losowy wektor (Seed) Szyfrowanie probabilistyczne: Ten sam tekst jawny za każdym razem tworzy zupełnie inny szyfrogram! Odporność na IND-CCA2 RSA-PSS (Podpisy Cyfrowe) • Dopełnienie losową solą (Salt) • Dowód redukowalności bezpieczeństwa w modelu losowej wyroczni (ROM) Likwiduje podatności formatu starszego PKCS#1 v1.5 Standard RFC 8017 / TLS 1.3 Nowoczesne standardy RSA bezwzględnie wymagają OAEP dla szyfrowania oraz PSS dla podpisów
Schemat slajdu 12 – Wypełnianie (padding) w RSA
13/55
Wymiana kluczy Diffiego-Hellmana - problem
Cel slajdu: Slajd formułuje problem wymiany kluczy Diffiego-Hellmana bez uprzedniego bezpiecznego kanału.

Ustalenie wspólnego sekretu przez niezaufany kanał

  • Rozwiązanie dał Whitfield Diffie i Martin Hellman w 1976 r. - protokół wymiany kluczy.
  • Założenie: trudność rozwiązania problemu logarytmu dyskretnego w grupie multiplikatywnej modulo liczba pierwsza.
  • Protokół nie wymaga, by kanał był tajny - można po nim transmitować jawnie parametry.
  • Uwaga: DH nie uwierzytelnia stron - wrażliwy na atak Man-in-the-Middle (slajd 16) bez dodatkowych mechanizmów.
Problem wymiany kluczy (ang. Key Exchange Problem): Problem wymiany kluczy polega na uzgodnieniu wspólnego sekretu do szyfrowania symetrycznego wyłącznie przez podsłuchiwany kanał. Rozwiązanie Diffiego i Hellmana z 1976 roku wykorzystało trudność logarytmu dyskretnego w grupie modularnej. Pozwoliło to stronom bez wcześniejszego sekretu wyprowadzić identyczny klucz niedostępny dla podsłuchującego.
Protokół Diffiego-Hellmana – Ustalenie wspólnego sekretu przez podsłuchiwany kanał 👩 Alicja Sekret a A = gᵃ mod p Publiczny podsłuch (Ewa) Widzi parametry: p, g Widzi klucze publiczne: A oraz B NIE ZNA sekretu K = gᵃᵇ mod p! 👨 Bob Sekret b B = gᵇ mod p Wspólny sekret K = Bᵃ mod p = Aᵇ mod p Diffie i Hellman rozwiązali w 1976 r. fundamentalny problem wymiany klucza w obecności szpiega
Schemat slajdu 13 – Wymiana kluczy Diffiego-Hellmana - problem
14/55
Diffiego-Hellmana - protokół
Cel slajdu: Slajd opisuje protokół Diffiego-Hellmana jako uzgadnianie wspólnej tajemnicy przez potęgowanie modularne.

Schemat protokołu DH

  1. Parametry globalne (jawne): liczba pierwsza p i generator g (podstawa), g jest pierwiastkiem pierwotnym modulo p.
  2. Alicja: losuje tajny a, wysyła A = g^a mod p.
  3. Bob: losuje tajny b, wysyła B = g^b mod p.
  4. Wspólny sekret: K = B^a mod p (Alicja) = A^b mod p (Bob) = g^(ab) mod p.
  5. Bezpieczeństwo: przechwycone A i B nie dają a ani b (logarytm dyskretny) - K pozostaje tajny.
Wynikiem DH jest wspólny klucz K - nie szyfruje się nim bezpośrednio danych, tylko używa jako klucza do AES/GCM lub wyprowadza z niego klucze pochodne (KDF).
Protokół Diffiego-Hellmana (ang. Diffie-Hellman Protocol): Protokół Diffiego-Hellmana uzgadnia sekret poprzez wymianę publicznych wartości A równej g do potęgi a oraz B równej g do potęgi b modulo p. Każda strona podnosi otrzymaną wartość do własnego tajnego wykładnika, uzyskując wspólne g do potęgi ab modulo p. Przechwycenie samych wartości publicznych nie ujawnia sekretu bez rozwiązania logarytmu dyskretnego.
Schemat sekwencji DH – Przepływ komunikatów i obliczenie wspólnego sekretu Alicja (Sekret a) Bob (Sekret b) A = gᵃ mod p B = gᵇ mod p K = Bᵃ mod p K = gᵃᵇ mod p K = Aᵇ mod p K = gᵃᵇ mod p Wymiana publicznych potęg pozwala obu stronom zrekonstruować ten sam wspólny sekret gᵃᵇ
Schemat slajdu 14 – Diffiego-Hellmana - protokół
15/55
Diffiego-Hellmana - przykład
Cel slajdu: Slajd ilustruje wymianę Diffiego-Hellmana na przykładzie z małymi parametrami.

Mały przykład liczbowy

  1. Parametry: p = 23, g = 5 (jawne).
  2. Alicja: wybiera a = 6; wysyła A = 5^6 mod 23 = 15625 mod 23 = 8.
  3. Bob: wybiera b = 15; wysyła B = 5^15 mod 23 = 19.
  4. Sekret: Alicja liczy K = 19^6 mod 23; Bob liczy K = 8^15 mod 23; oba wyniki = 2 = 5^(6*15) mod 23.
  5. Atakujący widzi: p=23, g=5, A=8, B=19. Odtworzenie a=6 z "5^a ≡ 8 mod 23" = rozwiązanie logarytmu dyskretnego (dla dużych p - praktycznie niemożliwe).
Przykład protokołu DH (ang. DH Example): Przykład protokołu DH z parametrami p równym 23 i g równym 5 pokazuje pełne uzgodnienie sekretu dla małych liczb. Alicja z sekretem 6 wysyła 8, Bob z sekretem 15 wysyła 19, a obie strony niezależnie obliczają wspólny sekret 2. Odtworzenie wykładnika z samej wartości publicznej wymaga rozwiązania logarytmu dyskretnego, co dla dużych parametrów jest niewykonalne.
Przykład liczbowy DH – Weryfikacja wymiany kluczy modulo 23 Przykład DH: Moduł p = 23, Generator g = 5 Alicja: • Tajny wykładnik: a = 6 • Klucz publiczny A: A = 5⁶ mod 23 = 8 Obliczenie sekretu K: K = 19⁶ mod 23 = 2 Bob: • Tajny wykładnik: b = 15 • Klucz publiczny B: B = 5¹⁵ mod 23 = 19 Obliczenie sekretu K: K = 8¹⁵ mod 23 = 2 Obie strony uzyskują identyczny sekret K = 2, mimo że przesyłały wyłącznie wartości 8 i 19
Schemat slajdu 15 – Diffiego-Hellmana - przykład
16/55
Diffiego-Hellmana - atak MITM
Cel slajdu: Slajd pokazuje atak Man-in-the-Middle na Diffiego-Hellmana i potrzebę uwierzytelnienia stron.

Man-in-the-Middle (MITM)

  • Przebieg: Mallory generuje własne a' i b', wymienia A' i B' z każdą stroną osobno.
  • Skutek: powstają dwa klucze K_AM (z Alicją) i K_MB (z Bobem) - wszystkie wiadomości przechodzą przez Mallory'ego (odszyfruje, przeczyta, zaszyfruje ponownie).
  • Przyczyna: sam DH nie dowodzi tożsamości nadawcy - nie wiadomo, "z kim" szyfrujemy.
  • Rozwiązania: uwierzytelnianie kluczy (podpisy cyfrowe, certyfikaty X.509), IKE/IPsec, TLS z certyfikatami oraz protokoły zapewniające doskonałą tajność w przód (Perfect Forward Secrecy, PFS).
  • W TLS 1.3 jedynym uzgodnieniem klucza jest ECDHE (DHE usunięto), a serwer podpisuje cały transkrypt handshake (w tym efemeryczny key_share) kluczem z certyfikatu.
Atak Man-in-the-Middle (ang. Man-in-the-Middle Attack): Atak Man-in-the-Middle na protokół DH polega na podstawieniu przez napastnika własnych wartości kluczowych w obie strony komunikacji. Powstają wówczas dwa odrębne sekrety, dzięki czemu napastnik odszyfrowuje i modyfikuje wszystkie przekazywane wiadomości. Protokół bez uwierzytelnienia nie wykrywa podmiany, dlatego wymaga podpisów, certyfikatów lub stacji uwierzytelniającej.
Atak Man-in-the-Middle na Diffiego-Hellmana – Podstawienie kluczy i konieczność autentykacji Alicja Sekret a A = gᵃ Klucz K_AM Mallory (MITM) Sekrety m₁ oraz m₂ Wysyła M₁ do Alicji Wysyła M₂ do Boba Podsłuch i modyfikacja Bob Sekret b B = gᵇ Klucz K_MB Słabość czystego DH: brak uwierzytelnienia tożsamości stron! Rozwiązanie: Certyfikaty cyfrowe X.509 i podpisywanie kluczy efemerycznych (np. ECDHE w TLS) Atak MITM wymusza łączenie wymiany kluczy z podpisami cyfrowymi lub certyfikatami tożsamości
Schemat slajdu 16 – Diffiego-Hellmana - atak MITM
17/55
ElGamal - system klucza publicznego
Cel slajdu: Slajd przedstawia system ElGamala jako szyfrowanie klucza publicznego oparte na logarytmie dyskretnym.

Probabilistyczne szyfrowanie na logarytmie dyskretnym

  • Taher ElGamal, 1985: system szyfrowania klucza publicznego oparty na problemie logarytmu dyskretnego.
  • Szyfrowanie probabilistyczne: każda wiadomość m jest "maskowana" losowym k (jednorazowym): wysyła się parę c = (g^k mod p, m * g^(xk) mod p).
  • Klucz publiczny: (p, g, g^x); klucz prywatny: x.
  • Odszyfrowanie: aby odwrócić mnożenie, odbiorca oblicza (g^k)^x i dzieli (mnoży przez odwrotność).
  • Znaczenie: matematyczna podstawa DSA (podpisy) i protokołu zintegrowanego szyfrowania (ECIES na krzywych).
Szyfrowanie ElGamala (ang. ElGamal Encryption): Szyfrowanie ElGamala, zaproponowane w 1985 roku, jest probabilistycznym systemem klucza publicznego opartym na logarytmie dyskretnym. Każde szyfrowanie maskuje wiadomość świeżą losowością k, wysyłając parę wartości zależnych od klucza publicznego. Klucz prywatny pozwala usunąć maskę, natomiast ponowne użycie losowości ujawnia wiadomość i klucz.
Szyfrowanie ElGamal – Matematyka logarytmu dyskretnego i szyfrowanie probabilistyczne 1. Klucze ElGamal (DLP) • Grupa Z_p* z generatorem g • Klucz prywatny: x (losowy z Z_p) • Klucz publiczny: y = gˣ mod p Szyfrowanie wiadomości m: Losowy ephemeral key k: c = (gᵏ mod p, m · yᵏ mod p) 2. Deszyfracja i cechy • Deszyfrowanie kluczem x: s = (c₁)ˣ = (gᵏ)ˣ = gˣᵏ mod p m = c₂ · s⁻¹ mod p Szyfrowanie probabilistyczne: Różny k daje różne c dla tego samego m Ekspansja szyfrogramu: 2x długość ElGamal: szyfr klucza publicznego oparty na logarytmie dyskretnym i losowym kluczu efemerycznym
Schemat slajdu 17 – ElGamal - system klucza publicznego
18/55
Kryptografia krzywych eliptycznych - wprowadzenie
Cel slajdu: Slajd wprowadza kryptografię krzywych eliptycznych jako krótsze klucze przy tym samym bezpieczeństwie.

Krzywa eliptyczna i grupa punktów

  • Dodawanie punktów: suma P+Q to odbicie względem osi x trzeciego punktu przecięcia prostej PQ z krzywą (NIE sam punkt przecięcia) - podstawowa operacja grupy.
  • Podwajanie punktów: P+P = 2P - styczna do krzywej w punkcie P; wielokrotne mnożenie daje kP.
  • Mnożenie skalarne: Q = kP (k razy dodane P) - łatwe; problem odwrotny (znaleźć k z Q i P) nazywamy ECDLP.
  • Rzeczywiste krzywe działają nad ciałami GF(p) (pierwsze, duże p) - punkty są parami (x, y) modulo p.
Kryptografia krzywych eliptycznych (ang. Elliptic Curve Cryptography): Kryptografia krzywych eliptycznych wykorzystuje grupę punktów krzywej nad ciałem skończonym wraz z operacją dodawania zdefiniowaną geometrycznie. Zapewnia bezpieczeństwo porównywalne z RSA przy wielokrotnie krótszych kluczach, na przykład 256 bitów zamiast 3072 bitów. Małe klucze zmniejszają zużycie pamięci, energii i czasu obliczeń w urządzeniach mobilnych.
Krzywe eliptyczne – Geometria Weierstrassa i dodawanie punktów w grupie y² = x³ + ax + b P Q R = P + Q Algebra grupy punktów • Warunek gładkości krzywej: 4a³ + 27b² ≠ 0 (brak ostrzy) • Element neutralny: Punkt w nieskończoności O • Mnożenie skalarne punktu: Q = k · P = P + P + ... + P (k-krotne dodawanie punktu P) Abelowa grupa addytywna Krzywa eliptyczna tworzy grupę: suma punktów P i Q wyznaczana jest przez sieczną i odbicie osiowe
Schemat slajdu 18 – Kryptografia krzywych eliptycznych - wprowadzenie
19/55
ECC - matematyka
Cel slajdu: Slajd wyjaśnia matematykę ECC: dodawanie punktów krzywej i mnożenie skalarne.

ECDLP i dobór krzywych

  • Problem logarytmu dyskretnego na krzywej (ECDLP): dla danych P i Q = kP znalezienie k jest trudne (najlepsze algorytmy: rho Pollarda, ~O(sqrt(n))).
  • Krzywe nad ciałem GF(p) - współrzędne o długości 256 bitów dają bezpieczeństwo ~128 bitów (odpowiednik AES-128/RSA-3072).
  • Popularne krzywe: NIST P-256 (TLS), Curve25519 (nowoczesne protokoły), secp256k1 (Bitcoin), Ed25519 (podpisy).
  • Klucze ECC są krótsze niż RSA przy równoważnym bezpieczeństwie (ECC-256 ~ RSA-3072) - oszczędność pamięci i szybkość.
  • Uwaga: odpowiedni dobór krzywej ma znaczenie (unikanie krzywych z anomaliami); stosuje się standardowe krzywe wybrane przez społeczność.
Problem ECDLP (ang. Elliptic Curve Discrete Logarithm Problem): Problem ECDLP polega na odtworzeniu skalara k z punktów P oraz Q równego k razy P na krzywej eliptycznej. Najlepsze znane ataki, takie jak metoda rho Pollarda, mają złożoność pierwiastkową, co daje około 128 bitów bezpieczeństwa dla krzywych 256-bitowych. Bezpieczeństwo zależy od starannego doboru standardowych krzywych, takich jak P-256 i Curve25519.
Problem ECDLP i rozmiary kluczy – Porównanie efektywności ECC względem RSA Poziom bezpieczeństwa Rozmiar klucza RSA Rozmiar klucza ECC 80 bitów (legacy) 1024 bity 160 bitów 112 bitów 2048 bitów 224 bity 128 bitów (STANDARD) 3072 bity 256 bitów (P-256) 256 bitów (TOP SECRET) 15360 bitów ! 512 bitów (P-521) ECC zapewnia to samo bezpieczeństwo co RSA przy ponad 10-krotnie krótszych kluczach
Schemat slajdu 19 – ECC - matematyka
20/55
ECC - zastosowania
Cel slajdu: Slajd przedstawia zastosowania ECC w kartach, telefonach i TLS dzięki małym kluczom.

Gdzie ECC jest w praktyce

  • TLS/SSL: wymiana kluczy ECDHE (ephemeral ECDH) - domyślny tryb w TLS 1.3 (RFC 8446); certyfikaty ECC.
  • Podpisy: ECDSA i EdDSA (Ed25519) - kryptowaluty, systemy zarządzania, TLS, SSH.
  • Bitcoin i inne kryptowaluty: krzywa secp256k1 do podpisów transakcji (ECDSA), adresy z hashy kluczy.
  • Urządzenia IoT i karty: małe klucze (256 bitów) = mniej pamięci i energii; karty SIM/eSIM, tokeny.
  • Protokoły nowoczesne: WireGuard (Curve25519), Signal (X25519 + XEdDSA), OpenSSH (Ed25519).
Zastosowania ECC (ang. ECC Applications): Zastosowania ECC obejmują uzgadnianie kluczy ECDHE w TLS 1.3, podpisy ECDSA i EdDSA oraz kryptowaluty oparte na krzywej secp256k1. Krótkie klucze i szybkie operacje predestynują ECC do kart chipowych, IoT i telefonów. Certyfikaty ECC dodatkowo zmniejszają rozmiar transmisji podczas nawiązywania bezpiecznych połączeń.
ECC w praktyce – Zastosowania w TLS 1.3, SSH, WireGuard i systemach mobilnych TLS 1.3 / HTTPS (RFC 8446) • Ephemeral ECDHE jako domyślny • Certyfikaty X.509 ECDSA Błyskawiczny handshake 1-RTT WireGuard & SSH • Curve25519 (X25519) do wymiany • Ed25519 do uwierzytelniania Ultra-szybki, bezpieczny VPN Kryptowaluty (Blockchain) • Krzywa Koblitz secp256k1 • Bitcoin, Ethereum (ECDSA) Podpisywanie transakcji Smartfony i Karty SIM • Apple Secure Enclave / Android Keystore • Paszporty biometryczne (ICAO) Sprzętowe układy HSM ECC całkowicie zdominowało nowoczesne urządzenia mobilne, protokoły TLS i systemy IoT
Schemat slajdu 20 – ECC - zastosowania
21/55
Podpisy cyfrowe - wprowadzenie
Cel slajdu: Slajd wprowadza podpisy cyfrowe jako zapewnienie autentyczności, integralności i niezaprzeczalności.

Podpis = szyfrowanie kluczem prywatnym

  • Autentyczność: tylko posiadacz klucza prywatnego mógł utworzyć poprawny podpis.
  • Integralność: każda zmiana wiadomości sprawia, że podpis nie jest z nią zgodny.
  • Niezaprzeczalność: prawidłowo zweryfikowany podpis jest wiążący.
  • Podpis przez klucz prywatny, weryfikacja przez klucz publiczny - odwrotnie niż w szyfrowaniu.
  • To nie jest to samo co MAC: MAC wymaga wspólnego tajnego klucza (symetria), podpis cyfrowy - asymetrii.
Podpis cyfrowy (ang. Digital Signature): Podpis cyfrowy jest wartością kryptograficzną dowodzącą autentyczności nadawcy, integralności wiadomości oraz niezaprzeczalności. Może go utworzyć wyłącznie posiadacz klucza prywatnego, a każdy posiadacz klucza publicznego może go zweryfikować. Dowolna zmiana podpisanej treści unieważnia podpis, co ujawnia manipulację.
Istota podpisu cyfrowego – Autentyczność, integralność i niezaprzeczalność 🛡️ Autentyczność • Pewność tożsamości nadawcy wiadomości • Wyłącznie właściciel K_priv mógł złożyć podpis Tożsamość 🔒 Integralność • Gwarancja, że treść nie została zmieniona • Modyfikacja 1 bitu unieważnia weryfikację Nienaruszalność ⚖️ Niezaprzeczalność • Non-repudiation • Nadawca nie może wyprzeć się autorstwa • Skutek prawny Moc dowodowa Podpis cyfrowy realizuje jednocześnie autentyczność, integralność oraz moc dowodową
Schemat slajdu 21 – Podpisy cyfrowe - wprowadzenie
22/55
Procedura podpisywania i weryfikacji
Cel slajdu: Slajd opisuje procedurę podpisywania skrótem kluczem prywatnym i weryfikacji kluczem publicznym.

Krok po kroku

  1. Podpisywanie: nadawca liczy skrót wiadomości (hash, np. SHA-256), a następnie zaszyfrowuje skrót swoim kluczem prywatnym - otrzymuje podpis.
  2. Wysyła: wiadomość + podpis do odbiorcy.
  3. Weryfikacja: odbiorca odszyfrowuje skrót kluczem publicznym nadawcy i liczy skrót otrzymanej wiadomości.
  4. Porównanie: jeśli oba skróty się zgadzają, wiadomość pochodzi od właściciela klucza i nie była zmieniana.
W praktyce podpisuje się skrót (np. 256 bitów), a nie całą wiadomość - to oszczędza czas przy dużych plikach i zapobiega atakom na krótkie wiadomości. Zapis „zaszyfrowanie skrótu" to uproszczenie poglądowe: dla RSA oddaje sedno, natomiast DSA/ECDSA/EdDSA wykonują podpis jako odrębną operację matematyczną, a nie szyfrowanie skrótu.
Podpisywanie i weryfikacja (ang. Signing and Verification): Podpisywanie polega na obliczeniu skrótu wiadomości i przekształceniu go kluczem prywatnym nadawcy, a wynik dołącza się do wiadomości. Weryfikacja odtwarza skrót kluczem publicznym i porównuje go z niezależnie obliczonym skrótem odebranej treści. Zgodność obu wartości potwierdza pochodzenie i niezmienność danych.
Procedura Hash-then-Sign – Schemat tworzenia i weryfikacji podpisu 1. Tworzenie podpisu (Nadawca) 1. Obliczenie skrótu: h = H(M) 2. Złożenie podpisu kluczem prywatnym: σ = Sign(K_priv, h) Przesyłana paczka: Wiadomość M + Podpis σ 2. Weryfikacja (Odbiorca) 1. Obliczenie skrótu: h' = H(M) 2. Weryfikacja podpisem kluczem pub: Verify(K_pub, σ, h') == TRUE ? Porównanie skrótów: Zgodność = potwierdzenie integralności (praktycznie pewne) Podpis składa się na skrócie wiadomości, a weryfikacja polega na sprawdzeniu poprawności z K_pub
Schemat slajdu 22 – Procedura podpisywania i weryfikacji
23/55
Rodzaje podpisów cyfrowych
Cel slajdu: Slajd rozróżnia rodzaje podpisów cyfrowych: zwykłe, ślepe i progowe według zastosowań.

Schematy podpisów w praktyce

  • RSA-PSS (probabilistyczny, RFC 8017): oparty na RSA z paddingiem PSS i hashowaniem; stosowany w TLS, XMLDSig, elektronicznych podpisach dokumentów.
  • DSA (Digital Signature Algorithm, NIST): oparty na logarytmie dyskretnym modulo p; historycznie w rządowych zastosowaniach; wymaga losowego k. FIPS 186-5 (2023) nie zatwierdza już generowania podpisów DSA - dozwolone jest wyłącznie weryfikowanie podpisów zapisanych przed wejściem standardu w życie.
  • ECDSA: wariant DSA na krzywych eliptycznych; najpopularniejszy (Bitcoin, TLS, Java); kruchy przy ponownym użyciu k (nonce).
  • EdDSA (Ed25519, Ed448): nowoczesny, deterministyczny (brak losowego nonce w podstawowej wersji); szybki, używany w SSH, OpenSSH, Signal, TLS (WireGuard stosuje X25519 ECDH i ChaCha20-Poly1305, nie Ed25519).
  • Inne: podpisy post-kwantowe (ML-DSA/Dilithium, SLH-DSA/SPHINCS+, FN-DSA/Falcon - slajd 35).
Rodzaje podpisów cyfrowych (ang. Types of Digital Signatures): Rodzaje podpisów cyfrowych obejmują RSA-PSS oparty na faktoryzacji, historyczny DSA oparty na logarytmie dyskretnym oraz nowoczesne ECDSA i EdDSA. Różnią się założeniem matematycznym, wymaganą losowością i statusem normalizacyjnym, przy czym FIPS 186-5 wycofuje generowanie klasycznego DSA. Dobór schematu zależy od wymagań wydajności, rozmiaru podpisu i odporności na błędy implementacyjne.
Schematy podpisów cyfrowych – RSA-PSS, DSA, ECDSA oraz Ed25519 RSA-PSS • Probabilistyczny • Dowiedziony w ROM • Klucze 2048-4096b • Szybka weryfikacja Standard PKI DSA (NIST) • Oparty na DLP • FIPS 186 • Wymaga losowego k • Wolniejszy Przestarzały ECDSA • Krzywe eliptyczne • Krótkie klucze (256) • Bitcoin, TLS • Ryzyko Nonce! Szeroko używany Ed25519 • Deterministyczny • Krzywa Edwardsa • Brak ryzyka RNG • Najwyższa szybkość ZALECANY WYBÓR Nowoczesne systemy preferują deterministyczny podpis Ed25519 ze względu na odporność na błędy RNG
Schemat slajdu 23 – Rodzaje podpisów cyfrowych
24/55
DSA - algorytm
Cel slajdu: Slajd przedstawia algorytm DSA jako standard podpisów oparty na logarytmie dyskretnym.

Digital Signature Algorithm (NIST)

  • Standard (FIPS 186) oparty na problemie logarytmu dyskretnego w grupie modulo p, z podgrupą rzędu q.
  • Parametry: p (np. 2048 bitów), q (np. 256 bitów), g - generator podgrupy; klucz prywatny x, publiczny y = g^x mod p.
  • Podpis ma dwie części (r, s) z losowego k (jednorazowy nonce); hashowanie SHA-256 (zgodnie z FIPS 186).
  • Wymaga 160-bitowego hashu pierwotnie (SHA-1); obecnie dopuszcza się SHA-2 zamiast SHA-1 z q=256.
  • Ze względu na kruchość przy ponownym użyciu k i mniejszą efektywność - w nowszych zaleceniach zastępowany przez ECDSA i EdDSA.
Algorytm DSA (ang. Digital Signature Algorithm): Algorytm DSA, znormalizowany w FIPS 186, tworzy dwuczęściowy podpis r i s w oparciu o logarytm dyskretny w podgrupie rzędu q modulo p. Wykorzystuje klucz prywatny x i publiczny y oraz jednorazową losową wartość k dla każdego podpisu. Bezpieczeństwo wymaga kryptograficznie silnego generatora k, ponieważ jego przewidywalność ujawnia klucz prywatny.
Algorytm DSA – Specyfikacja FIPS 186, parametry p, q, g i para podpisu (r, s) Digital Signature Algorithm (DSA) - standard wycofany w 2023 r. Parametry globalne i klucze: • Duża liczba pierwsza p (2048 b) • Dzielnik pierwszy q (256 b) • Generator podgrupy rzędu q: g Klucz priv: x (0 < x < q) Klucz pub: y = gˣ mod p Para podpisu (r, s): • Losowy jednorazowy nonce k r = (gᵏ mod p) mod q s = k⁻¹(H(m) + x·r) mod q Wyciek k = ujawnienie klucza x! DSA wymaga bezwzględnie unikalnego i tajnego parametru k przy każdym pojedynczym podpisie
Schemat slajdu 24 – DSA - algorytm
25/55
ECDSA - algorytm
Cel slajdu: Slajd wyjaśnia algorytm ECDSA jako wariant DSA na krzywych eliptycznych stosowany w Bitcoinie.

Podpis na krzywych eliptycznych

  • ECDSA = DSA przeniesione na grupę punktów krzywej eliptycznej (ECDLP); podpis to para (r, s).
  • Składniki: krzywa E, punkt bazowy G, klucz prywatny d, publiczny Q = dG; skrót H(M) obcinany do długości rzędu grupy n (256 bitów dla P-256).
  • Weryfikacja: sprawdza równość w angażujących rachunkach punktów - poprawność potwierdza autentyczność i integralność.
  • Kluczowa podatność: jeśli ta sama wartość k (nonce) użyta w dwóch podpisach, z równości można odtworzyć klucz prywatny d (atak z 2 podpisów; sprawdził się m.in. na Sony PlayStation 3 w 2010 r. i w kradzieżach Bitcoinów na Androidzie w 2013 r.).
  • Losowość k jest krytyczna; dlatego deterministyczny wariant (RFC 6979) jest zalecany.
Algorytm ECDSA (ang. Elliptic Curve Digital Signature Algorithm): Algorytm ECDSA przenosi ideę DSA na grupę punktów krzywej eliptycznej, oferując krótsze klucze i podpisy przy tej samej sile. Podpis stanowi parę r i s obliczoną z klucza prywatnego d, punktu bazowego G oraz skrótu wiadomości. Weryfikacja sprawdza równanie na punktach krzywej, a bezpieczeństwo zależy od tajności i unikalności losowego nonce.
Podpis ECDSA – Generowanie pary (r, s) i weryfikacja na krzywej eliptycznej Generowanie podpisu ECDSA 1. Losowanie tajnego nonce k ∈ [1, n-1] 2. Obliczenie punktu na krzywej: (x₁, y₁) = k · G 3. Współrzędna r: r = x₁ mod n 4. Obliczenie s: s = k⁻¹(H(m) + d·r) mod n Podpis = Para (r, s) Weryfikacja podpisu (Q = d·G) 1. Obliczenie w = s⁻¹ mod n 2. Wagi: u₁ = H(m)·w, u₂ = r·w 3. Rekonstrukcja punktu: (x₂, y₂) = u₁·G + u₂·Q Test poprawności: x₂ mod n == r ? ECDSA opiera się na mnożeniu punktów k·G; podpis to zwięzła 64-bajtowa para (r, s)
Schemat slajdu 25 – ECDSA - algorytm
26/55
EdDSA (Ed25519) - algorytm
Cel slajdu: Slajd przedstawia algorytm EdDSA z krzywą Ed25519 jako szybszą i bezpieczniejszą alternatywę.

Nowoczesny, deterministyczny podpis

  • Bernstein, Duif, Lange, Schwabe i Yang (2011); Ed25519 oparty na krzywej Edwardsa edwards25519 (biracjonalnie równoważnej Curve25519); Ed448 - analogicznie.
  • Determinizm: nonce k wyprowadzany jest deterministycznie z klucza i wiadomości (RFC 8032) - brak uzależnienia od losowości = eliminacja ataku ponownego nonce.
  • Podpisy krótkie: 64 bajty (Ed25519), klucze 32 bajty; szybsze niż ECDSA na wielu platformach.
  • odporność na ataki kanałami bocznymi (side-channel) i błędy implementacyjne; używany w SSH, WireGuard, Signal, TLS, GnuPG.
  • Bezpieczne przy użyciu skrótu SHA-512; stały czas operacji w podstawowych wariantach.
Algorytm EdDSA (ang. Edwards-Curve Digital Signature Algorithm): Algorytm EdDSA, w wariancie Ed25519 na krzywej Edwardsa, jest nowoczesną deterministyczną alternatywą dla ECDSA. Wartość nonce wyprowadza deterministycznie z klucza prywatnego i wiadomości zgodnie z RFC 8032, co eliminuje katastrofalne skutki słabego generatora losowego. Oferuje szybszą weryfikację, mniejsze ryzyko kanałów bocznych i prostsze bezpieczne wdrożenie.
Podpis Ed25519 – Determinizm, krzywe Edwardsa i eliminacja błędów generatora RNG Ed25519: Deterministyczny Nonce • Koniec z losowaniem k z generatora! • Nonce wyprowadzany hashem: k = SHA-512(K_priv || M) Wysoka odporność na: • Słabe generatory losowe (Debian RNG) • Ataki ponownego użycia nonce (PS3) Zalety krzywej Edwardsa • Kompletne formuły dodawania (brak przypadków szczególnych dla O) • Wykonanie w stałym czasie (odporność na ataki czasowe cache) Ekspresowa wydajność: > 70 000 podpisów/s na typowym CPU Ed25519 (RFC 8032) to nowoczesny schemat podpisu zatwierdzony w FIPS 186-5
Schemat slajdu 26 – EdDSA (Ed25519) - algorytm
27/55
Podpisy z funkcjami skrótu - połączenie
Cel slajdu: Slajd pokazuje połączenie podpisów z funkcjami skrótu w schemacie hash-and-sign.

Dlaczego hash przed podpisaniem

  • Wydajność: długie dokumenty haszuje się raz, a podpisuje krótki skrót (np. 256 bitów).
  • Bezpieczeństwo: odporność funkcji skrótu na kolizje gwarantuje, że nie da się zastąpić wiadomości inną o danym podpisie.
  • Standaryzacja: ECDSA/SHA-256, RSA-PSS/SHA-256, Ed25519 (SHA-512) - w TLS 1.3 wymagane są wyłącznie szyfry AEAD i nowoczesne funkcje skrótu.
  • Ataki: jeśli funkcja skrótu ma kolizje (MD5, SHA-1), podpis można "przenieść" na inną wiadomość - dlatego NIST wymaga SHA-2/SHA-3.
Podpis hash-then-sign jest bezpieczny tylko wtedy, gdy funkcja skrótu jest odporna na kolizje. MD5 i SHA-1 są w podpisach TRWALE zabronione (collision attacks = fałszerstwo).
Schemat hash-then-sign (ang. Hash-then-Sign Scheme): Schemat hash-then-sign polega na haszowaniu długiego dokumentu i podpisywaniu wyłącznie krótkiego skrótu zamiast całej treści. Zapewnia wydajność oraz wiąże bezpieczeństwo podpisu z odpornością funkcji skrótu na kolizje. W praktyce stosuje się zestawy takie jak ECDSA z SHA-256, RSA-PSS z SHA-256 oraz Ed25519 z SHA-512.
Hash-then-Sign – Uzasadnienie wydajnościowe i matematyczne haszowania przed podpisem 1. Skrajna wydajność • Operacje asymetryczne (RSA/ECC) są około 1000 razy wolniejsze od haszowania! • Plik ISO 5 GB: Zamiast ok. 100 mln potęgowań RSA, plik haszuje się raz do 32 bajtów, a potęgowaniu ulega tylko skrót! Czas podpisu: < 1 ms 2. Bezpieczeństwo matematyczne • Ataki multiplikatywne na RSA: Dla surowego RSA: Sign(m₁·m₂) = Sign(m₁) · Sign(m₂) mod n (możliwość podrobienia podpisu!) • Funkcja H(M) niszczy strukturę: Brak własności multiplikatywnych Odporność na manipulacje Haszowanie przed podpisaniem zapewnia błyskawiczny czas operacji oraz niszczy zależności algebraiczne
Schemat slajdu 27 – Podpisy z funkcjami skrótu - połączenie
28/55
Podatności podpisów cyfrowych
Cel slajdu: Slajd omawia podatności podpisów: ponowne użycie nonce, zły generator i ataki na implementację.

Jak podpisy są łamane

  • Ataki na MD5/SHA-1: kolizje (Wang 2004/SHAttered 2017) pozwalają na podszycie podpisu "innej" wiadomości (sprawa Flame 2012 - fałszywe certyfikaty).
  • Chosen-prefix collisions: trudniejsze niż zwykłe kolizje - atakujący kontrolują początek obu komunikatów (wykorzystane w ataku na podpisy X.509 z MD5, 2008).
  • Niebezpieczne wypełnienia (naiwny RSA): brak paddingu PSS/OAEP umożliwia ataki algebraiczne (np. homomorfizm: mnożenie szyfrogramów odpowiada mnożeniu wiadomości).
  • Ponowne użycie nonce (DSA/ECDSA): odtworzenie klucza prywatnego z dwóch podpisów (katastrofalne w kryptowalutach: Sony PS3, kradzieże z blockchainu).
  • Podsumowując: implementacje, biblioteki i konfiguracje decydują o praktycznym bezpieczeństwie podpisów.
Podatności podpisów cyfrowych (ang. Digital Signature Vulnerabilities): Podatności podpisów cyfrowych wynikają z kolizji funkcji skrótu, niebezpiecznych paddingów oraz błędów implementacyjnych generatorów losowych. Kolizje MD5 i SHA-1 umożliwiły podstawianie innej treści pod istniejący podpis, co pokazały ataki z 2008 i 2012 roku. Szczególnie groźne jest ponowne użycie nonce w DSA i ECDSA, które bezpośrednio ujawnia klucz prywatny.
Wektory ataków na podpisy – Kolizje funkcji skrótu, powtórzenie nonce i ataki czasowe 1 Kolizje skrótów • Jeśli H(M₁) = H(M₂): Podpis pod M₁ jest ważny dla M₂! • Podrobienie umowy lub certyfikatu CA Złamanie MD5/SHA-1 2 Powtórzenie Nonce • Dwa podpisy ECDSA z tym samym k • Matematyczne wyliczenie klucza d w kilka sekund! Sony PS3 Hack 3 Kanały boczne • Analiza czasu (Timing) wykonania mnożenia • Analiza poboru mocy (DPA) w kartach SIM i układach smartcard Wymusza stały czas Złamanie podpisu wynika najczęściej ze słabej funkcji skrótu lub powtórzenia wartości nonce
Schemat slajdu 28 – Podatności podpisów cyfrowych
29/55
Bezpieczeństwo funkcji skrótu dla podpisów
Cel slajdu: Slajd wyjaśnia wymagania funkcji skrótu dla podpisów, zwłaszcza odporność na kolizje.

Jakiej funkcji skrótu używać

  • Wymaganie minimalne: skrót o co najmniej 256 bitach (odporność kolizyjna 2^128) - SHA-256, SHA-384, SHA-512, SHA3-256.
  • Zakaz MD5 i SHA-1 w podpisach (kolizje wykryte); przejście na SHA-2/SHA-3 zalecane przez NIST (FIPS 180-4, FIPS 202).
  • Przykłady błędów: podpisywanie skrótem MD5/SHA-1 w starych systemach (certyfikaty sprzed 2017) - historie fałszerstw.
  • Rekomendacje NIST (SP 800-131A Rev. 2): SHA-1 jest NIEDOZWOLONY do generowania podpisów już teraz; minimum SHA-256; SHA-256/384/512 dla ochrony długoterminowej; w systemach post-kwantowych kombinacje (np. ML-DSA/Dilithium ze SHAKE).
  • Równie ważny jest wybór paddingu (PSS) i bezpieczna implementacja (sprawdzona biblioteka, stały czas operacji - constant-time).
Bezpieczna funkcja skrótu (ang. Secure Hash Function): Bezpieczna funkcja skrótu do podpisów musi zapewniać co najmniej 256 bitów wyjścia, czyli około 128 bitów odporności na kolizje urodzinowe. Zalecane są SHA-256, SHA-384, SHA-512 oraz SHA3, natomiast MD5 i SHA-1 są zakazane z powodu praktycznych kolizji. Użycie słabego skrótu pozwala podmienić dokument bez unieważnienia podpisu.
Dobór funkcji skrótu – Rekomendacje bezpieczeństwa w podpisach cyfrowych BEZPIECZNE (Zalecane przez NIST) ✓ Rodzina SHA-2: • SHA-256 (odporność 2¹²⁸) • SHA-384 (odporność 2¹⁹²) • SHA-512 (odporność 2²⁵⁶) ✓ Rodzina SHA-3: • SHA3-256 / SHA3-512 (Keccak) Minimum 256 bitów skrótu ZAKAZANE W PODPISACH ✗ MD5 (128 bitów): • Kolizje generowane w milisekundy • Podrabianie certyfikatów SSL ✗ SHA-1 (160 bitów): • Złamany w 2017 r. (SHAttered) • Wycofany ze wszystkich przeglądarek Kategoryczny zakaz w PKI Podpisy cyfrowe wymagają funkcji skrótu o wyjściu minimum 256 bitów (SHA-256 lub SHA-3)
Schemat slajdu 29 – Bezpieczeństwo funkcji skrótu dla podpisów
30/55
Studium przypadku - atak na MD5 w podpisach
Cel slajdu: Slajd przedstawia atak na podpisy oparte o MD5 poprzez spreparowane kolizyjne certyfikaty.

Kolizje MD5 w praktyce (Wang, 2004)

  • Wang, Feng, Lai, Yu (2004): znaleźli praktyczną metodę konstruowania kolizji MD5 (dwa różne komunikaty, ten sam skrót); na współczesnym sprzęcie kolizję MD5 uzyskuje się w ułamku sekundy.
  • Sekwencja: generują pary z tym samym skrótem; na bazie bloku budują dwa różne zdania/pliki binarne o identycznym MD5.
  • Atak na podpisy: jeśli system podpisuje skrótem MD5, atakujący podstawia inną treść o tym samym skrócie - podpis wygląda na ważny.
  • Charakterystyczne wykorzystanie (2008/2009): Stevens i Sotirov przeprowadzili atak chosen-prefix na podpisy X.509 i sfałszowali certyfikat CA; ta sama klasa ataku (chosen-prefix collision na MD5) posłużyła do podrobienia podpisu Microsoftu (Flame, 2012; użyto nowego, nieopublikowanego wariantu ataku).
  • Wniosek: MD5 nie nadaje się do podpisów; systemy certyfikatów używają teraz SHA-2/SHA-3.
Kolizja MD5 (ang. MD5 Collision Attack): Kolizja MD5, praktycznie skonstruowana przez Wanga i współpracowników w 2004 roku, pozwala utworzyć dwa różne komunikaty o identycznym skrócie w ułamku sekundy. W podpisach umożliwiła wygenerowanie dwóch certyfikatów X.509 o tym samym podpisie, z których jeden był łagodny, a drugi złośliwy. Atak ten ostatecznie wyeliminował MD5 z zastosowań związanych z zaufaniem.
Studium przypadku – Fałszowanie certyfikatu Root CA poprzez kolizję MD5 (2008) LEGALNY CERTYFIKAT Zwykła domena Złożony wniosek do CA Hash MD5(Cert₁) ✍️ Podpis CA Zaufany urząd PODROBIONY ROOT CA Fałszywy Urząd CA! Ten sam Hash MD5(Cert₂)! Wystawia certyfikaty HTTPS Eksperyment z 2008 r.: kolizja MD5 pozwoliła stworzyć fałszywy, zaufany certyfikat Root CA
Schemat slajdu 30 – Studium przypadku - atak na MD5 w podpisach
31/55
Studium przypadku - atak SHA-1 (SHAttered)
Cel slajdu: Slajd opisuje atak SHAttered na SHA-1 jako praktyczną kolizję podważającą podpisy.

Pierwsza praktyczna kolizja SHA-1

  • Google + CWI Amsterdam (2017): pierwsze praktyczne kolizje SHA-1 - SHAttered; koszt ~110 GPU-lat i ~6500 lat CPU (ekwiwalent 2^63 operacji).
  • Wynik: dwa różne pliki PDF (SHAttered-1.pdf i SHAttered-2.pdf) o identycznym skrócie SHA-1 - ten sam podpis cyfrowy można przypisać obu treściom.
  • Wykorzystanie w podpisach: atak polegający na podszyciu podpisu opartego na SHA-1 (fałszywe dokumenty); także ataki chosen-prefix.
  • Skutki: przeglądarki i systemy zakazały SHA-1 w TLS/certyfikatach; Git przechodził na SHA-256; NIST zakazuje SHA-1 w podpisach.
  • Wniosek dydaktyczny: funkcje skrótu mają datę ważności - weryfikuj zgodność z aktualnymi zaleceniami.
Atak SHAttered (ang. SHAttered Attack): Atak SHAttered, ogłoszony przez Google i CWI w 2017 roku, dostarczył pierwszą praktyczną kolizję SHA-1 kosztem około 2 do potęgi 63 operacji. Dwa różne pliki PDF uzyskały identyczny skrót, więc ten sam podpis cyfrowy pasował do obu treści. Wynik przyspieszył wycofywanie SHA-1 z certyfikatów, podpisów i systemów kontroli wersji.
Kolizje SHA-1 a podpisy cyfrowe – Zagrożenie fałszowaniem dokumentów (SHAttered) Wpływ kolizji SHA-1 na ważność podpisów cyfrowych Plik A: Umowa na 1 000 PLN Hash: 38762cf7f559... Podpisano legalnie Plik B: Umowa na 1 000 000 PLN Hash: 38762cf7f559... Podpis jest matematycznie WAŻNY! Skutek praktyczny: podpis można przenieść na inny dokument; zgodnie z eIDAS skutek prawny ma podpis kwalifikowany Wymóg natychmiastowego przejścia na algorytmy SHA-256 / SHA-512 / SHA-3 Kolizja skrótu pozwala przenieść legalny podpis cyfrowy pod zupełnie inny, sfałszowany dokument
Schemat slajdu 31 – Studium przypadku - atak SHA-1 (SHAttered)
32/55
Wymiana kluczy w praktyce - wzorzec TLS
Cel slajdu: Slajd pokazuje wzorzec wymiany kluczy w TLS jako hybrydę asymetrycznego uzgodnienia i szyfru symetrycznego.

DH/ECDH + AES : wzorzec TLS

  • Cel: ustalić klucz sesji (symetryczny) do szyfrowania danych - TLS negocjuje to na początku każdej sesji.
  • Tryb z DH bez uwierzytelniania -> tryb z certyfikatami: TLS używa ECDHE (ephemeral) z podpisem wartości DH kluczem serwera.
  • Forward secrecy: ECDHE zapewnia, że złamanie klucza prywatnego serwera nie pozwala odszyfrować wcześniej nagranego ruchu (ephemeral k).
  • Wymiana hybrydowa: klucz symetryczny (np. 256-bitowy) szyfrowany na początku kryptografią asymetryczną, a dalej - AES-GCM.
  • Schemat ten (ECDHE + AES-GCM) jest domyślnym trybem TLS 1.3 (część 5).
Wymiana kluczy w TLS (ang. Key Exchange in TLS): Wymiana kluczy w TLS łączy asymetryczne uzgodnienie sekretu ECDHE z symetrycznym szyfrowaniem sesyjnym AES-GCM. Wartości efemeryczne Diffiego-Hellmana są podpisywane kluczem z certyfikatu serwera, co chroni przed atakiem Man-in-the-Middle. Tryb efemeryczny zapewnia poufność przyszłą, więc kompromitacja klucza długoterminowego nie ujawnia dawnych sesji.
Wzorzec TLS 1.3 – Połączenie ECDHE z certyfikatami i szyfrowaniem AES-GCM 1. Handshake TLS (Asymetria) • Ephemeral ECDHE: Nowa para kluczy dla każdej sesji Perfect Forward Secrecy (PFS) • Certyfikat X.509 i podpis: Serwer podpisuje parametry ECDHE chroniąc przed atakiem MITM Wynik: Wspólny klucz K_sesji 2. Rekordy danych (Symetria) • Standard AEAD: AES-128-GCM / AES-256-GCM lub ChaCha20-Poly1305 • Szybkość sprzętowa: Gigabajty na sekundę bez obciążenia Poufność i integralność pakietów Bezpieczna transmisja HTTP/2/3 Wzorzec TLS: Asymetria bezpiecznie ustala klucz sesji, a symetria ekspresowo szyfruje strumień
Schemat slajdu 32 – Wymiana kluczy w praktyce - wzorzec TLS
33/55
Szyfrowanie hybrydowe
Cel slajdu: Slajd wyjaśnia szyfrowanie hybrydowe łączące szybkość AES z wygodą klucza publicznego.

KEM i DEM - dwa kroki

  • KEM (asymetrycznie): klucz sesji K generowany losowo, zaszyfrowany kluczem publicznym (np. RSA-OAEP) uzgodniony w DH/ECDH (uwaga: DH/ECDH to key agreement, a nie KEM w ścisłym znaczeniu); szyfrogram klucza przesyłany do odbiorcy.
  • DEM (symetrycznie): dane szyfrowane kluczem K algorytmem AES-GCM/ChaCha20-Poly1305; szybko i bezpiecznie.
  • Przykłady: TLS (ECDHE + AES-GCM), RSA-OAEP + AES-GCM, ECIES (na krzywych), ML-KEM (dawniej Kyber, post-quantum KEM).
  • Zalety: wydajność symetrii + dystrybucja kluczy z asymetrii; odporność na ataki na długie treści.
Szyfrowanie hybrydowe (ang. Hybrid Encryption): Szyfrowanie hybrydowe łączy wygodę kryptografii asymetrycznej z szybkością kryptografii symetrycznej. Najpierw mechanizm KEM zabezpiecza losowy klucz sesyjny kluczem publicznym lub uzgodnieniem DH, a następnie mechanizm DEM szyfruje nim właściwe dane. Takie rozdzielenie jest standardem w TLS, PGP i nowoczesnych schematach postkwantowych.
Szyfrowanie hybrydowe (KEM/DEM) – Kapsułkowanie klucza i szyfrowanie danych 1. Moduł KEM (Asymetria) • Generowanie losowego K_sesji • Kapsułkowanie kluczem publicznym: C_klucz = KEM_Enc(K_pub) Zabezpiecza klucz 128/256 bitów Kapsuła klucza C_k 2. Moduł DEM (Symetria) • Wejście: Duży plik danych M • Szyfrowanie symetryczne: C_dane = DEM_Enc(K_sesji, M) Wydajność szyfrów AES-GCM Szyfrogram danych C_d Paradygmat KEM/DEM: KEM bezpiecznie przekazuje klucz, a DEM efektywnie szyfruje dane
Schemat slajdu 33 – Szyfrowanie hybrydowe
34/55
Post-quantum cryptography - wprowadzenie
Cel slajdu: Slajd wprowadza kryptografię postkwantową jako odpowiedź na zagrożenie algorytmem Shora.

Zagrożenie komputerami kwantowymi

  • Algorytm Shora (1994): komputer kwantowy rozwiązywałby faktoryzację i logarytm dyskretny w czasie wielomianowym - RSA, DH, ECC stałyby się niezabezpieczone.
  • Co przetrwa: AES, ChaCha20, SHA-2/SHA-3 (tylko klucz należy podwoić ze względu na algorytm Grovera); zagrożone: RSA, DSA, ECDSA, ECDH.
  • Zagrożenie "harvest now, decrypt later": nagrane teraz zaszyfrowane dane mogą zostać odszyfrowane w przyszłości za pomocą komputerów kwantowych.
  • Rodziny PQC: oparte na sieciach (lattices), kodach korekcyjnych, funkcjach skrótu, izogeniach.
  • Standaryzacja NIST: zakończona w 2024 - ML-KEM (dawniej CRYSTALS-Kyber, KEM), ML-DSA (dawniej Dilithium, podpisy), SLH-DSA (dawniej SPHINCS+, podpisy, hash-based).
Kryptografia postkwantowa (ang. Post-Quantum Cryptography): Kryptografia postkwantowa projektuje algorytmy odporne na kryptoanalizę komputerem kwantowym, w szczególności na algorytm Shora łamiący RSA, DH i ECC. Symetryczne AES i funkcje SHA przetrwają przy podwojonych kluczach ze względu na algorytm Grovera. Zagrożenie typu zbierz teraz, odszyfruj później wymusza planowanie migracji zanim powstaną duże komputery kwantowe.
Zagrożenie kwantowe – Algorytmy Shora i Grovera oraz podatność RSA i ECC Algorytm Shora (1994) ZAŁAMANIE ASYMETRII: • Faktoryzacja w czasie O((log n)³) • Logarytm dyskretny DLP i ECDLP RSA, Diffie-Hellman, ECC KOSZ: Złamanie w minuty! Konieczność migracji na PQC Algorytm Grovera (1996) SYMETRIA POZOSTAJE MOCNA: • Przyspieszenie kwadratowe O(√N) • Redukcja siły klucza o połowę AES-256 → 128 bitów ochrony SHA-256 / SHA-3 bezpieczne Wystarczy podwoić rozmiar klucza Komputer kwantowy niszczy RSA i ECC (Shor), ale kryptografia symetryczna 256-bitowa przetrwa (Grover)
Schemat slajdu 34 – Post-quantum cryptography - wprowadzenie
35/55
NIST PQC - wybrane algorytmy
Cel slajdu: Slajd przedstawia wybrane algorytmy NIST PQC: Kyber do enkapsulacji i Dilithium do podpisów.

Wybrane algorytmy standardów NIST

  • ML-KEM (wcześniej CRYSTALS-Kyber): KEM oparty na problemie sieci kratowych (Module-LWE); standard FIPS 203 - zapowiedziany jako główny zamiennik RSA/DH w wymianie kluczy.
  • ML-DSA (wcześniej Dilithium): podpisy oparte na Module-LWE; FIPS 204.
  • SLH-DSA (SPHINCS+): podpisy oparte wyłącznie na funkcjach skrótu (bez matematycznej struktury) - FIPS 205; jedyne rozwiązanie bez założeń matematycznych poza bezpieczeństwem funkcji skrótu (stateless hash-based).
  • FN-DSA (Falcon): podpisy oparte na sieciach z mniejszymi kluczami (FIPS 206; Falcon wybrany przez NIST w 2022 r., standard w opracowaniu).
  • Horyzont wdrożeniowy: implementacje w TLS (Kyber w Chrome/Cloudflare), SSH, PGP (hybrydy: X25519 + ML-KEM).
Standardy NIST PQC (ang. NIST PQC Standards): Standardy NIST PQC wyłaniają zamienniki wymiany kluczy i podpisów odporne na ataki kwantowe. ML-KEM oparty na Module-LWE służy do enkapsulacji kluczy, ML-DSA do efektywnych podpisów kratowych, a SLH-DSA oparty wyłącznie na funkcjach skrótu stanowi konserwatywną alternatywę. Zostały one sformalizowane jako FIPS 203, 204 i 205 do wdrożeń w protokołach sieciowych.
Standardy Post-Quantum NIST – Standardy FIPS 203 (ML-KEM), 204 (ML-DSA) i 205 ML-KEM (FIPS 203) • Dawniej: CRYSTALS-Kyber • Problem krat (LWE) Zastępuje RSA/DH w wymianie klucza sesji Standard KEM ML-DSA (FIPS 204) • Dawniej: Dilithium • Oparty o sieci kratowe Zastępuje ECDSA/RSA w podpisach cyfrowych Główny Podpis PQC SLH-DSA (FIPS 205) • Dawniej: SPHINCS+ • Oparty o funkcje skrótu Konserwatywny Brak założeń kratowych Podpis Hash-Based Standardy FIPS 203/204/205 opublikowane w 2024 r. stanowią przyszłość bezpiecznego Internetu
Schemat slajdu 35 – NIST PQC - wybrane algorytmy
36/55
Najczęstsze błędy projektowe w kryptografii
Cel slajdu: Slajd wskazuje najczęstsze błędy projektowe: własna kryptografia, stałe klucze i ignorowanie paddingu.

Błędy, które łamią nawet mocne szyfry

  • Używanie przestarzałych algorytmów: DES, RC4, MD5, SHA-1 - z pozoru "działają", ale są łatwe do zaatakowania.
  • Zła konfiguracja trybów i kluczy: ECB zamiast GCM, IV powtarzane, klucze zbyt krótkie, wpisywanie kluczy na sztywno.
  • Ponowne użycie nonce/IV: w GCM/CTR/ECDSA prowadzi do odszyfrowania danych lub odtworzenia klucza (nonce reuse attacks).
  • Implementacja własnych schematów: "własny szyfr" lub "własny padding" w 99% przypadków oznacza lukę bezpieczeństwa.
  • Nieużywanie weryfikacji: brak AEAD (szyfrowanie bez uwierzytelniania) umożliwia ataki bit-flipping.
Zasada: używaj wyłącznie uznanych bibliotek (OpenSSL, libsodium, python-cryptography) i standardowych schematów (AEAD, OAEP, PSS) - nie wynajduj koła na nowo.
Błąd projektowy w kryptografii (ang. Cryptographic Design Flaw): Błąd projektowy w kryptografii polega na użyciu przestarzałego algorytmu, złego trybu, krótkiego klucza lub własnej konstrukcji zamiast sprawdzonego standardu. Typowe przykłady to DES, RC4, MD5, ECB oraz powtarzane IV i klucze wpisane na stałe. Nawet matematycznie silny szyfr upada, gdy padding, nonce lub zarządzanie kluczami są niepoprawne.
Błędy implementacyjne – Ryzyka przestarzałych algorytmów, słabego RNG i wycieków Przestarzałe algorytmy • Użycie DES, 3DES, RC4, MD5, SHA-1 • „Działa w testach, więc jest okej” Błyskawiczne złamanie przez atakującego Błędy generatora losowego • Math.random() zamiast Crypto • Powtarzanie wektorów IV / Nonce Odtworzenie klucza w ECDSA (nonce, Sony PS3) Hardkodowanie sekretów • Klucze prywatne w kodzie na GitHubie • Brak rotacji i unieważniania kluczy Automatyczne boty wykrywają w minuty Podatności Side-Channel • Niestabilny czas wykonania (Timing attacks) • Błędy padding oracle w PKCS#1 v1.5 Wymóg stałego czasu (Constant-Time) Nawet najmocniejszy algorytm zawodzi w obliczu błędnej implementacji lub słabego generatora RNG
Schemat slajdu 36 – Najczęstsze błędy projektowe w kryptografii
37/55
Narzędzia do pracy z kryptografią asymetryczną
Cel slajdu: Slajd przedstawia narzędzia do pracy z kryptografią asymetryczną: OpenSSL i biblioteki programistyczne.

OpenSSL, GnuPG i biblioteki

  • OpenSSL: openssl genpkey (RSA/ED25519), openssl pkeyutl (szyfrowanie/podpisy), openssl req (CSR/certyfikaty).
  • GnuPG (GPG): pary kluczy, szyfrowanie i podpisywanie (ECC/RSA), web of trust.
  • Python: biblioteka cryptography (nowoczesna, zalecana) i pycryptodome (RSA, ECC, AES); cryptography.hazmat dla niskopoziomowych operacji.
  • Biblioteki TLS/protokołów: OpenSSL, GnuTLS, s2n, BoringSSL (dla aplikacji sieciowych).
  • Weryfikacja: openssl pkeyutl -verify, GPG --verify, testy w Jupyter/Wireshark.
Narzędzia kryptograficzne (ang. Cryptographic Tools): Narzędzia kryptograficzne do kryptografii asymetrycznej obejmują OpenSSL do generowania kluczy i certyfikatów, GnuPG do szyfrowania i podpisów oraz biblioteki programistyczne. W Pythonie zaleca się bibliotekę cryptography o wysokopoziomowym interfejsie, a uzupełniająco pycryptodome dla RSA, ECC i AES. Użycie dojrzałych bibliotek ogranicza ryzyko błędów paddingu i generatora losowego.
Praktyka OpenSSL – Generowanie kluczy RSA/Ed25519, podpisywanie i weryfikacja bash — openssl asymetric # 1. Generowanie nowoczesnego klucza Ed25519 openssl genpkey -algorithm ED25519 -out key_ed25519.pem # 2. Generowanie klucza RSA 3072 bity openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out key_rsa.pem # 3. Podpisanie pliku algorytmem Ed25519 openssl dgst -sign key_ed25519.pem -out plik.sig plik.txt # 4. Weryfikacja podpisu kluczem publicznym openssl dgst -verify pub_ed25519.pem -signature plik.sig plik.txt Narzędzie OpenSSL genpkey i dgst stanowią standard operacyjny w administracji systemami Linux
Schemat slajdu 37 – Narzędzia do pracy z kryptografią asymetryczną
38/55
Demonstracja - RSA w Pythonie
Cel slajdu: Slajd demonstruje RSA w Pythonie od generowania kluczy po szyfrowanie wiadomości.

Generowanie, szyfrowanie i podpisy

  1. Generowanie kluczy: rsa.generate_private_key(public_exponent=65537, key_size=2048).
  2. Zapis: .pem z serialization (publiczny może być jawny, prywatny - chroniony hasłem).
  3. Szyfrowanie: pkey.encrypt(m, padding.OAEP(...)); deszyfrowanie: pkey_priv.decrypt(...).
  4. Podpis: key.sign(m, padding.PSS(...), hashes.SHA256()); weryfikacja: public_key.verify(sig, m, ...).
  5. Uwaga: klucz RSA przechowujemy w bezpiecznym miejscu (plik z restrykcjami, keystore).
$ python3 -c
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import rsa, padding
key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
msg = b"Wiadomosc testowa"
sig = key.sign(msg, padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256())
key.public_key().verify(sig, msg, padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256())
print("RSA-PSS podpis OK, dlugosc:", len(sig))
RSA w Pythonie (ang. RSA in Python): RSA w Pythonie demonstruje generowanie klucza 2048-bitowego, szyfrowanie z OAEP oraz podpisy z PSS i SHA-256 przy użyciu biblioteki cryptography. Klucz publiczny zapisuje się jawnie w PEM, a prywatny chroni hasłem i uprawnieniami systemowymi. Demonstracja pokazuje rozdzielenie operacji kluczem publicznym i prywatnym oraz weryfikację niezmienności podpisanego komunikatu.
Python Cryptography – Bezpieczna implementacja RSA-OAEP i podpisów RSA-PSS rsa_crypto.py — Python 3 from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.primitives import hashes # Klucz prywatny RSA-2048 i wiadomość testowa priv_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) msg = b"Wiadomosc testowa" # Podpis cyfrowy z RSA-PSS i SHA-256 sig = priv_key.sign(msg, padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256()) # Szyfrowanie kluczem publicznym z OAEP c = priv_key.public_key().encrypt(msg, padding.OAEP(mgf=padding.MGF1(hashes.SHA256()), ...)) Biblioteka cryptography w Pythonie wymusza bezpieczne schematy OAEP i PSS
Schemat slajdu 38 – Demonstracja - RSA w Pythonie
39/55
Demonstracja - ECDH wymiana kluczy
Cel slajdu: Slajd demonstruje wymianę ECDH jako uzgadnianie klucza na krzywych eliptycznych.

Wspólny sekret na krzywej P-256

  1. Parametry: krzywa NIST P-256 lub Curve25519 (X25519) - wybierana w bibliotece.
  2. Klucze: Alicja i Bob generują pary (d, Q=dG).
  3. Wymiana: Alicja wysyła swój klucz publiczny; Bob swój; obie strony obliczają wspólny sekret: Alice: Bob.public_key * Alice.d; Bob: Alice.public_key * Bob.d.
  4. Wynik: wspólny punkt (x, y) - używamy jego współrzędnej x jako materiału do klucza AES (np. SHA-256(x) -> klucz 32B).
  5. Porównanie z DH: zamiast g^a mod p - mnożenie punktów Q = kP na krzywej; krótsze klucze, ta sama matematyczna odporność.
$ python3 -c
from cryptography.hazmat.primitives.asymmetric import ec
alice = ec.generate_private_key(ec.SECP256R1())
bob   = ec.generate_private_key(ec.SECP256R1())
sekret = alice.exchange(ec.ECDH(), bob.public_key())
# sekret = 32B; użyj np. hashlib.sha256 jako klucz
Protokół ECDH (ang. Elliptic Curve Diffie-Hellman): Protokół ECDH uzgadnia wspólny sekret na krzywej eliptycznej, zwykle P-256 lub Curve25519, poprzez mnożenie cudzego klucza publicznego przez własny sekret skalarny. Obie strony otrzymują ten sam punkt, z którego wyprowadza się klucz sesyjny funkcją KDF. Zastosowanie kluczy efemerycznych zapewnia poufność przyszłą przy minimalnym koszcie obliczeniowym.
ECDH na krzywej P-256 – Programistyczne uzgodnienie sekretu w bibliotece cryptography ecdh_p256.py — Python 3 from cryptography.hazmat.primitives.asymmetric import ec # 1. Alicja i Bob generują klucze na krzywej SECP256R1 (P-256) alice_priv = ec.generate_private_key(ec.SECP256R1()) bob_priv = ec.generate_private_key(ec.SECP256R1()) # 2. Obie strony uzgadniają identyczny wspólny sekret: secret_alice = alice_priv.exchange(ec.ECDH(), bob_priv.public_key()) secret_bob = bob_priv.exchange(ec.ECDH(), alice_priv.public_key()) assert secret_alice == secret_bob # Wynik: 32 identyczne bajty! ECDH na krzywej P-256 pozwala uzyskać wspólny sekret 256-bitowy w zaledwie 3 liniach kodu
Schemat slajdu 39 – Demonstracja - ECDH wymiana kluczy
40/55
Podsumowanie części 4 - najważniejsze zagadnienia
Cel slajdu: Slajd podsumowuje część czwartą, utrwalając RSA, Diffiego-Hellmana, ECC i podpisy.

Co wynosisz z części 4

  • RSA: n = p*q, e/d, szyfrowanie m^e mod n; bezpieczny przy 2048-4096 bitów i paddingach OAEP/PSS.
  • DH/ECDH: uzgodnienie wspólnego sekretu bez przesyłania go; podatny na MITM bez uwierzytelniania (stąd certyfikaty).
  • ECC: krótsze klucze, ta sama siła (P-256 ≈ RSA-3072); ECDLP jako fundament.
  • Podpisy cyfrowe: hash-then-sign (RSA-PSS, ECDSA, EdDSA); autentyczność + integralność + niezaprzeczalność; bezwzględnie świeże funkcje skrótu.
  • Szyfrowanie hybrydowe: asymetria szyfruje klucz, symetria - dane (TLS, ECIES).
  • Post-kwantowe: ML-KEM (KEM), ML-DSA/SLH-DSA (podpisy) - przygotuj systemy na migrację.
Podsumowanie kryptografii asymetrycznej (ang. Asymmetric Cryptography Summary): Podsumowanie kryptografii asymetrycznej utrwala RSA oparte na faktoryzacji, DH uzgadniające sekret oraz ECC oferujące tę samą siłę przy krótszych kluczach. Przypomina o obowiązkowych paddingach OAEP i PSS oraz schemacie hash-then-sign w podpisach. Podkreśla zasadę hybrydową, w której asymetria chroni klucz, a symetria szyfruje dane.
Podsumowanie części 4 – Kanon wiedzy z kryptografii klucza publicznego Kluczowe wnioski i wiedza operacyjna z części 4 ✓ RSA: Bezpieczne minimum to 2048-3072 bity oraz bezwzględny wymóg OAEP / PSS ✓ Krzywe eliptyczne (ECC): Skrajnie małe klucze (256b = 3072b RSA), standard w TLS 1.3 ✓ Podpisy cyfrowe: Deterministyczny Ed25519 usuwa ryzyko błędów generatora losowego ✓ Perspektywa PQC: Algorytm Shora łamie RSA i ECC; nadchodzą standardy NIST FIPS 203/204 Część 4 zamyka fundamenty asymetryczne: od klasycznego RSA do krzywych eliptycznych i ery PQC
Schemat slajdu 40 – Podsumowanie części 4 - najważniejsze zagadnienia
41/55
Słownik pojęć - część 4
Cel slajdu: Slajd systematyzuje słownik pojęć części czwartej od klucza publicznego po nonce.

Najważniejsze pojęcia

RSA
system klucza publicznego Rivesta-Shamira-Adlemana (1977); bezpieczeństwo z faktoryzacji.
Klucz publiczny / prywatny
para kluczy asymetrycznych; publiczny jawny, prywatny tajny.
Faktoryzacja
rozkład n na czynniki pierwsze; problem bazowy RSA.
DH / ECDH
protokoły wymiany kluczy (Diffie-Hellman; na krzywej).
Logarytm dyskretny
problem bazowy DH; jego wariant ECDLP - na krzywych.
Krzywa eliptyczna / ECC
kryptografia na grupie punktów krzywej; krótsze klucze.
DSA / ECDSA / EdDSA
schematy podpisów cyfrowych (logarytm dyskretny; na krzywej; deterministyczny).
Podpis cyfrowy
wartość zapewniająca autentyczność, integralność, niezaprzeczalność.
OAEP / PSS
bezpieczny padding RSA: szyfrowanie / podpisy.
Nonce (k)
jednorazowa losowa wartość; powtórzenie w DSA/ECDSA = utrata klucza.
Collision, preimage
kolizja (2 wiadomości o tym samym skrócie), przeciwobraz hashu.
PQC / quantum-resistant
kryptografia odporna na komputer kwantowy (Kyber, Dilithium).
Słownik kryptografii asymetrycznej (ang. Asymmetric Cryptography Glossary): Słownik kryptografii asymetrycznej systematyzuje terminy od klucza publicznego i faktoryzacji przez DH i logarytm dyskretny po nonce i padding. Porządkuje relacje między problemem matematycznym, algorytmem oraz protokołem na nim zbudowanym. Ułatwia precyzyjne opisywanie ról kluczy, parametrów krzywych i właściwości podpisów.
Słownik pojęć części 4 – Glosariusz terminologii kryptografii asymetrycznej RSA Szyfr oparty o faktoryzację; moduł n = p·q, wykładniki e oraz d Diffie-Hellman (DH) Protokół uzgadniania klucza przez podsłuchiwany kanał; problem DLP ECC / ECDLP Krzywe eliptyczne; 256-bitowy klucz ECC = 3072-bitowy klucz RSA Ed25519 Deterministyczny podpis; krzywa Edwardsa, brak ryzyka słabego RNG OAEP / PSS Dopełnienia probabilistyczne; chronią przed atakiem Bleichenbachera i wyrocznią PQC (Post-Quantum) Kryptografia odporna na komputer kwantowy; ML-KEM / ML-DSA Słownik pojęć stanowi repetytorium terminologii kryptografii asymetrycznej
Schemat slajdu 41 – Słownik pojęć - część 4
42/55
Pytania kontrolne - część 4
Cel slajdu: Slajd sprawdza zrozumienie klucza publicznego poprzez pytania o RSA i podpisy.

Sprawdź zrozumienie

  1. Jakie są kroki generowania pary kluczy RSA? Do czego służy d?
  2. Oblicz klucz prywatny dla p=61, q=53, e=17 (podaj wartość d).
  3. Wyjaśnij, w jakim sensie DH jest "wymianą kluczy", a nie szyfrowaniem.
  4. Opisz atak MITM na DH i sposoby jego neutralizacji.
  5. Porównaj RSA-2048, ECC-256 i AES-128 pod kątem siły i rozmiarów.
  6. Dlaczego podpisujesz skrót, a nie całą wiadomość? Co to daje?
  7. Wymień dwa schematy podpisów i dwa schematy paddingu; kiedy użyć który?
Zadanie kontrolne: zaszyfruj plik kluczem RSA (OAEP) w Pythonie, podpisz go (PSS), zweryfikuj i porównaj czas operacji RSA vs AES na tym samym pliku.
Pytania kontrolne (ang. Review Questions): Pytania kontrolne sprawdzają generowanie kluczy RSA, sens wymiany DH, obronę przed MITM oraz porównanie siły RSA, ECC i AES. Wymagają obliczenia klucza prywatnego dla małych parametrów i wyjaśnienia podpisywania skrótu zamiast całej wiadomości. Służą do samodzielnej weryfikacji zrozumienia przed laboratorium i kolokwium.
Sprawdź zrozumienie – Karta pytań kontrolnych z kryptografii asymetrycznej Q1 Generacja klucza d w RSA Dlaczego do wyznaczenia d niezbędna jest znajomość p i q? Odp: By obliczyć φ(n)=(p-1)(q-1) Q2 Podatność ECDSA Jaki błąd popełniło Sony w PS3 przy podpisywaniu oprogramowania? Odp: Użyto stałego nonce k Q3 Słabość czystego DH Na jaki atak podatny jest DH bez certyfikatów i podpisów? Odp: Man-in-the-Middle (MITM) Q4 Komputer kwantowy Który algorytm kwantowy łamie faktoryzację RSA i logarytm ECC? Odp: Algorytm Shora (czas O(log³ n)) Pytania kontrolne sprawdzają kluczowe zależności matematyczne i projektowe części 4
Schemat slajdu 42 – Pytania kontrolne - część 4
43/55
Zadanie domowe - część 4
Cel slajdu: Slajd zadaje pracę domową: obliczenia RSA i analizę wymiany kluczy.

Praca samodzielna

  1. Implementacja mini-RSA w Pythonie: z p, q (małe) generuj n, phi, e, d; zaszyfruj i odszyfruj krótką wiadomość (100 - 300 linii).
  2. Podpisywanie i weryfikacja dokumentów: użyj Python cryptography (RSA-PSS/SHA-256), zapisz podpis do pliku, sprawdź - pokaż, że zmiana 1 bajtu unieważnia podpis.
  3. Analiza ataków na MD5/SHA-1: odtwórz przykładową kolizję MD5 (fastcoll) i SHAttered (pobierz dwa pliki); porównaj skróty SHA-256 - różne.
  4. ECDH: oblicz wspólny sekret dla dwóch kluczy P-256; wyprowadź z niego klucz AES-GCM i zaszyfruj wiadomość.
  5. Lektura uzupełniająca: rozdziały o RSA/ECC/podpisach w Stallings i Paar.
Zadanie domowe z kryptografii (ang. Cryptography Homework): Zadanie domowe z kryptografii poleca implementację mini-RSA, podpisywanie dokumentów RSA-PSS z SHA-256 oraz analizę kolizji MD5 i SHA-1. Wymaga pokazania, że zmiana jednego bajta unieważnia podpis oraz odtworzenia przykładowych kolizji narzędziami badawczymi. Kształci łączenie teorii parametrów z praktyką bibliotek i krytyczną oceną zaufania do skrótów.
Praca samodzielna – Implementacja RSA od podstaw i testy weryfikacji podpisu PSS Zadanie 1: Mini-RSA w Pythonie • Napisz od zera generator RSA: p, q (np. 16-bitowe liczby pierwsze) • Wyznacz n, φ(n), e oraz d (rozszerzony algorytm Euklidesa) • Przetestuj szyfrowanie mᵉ mod n Weryfikacja: m == cᵈ mod n Zadanie 2: Podpis RSA-PSS • Użyj biblioteki cryptography • Podpisz plik z paddingiem PSS • Zmień 1 bajt w pliku tekstowym • Przetestuj weryfikację podpisu (oczekiwany wyjątek InvalidSignature) Weryfikacja: Integralność pliku Ćwiczenia praktyczne pozwalają zrozumieć matematykę modularną i procedury weryfikacji podpisu
Schemat slajdu 43 – Zadanie domowe - część 4
44/55
Literatura i źródła - część 4
Cel slajdu: Slajd porządkuje literaturę i źródła do pogłębienia wiedzy o kryptografii asymetrycznej.

Dokumentacja i podręczniki

  • RFC 8017 (PKCS#1 v2.2) - RSA oraz wypełnienia (padding) OAEP/PSS.
  • FIPS 186-5 (RSA-PSS, ECDSA, EdDSA - aktualny standard); SP 800-57 (zarządzanie kluczami, rozmiary).
  • RFC 7748 (ECDH na X25519/X448, krzywe Montgomery’ego), RFC 8032 (Ed25519/Ed448, krzywe Edwardsa).
  • W. Stallings - Kryptografia i bezpieczeństwo sieci komputerowych (część o kryptografii klucza publicznego).
  • C. Paar, J. Pelzl - Understanding Cryptography (RSA, ECC, podpisy z przykładami).
  • Artykuły i raporty: Wang 2004 (MD5), SHAttered (2017), NIST FIPS 203-205 (2024, PQC) oraz projekt FIPS 206 (FN-DSA).
Literatura kryptograficzna (ang. Cryptographic Literature): Literatura kryptograficzna części czwartej obejmuje RFC 8017 dla RSA i paddingów, FIPS 186-5 dla podpisów oraz RFC 7748 i 8032 dla krzywych i EdDSA. Uzupełniają ją wytyczne NIST SP 800-57 o zarządzaniu kluczami oraz podręcznik Stallingsa o bezpieczeństwie sieci. Wskazane źródła pozwalają zweryfikować szczegóły implementacyjne i dobrać parametry zgodnie ze standardami.
Dokumentacja i normy – Specyfikacje RFC 8017, FIPS 186-5 i FIPS 203/204 Oficjalne standardy FIPS i RFC dla kryptografii asymetrycznej RFC 8017 (PKCS#1 v2.2): Specyfikacja standardu RSA oraz dopełnień OAEP i PSS FIPS 186-5: Aktualny standard podpisów cyfrowych (RSA-PSS, ECDSA, EdDSA/Ed25519; DSA tylko do weryfikacji) RFC 8032: Specyfikacja algorytmu podpisu EdDSA na krzywej Edwardsa Ed25519 NIST FIPS 203 / 204: Oficjalne standardy kryptografii postkwantowej ML-KEM i ML-DSA Oficjalne specyfikacje RFC i normy NIST wyznaczają ramy implementacji kryptosystemów
Schemat slajdu 44 – Literatura i źródła - część 4
45/55
Zapowiedź części 5
Cel slajdu: Slajd zapowiada część piątą o PKI, TLS i uwierzytelnianiu jako praktycznym otoczeniu klucza.

Co dalej: bezpieczna wymiana informacji

  • PKI - infrastruktura klucza publicznego: CA, certyfikaty X.509, CRL/OCSP.
  • TLS - protokół transportowy oparty na DH/ECDHE i AES-GCM; handshake krok po kroku.
  • Uwierzytelnianie: Kerberos (KDC, bilety), OAuth 2.0 / OIDC, JWTs.
  • Transakcje elektroniczne: HTTPS, 3-D Secure, S/MIME, GPG.
  • Narzędzia: openssl s_client, analiza ruchu, testowanie (SSL Labs).
W części 5 zobaczysz, jak RSA/ECC/DH z części 4 łączą się w praktyczny, bezpieczny system komunikacji - to ostatni element kursu przed systemami składowania (część 6).
Infrastruktura PKI (ang. Public Key Infrastructure): Infrastruktura PKI rozszerza kryptografię asymetryczną o urzędy certyfikacji, certyfikaty X.509 oraz mechanizmy unieważnień CRL i OCSP. Łączy się z protokołem TLS opartym na ECDHE i AES-GCM oraz uwierzytelnianiem Kerberos, OAuth i JWT. Stanowi praktyczne otoczenie zaufania zapowiadane jako temat kolejnej części kursu.
Zapowiedź części 5 – Infrastruktura zaufania PKI, certyfikaty X.509 i protokół TLS 1.3 Opanowane w części 4 ✓ Matematyka RSA i faktoryzacja ✓ Wymiana kluczy Diffie-Hellman ✓ Krzywe eliptyczne ECC i ECDLP ✓ Podpisy cyfrowe ECDSA i Ed25519 ✓ Dopełnienia OAEP i PSS ✓ Standardy postkwantowe PQC W części 5: PKI i protokoły ▶ Infrastruktura PKI i urzędy CA ▶ Format certyfikatów X.509 v3 ▶ Odwoływanie certyfikatów: CRL i OCSP ▶ Pełny handshake protokołu TLS 1.3 ▶ Uwierzytelnianie Kerberos i bilety TGT ▶ Standardy OAuth 2.0, OIDC i tokeny JWT Koniec modułu asymetrycznego: w części 5 poznamy infrastrukturę zaufania PKI i protokół TLS 1.3
Schemat slajdu 45 – Zapowiedź części 5
46/55
Materiały wideo i interaktywne - część 4
Cel slajdu: Slajd wskazuje materiały wideo i interaktywne do samodzielnego eksperymentowania z kluczem publicznym.

Ucz się także samodzielnie

  • Filmy: "RSA in practice" (Computerphile), "Elliptic curves" (Programming with Mosh i in.), wykłady K. Pietrzaka (Crypto Course).
  • Ćwiczenia interaktywne: Cryptopals (cryptopals.com) - set 5 dotyczy DH/RSA; CryptoHack - kategorie RSA/ECC.
  • Symulatory: Crypto Corner (RSA), demonstracja DH w JS (archiwum), kalkulatory modularne online.
  • Praktyczne laboratorium: wymiana kluczy GPG ze znajomymi, podpisywanie dokumentów, wymiana kluczy SSH (wysyłanie klucza publicznego, walidacja fingerprint).
Materiały interaktywne (ang. Interactive Learning Materials): Materiały interaktywne do kryptografii asymetrycznej obejmują filmy o RSA i krzywych eliptycznych, zadania Cryptopals i CryptoHack oraz symulatory protokołów DH i RSA. Pozwalają eksperymentować z parametrami i obserwować skutki błędów bez ryzyka produkcyjnego. Systematyczna praca z nimi utrwala intuicję matematyczną i nawyki bezpiecznego wdrażania.
Samodzielna nauka – Platformy CryptoHack, Cryptopals i wykłady akademickie CryptoHack.org • Praktyczne zadania z RSA i ECC • Łamanie słabych implementacji w Pythonie Wyzwania: mały wykładnik, Wiener The Cryptopals Challenges • Klasyczne wyzwania stworzone przez Matasano, hostowane obecnie przez NCC Group • Zestawy 5 i 6: Ataki na DH, RSA i Bleichenbachera Standard branżowy testów wiedzy Wykłady Computerphile • Wizualizacja RSA i krzywych eliptycznych • Demonstracje prof. Mike'a Pounda Kursy Akademickie • Dan Boneh – Stanford Cryptography I & II • Materiały IST Austria (K. Pietrzak) Praktyczne rozwiązywanie zadań w CryptoHack i Cryptopals utrwala wiedzę o wektorach ataków
Schemat slajdu 46 – Materiały wideo i interaktywne - część 4
47/55
Przydatne biblioteki i zasoby - część 4
Cel slajdu: Slajd poleca biblioteki i zasoby programistyczne do poprawnej implementacji kryptografii.

Do kodowania w projektu

  • Python: cryptography (zalecana, interfejs wysokopoziomowy), pycryptodome (RSA, ECC, AES, hashe), ecdsa (czysty Python dla podpisu).
  • C/C++: OpenSSL libcrypto, libsodium (nacisk na bezpieczne warianty).
  • Języki nowe: subtle (Node), PyNaCl (Python binding NaCl).
  • Dokumentacja: docs.python.org (hashlib, secrets), pyca/cryptography, NIST Publications na csrc.nist.gov.
  • Testy: CryptoHack, Cryptopals, testy własne (openssl compare).
Biblioteki kryptograficzne (ang. Cryptographic Libraries): Biblioteki kryptograficzne do projektów obejmują pythonowe cryptography, pycryptodome i ecdsa, C-owe OpenSSL i libsodium oraz nowoczesne interfejsy dla węzła i NaCl. Dostarczają wysokopoziomowe receptury dla RSA, ECC, AES i generatorów losowych zgodne z FIPS i RFC. Wybór dojrzałej biblioteki eliminuje potrzebę samodzielnego projektowania paddingów i krzywych.
Biblioteki kryptograficzne – Rekomendacje dla Pythona, C i Rusta Python: cryptography (ZALECANA) • Projekt PyCA (Python Cryptographic Authority) • Bezpieczne receptury (Fernet, default OAEP) Oparta na sprawdzonym OpenSSL C / C++: libsodium • Nowoczesna biblioteka kryptograficzna • Konstrukcje o stałym czasie (constant-time) Niemal niemożliwa do błędnego użycia Rust: ring & ed25519-dalek • Bezpieczeństwo pamięci języka Rust • Ekstremalna wydajność i formalne dowody ZASADA INŻYNIERSKA: Nigdy nie pisz własnej kryptografii! Używaj wyłącznie uznanych bibliotek z audytem Inżynierowie korzystają ze sprawdzonych bibliotek (cryptography, libsodium) zamiast pisać własny kod
Schemat slajdu 47 – Przydatne biblioteki i zasoby - część 4
48/55
Ćwiczenie - obliczanie klucza RSA
Cel slajdu: Slajd proponuje ćwiczenie z obliczania klucza RSA na małych liczbach pierwszych.

Krok po kroku dla małych liczb

  1. Wybierz: p = 11, q = 13 (kontrola: liczby pierwsze).
  2. Oblicz n = 11*13 = 143.
  3. Oblicz phi = (11-1)(13-1) = 10*12 = 120.
  4. Wybierz e = 7 (gcd(7,120)=1).
  5. Znajdź d takie, że 7*d mod 120 = 1. 7*103 = 721; 721 mod 120 = 721 - 6*120 = 1. Stąd d = 103.
  6. Szyfrowanie: m = 5; c = 5^7 mod 143 = 78125 mod 143 = 47 (78125 = 546*143 + 47).
  7. Sprawdź: 47^103 mod 143 = 5 (Python: pow(47,103,143)).
Ćwiczenie RSA (ang. RSA Exercise): Ćwiczenie RSA z małymi liczbami pierwszymi 11 i 13 prowadzi krok po kroku przez obliczenie modułu 143, funkcji phi 120 oraz klucza prywatnego 103 dla e równego 7. Szyfrowanie wiadomości 5 daje szyfrogram 47, którego odszyfrowanie odtwarza pierwotną wartość. Ręczne obliczenia ujawniają rolę arytmetyki modularnej i odwrotności w generowaniu kluczy.
Warsztat RSA – Obliczenia modularne krok po kroku dla p=11 i q=13 Ćwiczenie obliczeniowe RSA dla p=11, q=13 Generacja kluczy: 1. n = 11 × 13 = 143 2. φ(n) = 10 × 12 = 120 3. e = 7 (NWD(7, 120) = 1) 4. d = 7⁻¹ mod 120 = 103 (7 × 103 = 721 = 6×120 + 1) Próba szyfrowania m = 9: Szyfrowanie: c = 9⁷ mod 143 = 48 Deszyfrowanie: m = 48¹⁰³ mod 143 = 9 ! Rozszerzony algorytm Euklidesa wyznacza klucz prywatny d = 103 dla wykładnika e = 7
Schemat slajdu 48 – Ćwiczenie - obliczanie klucza RSA
49/55
Ćwiczenie - wymiana kluczy DH małymi liczbami
Cel slajdu: Slajd proponuje ćwiczenie wymiany Diffiego-Hellmana na małych parametrach modularnych.

Oblicz wspólny sekret

  1. Parametry: p = 29, g = 2.
  2. Alicja wybiera a = 5: A = 2^5 mod 29 = 32 mod 29 = 3.
  3. Bob wybiera b = 12: B = 2^12 mod 29 = 4096 mod 29 = 7 (4096 = 141*29 + 7).
  4. Sekret: A^b = 3^12 mod 29 = 531441 mod 29 = 18325*29 + 16; oraz B^a = 7^5 mod 29 = 16807 mod 29 = 579*29 + 16. Oba = 16.
  5. Sprawdź atak: log_2(3) mod 29 = 5 (możliwe do policzenia dla małych p); dla 2048-bitowych p - wykładniczo trudne.
Python: pow(3,12,29) = 16; pow(7,5,29) = 16 - wspólny sekret 16.
Ćwiczenie DH (ang. DH Exercise): Ćwiczenie DH z parametrami p równym 29 i g równym 2 pokazuje obliczenie wartości publicznych 3 i 7 oraz wspólnego sekretu 16 po obu stronach. Weryfikacja mnożenia modularnego potwierdza równość sekretów wyprowadzonych niezależnie przez Alicję i Boba. Dla małych liczb możliwy jest też atak przez wyliczenie logarytmu, co ilustruje skalę trudności przy dużych parametrach.
Warsztat DH – Obliczenie wspólnego sekretu K=16 dla p=29 i g=2 Wymiana DH: Moduł p = 29, Generator g = 2 Alicja (a = 5): A = 2⁵ mod 29 A = 32 mod 29 = 3 Alicja liczy A^b = 3^12: K = 3¹² mod 29 = 16 Bob (b = 12): B = 2¹² mod 29 B = 4096 mod 29 = 7 Bob liczy B^a = 7^5: K = 7⁵ mod 29 = 16 Identyczny wynik K = 16: potęgi (2⁵)¹² oraz (2¹²)⁵ są równe 2⁶⁰ ≡ 16 mod 29
Schemat slajdu 49 – Ćwiczenie - wymiana kluczy DH małymi liczbami
50/55
Ćwiczenie - ataki przez ponowne użycie nonce w ECDSA
Cel slajdu: Slajd pokazuje ćwiczenie ataku przez ponowne użycie nonce w ECDSA ujawniające klucz prywatny.

Nonce reuse w ECDSA - odtwórz klucz

  1. Konfiguracja: krzywa P-256, klucz prywatny d; dwa podpisy dwóch RÓŻNYCH wiadomości z tym samym k.
  2. Analiza: mając (r,s) i (r',s') z k równym, można wyznaczyć k z równości s - s' = k^-1*(H(M)-H(M')) (mod q), a potem d z dowolnego podpisu.
  3. Efekt: klucz prywatny odtworzony bez znajomości k z góry - katastrofa (m.in. Sony PS3 2010, kradzieże Bitcoin po słabej losowości nonce na Androidzie 2013).
  4. Wniosek: nonce musi być losowy i niepowtarzalny (albo deterministyczny RFC 6979); Ed25519 eliminuje problem (determinizm).
$ python3 -c
# poglądowo - wzór odtworzenia d z 2 podpisów
# s1 - s2 = k^-1*(z1 - z2) mod q  => k
# d = (s1*k - z1) / r1 mod q
Ponowne użycie nonce (ang. Nonce Reuse): Ponowne użycie nonce w ECDSA polega na podpisaniu dwóch różnych wiadomości tą samą jednorazową wartością k na krzywej P-256. Z pary podpisów o identycznym r można wyznaczyć k z różnicy s, a następnie odtworzyć klucz prywatny d. Przypadek ten, znany z awarii konsoli Sony, pokazuje krytyczne znaczenie unikalnej losowości lub deterministycznego EdDSA.
Atak Nonce Reuse w ECDSA – Matematyczny dowód wycieku klucza prywatnego KATASTROFA NONCE REUSE W ECDSA Dwa podpisy (r, s₁) i (r, s₂) z tym samym k dla wiadomości m₁ i m₂: s₁ = k⁻¹(z₁ + d·r) oraz s₂ = k⁻¹(z₂ + d·r) (mod n) 1. Odtworzenie nonce k: k = (z₁ - z₂) / (s₁ - s₂) mod n Zwykłe odejmowanie równań! 2. Odtworzenie klucza priv d: d = (s₁·k - z₁) · r⁻¹ mod n CAŁKOWITY WYCIEK KLUCZA! Powtórzenie nonce k natychmiast ujawnia klucz prywatny podpisującego (atak na konsolę PS3)
Schemat slajdu 50 – Ćwiczenie - ataki przez ponowne użycie nonce w ECDSA
51/55
Powtórzenie materiału - quiz interaktywny 1
Cel slajdu: Slajd proponuje pierwszy quiz interaktywny utrwalający pojęcia klucza publicznego.

Quiz: RSA i DH

  1. Ile wynosi d dla p=11, q=13, e=7? a) 47 b) 103 c) 120 d) 143 [b]
  2. Jaki padding jest zalecany do szyfrowania RSA? a) PKCS#1 v1.5 b) OAEP c) PSS d) bez paddingu [b]
  3. Jaki rozmiar klucza RSA jest dziś minimum? a) 512 b) 1024 c) 2048 d) 4096 [c]
  4. W DH wspólny sekret to... a) A+B b) A^b mod p c) g*a*b d) p*g [b]
  5. Co chroni DH przed MITM? a) duże p b) duże g c) uwierzytelnienie kluczy d) nic [c]
  6. 65^17 mod 3233 = ? a) 2790 b) 3233 c) 3120 d) 65 [a]
Quiz z RSA i DH (ang. RSA and DH Quiz): Quiz z RSA i DH utrwala obliczanie klucza prywatnego, zalecany padding OAEP, minimalny rozmiar RSA-2048 oraz postać wspólnego sekretu. Sprawdza także zabezpieczenie DH przed MITM poprzez uwierzytelnienie podpisem lub certyfikatem. Forma pytań zamkniętych umożliwia szybką samoocenę przed dalszym materiałem o krzywych i podpisach.
Quiz: RSA i Diffie-Hellman – Pytania sprawdzające wiedzę z uzasadnieniem Pytanie 1: Ile wynosi d dla p=11, q=13, e=7? a) 47 b) 103 c) 120 d) 143 Poprawna odpowiedź: b) 103 (ponieważ 7 × 103 = 721 = 6 × 120 + 1) Pytanie 2: Jaki padding jest zalecany do szyfrowania RSA? a) PKCS#1 v1.5 b) OAEP c) PSS d) brak paddingu Poprawna odpowiedź: b) OAEP (PSS służy wyłącznie do podpisów cyfrowych!) Quiz weryfikuje znajomość algebry modularnej oraz właściwego doboru paddingu RSA
Schemat slajdu 51 – Powtórzenie materiału - quiz interaktywny 1
52/55
Powtórzenie materiału - quiz interaktywny 2
Cel slajdu: Slajd proponuje drugi quiz interaktywny sprawdzający podpisy i wymianę kluczy.

Quiz: ECC, podpisy, hashe

  1. Bezpieczeństwo ECC opiera się na... a) faktoryzacji b) logarytmie dyskretnym na krzywej (ECDLP) c) funkcjach skrótu d) kluczu symetrycznym [b]
  2. Które krzywe są popularne w praktyce? a) P-256 b) Curve25519 c) secp256k1 [a,b,c]
  3. Podpis cyfrowy to... a) hash wiadomości b) zaszyfrowany hash kluczem prywatnym c) klucz publiczny d) certyfikat [b]
  4. Do czego służy hash w podpisie? a) do szyfrowania b) skrócenia treści + odporność na kolizje c) do uwierzytelnienia sesji d) nic [b]
  5. Jaki algorytm podpisu jest deterministyczny? a) ECDSA b) DSA c) Ed25519 d) RSA-PKCS1 [c]
  6. Jakie skróty są dziś bezpieczne? a) MD5 b) SHA-1 c) SHA-256 d) SHA3-256 [c,d]
Quiz z ECC i podpisów (ang. ECC and Signatures Quiz): Quiz z ECC i podpisów sprawdza oparcie bezpieczeństwa na ECDLP, znajomość krzywych P-256, Curve25519 i secp256k1 oraz definicję podpisu jako zaszyfrowanego skrótu. Obejmuje rolę funkcji skrótu i niebezpieczeństwo słabych algorytmów MD5 i SHA-1. Utrwala odróżnianie szyfrowania dla poufności od podpisywania dla autentyczności.
Quiz: ECC i podpisy – Zagadnienia ECDLP, krzywych i determinizmu Ed25519 Pytanie 1: Bezpieczeństwo ECC opiera się na problemie... a) faktoryzacji b) logarytmu dyskretnego na krzywej (ECDLP) c) SHA-3 Poprawna odpowiedź: b) ECDLP (znalezienie skalara k z punktu Q = k·G) Pytanie 2: Który algorytm podpisu eliminuje ryzyko słabego generatora RNG? a) DSA b) Klasyczny ECDSA c) Ed25519 (EdDSA) Poprawna odpowiedź: c) Ed25519 (wyprowadza nonce k deterministycznie z hasha) Quiz utrwala zasady doboru bezpiecznych mechanizmów podpisów cyfrowych
Schemat slajdu 52 – Powtórzenie materiału - quiz interaktywny 2
53/55
Bezpieczeństwo i dobre praktyki - część 4
Cel slajdu: Slajd podsumowuje bezpieczeństwo i dobre praktyki: długości kluczy i aktualizacje standardów.

Jak projektować bezpieczne systemy

  • Poprawne użycie bibliotek: standardowe receptury (AEAD, OAEP, PSS), wersje aktualne; nie modyfikuj niskopoziomowych funkcji.
  • Unikanie własnej kryptografii: własne szyfry/paddingi/nonce = podatności; korzystaj z fragmentów wzorcowych (FIPS/RFC).
  • Testy i audyty: testy jednostkowe, testy porównawcze przeciw OpenSSL, przeglądy kodu, narzędzia (cryptofuzz, sslyze).
  • Rotacja kluczy: okresowa zmiana kluczy/certyfikatów; inwentaryzacja i zarządzanie cyklem życia.
  • Prognozy żywotności: planuj migrację (np. SHA-1 -> SHA-2; RSA-1024 -> 2048; nadchodzące PQC).
Dobre praktyki kryptograficzne (ang. Cryptographic Best Practices): Dobre praktyki kryptograficzne nakazują używanie aktualnych bibliotek, standardowych trybów AEAD oraz paddingów OAEP i PSS bez modyfikowania niskopoziomowych funkcji. Zakazują własnej kryptografii, własnych generatorów nonce oraz ignorowania aktualizacji standardów NIST i IETF. Wymagają testów jednostkowych, audytów i monitorowania czasu życia kluczy.
Projektowanie bezpiecznych systemów – Złote zasady architektury kryptograficznej 1. Gotowe biblioteki (Zero Custom) • Korzystaj z cryptography lub libsodium • Nigdy nie implementuj algorytmów od zera Zabezpieczenie przed atakami czasowymi 2. Zawsze stosuj AEAD i PFS • Szyfrowanie symetryczne: tylko AES-GCM / ChaCha20-Poly1305 • Wymiana klucza: efemeryczne ECDHE (PFS) Ochrona przeszłych sesji 3. Rygorystyczny dobór paddingu • RSA: wyłącznie OAEP dla enc, PSS dla sign • Bezwzględny zakaz surowego textbook RSA Eliminacja Bleichenbachera 4. Przygotowanie do ery PQC • Planowanie migracji na standardy FIPS 203 • Krypto-zwinność (Crypto-Agility w kodzie) Elastyczna wymiana algorytmów Inżynieria bezpieczeństwa opiera się na sprawdzonych recepturach, trybach AEAD i krypto-zwinności
Schemat slajdu 53 – Bezpieczeństwo i dobre praktyki - część 4
54/55
Uwagi końcowe - część 4
Cel slajdu: Slajd zamyka część czwartą i zachęca do dalszej nauki o infrastrukturze zaufania.

Podsumowanie umiejętności

  • Potrafisz generować klucze RSA/ECC i rozumiesz ich matematyczne podstawy (faktoryzacja, ECDLP).
  • Umiesz szyfrować, podpisywać i weryfikować w OpenSSL i Pythonie z poprawnym paddingiem.
  • Rozumiesz ataki (MITM, nonce reuse, kolizje MD5/SHA-1) i dobierasz zabezpieczenia.
  • Wiesz, że asymetria uzgadnia klucz, a symetria szyfruje dane (hybryda) - fundament TLS (część 5).
  • Wiesz o kryptografii post-kwantowej i potrzebie przyszłej migracji.
Zapraszamy do części 5: PKI, certyfikaty X.509, TLS, uwierzytelnianie i transakcje elektroniczne - sprawdzisz te narzędzia w realnych systemach.
Uwagi końcowe o asymetrii (ang. Concluding Remarks): Uwagi końcowe stwierdzają, że uczestnik potrafi generować klucze RSA i ECC, szyfrować oraz podpisywać w OpenSSL i Pythonie z poprawnym paddingiem. Rozumie ataki MITM, nonce reuse i kolizje skrótów oraz umie dobrać przeciwdziałania. Podkreślają hybrydowy model ochrony, w którym asymetria uzgadnia klucz, a symetria szyfruje dane.
Podsumowanie umiejętności – Matryca kompetencji kryptografii klucza publicznego Obszar kompetencji Zdolności operacyjne Weryfikacja 1. Generowanie kluczy Tworzenie par RSA-3072, P-256 oraz Ed25519 OpenSSL / Python 2. Negocjacja sekretu Uzgodnienie klucza sesji w protokołach DH/ECDH Zgodność sekretów 3. Podpisy cyfrowe Podpisywanie RSA-PSS i Ed25519, weryfikacja Niezaprzeczalność 4. Analiza podatności Wykrywanie zagrożeń: MITM, słabe RNG, Bleichenbacher Audyt kodu Matryca kompetencji części 4 przygotowuje do pracy z certyfikatami X.509 i architekturą PKI
Schemat slajdu 54 – Uwagi końcowe - część 4
55/55
Otwarte pytania z widowni - część 4
Cel slajdu: Slajd zbiera otwarte pytania z widowni jako punkt wyjścia do dyskusji o kluczach.

Dyskusja i trudniejsze tematy

  • Przestrzeń na pytania*: dlaczego RSA nie szyfruje dużych danych? Czemu ECC jest "mocne przy krótkich kluczach"? Co z kwantowym przełomem?
  • Trudniejsze tematy do wyjaśnienia: dowód poprawności RSA (tw. Eulera), konstrukcja S-Boxa, parametry krzywych, ataki kanałami bocznymi i błędy post-kwantowe.
  • Materiały wspierające: skrypty kursu, notatki, materiały i weryfikacja w środowisku testowym.
  • Praktyka: wykonaj zadania praktyczne - stanowią one podstawę do utrwalenia umiejętności.
  • Zachęta: kontynuuj na platformach challenge (Cryptopals, CryptoHack) do ugruntowania praktyki.
Dyskusja o kluczach publicznych (ang. Public-Key Discussion): Dyskusja o kluczach publicznych zbiera pytania o nieefektywność RSA dla dużych danych, siłę krótkich kluczy ECC oraz wpływ komputerów kwantowych. Obejmuje trudniejsze wątki dowodu poprawności RSA, parametrów krzywych i ataków kanałami bocznymi. Stanowi otwartą przestrzeń do wyjaśniania wątpliwości w oparciu o skrypty i demonstracje kursu.
Dyskusja i zapowiedź części 5 – Pytania badawcze i wprowadzenie do infrastruktury PKI Wyzwania i dyskusja • Dlaczego asymetria nie szyfruje plików? (rozmiar m < n i niska prędkość operacji) • Skąd bierze się siła małych kluczy ECC? (brak algorytmów subwykładniczych na ECDLP) • Kiedy komputery kwantowe złamią RSA? (potrzeba milionów fizycznych kubitów) Przejście do części 5: PKI Kluczowe pytanie: Skąd mamy pewność, że klucz publiczny naprawdę należy do banku, a nie do szpiega? Odpowiedź w części 5: Infrastruktura PKI i certyfikaty X.509 Koniec części 4: zapraszamy do części 5 – Infrastruktura zaufania PKI, TLS 1.3 i protokoły tożsamości
Schemat slajdu 55 – Otwarte pytania z widowni - część 4