kryptografia asymetryczna
| Po angielsku | public-key cryptography |
|---|---|
| Którą formą pisać | po polsku Polska nazwa przyjęła się w tekstach i w wyszukiwarce — używaj jej samodzielnie. |
| Inne formy | kryptografia klucza publicznego · szyfrowanie asymetryczne |
| Kategoria | Kryptografia, tożsamość i uwierzytelnianie |
Kryptografia asymetryczna (kryptografia klucza publicznego) to dziedzina kryptografii, w której używa się pary powiązanych kluczy: jawnego klucza publicznego i tajnego klucza prywatnego. NIST definiuje ją jako kryptografię korzystającą z dwóch odrębnych kluczy, z których jeden szyfruje albo podpisuje dane, a drugi je odszyfrowuje albo weryfikuje podpis [1]. Klucze są tak dobrane, że wyznaczenie klucza prywatnego z publicznego jest obliczeniowo niewykonalne [2]. Na tej zasadzie opierają się podpisy cyfrowe, certyfikaty i uzgadnianie kluczy w protokole TLS.
Jak działa
W szyfrowaniu symetrycznym obie strony muszą znać ten sam tajny klucz, więc trzeba go najpierw bezpiecznie przekazać. Kryptografia asymetryczna rozwiązuje ten problem inaczej. Każdy uczestnik ma własną parę kluczy. Klucz publiczny można opublikować, a klucz prywatny zna tylko właściciel. Sekurak opisuje to w przykładzie poczty: klucz publiczny służy do szyfrowania danych, a klucz prywatny do ich odszyfrowania i nie powinien być znany nikomu poza właścicielem [8].
OWASP wymienia dwa główne zastosowania algorytmów asymetrycznych: obliczanie podpisów cyfrowych i ustanawianie materiału kluczowego [3]. Do ochrony poufności dużych ilości danych używa się algorytmów symetrycznych, w których ten sam klucz szyfruje i odszyfrowuje [3]. W praktyce oba rodzaje działają razem: para kluczy asymetrycznych służy do ustanowienia klucza symetrycznego [2], a ten szyfruje właściwą transmisję. Tak działa połączenie HTTPS, co pokazuje schemat poniżej.
W TLS 1.3 wymiana kluczy odbywa się metodą Diffiego-Hellmana na liczbach albo na krzywych eliptycznych, a wszystkie mechanizmy wymiany oparte na kluczu publicznym zapewniają forward secrecy [4].
Rodzaje
Ta sama para kluczy może służyć różnym celom, ale OWASP zaleca, by jeden klucz miał tylko jedno zastosowanie, na przykład szyfrowanie, uwierzytelnianie albo podpis [3]. Role kluczy w podstawowych operacjach zestawia tabela.
| Operacja | Klucz nadawcy | Klucz odbiorcy | Co zapewnia |
|---|---|---|---|
| Szyfrowanie | publiczny odbiorcy | prywatny odbiorcy odszyfrowuje [8] | poufność |
| Podpis cyfrowy | prywatny nadawcy podpisuje | publiczny nadawcy weryfikuje [1] | autentyczność, integralność |
| Uzgadnianie klucza | para efemeryczna | para efemeryczna [4] | wspólny klucz sesji |
Najczęściej używane rodziny algorytmów to RSA oraz algorytmy na krzywych eliptycznych (ECDSA, EdDSA, ECDH). CERT Polska zaleca w konfiguracji TLS klucze RSA o długości co najmniej 2048 bitów albo klucze ECDSA co najmniej 256-bitowe [7].
W WordPressie
Kryptografia asymetryczna chroni WordPressa w kilku miejscach, choć zwykle niewidocznie.
Podpisy aktualizacji. Od wersji 5.2 z maja 2019 roku aktualizacje WordPressa są podpisywane kluczem przechowywanym offline, a witryna weryfikuje podpis przed ich zastosowaniem [5]. Podpis powstaje algorytmem Ed25519 ze skrótu SHA-384 zawartości pliku [5]; skrót liczy funkcja skrótu (hashowanie). Weryfikację wykonuje funkcja verify_file_signature() w pliku wp-admin/includes/file.php [5]. Ten sam komunikat zachęcał autorów wtyczek do przejścia z przestarzałego rozszerzenia mcrypt na libsodium, z biblioteką sodium_compat dla starszych wersji PHP [5]. Mechanizm dotyczy aktualizacji rdzenia.
HTTPS. Certyfikat witryny wiąże jej klucz publiczny z domeną, a klucz prywatny zostaje na serwerze. CERT Polska zaleca, by klucz prywatny był przechowywany wyłącznie na serwerze, który go używa [7].
Dostęp administracyjny. Logowanie kluczem SSH do serwera i passkeys w panelu działają na tej samej zasadzie: serwer zna tylko klucz publiczny, a dowodem tożsamości jest operacja wykonana kluczem prywatnym.
Klucze bezpieczeństwa i sole z wp-config.php nie są kluczami asymetrycznymi. To losowe sekrety, których WordPress używa przy ciasteczkach logowania; zob. klucze bezpieczeństwa i sole.
Zagrożenia i skutki
Bezpieczeństwo całego schematu zależy od tajności klucza prywatnego i od pewności, do kogo należy klucz publiczny.
- Wyciek klucza prywatnego pozwala podszyć się pod właściciela: podpisywać w jego imieniu albo odszyfrowywać przeznaczone dla niego dane. NIST w części o odtwarzaniu po kompromitacji podaje, że ujawnienie tajnego albo prywatnego klucza naraża wszystkie chronione nim informacje i procesy [2].
- Podmiana klucza publicznego. Jeśli nadawca dostanie fałszywy klucz publiczny, zaszyfruje dane dla atakującego albo uzna jego podpis. Przed tym chroni infrastruktura klucza publicznego (PKI). NIST definiuje ją jako strukturę, która wydaje, utrzymuje i unieważnia certyfikaty klucza publicznego [2], a sam certyfikat jako zestaw danych wiążący klucz publiczny z podmiotem dzięki podpisowi zaufanej strony [2].
- Komputery kwantowe. NIST ostrzega, że wystarczająco duży komputer kwantowy mógłby szybko rozwiązywać problemy matematyczne, na których opiera się obecne szyfrowanie [6]. Część ekspertów przewiduje powstanie takiego urządzenia w ciągu dekady [6].
Dobre praktyki i rozwój
- Klucze prywatne przechowywać w sejfie kryptograficznym, na przykład HSM albo izolowanej usłudze kryptograficznej, a nigdy jako zwykły tekst [3].
- Mieć plan postępowania po kompromitacji klucza, obejmujący wymianę kluczy i sprawdzanie unieważnień [3]; zob. rotacja kluczy.
- Używać kluczy o długości zalecanej w bieżących wytycznych [7].
- Śledzić przejście na kryptografię postkwantową. 13 sierpnia 2024 roku NIST opublikował pierwsze trzy standardy: FIPS 203 (ML-KEM) jako podstawowy standard szyfrowania oraz FIPS 204 (ML-DSA) i FIPS 205 (SLH-DSA) do podpisów cyfrowych [6]. Nowe algorytmy opierają się na innych problemach matematycznych, które mają być trudne zarówno dla komputerów klasycznych, jak i kwantowych [6]. SLH-DSA pomyślano jako metodę zapasową na wypadek, gdyby ML-DSA okazał się podatny [6].
Przypisy
8- [1] Asymmetric cryptography — Glossary · NIST CSRC
- [2] SP 800-57 Part 1 Rev. 5: Recommendation for Key Management · NIST
- [3] Key Management Cheat Sheet · OWASP
- [4] RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3 · IETF
- [5] Security in 5.2 · Make WordPress Core
- [6] NIST Releases First 3 Finalized Post-Quantum Encryption Standards · NIST
- [7] Bezpieczna konfiguracja TLS · CERT Polska
- [8] Szyfrowanie poczty w Outlook · Sekurak
Hasła w tym artykule
15Linkują tutaj
17- szyfrowanie
- klucz kryptograficzny
- passkey
- TLS
- certyfikat SSL/TLS
- podpis cyfrowy
- kryptografia postkwantowa
- FIDO2 / WebAuthn
- JWT (JSON Web Token)
- SPF / DKIM / DMARC (uwierzytelnianie poczty)
- certyfikat cyfrowy
- forward secrecy
- szyfrowanie end-to-end (E2EE)
- uwierzytelnianie bez hasła
- infrastruktura klucza publicznego
- DNSSEC
- podpisywanie kodu