EC - co to jest? Definicja pojęcia KSeF
XAdES. KSeF wymaga certyfikatów EC z krzywą secp256r1 (NIST P-256) i algorytmem ECDSA-SHA256. Certyfikaty EC są zalecane przez Ministerstwo Finansów.Co to jest EC?
EC (Elliptic Curve - krzywe eliptyczne) to algorytm kryptograficzny wykorzystujący matematyczne właściwości krzywych eliptycznych do zapewnienia bezpieczeństwa. Krzywe eliptyczne oferują lepszą wydajność i bezpieczeństwo przy mniejszych rozmiarach kluczy w porównaniu z algorytmami RSA.
W kontekście Krajowego Systemu e-Faktur (KSeF), EC jest używany do podpisywania dokumentów AuthTokenRequest w formacie XAdES. KSeF wymaga certyfikatów EC z krzywą secp256r1 (NIST P-256, prime256v1 w OpenSSL) i algorytmem ECDSA-SHA256.
Certyfikaty EC są zalecane przez Ministerstwo Finansów ze względu na lepszą wydajność i bezpieczeństwo przy mniejszych rozmiarach kluczy. 256 bitów EC odpowiada 3072 bitom RSA pod względem bezpieczeństwa, ale wymaga mniejszego rozmiaru klucza.
EC w KSeF API
EC jest używany w KSeF API 2.0 do podpisywania dokumentów AuthTokenRequest w formacie XAdES. Wymagania: krzywa secp256r1 (NIST P-256, prime256v1 w OpenSSL, OID: 1.2.840.10045.2.1), algorytm podpisu ECDSA z SHA-256, certyfikat musi zawierać rozszerzenia keyUsage (digitalSignature, nonRepudiation) oraz extendedKeyUsage (clientAuth), organizationIdentifier z NIP (dla certyfikatów firmowych). Certyfikaty EC są zalecane przez Ministerstwo Finansów.
Wymagania dla certyfikatów EC
Certyfikaty EC w KSeF muszą spełniać następujące wymagania: krzywa secp256r1 (NIST P-256, prime256v1 w OpenSSL, OID: 1.2.840.10045.2.1), algorytm podpisu ECDSA z SHA-256, rozszerzenia keyUsage (digitalSignature, nonRepudiation), extendedKeyUsage (clientAuth), organizationIdentifier z NIP (dla certyfikatów firmowych). Niektóre biblioteki (np. BouncyCastle) mogą wymagać dodatkowej konfiguracji dla certyfikatów EC.
EC vs RSA
EC (krzywe eliptyczne): wymaga krzywej secp256r1 (mniejszy rozmiar klucza), zalecane przez Ministerstwo Finansów, lepsza wydajność i bezpieczeństwo przy mniejszych rozmiarach kluczy, 256 bitów EC odpowiada 3072 bitom RSA, może wymagać dodatkowej konfiguracji w niektórych bibliotekach. RSA: wymaga klucza 2048 bitów (większy rozmiar), szeroko wspierane przez biblioteki, może być łatwiejsze w implementacji. Oba typy certyfikatów są akceptowane przez KSeF.
Problemy z implementacją EC
Niektóre biblioteki kryptograficzne (BouncyCastle, OpenSSL w PHP, niektóre wersje node-forge) mogą wymagać dodatkowej konfiguracji dla certyfikatów EC. Problemy mogą wynikać z nieprawidłowego użycia algorytmów, providerów kryptograficznych lub konfiguracji krzywych eliptycznych. W razie problemów rozważ użycie certyfikatów RSA lub sprawdź dokumentację biblioteki dotyczącą ECDSA.
FAQ
Jakie są wymagania dla certyfikatów EC w KSeF?
Certyfikaty EC muszą używać krzywej secp256r1 (NIST P-256, prime256v1 w OpenSSL, OID: 1.2.840.10045.2.1). Algorytm podpisu to ECDSA z SHA-256. Certyfikat musi zawierać rozszerzenia keyUsage (digitalSignature, nonRepudiation) oraz extendedKeyUsage (clientAuth). Certyfikaty EC są zalecane przez Ministerstwo Finansów.
Dlaczego certyfikat EC zwraca błąd 'Nieprawidłowa treść podpisu'?
Upewnij się, że używasz krzywej secp256r1 i algorytmu ECDSA z SHA-256. Niektóre biblioteki (np. BouncyCastle, OpenSSL w PHP) wymagają dodatkowej konfiguracji dla certyfikatów EC. Sprawdź dokumentację biblioteki dotyczącą podpisywania z certyfikatami EC. W razie problemów możesz użyć certyfikatów RSA, które są szerzej wspierane.
Czy EC jest lepsze niż RSA?
Certyfikaty EC są zalecane przez Ministerstwo Finansów ze względu na lepszą wydajność i bezpieczeństwo przy mniejszych rozmiarach kluczy. 256 bitów EC odpowiada 3072 bitom RSA pod względem bezpieczeństwa. Jednak implementacja EC może być bardziej skomplikowana w niektórych bibliotekach. Oba typy są akceptowane przez KSeF.
Jakie biblioteki wspierają certyfikaty EC?
Większość nowoczesnych bibliotek kryptograficznych wspiera certyfikaty EC, ale niektóre mogą wymagać dodatkowej konfiguracji. BouncyCastle wymaga użycia BCECProvider dla EC. OpenSSL w PHP może wymagać dodatkowej konfiguracji. Sprawdź dokumentację biblioteki dotyczącą podpisywania z certyfikatami EC.