podpis cyfrowy
| Po angielsku | digital signature |
|---|---|
| Którą formą pisać | po polsku Polska nazwa przyjęła się w tekstach i w wyszukiwarce — używaj jej samodzielnie. |
| Inne formy | podpis |
| Kategoria | Kryptografia, tożsamość i uwierzytelnianie |
Podpis cyfrowy to kryptograficzne potwierdzenie utworzone kluczem prywatnym i weryfikowalne odpowiadającym mu kluczem publicznym. Standard NIST FIPS 186-5 wskazuje trzy funkcje podpisu: wykrywanie nieuprawnionych zmian danych (integralność), potwierdzenie tożsamości podpisującego (uwierzytelnienie) oraz niezaprzeczalność, czyli dowód, którego podpisujący nie może łatwo wyprzeć się później [1]. Podpis opiera się na kryptografii asymetrycznej i jest tylko tak wiarygodny, jak wiarygodne jest powiązanie klucza publicznego z konkretną osobą albo firmą.
Jak działa
Podpisuje się w praktyce nie całe dane, lecz ich skrót. Program liczy funkcję skrótu (hashowanie) z pliku lub wiadomości, a następnie przetwarza wynik kluczem prywatnym. Odbiorca liczy skrót samodzielnie i sprawdza, kluczem publicznym, czy podpis do niego pasuje. Zmiana choćby jednego bajtu danych daje inny skrót i podpis przestaje się zgadzać.
Klucz prywatny musi pozostać tajny; kto go zdobędzie, może podpisywać w imieniu właściciela. Klucz publiczny jest jawny, ale odbiorca musi mieć pewność, czyj on jest. Tę rolę pełni certyfikat cyfrowy wystawiony przez urząd certyfikacji (CA) w ramach infrastruktury klucza publicznego (PKI), albo, jak w WordPressie, klucz wbudowany na stałe w oprogramowanie.
Rodzaje
FIPS 186-5, opublikowany 3 lutego 2023 roku, obejmuje algorytmy RSA, ECDSA i EdDSA, a wcześniejszy algorytm DSA nie jest w nim już zatwierdzony do tworzenia nowych podpisów [1].
| Algorytm | Podstawa | Uwagi |
|---|---|---|
| RSA | trudność rozkładu na czynniki | zatwierdzony w FIPS 186-5 [1] |
| ECDSA | krzywe eliptyczne | zatwierdzony w FIPS 186-5 [1] |
| EdDSA (Ed25519, Ed448) | krzywe Edwardsa | klucze 32 lub 57 bajtów, podpisy 64 lub 114 bajtów [2] |
| DSA | logarytm dyskretny | wycofywany [1] |
RFC 8032 ze stycznia 2017 roku wymienia zalety EdDSA: wysoką wydajność, podpisywanie deterministyczne bez potrzeby losowej liczby dla każdego podpisu i większą odporność na ataki bocznym kanałem [2]. Poziom bezpieczeństwa Ed25519 to około 128 bitów, a Ed448 około 224 bitów [2].
W prawie Unii Europejskiej funkcjonuje osobne pojęcie podpisu elektronicznego. Rozporządzenie eIDAS definiuje go jako dane w postaci elektronicznej dołączone lub logicznie powiązane z innymi danymi, używane przez podpisującego [6]. Kwalifikowany podpis elektroniczny jest podpisem zaawansowanym składanym za pomocą kwalifikowanego urządzenia i opartym na certyfikacie kwalifikowanym [6], a zgodnie z art. 25 ust. 2 ma skutek prawny równoważny podpisowi własnoręcznemu [6]. Podpis cyfrowy to mechanizm techniczny; podpis kwalifikowany to kategoria prawna, która z tego mechanizmu korzysta.
W WordPressie
Od wersji 5.2 WordPress podpisuje paczki aktualizacji. Ogłoszenie zespołu rdzenia wyjaśnia, że podpisy liczone są algorytmem Ed25519 ze skrótu SHA384 zawartości pliku, a witryny weryfikują je przed zastosowaniem aktualizacji [3]. Na starszym PHP bez rozszerzenia Sodium weryfikację zapewnia biblioteka sodium_compat [3].
Weryfikację wykonuje funkcja verify_file_signature() w pliku wp-admin/includes/file.php [3]. Dokumentacja opisuje ją jako sprawdzenie zawartości pliku względem podpisu ED25519, dostępne od wersji 5.2.0 [4]. Funkcja zwraca błąd signature_verification_failed, gdy autentyczności nie da się potwierdzić, signature_verification_no_signature, gdy podpisu brak, oraz signature_verification_unsupported, gdy serwerowi brakuje potrzebnych funkcji kryptograficznych [4].
Podpis chroni kanał aktualizacji rdzenia przed podmianą paczki po drodze albo na serwerze pobrań, co jest jednym z wektorów ataku na łańcuch dostaw. Nie dotyczy natomiast plików pobranych spoza oficjalnych kanałów, na przykład pirackich wtyczek; ich integralności nikt nie poświadcza. Do wykrywania zmian w plikach już zainstalowanych służy monitorowanie integralności plików.
Znaczenie
- Integralność: wykrywa zmianę danych po podpisaniu [1].
- Pochodzenie: potwierdza, kto podpisał, o ile klucz publiczny jest wiarygodnie przypisany [1].
- Niezaprzeczalność: podpisujący nie może łatwo wyprzeć się podpisu [1].
Podpis nie szyfruje danych i nie zapewnia poufności; do tego służy szyfrowanie. Nie mówi też nic o tym, czy podpisany kod jest bezpieczny, a jedynie kto go wydał.
Dobre praktyki
- Chronić klucz prywatny, najlepiej w sprzętowym module HSM, i ograniczyć do niego dostęp.
- Planować rotację kluczy; klucz weryfikacyjny WordPressa z wersji 5.2 miał ustaloną datę wygaśnięcia, 1 kwietnia 2021 roku [3].
- Weryfikować cały łańcuch certyfikatów, a nie tylko sam podpis.
- Aktualizować biblioteki, które sprawdzają podpisy; błąd w weryfikacji niweczy cały mechanizm.
Historia i przykłady
CERT Polska 25 maja 2026 roku opublikował informację o podatności CVE-2026-9058 w Szafir SDK, oprogramowaniu Krajowej Izby Rozliczeniowej [5]. Przy przetwarzaniu niezaufanego certyfikatu z rozszerzeniem Authority Information Access biblioteka pobierała i importowała certyfikat wystawcy jako zaufany, a następnie zwracała status pozytywnej weryfikacji [5]. W efekcie integrujące aplikacje mogły uznać podpis cyfrowy za prawidłowy mimo niezaufanego łańcucha certyfikacji, co według komunikatu umożliwiało obejście mechanizmów uwierzytelniania i podszywanie się pod użytkownika [5]. Podatne były wszystkie wersje poniżej 1.8.463.2 [5]. Przypadek pokazuje, że algorytm podpisu może być poprawny, a zawodzi weryfikacja zaufania do klucza.
Przypisy
6- [1] FIPS 186-5: Digital Signature Standard (DSS) · NIST
- [2] RFC 8032: Edwards-Curve Digital Signature Algorithm (EdDSA) · IETF
- [3] Security in 5.2 · Make WordPress Core
- [4] verify_file_signature() — Code Reference · WordPress.org
- [5] Podatność w oprogramowaniu Szafir SDK (CVE-2026-9058) · CERT Polska
- [6] Rozporządzenie (UE) nr 910/2014 (eIDAS) · EUR-Lex
Hasła w tym artykule
13Linkują tutaj
15- funkcja skrótu (hashowanie)
- klucz kryptograficzny
- spoofing
- urząd certyfikacji
- bezpieczny rozruch
- kryptografia postkwantowa
- SPF / DKIM / DMARC (uwierzytelnianie poczty)
- certyfikat cyfrowy
- identity provider (IdP)
- kryptografia asymetryczna
- mObywatel / Profil Zaufany (mDowód)
- DNS cache poisoning
- DNSSEC
- podpisywanie kodu
- aktualizacja firmware