web-dev-qa-db-ja.com

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

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

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

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

16
Brendan Byrd

簡単な答えは次のとおりです:あなたはしません

SSH鍵とGnuPG(実際にはOpenPGP)鍵は、両方のプロトコルでRSA鍵ペアを使用できますが、完全に異なります。

さらに、なぜそれをしたいのですか?PGPキーを構成するために同じキーマテリアルを使用する場合でも、キーを次のように配布する必要があります。 PGPキー。 SSH公開鍵を通信相手に配布していない可能性があるため、鍵配布の観点からは違いはありません。彼らはあなたから公開鍵を受け取る必要があります。また、SSH公開鍵を他の人に配布している場合でも、OpenPGP実装にインポートできるようにするには、追加の手順を実行する必要があります。これは簡単な場合とそうでない場合があります。

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

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

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

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


秘密鍵リングに複数の鍵があり、デフォルトで使用するものを指定する場合は、〜/でdefault-keyおよびdefault-recipient{,-self}ディレクティブを使用します.gnupg/gnupg.conf。

16
a CVn

monkeysphere project のツール pem2openpgp を使用して、SSHキーをOpenPGPキーに変換できます。その後、この鍵はgnupgによって通常の秘密鍵と公開鍵のペアとしてインポートできます。他の回答が言及するように、sshには証明書の概念がないため、これは通常は良い考えではありません。したがって、既存のキーに以前はできなかった機能を効果的に追加しています。これは通常、暗号化の禁止事項です。

とにかく、sshキーの1つでそれを行いましたが、他のOpenPGPキーにキーペアを、機能フラグが1つだけのサブキーとして追加しました:認証。このフラグは、鍵ペア(--encryptおよび--signオプションのgnupgを意味する)で署名または暗号化したくないが、キーボックスにそれを置きたいというこのような状況向けです。とにかく、OpenSSHとgnupg-agentによる認証。

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

5
user134450

通常のPKCS形式のキーをgpgにインポートするために変換することには、十分な理由があります。

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

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

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

2
foo

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

Sudo apt install -y monkeysphere
cat key.pem | PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "Key <[email protected]>" > key.pgp

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

gpg --import key.gpg

カードに移動

調号識別子を見つけます。

gpg --list-key

認証キーをカードに移動

gpg --edit-key FFFFFFFFFFF
keytocard

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

これで完了です。

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

gpg --delete-secret-key FFFFFFFFFFF

その他

必要ありませんが、テキストベースのpgp形式でキーを取得するのに役立ちます。

gpg -a --export FFFFFF > key.asc
1
Fire