Saltar al contenido
ecdsa.com

PKCS #8

El contenedor de clave privada independiente del algoritmo (PrivateKeyInfo, RFC 5208; OneAsymmetricKey, RFC 5958) que se guarda en PEM como -----BEGIN PRIVATE KEY----- o, si está protegido con contraseña, como -----BEGIN ENCRYPTED PRIVATE KEY-----.
También se escribePKCS#8PrivateKeyInfoBEGIN PRIVATE KEYOneAsymmetricKey

PrivateKeyInfo es una SEQUENCE con una versión, el privateKeyAlgorithm (un AlgorithmIdentifier), el privateKey de tipo OCTET STRING y atributos opcionales; la cadena de octetos contiene la clave propia del algoritmo (una RSAPrivateKey de PKCS #1, una ECPrivateKey de SEC 1, una semilla Ed25519 de 32 bytes envuelta según el RFC 8410, o una semilla o clave expandida de ML-DSA). La versión 2 del RFC 5958 añade una clave pública opcional.

EncryptedPrivateKeyInfo envuelve esa estructura con cifrado basado en contraseña, hoy PBES2 (RFC 8018). OpenSSL 3.6 escribe PBES2 con PBKDF2-HMAC-SHA256 y AES-256-CBC cuando se le pide cifrar; las claves antiguas pueden usar PBES1 con DES o RC2, que las bibliotecas modernas rechazan.

Como nombra el algoritmo, PKCS #8 es el formato que esperan la mayoría de las bibliotecas: OpenSSL 3 lo escribe por defecto, y lo usan PKCS8EncodedKeySpec de Java, x509.ParsePKCS8PrivateKey de Go, createPrivateKey de Node y la importación pkcs8 de WebCrypto. Convierte otros formatos con openssl pkcs8 -topk8 -nocrypt o openssl pkey.

Estándares y referencias

Todos los términos