web-dev-qa-db-ja.com

SSLeay / PKCS#1スタイルの静的Diffie-Hellman鍵のようなものはありますか?

つまり、次のようなPEMファイルを見つけることができますか。

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

または:

-----BEGIN DH PUBLIC KEY-----

もしそうなら、その構造は何ですか?

私は静的DHキーが奇妙で、おそらく絶滅していることを知っています。そして、DH秘密鍵をPKCS#8ラッパー内に置くことができ、DH公開鍵をX.509証明書に入れるか、緩いX.509スタイルの公開鍵として持つことができることを知っています-または少なくとも、OpenSSLがそれを行う方法を知っているよりも!しかし、静的DHキーに古い形式を使用している人への参照は見つかりません。

私が尋ねる理由は、キーを入力として受け取るコードを書いているからです。可能な限り幅広いキーをサポートしたいと思っています。 RSA、DSA、EC、およびDHアルゴリズムのキーを処理できます。フォーマットに関しては、私はサポートします:

  • 秘密鍵のPKCS#8形式
  • 公開鍵用のX.509PublicKeyInfo形式(openssl pkeyによって生成される)
  • RSA秘密鍵のPKCS#1
  • PKCS#1-DSA秘密鍵のように(openssl dsaparam -genkeyによって生成される)
  • PKCS#1-EC秘密鍵のように(openssl ecparam -genkeyによって生成される)

DH秘密鍵にもPKCS#1のような形式があるので、それをサポートする必要があるので、それを解決しようとしています。

1
Tom Anderson

ショートバージョン:

  • はい、PKCS#8はPKCS#1スタイルのラッパーであり、DHキーを含めることができます。
  • PKCS#1はRSA固有の形式であるため、いいえ、DHキーは含まれていません。

中バージョン:

昔々、RSAはいくつかの暗号を発明しました。そして、それを使用可能な形式でラップしたかったので、PKCS#1を発明しました。だからこそ、それが#1-最初に来たからです。ただし、ラッパーでの「RSA」の使用に反映されているように、実際にはRSAキーのみを処理していました。

少し先に、「ちょっと待ってください。DHキーと楕円曲線キーでも同じことができるはずです。そして...設計に柔軟性があり、さまざまなタイプを処理できる新しいPKCSを作成しましょう。キー。そして、それを実行している間に、ラッパーからアルゴリズム名OUTを取り出して、データの一部としてエンコードしましょう。」そして、それがPKCS#8が生まれた方法です。

ロングバージョン:

このスペースでいくつかの素晴らしい答えを引き起こしたスタックオーバーフローに 質問 があります。 この回答 PKCS#1/PKCS#8の違いについて説明しています。そして この答え 、その素晴らしさはクマのようですが、上記のミディアムバージョンで要約しようとした設計履歴の詳細に入ります。

脚注:私が提供した「長いバージョン」is参照されている2つを読んだら、実際にはもっと長くなりますSO答えなので、卑劣なことはしないでください。

1
gowenfawr