これまで、BEGIN RSA PRIVATEKEYプレフィックスとENDRSA PRIVATE KEYサフィックスを使用するファイル形式の仕様(RFCなど)が見つかりませんでした。 。どこで定義されていますか?正式な名前はありますか?少なくとも一連のPEMRFCに関連しているようです。
ホワイトスペース処理の詳細、base64の詳細に関する参照情報を探しています。 、1つのファイルでの異なるキーの結合など。
この質問は、ペイロードのASNエンコーディングに関するものではありません。
コメント
- OpenPGP仕様では、同様のASCII-Armor形式について説明しています。
- tls.mbed.org/kb/cryptography/asn1-key-structures-in- der-and-pem
- ほとんどのPEM形式(RSA秘密鍵以外)は、 RFC 7468:のテキストエンコーディングで文書化されています。 PKIX、PKCS、およびCMS構造。たとえば、ホワイトスペース処理のトピックに関するガイダンスがいくつかあります。RFCは基本的にその詳細はパーサーによって異なります。
- user4982に感謝します:これは私が探している種類のソースです。ただし、RFC 7468には、ラベル" ENCRYPTED PRIVATE KEY "に関する情報が含まれていますが、' " RSAプライベートキー"のdiv> t。
- PEMは RFC 1421 には、ヘッダーの全体的な形式などが記載されています。しかし、' " RSA秘密鍵"。 1997年のこの記事では、OpenSSLを使用したことについてすでに言及しています。
回答
私はここにいます。なぜなら、私はOPと同じ質問をしているからです。
PKCS#1(RFC 3447)は、ASN.1構造を定義します:RSAPrivateKey、許可RSA秘密鍵のみの表現。
PKCS#8(RFC 5208)は、ASN.1構造PrivateKeyInfoを定義し、任意の秘密鍵の表現を許可します。 (RSA秘密鍵の場合、PrivateKeyInfoはいくつかのパッケージ情報であり、PKCS#1からのRSAPrivateKeyの再利用です。)
PEM(Privacy Enhanced Mail)は、安全な電子メールの廃止された方法です。ただし、そのコンテナ形式は暗号化アイテムをパッケージ化するために借用されました。
RFC 7468(はじめに): “基本的に非調整または不注意に帰着する理由により、多くのPKIX、PKCS、およびCMSライブラリPEMエンコーディングに類似しているが同一ではないテキストベースのエンコーディングを実装する。 “
次のように読みます:ええと、人々は暗号ファイルをパッケージ化するためにPEMのビットを使用することにしました。ここでは、それを形式化するために非常に良い努力をしています…
残念ながら、RFC 7468はPKCS#8 / PrivateKeyInfoパッケージを「BEGINPRIVATEKEY」として明確にしています。ただし、PKCS#1 / RSAPrivateKeyを「BEGINRSAPRIVATEKEY」としてパッケージ化することはできません。
「BEGINRSAPRIVATE KEY」パッケージ化は、秘密鍵の場合は「SSLeay形式」または「従来の形式」と呼ばれることもあります。少なくとも、これは私たちにこのフォーマットの名前を与えますが、あなたのように、私はこのフォーマットの正式な説明に近づく何かを見つけることができず、歓迎します。これは存在しないと思われます。
コメント
-
I'm here, because, I'm asking myself the same question as the OP.
– –明確にするために:これは上記の質問に対するあなたの答えですか、それとも実際に同じ質問をしているのですか?
答え
内部のbase64コンテンツの形式:
-----BEGIN RSA PRIVATE KEY----- ...base64 encoded DER ASN.1 RSAPrivateKey... -----END RSA PRIVATE KEY-----
は RFC3447-付録A.1.2-RSA秘密鍵の構文:
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 }
DERを使用してエンコードする方法はすでに知っています。 ASN.1のフレーバー;問題は、そのDERバイナリデータを実際にファイルに書き込む方法についてです。
その次のステップは、 RFC1421-4.3.2.4ステップ4に記載されています。 :印刷可能なエンコード
- base64でバイナリデータをエンコードするドキュメント
- 出力をテキスト行としてエンコード
- 各行(正確に64個の印刷可能な文字を含む最後の行を除く
- 64個以下の印刷可能な文字を含む最後の行
次に、使用される「カプセル化境界」(EB)があります。カプセル化されたPEMメッセージを区切る。
- EB前の文字列は次のとおりです:
-----BEGIN PRIVACY-ENHANCED MESSAGE-----
- EB後の文字列は次のとおりです:
-----END PRIVACY-ENHANCED MESSAGE-----
使用されたのは古い Privacy Enhanced Mail でした:
- 5つのハイフン(
-----
) -
BEGIN
something
- 5つのハイフン(
-----
)
その後に
- 5つのハイフン(
-----
) -
END
something
- 5つのハイフン(
-----
)
これらのPEM規則は、公開鍵、秘密鍵、および証明書に引き継がれましたが、適切なものがあります。表現の変更:
-----BEGIN RSA PUBLIC KEY----- ...base64 encoded DER ASN.1 RSAPublicKey... -----END RSA PUBLIC KEY-----
-----BEGIN RSA PRIVATE KEY----- ...base64 encoded DER ASN.1 RSAPrivateKey... -----END RSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY----- ...base64 encoded DER ASN.1 SubjectPublicKeyInfo... -----END PUBLIC KEY-----
-----BEGIN PRIVATE KEY----- ...base64 encoded DER ASN.1 PrivateKeyInfo... -----END PUBLIC KEY-----
-----BEGIN CERTIFICATE----- ...base64 encoded DER ASNl.1 Certificate... -----END CERTIFICATE-----
回答
はい。 RFC7468-PKIX、PKCS、およびCMS構造のテキストエンコーディング
このドキュメントは明確に表現しています既存の実装が動作し、将来の実装が相互運用できるようにそれらを定義する事実上のルール。
ここに関連する抜粋:
10. 1つの非対称キーとPKCS#8秘密キー情報のテキストエンコーディング
暗号化されていないPKCS#8秘密鍵情報構文構造(PrivateKeyInfo)は、非対称鍵パッケージ(OneAsymmetricKey)に名前が変更され、「PRIVATEKEY」ラベルを使用してエンコードされます。エンコードされるデータはBER( DERを推奨。付録Bを参照)PKCS#8 [RFC5208]で説明されているエンコードされたASN.1PrivateKeyInfo構造、または[RFC5958]で説明されているOneAsymmetricKey構造。2つは意味的に同一であり、バージョン番号で区別できます。
-----BEGIN PRIVATE KEY----- MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgVcB/UNPxalR9zDYAjQIf jojUDiQuGnSJrFEEzZPT/92hRANCAASc7UJtgnF/abqWM60T3XNJEzBv5ez9TdwK H0M6xpM2q+53wmsN/eYLdgtjgBd3DBmHtPilCkiFICXyaA8z9LkJ -----END PRIVATE KEY-----
コメント
- " RSA秘密鍵について質問しています"、"証明書リクエスト"についてではありません。ちなみに、PKCS#10ではなく、PKCS#8またはPKCS#1を期待します。第10章はもっと近いでしょう。ただし、'ラベルでRSAを指定していないため、ここでPKCS#8を使用するのは理にかなっています。キーアルゴリズムは冗長に指定されるため、PKCS#1を" RSAプライベートキー"ファイル。
- @すでに述べたように、" RSA秘密鍵"を探しています。 "秘密鍵"用ではありません。したがって、第10章でも適用できず、RFC7468は間違った答えです。
- @Gustave I 'あなたが" RSA秘密鍵"ただし、ヘッダーで秘密鍵の形式を指定する必要はなく、仕様は適切です。
- ABNFは< < textualmsg = preeb * WSP(…)> >および< < preeb = " —- -BEGIN "ラベル" —– "(…)> >。では、なぜヘッダーが不要だと思いますか?
- PKCS#1( tools.ietf.org/html/rfc8017#appendix-A.1.2 )'はASCIIbase64エンコーディングを指定しません。また、' ヘッダー。 PKCS#8は、ASCIIbase64エンコーディングも'指定していません。第10章では、実際に
-----BEGIN PRIVATE KEY-----
を指定しています。-----BEGIN RSA PRIVATE KEY-----
ヘッダーを指定する標準へのリンクはありますか?