本文へスキップ
ecdsa.com

SubjectPublicKeyInfo(SPKI)

アルゴリズム識別子と公開鍵のビット列を組み合わせた RFC 5280 の ASN.1 構造で、すべての X.509 証明書の内部で使われるほか、公開鍵ファイルの標準形式(-----BEGIN PUBLIC KEY-----)でもあります。
別表記SubjectPublicKeyInfoBEGIN PUBLIC KEYX.509 public keyPKIX public key

SubjectPublicKeyInfo は、AlgorithmIdentifier と subjectPublicKey の BIT STRING から成る SEQUENCE です。EC 鍵では、アルゴリズムが id-ecPublicKey、パラメーターが曲線の OID で、ビット列には SEC 1 形式の点が入ります。RSA では、パラメーターが NULL の rsaEncryption で、中に PKCS #1 の RSAPublicKey が入ります。Ed25519 では 1.3.101.112 で、パラメーターはなく、32 バイトの鍵が入ります。DER でのサイズは、P-256 が 91 バイト、RSA-2048 が 294 バイト、Ed25519 が 44 バイトです。

公開鍵の交換に使われる形式で、OpenSSL の -pubout、Java の X509EncodedKeySpec、Go の x509.MarshalPKIXPublicKey、WebCrypto の spki エクスポート、ほとんどの JWT ライブラリがこれを使います。SPKI のハッシュは、証明書を更新しても変わらない鍵単位の識別子として使われます。たとえば HPKP 方式のピン(pin-sha256)、Certificate Transparency の監視、Chrome の CRLSets です。

規格と参考文献

すべての用語