W ostatnich latach TLS przeszedł jedną z największych zmian od czasów wprowadzenia SNI. Usunięcie RSA z wymiany kluczy w TLS 1.3, przejście na w pełni eliptyczną wymianę ECDHE oraz rosnący udział ruchu mobilnego spowodowały, że wydajność kryptograficzna stała się elementem architektury, a nie marginalnym detalem. W tym kontekście wybór algorytmu podpisu certyfikatu – RSA czy ECDSA – ma dziś zauważalny wpływ na zachowanie aplikacji, koszty infrastruktury oraz ogólną responsywność systemów.
W praktyce różnica nie wynika z „nowoczesności” ECDSA, lecz z tego, że jego struktury są mniejsze, bardziej efektywne do walidacji i lepiej dopasowane do współczesnych środowisk ARM oraz ruchu krótkotrwałego. Analiza techniczna pokazuje, że zmiana algorytmu podpisu potrafi bardziej poprawić wydajność aplikacji niż upgrade CPU czy dodatkowe instancje backendu.
Spis Treści
RSA i ECDSA rozwiązują ten sam problem – podpis cyfrowy – w dwóch technicznie odmiennych modelach matematycznych. RSA wykorzystuje arytmetykę modularną, która rośnie kosztowo wraz z długością klucza. Z kolei ECDSA wykorzystuje grupy punktów krzywych eliptycznych, gdzie nawet mały klucz (256 bitów) zapewnia poziom bezpieczeństwa porównywalny do RSA 3072.
W praktyce oznacza to:
Różnica ta jest szczególnie widoczna na urządzeniach mobilnych i w środowiskach o ograniczonej mocy obliczeniowej. Nowoczesne chipy ARM posiadają wyspecjalizowane instrukcje przyspieszające operacje na małych liczbach, co dodatkowo wzmacnia przewagę ECDSA.
W testach laboratoryjnych na typowych procesorach mobilnych:
Różnice tego rzędu, choć niewielkie pojedynczo, mają ogromne znaczenie przy dużej liczbie połączeń lub przy częstych renegocjacjach sesji.
Certyfikat X.509 zawiera nie tylko podpis, lecz również pola kluczy publicznych, metadane i rozszerzenia. RSA i ECDSA różnią się tutaj istotnie na poziomie struktury ASN.1.
Podpis RSA ma stałą długość – odpowiada długości klucza, np. 2048 bitów = 256 bajtów.
Podpis ECDSA składa się z dwóch wartości – r i s – kodowanych w DER. Dla P-256 typowo jest to ok. 70 bajtów.
Zmniejszenie podpisu wpływa na:
W praktyce pełny chain RSA często przekracza 3000 bajtów, podczas gdy chain ECDSA mieści się w ~1500-1900 bajtach. W TLS 1.3, gdzie CA Issuer chain jest zwykle przesyłany w jednym rekordzie, oznacza to mniej fragmentacji pakietów i mniejszą szansę na retransmisję TCP. W sieciach mobilnych oznacza to bezpośrednie skrócenie handshake. Różnice rzędu 10-40 ms są typowe zwłaszcza w środowiskach o podwyższonym jitterze, jak zatłoczone stacje bazowe LTE.
Różnica między RSA a ECDSA staje się szczególnie widoczna podczas analizy captures z narzędzi takich jak Wireshark.
Przykład handshake RSA 2048:
Handshake Type: Certificate
Length: 3530 bytes
Signature Algorithm: rsa_pss_rsae_sha256
Signature Length: 256 bytes
Przykład handshake ECDSA P-256:
Handshake Type: Certificate
Length: 1689 bytes
Signature Algorithm: ecdsa_secp256r1_sha256
Signature Length: 70 bytes
Zmniejszenie rozmiaru certyfikatu o ponad połowę obniża liczbę segmentów TCP i zmniejsza wrażliwość handshake na utratę pakietu. To szczególnie widoczne w środowiskach rozproszonych i na urządzeniach, które często przełączają się między nadajnikami lub pracują na niestabilnych połączeniach.
W środowisku obsługującym około 30 000 sesji na minutę oraz 70 procent ruchu mobilnego migracja z RSA 2048 na ECDSA P-256 przyniosła wyraźne i mierzalne korzyści. W testach syntetycznych różnica w handshake wynosiła 18-22 ms dla RSA i 12-15 ms dla ECDSA. Natomiast w ruchu rzeczywistym różnica była większa, szczególnie w godzinach szczytu, gdzie retransmisje TCP były częstsze.
Najistotniejsze obserwacje:
Wzrost CPS bez zwiększenia zasobów serwerowych potwierdził, że największą zmianę przyniosło samo przejście na ECDSA.
W systemach finansowych, gdzie mTLS jest wymogiem regulacyjnym, każde połączenie inicjuje handshake po obu stronach. W środowisku wykonującym około 180 000 requestów na minutę migracja na certyfikaty ECDSA przyniosła wymierne korzyści.
Najważniejsze fakty:
Szczególnie istotne było to, że nawet w okresach największego ruchu nie występowały już opóźnienia w weryfikacji certyfikatów, które wcześniej powodowały sporadyczne błędy 502 lub 503.
Urządzenia wykorzystujące stare wersje OpenSSL (0.9.x) lub wbudowane stosy TLS nie wspierają algorytmów ECDSA. W takich środowiskach wdrożenie ECDSA powodowałoby błędy unsupported signature algorithm w czasie handshake.
Najczęściej stosowanym rozwiązaniem jest konfiguracja dual-cert, w której:
Dzięki temu integratorzy mogą modernizować infrastrukturę, jednocześnie zachowując kompatybilność z istniejącymi instalacjami.
Najsłabszym elementem ECDSA nie jest matematyka, lecz implementacja. Parametr k, używany podczas generowania podpisu, musi być losowy i nie może zostać użyty ponownie. W przeciwnym razie klucz prywatny można odzyskać z dwóch podpisów, co było widoczne w znanym incydencie związanym z PlayStation 3. Z tego względu nowoczesne biblioteki kryptograficzne stosują deterministyczne generowanie k zgodnie z RFC 6979. Zamiast używać RNG, parametr k obliczany jest jako funkcja hasha i klucza prywatnego, co eliminuje ryzyko błędu źródła entropii.
Drugim istotnym elementem jest zapewnienie operacji constant-time. W RSA implementacje constant-time są dobrze znane, natomiast w ECDSA zależą od krzywej i sposobu reprezentacji punktów. HSM-y stosowane w dużych firmach często używają własnych ścieżek optymalizacyjnych, aby uniknąć wycieków timingowych.
Większość dużych organizacji – w tym Cloudflare, AWS i Google – stosuje dziś model dual-cert. Serwer prezentuje zarówno certyfikat RSA, jak i ECDSA, a klient wybiera właściwy algorytm na podstawie pola signature_algorithms w ClientHello.
Taka konfiguracja:
Wdrożenie sprowadza się do kilku linii konfiguracji, a korzyści płynące z tego podejścia są natychmiastowe.
Ed25519 i Ed448 oferują lepszą odporność implementacyjną oraz większą stabilność czasową niż ECDSA. Jednak brak wsparcia w przeglądarkach oraz ograniczenia standardów X.509 sprawiają, że ich wykorzystanie w certyfikatach serwerowych nadal pozostaje ograniczone. Kryptografia post-kwantowa jest obiecująca, ale jej obecne implementacje generują podpisy o rozmiarze kilku kilobajtów i łańcuchy certyfikatów, które przekraczają wielkość rozsądną dla mobilnego handshake. W najbliższych latach prawdopodobnie pojawi się hybrydowe podejście, w którym ECDSA będzie łączone z podpisami PQC.
W praktyce oznacza to, że ECDSA pozostanie dominującym algorytmem podpisu w TLS przez co najmniej 5-8 lat.
RSA pozostaje kluczowe jedynie w środowiskach wymagających zgodności z urządzeniami legacy oraz rozwiązaniami embedded. W pozostałych zastosowaniach ECDSA zapewnia szybszą walidację podpisów, mniejszą liczbę retransmisji pakietów, krótszy handshake i niższe zużycie CPU. Wyniki te są spójne z pomiarami Cloudflare, AWS i wieloma wdrożeniami produkcyjnymi, w których zmiana algorytmu podpisu była jedną z najprostszych form optymalizacji TLS. W praktyce najbardziej efektywnym rozwiązaniem pozostaje konfiguracja dual-cert, łącząca kompatybilność RSA z wydajnością ECDSA. Dzięki niej współczesne aplikacje mogą w pełni wykorzystać korzyści TLS 1.3, zachowując jednocześnie kompatybilność z całą populacją urządzeń.
Tak, w operacjach weryfikacji podpisu ECDSA jest znacząco szybsze na większości współczesnych urządzeń i bibliotek kryptograficznych. Wynika to z mniejszego rozmiaru klucza (256 bitów zamiast 2048/3072) oraz bardziej efektywnych operacji punktowych. Testy na urządzeniach ARM pokazują od 4x do 10x szybszą walidację.
Wszystkie nowoczesne przeglądarki i systemy operacyjne mają natywne wsparcie dla ECDSA. Wyjątki dotyczą głównie:
W kontekście ruchu webowego i API obsługa jest praktycznie pełna.
Zależy od środowiska. Dla stron publicznych oraz aplikacji z ruchem mieszanym rekomendowane jest dual-cert (RSA + ECDSA). Pozwala to uniknąć problemów z urządzeniami legacy, nie tracąc korzyści wydajnościowych ECDSA. W systemach czysto webowych (np. SaaS, API-first) często stosuje się ECDSA-only.
Tak. P-256 zapewnia poziom bezpieczeństwa ~128 bitów, co odpowiada RSA 3072. W praktyce ECDSA uznawana jest za bardziej przyszłościową z powodu mniejszej podatności na błędy implementacyjne w porównaniu z dużymi kluczami RSA i większej odporności na ataki związane z długością klucza.
ECDSA wymaga generowania unikalnego parametru k dla każdego podpisu. Powtórzenie k prowadzi do natychmiastowego wycieku klucza prywatnego. Rozwiązaniem jest stosowanie deterministycznego ECDSA (RFC 6979), które generuje k w sposób bezpieczny i powtarzalny.
Tak. Certyfikaty ECDSA są znacząco mniejsze:
W TLS 1.3 oznacza to szybszy handshake i mniejszą wrażliwość na straty pakietów.
Wręcz przeciwnie. ECDSA jest bardziej efektywna obliczeniowo niż RSA, szczególnie na procesorach ARM stosowanych w smartfonach, routerach i edge computing. Koszt walidacji podpisu jest kilkukrotnie niższy.
Nie. Większość komercyjnych CA traktuje algorytm podpisu jako parametr CSR, a nie produkt. Cena certyfikatu pozostaje identyczna – różni się jedynie łańcuch i podpis końcowy.
Najczęściej stosowane (TLS 1.3 automatyzuje wybór), ale dla TLS 1.2 typowe są:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384.Dla środowisk legacy można pozostawić RSA jako fallback (TLS_ECDHE_RSA_*).
W większości przypadków tak, szczególnie jeśli:
Nasze osobne testy wykazują poprawę handshake o 25-35 procent w ruchu mobilnym.
Ryzyko migracji to głównie kompatybilność z urządzeniami. Najbezpieczniejszy proces to:
unsupported signature algorithm),Nie – tak samo jak RSA. Ochronę PQ zapewniają dopiero algorytmy NIST (np. ML-DSA). Jednak z uwagi na bardzo duże rozmiary podpisów PQ nie nadają się jeszcze do powszechnego stosowania w TLS. W perspektywie 5-8 lat dominować będzie ECDSA jako hybryda „wydajne tu i teraz”.
Nie w kontekście certyfikatów SSL/TLS. Ed25519 nie jest jeszcze wspierana w standardzie X.509 dla certyfikatów serwerowych i nie jest obsługiwana przez przeglądarki. W środowiskach, które mogą ją stosować (SSH, wewnętrzne systemy), Ed25519 jest świetnym wyborem, ale nie zastąpi ECDSA w TLS w bliskiej przyszłości.
Tak. Dual-cert pozwala na wdrożenie ECDSA w sposób całkowicie transparentny. Klienci, którzy wspierają ECDSA, zaczną automatycznie korzystać z nowego certyfikatu, a urządzenia legacy pozostaną przy RSA. To najczęściej stosowany model w 2023-2025 r.
Migracja z RSA do ECDSA jest zazwyczaj prosta, ale w środowiskach produkcyjnych pojawia się kilka typowych problemów, które nie są oczywiste na poziomie konfiguracji. W tej sekcji zestawiliśmy problemy, które częściej wynikają z zachowania klientów, load balancerów, bibliotek SSL/TLS oraz edge-case’ów infrastruktury niż z samej kryptografii.
Każdy, opisany przez nas, punkt zawiera objaw, przyczynę, diagnozę oraz kroki naprawcze, aby maksymalnie skrócić czas analizy incydentu.
unsupported signature algorithm podczas handshake.Objaw
Wybrani klienci odrzucają połączenie natychmiast po otrzymaniu ServerHello.
Przyczyna
Klient nie oferuje ecdsa_secp256r1_sha256 w polu signature_algorithms.
Najczęściej dotyczy to:
Diagnostyka
Przechwyć ClientHello → sprawdź listę algorytmów podpisu.
Brak ecdsa_* = klient legacy.
Rozwiązanie
SSLHandshakeException mimo, że Chrome działa.Objaw
Aplikacja nie nawiązuje TLS, ale ta sama domena ładuje się w Chrome.
Przyczyna
Aplikacje często używają starszego stosu TLS niż przeglądarka – np. WebView z API < 21 lub HttpUrlConnection ze starymi ograniczeniami kryptograficznymi.
Diagnostyka
Sprawdź, czy aplikacja korzysta z natywnego stacka czy WebView. Zaloguj getSupportedCipherSuites() i getSupportedSignatureAlgorithms().
Rozwiązanie
Objaw
Losowe urządzenia zgłaszają handshake_failure lub zrywają połączenie po ServerHello.
Przyczyna
Starsze wersje bibliotek TLS nie rozumieją ecdsa-with-SHA256.
Typowe przykłady: mbedTLS < 2.0, OpenSSL 0.9.x, WolfSSL sprzed 2014.
Diagnostyka
Rozwiązanie
Objaw
Operacje podpisu OCSP stapling lub mTLS zajmują więcej czasu niż na RSA.
Przyczyna
Niektóre starsze HSM-y (szczególnie modele z 2010-2017) mają zoptymalizowane implementacje RSA i słabsze ścieżki ECDSA, zwłaszcza na P-256.
Diagnostyka
Porównaj operacje sign dla obu algorytmów: openssl speed -engine <HSM> rsa2048 ecdsap256.
Rozwiązanie
Objaw
Klienci TLS 1.3 działają bez problemu, ale TLS 1.2 zgłasza ERR_SSL_VERSION_OR_CIPHER_MISMATCH.
Przyczyna
Brak pakietów szyfrów ECDHE-ECDSA w konfiguracji TLS 1.2 lub błędna kolejność preferencji.
Diagnostyka
openssl s_client -connect example.com:443 -tls1_2 -cipher ECDHE.
Rozwiązanie
Dodaj i ustaw preferencje dla:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384.Objaw
Nieliczne sesje mobilne gubią handshake lub wymagają retransmisji.
Przyczyna
Za duży chain RSA powoduje fragmentację pakietów i dodatkowe RTT. Typowe dla klientów na przeciążonych stacjach BTS lub w tunelach/komunikacji.
Diagnostyka
Rozwiązanie
Objaw
Handshake kończy się błędem na CertificateVerify.
Przyczyna
Lista client_signature_algorithms nie obejmuje ECDSA.
Diagnostyka
openssl s_client -connect ... -cert client.crt -key client.key -state -tls1_2.
Rozwiązanie
Uzupełnij konfigurację:
ssl_client_signature_algorithms RSA+SHA256:ECDSA+SHA256;
Objaw
Starsze biblioteki TLS zgłaszają: invalid curve.
Przyczyna
Część klientów obsługuje tylko P-256. P-384 i P-521 nie są wspierane przez sporadyczne starsze implementacje.
Diagnostyka
openssl ecparam -list_curves po stronie klienta lub dokumentacja biblioteki.
Rozwiązanie
Generować klucz na prime256v1 (P-256).
Objaw
Klienci zgłaszają błędy decode_error lub bad_certificate.
Przyczyna
Starsze biblioteki TLS nie rozumieją złożonych struktur SPKI w certyfikatach hybrydowych PQC+ECDSA.
Rozwiązanie
Objaw
Część sesji HTTP/2 jest zrywana na etapie SETTINGS.
Przyczyna
Niektóre starsze load balancery sprzętowe źle buforują małe cert chains i źle zarządzają fragmentacją pierwszego rekordu TLS, co uwidacznia się dopiero przy mniejszych pakietach ECDSA.
Diagnostyka
Zrzut handshake → pierwszy rekord TLS ma nietypową fragmentację.
Rozwiązanie