DSA 秘密鍵形式

DSA 秘密鍵形式

そこで、puttygen を使用して DSA 秘密鍵を生成し、それを OpenSSH 形式にエクスポートしました。OpenSSL の asn1parse を実行した結果は次のとおりです。

    0:d=0  hl=4 l= 443 cons: SEQUENCE
    4:d=1  hl=2 l=   1 prim:  INTEGER           :00
    7:d=1  hl=3 l= 129 prim:  INTEGER           :B9916796B7A3EFFD5CA36368186D0ED
193BE7FDD61CC6851174F3E9781A0C0CEA7473E528372F559A1DB2A7E049A9BEFAE2CAAC55527049
2A0CD55B59A48A53BCADD32181F519EA9E6A98EF8EF59DE314A2E69606C728F2F8DEE722B4C67BA6
8EB8A619B6006804F83740F9C74C38136522E7E83F22920AA39822FBDA0DF4D0B
  139:d=1  hl=2 l=  21 prim:  INTEGER           :D832F5B01F075FEC0F162B91982F34D
B26A0CC29
  162:d=1  hl=3 l= 129 prim:  INTEGER           :9B73F47AEFF8E39584FD10ACF81CCD5
75C96FC5558A5C94B941EF76318D132007ACAE1EA22E95CE0B13FC7875CE4D4ED33BA639CD8C2AC9
C0A0530FB7786F584A62EBAE5985E1C26ED0D0B9FDD5E8DB0142BE182A4E5359307007060C327FEE
C2F8D04EABB37D7B74076EB9BDB4885F627DE85708D5BDBF5177A05721E09A367
  294:d=1  hl=3 l= 128 prim:  INTEGER           :6BD9267D2D1E4546EE05F6CD087F311
93C0EEB13B1E139F5072E900AB2EEF68EEC28BF4D7D6CAE4DEE59005F00BAE07343EE520C217FF6E
7880DC788E4555F78CCB5E89A10CDC71A663DA696C5BC34E296CEB3518D65A79BF00B6D592B1399A
9F0D79AE3F3FB445EE1F2B4B72515F036C8E1D5C7FAD336FD3503874645C5C264
  425:d=1  hl=2 l=  20 prim:  INTEGER           :15295A12325E5F1A6F7243B7BB3BE74
6FE7B76E9

私の質問は...この形式はどこに記述されているのでしょうか? たとえば、最初の 0 整数値はどういう意味ですか?

puttygen のソース コードを調べることもできると思いますが、この形式を説明する RFC などはありますか?

答え1

秘密鍵の形式はとして理想的には、公開鍵形式は送受信されないため、相互運用性はそれほど大きな問題ではないため、公開鍵形式として標準化されています。

ただし、この形式に関するドキュメントはいくつかの場所で見つかります。これは、PKCS#1で記述されたRSAPrivateKey構造は、通常 PKCS#8 コンテナ内に保持されます。ただし、PKCS#8 コンテナに DSA キーを格納する通常の方法は、xそこにある構造全体ではなく、秘密値 のみを格納することです。これは、標準が落ち着く前に OpenSSL が実装した、提案されたものの技術的に標準化されなかった DSAPrivateKey 形式であると推測しています。OpenSSL のdsaマニュアル ページには次のように書かれています。

秘密鍵を使用した DER オプションは、バージョン (現在はゼロ)、p、q、g、公開鍵と秘密鍵のコンポーネントの値をそれぞれ ASN.1 INTEGER として含む ASN.1 SEQUENCE の ASN1 DER エンコード形式を使用します。

そして、OpenSSH はその形式を再利用したのではないかと推測しています。PyCryptoのDSAキー実装のコメントこの考えを強化し、そこでは構造を「DSAPrivatKey_OpenSSL」と呼び、「カスタム OpenSSL/OpenSSH エンコーディング」と呼んでいます。

関連情報