Aller au contenu
ecdsa.com

Format de clé PKCS #1

Les structures ASN.1 RSAPublicKey et RSAPrivateKey, propres à RSA, définies dans l’annexe A de la RFC 8017 et stockées en PEM sous la forme -----BEGIN RSA PUBLIC KEY----- et -----BEGIN RSA PRIVATE KEY-----.
Autres graphiesRSA PRIVATE KEYRSA PUBLIC KEYRSAPrivateKeytraditional RSA key

RSAPublicKey n’est qu’une SEQUENCE du module et de l’exposant public. RSAPrivateKey contient version, n, e, d, p, q, dP, dQ, qInv et d’éventuels nombres premiers supplémentaires. Aucune des deux ne porte d’identifiant d’algorithme : c’est pourquoi le format ne peut décrire que RSA et pourquoi l’étiquette PEM doit indiquer RSA.

PKCS #8 enveloppe les mêmes octets RSAPrivateKey dans une PrivateKeyInfo avec un OID d’algorithme (rsaEncryption, 1.2.840.113549.1.1.1), et SubjectPublicKeyInfo enveloppe RSAPublicKey de la même façon pour les clés publiques. OpenSSL 3 écrit du PKCS #8 (BEGIN PRIVATE KEY) par défaut, y compris depuis openssl rsa ; -traditional produit du PKCS #1. PKCS8EncodedKeySpec de Java et de nombreuses bibliothèques JWT n’acceptent que PKCS #8 ou SPKI, d’où l’erreur bien connue avec les anciennes clés de type id_rsa.

Ne confondez pas ce format de clé avec les remplissages de signature ou de chiffrement PKCS #1 : la RFC 8017 définit les trois, et quand on parle d’une « clé PKCS #1 », c’est uniquement le format de fichier qui est visé.

Normes et références

Tous les termes