Zum Inhalt springen
ecdsa.com

Schlüsselformat PKCS #1

Die nur für RSA definierten ASN.1-Strukturen RSAPublicKey (öffentlicher Schlüssel) und RSAPrivateKey (privater Schlüssel) aus RFC 8017, Anhang A, die in PEM als -----BEGIN RSA PUBLIC KEY----- und -----BEGIN RSA PRIVATE KEY----- gespeichert werden.
Auch geschrieben alsRSA PRIVATE KEYRSA PUBLIC KEYRSAPrivateKeytraditional RSA key

RSAPublicKey ist nur eine SEQUENCE aus dem Modul und dem öffentlichen Exponenten. RSAPrivateKey enthält version, n, e, d, p, q, dP, dQ, qInv und optional weitere Primzahlen. Keine der beiden Strukturen enthält einen Algorithmusbezeichner; deshalb kann das Format nur RSA beschreiben, und deshalb muss das PEM-Label RSA nennen.

PKCS #8 verpackt dieselben Bytes von RSAPrivateKey in einer PrivateKeyInfo mit einer Algorithmus-OID (rsaEncryption, 1.2.840.113549.1.1.1), und SubjectPublicKeyInfo verpackt RSAPublicKey auf dieselbe Weise für öffentliche Schlüssel. OpenSSL 3 schreibt standardmäßig PKCS #8 (BEGIN PRIVATE KEY), auch aus openssl rsa; -traditional liefert PKCS #1. PKCS8EncodedKeySpec von Java und viele JWT-Bibliotheken akzeptieren nur PKCS #8 oder SPKI, was den bekannten Fehler bei alten Schlüsseln im Stil von id_rsa verursacht.

Verwechsle das Schlüsselformat nicht mit den Signatur- oder Verschlüsselungspaddings von PKCS #1: RFC 8017 definiert alle drei, und mit einem „Schlüssel nach PKCS #1“ ist immer nur das Dateiformat gemeint.

Standards und Quellen

Alle Begriffe