Differences between "BEGIN RSA PRIVATE KEY" and "BEGIN PRIVATE KEY" Ask Question

Differences between

Hi I was writing a program that imports private keys from a .pem file and create a private key object to use it later.. the problem I have faced is that some pem files header begin with

-----BEGIN PRIVATE KEY-----

while others begin with

-----BEGIN RSA PRIVATE KEY-----

through my search I knew that the first ones are PKCS#8 formatted but I couldn't know what format does the other one belongs to.

ベストアンサー1

See https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (search the page for "BEGIN RSA PRIVATE KEY") (archive link for posterity, just in case).

BEGIN RSA PRIVATE KEYPKCS#1 であり、単なる RSA キーです。基本的には PKCS#8 のキー オブジェクトですが、先頭にバージョンやアルゴリズム識別子がありません。PKCS BEGIN PRIVATE KEY#8 であり、キー タイプがキー データ自体に含まれていることを示します。リンクから:

暗号化されていない PKCS#8 でエンコードされたデータは、次のタグで始まり、終わります。

-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----

base64 でエンコードされたデータ内には、次の DER 構造が存在します。

PrivateKeyInfo ::= SEQUENCE {
  version         Version,
  algorithm       AlgorithmIdentifier,
  PrivateKey      BIT STRING
}

AlgorithmIdentifier ::= SEQUENCE {
  algorithm       OBJECT IDENTIFIER,
  parameters      ANY DEFINED BY algorithm OPTIONAL
}

したがって、RSA 秘密キーの場合、OID は 1.2.840.113549.1.1.1 であり、PrivateKey キー データ ビット文字列として RSAPrivateKey が存在します。

とは対照的にBEGIN RSA PRIVATE KEY、 は常に RSA キーを指定するため、キー タイプ OID は含まれません。は次のようBEGIN RSA PRIVATE KEYになります。PKCS#1

RSA 秘密鍵ファイル(PKCS#1)

RSA 秘密キー PEM ファイルは RSA キーに固有です。

次のタグで始まり、終わります:

-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----

base64 でエンコードされたデータ内には、次の DER 構造が存在します。

RSAPrivateKey ::= SEQUENCE {
  version           Version,
  modulus           INTEGER,  -- n
  publicExponent    INTEGER,  -- e
  privateExponent   INTEGER,  -- d
  prime1            INTEGER,  -- p
  prime2            INTEGER,  -- q
  exponent1         INTEGER,  -- d mod (p-1)
  exponent2         INTEGER,  -- d mod (q-1)
  coefficient       INTEGER,  -- (inverse of q) mod p
  otherPrimeInfos   OtherPrimeInfos OPTIONAL
}

おすすめ記事