Mathématiquement, elle est dérivée de la clé privée : un point de la courbe Q = d·G pour ECDSA et ECDH, un point encodé de 32 octets pour Ed25519 et X25519, le module et l’exposant (n, e) pour RSA, une graine de matrice et un vecteur pour ML-KEM et ML-DSA. Les tailles vont de 32 octets (Ed25519) et 33/65 octets (P-256 compressé/non compressé) à 294 octets (RSA-2048 en SubjectPublicKeyInfo DER) et de 1312 à 2592 octets (ML-DSA).
Conteneurs courants : SubjectPublicKeyInfo en DER ou en PEM (-----BEGIN PUBLIC KEY-----), l’ancien RSAPublicKey de PKCS #1 (BEGIN RSA PUBLIC KEY), JWK (kty, crv, x, y ou n, e), le format OpenSSH sur une ligne (ssh-ed25519 AAAA…), COSE_Key dans WebAuthn, les paquets de clé OpenPGP et les adresses de blockchain, qui sont des condensats de clés publiques.
Une clé publique ne porte aucune identité. La confiance vient d’une liaison : un certificat signé par une AC, un JWKS récupéré en HTTPS auprès de l’émetteur, une entrée known_hosts, une empreinte épinglée ou une adresse sur la chaîne. Validez les clés reçues d’autres parties (appartenance à la courbe, taille, type) avant de les utiliser.