web-dev-qa-db-ja.com

PGP秘密公開鍵を別のコンピューターに転送する方法は?

私は この記事アーカイブされたリンク )を読んで、macOSでPGPをセットアップする方法を非常によく説明しました。しかし、Gitコミットの署名用に生成されたキーを使用する予定なので、キーを他のコンピューターに転送する必要があると思います。これは正しいです?そして、もしそうなら、それらのキーをデバイス間で転送する最良の方法は何ですか?

30
erikvold

はい、キーを転送する必要があります。 MacとLinuxは同じように機能し、キーを~/.gnupgに保存します。ファイルを転送する最も安全な方法は、scp(sshの一部)を使用することです。

scp -rp ~/.gnupg othermachine:

ただし、最初にsshを動作させる必要があります。

たとえば、USBフラッシュドライブを使用してそれらを転送することは、ファイルを削除した後でも秘密キーがそのドライブに残されるため、あまり良いアイデアではありません。パスフレーズで保護されていますが、誰かがキーファイルのコピーを手に入れたら、長時間のブルートフォース攻撃を余儀なくされる可能性があります。

Windows上のディレクトリの場所がわかりません。 gpgのドキュメントに書いてあり、内容はほぼ間違いなく同じです。

キーリング全体をすばやく簡単にコピーできますが、キーリング全体を上書きしたり、すでにあるキーをなくしたりせずに、マシン間で個々のキーを移動できるようにしたい場合があります。個々のキーを選択的にコピーするには、gpg --export-secret-keyおよびgpg --importを使用します。宛先マシンにSSHでアクセスできる場合は、パイプでこれを行うことができ、中間キーをどこにも保存する必要はありません。

すでにキーがあるマシンを使用している場合:

gpg --export-secret-key SOMEKEYID | ssh othermachine gpg --import

キーが必要なマシンを使用している場合:

ssh othermachine gpg --export-secret-key SOMEKEYID | gpg --import

gpgがリモートマシンのデフォルトの場所にない場合(Macの/opt/local/binにある場合など)は、sshへのフルパスを指定するか、1つにシンボリックリンクする必要があります/usr/local/binなどの標準的な場所の。

転送されたデータは引き続きパスフレーズによって保護されており、送信元と同じパスフレーズが宛先でも鍵に使用されることに注意してください。場所ごとに異なるパスフレーズを使用する場合は、エクスポート先でパスフレーズを変更するか、エクスポートする前にソースで一時的に変更する必要があります。私たちが管理しているDebianパッケージリポジトリを更新できるようにするために、同僚と秘密鍵を共有する必要がありましたが、パスフレーズを彼と共有したくありませんでした。そこで、パスフレーズを一時的なものに変更し、エクスポートしたキーを(gpgで暗号化した電子メールで)送信し、一時的なパスフレーズを口頭で伝え、キーをインポートした直後に新しいパスフレーズを設定するように依頼しました。次に、キーのコピーのパスフレーズを元のパスフレーズに戻しました。

57
Neil Mayhew