Pular para o conteúdo
ecdsa.com

Formato de chave PKCS #1

As estruturas ASN.1 RSAPublicKey e RSAPrivateKey, exclusivas do RSA, do Apêndice A da RFC 8017, armazenadas em PEM como -----BEGIN RSA PUBLIC KEY----- e -----BEGIN RSA PRIVATE KEY-----.
Também escrito comoRSA PRIVATE KEYRSA PUBLIC KEYRSAPrivateKeytraditional RSA key

RSAPublicKey é apenas uma SEQUENCE com o módulo e o expoente público. RSAPrivateKey contém version, n, e, d, p, q, dP, dQ, qInv e primos extras opcionais. Nenhuma das duas traz um identificador de algoritmo, e é por isso que o formato só consegue descrever RSA e que o rótulo PEM precisa dizer RSA.

O PKCS #8 envolve os mesmos bytes de RSAPrivateKey em um PrivateKeyInfo com um OID de algoritmo (rsaEncryption, 1.2.840.113549.1.1.1), e o SubjectPublicKeyInfo envolve o RSAPublicKey da mesma forma para chaves públicas. O OpenSSL 3 grava PKCS #8 (BEGIN PRIVATE KEY) por padrão, inclusive a partir de openssl rsa; -traditional gera PKCS #1. O PKCS8EncodedKeySpec do Java e muitas bibliotecas de JWT aceitam apenas PKCS #8 ou SPKI, o que causa o conhecido erro com chaves antigas no estilo id_rsa.

Não confunda o formato de chave com os paddings de assinatura ou de criptografia do PKCS #1: a RFC 8017 define os três, e só o formato de arquivo é o que se quer dizer quando alguém fala em “uma chave PKCS #1”.

Padrões e referências

Todos os termos