Top PageSecurity Top

秘密鍵構文(PKCS#8)

秘密鍵を格納するフォーマット。
ファイル単体としては、あまり使われない。

秘密鍵の種類
拡張子 ファイルの内容
.key PKCS#8(秘密鍵構文)形式の、DERで符号化された秘密鍵

秘密鍵構文 (Private-Key)

秘密鍵を格納する構文。
以下のASN.1による記述で定義される。

PrivateKeyInfo ::= SEQUENCE {
  version                   Version,
  privateKeyAlgorithm       PrivateKeyAlgorithmIdentifier,
  privateKey                PrivateKey,
  attributes           [0]  IMPLICIT Attributes OPTIONAL }
Version ::= INTEGER
PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
PrivateKey ::= OCTET STRING
Attributes ::= SET OF Attribute
PrivateKeyInfoについて
フィールド名 内容
version 常に0とする。
privateKeyAlgorithm 秘密鍵のアルゴリズムの識別を示すoid値を格納する。
1つの例として、RSA暗号 [PKCS#1]
privateKey 秘密鍵の値を含むOCTET STRINGを格納する。
秘密鍵アルゴリズムの標準類によって定義される。
RSA暗号の秘密鍵では、例えば、内容はRSAPrivateKeyタイプの値のBER符号化したものになる。
attributes 秘密鍵情報と一緒に暗号化された拡張情報。

暗号化秘密鍵構文 (Encrypted Private-Key)

秘密鍵を暗号化して格納する構文。
以下のASN.1による記述で定義される。

EncryptedPrivateKeyInfo ::= SEQUENCE {
  encryptionAlgorithm  EncryptionAlgorithmIdentifier,
  encryptedData        EncryptedData }
EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
EncryptedData ::= OCTET STRING
EncryptedPrivateKeyInfoについて
フィールド名 内容
encryptionAlgorithm 秘密鍵情報を暗号化したアルゴリズムを指定する。
2つの例として、pbeWithMD2AndDES-CBC 及び pbeWithMD5AndDES-CBC [PKCS#5]。
encryptedData 秘密鍵情報(PrivateKeyInfo)を暗号化した結果が格納される。

暗号化のプロセス

  1. 秘密鍵情報(PrivateKeyInfo)をBER符号化し、OCTET STRINGを生成する。
  2. 前項の生成したOCTET STRINGを秘密鍵で暗号化する。

セキュリティの考察

秘密鍵情報の保護は、秘密鍵暗号技術に不可欠である。
別の存在へ秘密鍵情報の暴露は、成りすまし(masquerades)を導くことができる。
暗号化プロセスで使われた暗号アルゴリズムは、保護された鍵と同じ位の強度でなければならない。