RSA SSHキーを_primary_秘密キーとしてGPGにインポートするにはどうすればよいですか?


16

現在、私はしばらく使用していたSSHキーを持っています。新しいキーリングでGnuPGを使い始めたいです。ただし、自分のキーを長い間使用してきたことを考えると、GPGでそのキーをメイン/プライマリキーとして使用したいと思います。私はこれらの手順でキーをインポートしようとしました。

しかし、私は「サブキー」と見なされるものになります。さらに、標準のGPGキーを作成せずにインポートしようとすると、GPGにはこのサブキーさえ表示されません。(サブキーは最初にメインキーによって署名される必要があると仮定しています。)

secring.gpg内でこのキーをメインキーとして使用するにはどうすればよいですか?


_primary_ private key」とはどういう意味ですか?
MadHatterは、モニカをサポートします

回答:


16

簡単な答えは: そうではありません。

SSHキーとGnuPG(実際にはOpenPGP)キーは、両方のプロトコルがRSAキーペアを使用できる場合でも、まったく異なります。

それに、なぜあなたはそれをしたいのですか?同じ鍵素材を使用してPGP鍵を作成する場合でも、鍵をPGP鍵として配布する必要があります。おそらく、あなたが対応する人にSSH公開鍵を配布していないので、鍵配布の観点から違いはありません。彼らはあなたから公開鍵を受け取る必要があります。また、SSH公開キーを他の人に配布している場合でも、OpenPGP実装にインポートできるように追加の手順を実行する必要があります。これは簡単な場合もそうでない場合もあります。

以下のようkasperdはかなりrighly指摘し、(特に)署名を解釈するための唯一の方法がなければなりません。PGPとSSHの両方に同じ鍵を使用する場合、誰かがあなたをだまして特別に細工されたメッセージ(特定の署名システム攻撃で想定される機能です)に署名させることができる場合、両方のシステムが単独で安全であってもそのようなメッセージを、一方のシステムでは1つの意味を持ち、もう一方のシステムでは異なる意味を持つように作成することが可能かもしれません。それ自体が脆弱性になります。(悪用可能?誰が知っている。しかし、なぜチャンスをつかむのか?)

PGPキーペアとSSHキーペアはどちらも長期キーであり、短期間(メッセージおよびセッション)対称キーのセキュリティ保護と、リモートパーティの信頼性の検証に使用されます。これにより、PGPまたはSSH秘密鍵は、対応する対称鍵よりも攻撃者にとってはるかに高い値のターゲットになります。両方に同じキーマテリアルを使用し、攻撃者がそれを認識できる場合、そのキーペアに対する攻撃の成功の価値を高めるだけです。

どちらのプロトコルも詳細に検討していなくても、公開鍵は基本的に平文で送信されるため、同じ鍵素材が両方で使用されていることを認識するのはかなり簡単だと思います。

新しいPGPキーを生成するだけです。必要に応じて、RSAにし、SSHキーと同じ長さにします。(まともな人は、指紋を確認するよりもずっと詳しく調べようとはしません。)それから、PGPキーとして、あなたが対応したい人に公開キーを配布します。システムのランダムなエントロピープールから少量のエントロピーが犠牲になりますが、それはとにかくすぐに補充する必要がありますが、誰にとってもはるかに簡単で、おそらくより安全です。


あなたが持っている場合は、あなたの秘密鍵のキーホルダーに複数のキーを、もう1つはデフォルトで使用するかを指定したい場合は、使用default-key可能性とdefault-recipient{,-self}あなたの〜/ .gnupg / gnupg.confでディレクティブを。


1
私はこの答えに同意します。ただし、同じキーマテリアルを使用しないもう1つの理由があります。セキュリティ上の理由から、署名を解釈する方法は1つだけでなければなりません。同じ署名を2つの異なる方法で解釈できれば、脆弱性になります。sshとgpgの両方がそれ自体で安全である場合でも、攻撃者はあなたをだましてメッセージに署名させ、それから別のプログラムに署名を渡して、別の意味を持たせることができます。
カスペルド14

@kasperd良い点。答えを修正しました。今それについてどう思いますか?
CVn 14

いいですね。
カスペルド14

1
この答えは完全に正確ではないと思います。monkeysphereには、既存のOpenSSHキーを個人用OpenPGPキーの認証専用サブキーとして使用するユースケースがあります。少なくとも私はそれをそのように使いたいです。
user134450

これらのキーはまったく違いません。それらのメタデータは。
fooの

5

あなたはツールでのOpenPGPキーにSSHキーを変換することができますpem2openpgpからmonkeysphereプロジェクト。このキーは、gnupgによって通常の秘密/公開キーのペアとしてインポートできます。他の答えが言及しているように、sshには証明書の概念がないため、これは通常は良いアイデアではありません。通常、これは暗号化の禁止事項です。

とにかくsshキーの1つでそれをしましたが、キーペアを他のOpenPGPキーに、認証フラグが1つしかないサブキーとして追加しました。このフラグは、キーペア(gnupgの意味--encrypt--signオプション)で署名や暗号化を行いたくないが、とにかくOpenSSHとgnupg-agentでの認証のためにキーボックスに入れたい場合など、このような状況を想定しています。

詳細については、monkeysphereのドキュメントを参照してください。


2

通常のPKCS形式のキーをgpgにインポートするために変換する正当な理由があります。

たとえば、スマートカードに配置する場合。gpgのcard-infoコマンドとcard-editコマンドが提供する機能は、この目的に非常に役立つので、ツールとして使用しないのはなぜですか?克服する必要がある唯一のハードルは...正確に:標準PKCS#8形式(または「生の」RSA PKCS#1形式)からキーをインポートして、さらに処理することです。

だから-承認された答えに対する私の反対に注意してください!:)

この種の質問に対する実際に役立つ答えはここにあります:https : //unix.stackexchange.com/questions/276317/how-can-i-import-a-key-in-pem-format-not-openpgp-into -gpg


1

Ubuntu 16.04またはWindows WSLでこれを使用します。

sudo apt install -y monkeysphere
cat key.pem | PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "Key <key@example.com>" > key.pgp

カードをインポートします。WindowsまたはLinuxで実行できます。

gpg --import key.gpg

カードに移動

鍵署名IDを見つけます。

gpg --list-key

認証キーをカードに移動します

gpg --edit-key FFFFFFFFFFF
keytocard

認証スロットの番号を選択します。

これで完了です。

カードを使用している場合は、gpgキーチェーンからキーを削除することを忘れないでください。上記のキー識別子を使用します。

gpg --delete-secret-key FFFFFFFFFFF

その他

不要ですが、テキストベースのpgp形式でキーを取得するのに役立つ場合があります。

gpg -a --export FFFFFF > key.asc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.