BAD SKY.NET

TLS Signature Algorithms List

Signature algorithms, sent in the signature_algorithms extension, tell the server which signature schemes the client can verify. The server uses one of them to sign the handshake (in TLS 1.3, the CertificateVerify message), and its certificate chain should use schemes from the list as well.

Each scheme combines a public key algorithm with a hash: ecdsa_secp256r1_sha256 is ECDSA on the P-256 curve with SHA-256, rsa_pss_rsae_sha256 is RSA-PSS with SHA-256, rsa_pkcs1_sha256 is classic RSA PKCS#1 v1.5. TLS 1.3 requires support for ECDSA P-256, RSA-PSS and RSA PKCS#1 with SHA-256, and newer stacks add EdDSA (ed25519) and post-quantum ML-DSA schemes.

The list is long and its order is set by the TLS library, so it is a good signal of which library a client uses. JA4 hashes the signature algorithms, in the order sent, together with the sorted extensions in the third part of the fingerprint, so two clients with identical ciphers and extensions can still have different JA4 values because of this list.

NameCodeWhat it doesStatusSent by measured clients
dsa_sha2561026dsa_sha256 is a TLS 1.2 code for DSA signatures with SHA-256. TLS 1.3 removed DSA, but OpenSSL clients still list it.insecure6 of 11
ecdsa_brainpoolP256r1tls13_sha2562074ecdsa_brainpoolP256r1tls13_sha256 is ECDSA on the Brainpool P-256 curve for TLS 1.3. Only OpenSSL clients offer it.—5 of 11
ecdsa_secp256r1_sha2561027ecdsa_secp256r1_sha256: ECDSA signatures on the P-256 curve with SHA-256, the most common scheme for ECDSA certificates.recommended11 of 11
ecdsa_secp384r1_sha3841283ecdsa_secp384r1_sha384 is ECDSA on the P-384 curve with SHA-384, used by many CA root and intermediate certificates.recommended11 of 11
ecdsa_secp521r1_sha5121539ecdsa_secp521r1_sha512 is ECDSA on P-521 with SHA-512. Libraries accept it; the Chrome-like clients we measured do not.recommended9 of 11
ecdsa_sha1515ecdsa_sha1 is ECDSA with SHA-1, deprecated in TLS. Only macOS curl, Go net/http and the Firefox profile still list it.insecure3 of 11
ed255192055ed25519 is the EdDSA signature scheme on Curve25519. Libraries offer it for TLS; Chrome-like clients do not.recommended7 of 11
ed4482056ed448 is the EdDSA signature scheme on Curve448. Only OpenSSL-based clients offer it in our measurements.recommended6 of 11
mldsa442308mldsa44 is the ML-DSA-44 post-quantum signature scheme for TLS 1.3. curl_cffi and the OpenSSL-based Python, Node.js and PHP clients already offer it.—6 of 11
mldsa652309mldsa65 is the ML-DSA-65 post-quantum signature scheme for TLS 1.3, offered first by recent OpenSSL clients.—6 of 11
rsa_pkcs1_sha1513rsa_pkcs1_sha1 is a legacy RSA signature scheme with SHA-1, deprecated for TLS. Only a few measured clients still offer it.insecure3 of 11
rsa_pkcs1_sha2561025rsa_pkcs1_sha256 is classic RSA PKCS#1 v1.5 with SHA-256, still the common signature on RSA certificates.recommended11 of 11
rsa_pkcs1_sha3841281rsa_pkcs1_sha384 is RSA PKCS#1 v1.5 with SHA-384, accepted for certificate signatures. Every client we recorded sends it.recommended11 of 11
rsa_pss_pss_sha2562057rsa_pss_pss_sha256 is RSA-PSS with SHA-256 for dedicated RSA-PSS keys, a rare certificate type. OpenSSL clients accept it.recommended6 of 11
rsa_pss_rsae_sha2562052rsa_pss_rsae_sha256 is RSA-PSS with SHA-256 for ordinary RSA keys, the signature scheme TLS 1.3 servers with RSA certificates use.recommended11 of 11
rsa_pss_rsae_sha3842053rsa_pss_rsae_sha384 is RSA-PSS with SHA-384 for ordinary RSA keys. Every client we recorded offers it.recommended11 of 11