まあ、これは少し恥ずかしいです。私は1週間にわたってこの問題を解明しようとして何時間も費やしましたが、その答えはサブキーにあるようです。GnuPGマニュアルとFAQで話題になっています。
サブキーとは何か、そして--gen-keyの代わりにサブキーが使用される理由を調査していると、この宝石http://wiki.debian.org/subkeysに出会いました。
Debianのwikiは、サブキーを含むマスターキーを使用してオプション#2 (OPを参照)を実装する方法を説明し、さらにバックアップメディア(フラッシュドライブなど)に保存した後、システムからマスターキーを削除する方法を説明します。その後、サブキーを各デバイスのキーリング間で配布できます。
長所:
マスターキーを保護するために主にパスワードに依存しない、
いずれかのシステムが侵害された場合、マスターキーはすぐには利用できません(愚かにもフラッシュドライブをプラグインしたままにするか、そのドライブを侵害されたシステムに接続しない限り)。
これは、Debian開発チームによって実装されたプラクティスです。
GnuPGのサブキー機能を使用します。キーリングにたくさんのゆるいキーを持っているよりも、少し整理されているように見えますか?
Debian Subkey Wikiからの関連部分
既存のGnuPGファイル($ HOME / .gnupg)のバックアップを作成します。それらを安全に保ちます。次の手順で何か問題が発生した場合、既知の適切な場所に戻るためにこれが必要になることがあります。(注:umask 077は、バックアップの制限付きアクセス許可になります。)
umask 077; tar -cf $HOME/gnupg-backup.tar -C $HOME .gnupg
署名用の新しいサブキーを作成します。
- キーIDを見つけます:
gpg --list-keys yourname
gpg --edit-key YOURMASTERKEYID
- で
gpg>
プロンプト:addkey
- パスフレーズの入力を求められますので、入力してください。
- 「RSA(署名のみ)」キータイプを選択します。
- 4096(または2048)ビットキーサイズを選択するのが賢明です。
- 有効期限を選択します(サブキーはマスターキーよりも頻繁にローテーションするか、有効期限なしでマスターキーの有効期間中保持することができます)。
- GnuPGは(最終的に)キーを作成しますが、そのために十分なエントロピーが得られるまで待つ必要があります。
- キーを保存します。
save
これを繰り返して、必要に応じて「RSA(暗号化のみ)」サブキーも作成できます。
次に$HOME/.gnupg
、USBドライブにコピーします。
ここからが難しい部分です。プライベートマスターキーを削除する必要がありますが、残念ながらGnuPGはそれを行う便利な方法を提供していません。サブキーをエクスポートし、秘密キーを削除して、サブキーをインポートし直す必要があります。
- サブキーをエクスポートします
gpg --export-secret-subkeys YOURMASTERKEYID >secret-subkeys
(エクスポートするサブキーかを選択するために、それぞれが感嘆符に続くサブキーIDを指定しますgpg --export-secret-subkeys SUBKEYID! [SUBKEYID! ..]
)
- マスターシークレットキーを削除します。
gpg --delete-secret-key YOURMASTERKEYID
- サブキーをインポートして戻します。
gpg --import secret-subkeys
- 秘密鍵の代わりにが
gpg -K
表示されることを確認してください。つまり、秘密鍵は実際には存在しません。(の出力にダミーのOpenPGPパケットが存在することも参照してください)。sec#
sec
gpg --export-secret-key YOURMASTERKEYID | gpg --list-packets
- オプションで、サブキーを保護するパスフレーズを変更します
gpg --edit-key YOURMASTERKEYID passwd
。(プライベートマスターキーを含むバックアップ上のプライベートキーマテリアルは、古いパスフレーズによって保護されたままになります。)
これでコンピュータは通常の使用準備が整いました。
マスターキーを使用する必要がある場合、暗号化されたUSBドライブをマウントし、GNUPGHOME環境変数を設定します。
export GNUPGHOME=/media/something
gpg -K
または--homeコマンドライン引数を使用します。
gpg --home=/media/something -K
後者のコマンドは、今のあなたの秘密鍵をリストしなければならないsec
し、ありませんsec#
。
マシンごとの複数のサブキーとすべてのマシンの単一のサブキー
Debianサブキーwikiからの抜粋。もともとコメントに記載されています。[言い換え]と私のものを強調します。
マシンごとにサブキーを1つ持って、そのマシンの潜在的に危険にさらされたサブキーのみを交換する必要がある場合があります。すべてのマシンで単一のサブキーを使用する場合、すべてのマシンで交換する必要があります(その単一のサブキーが侵害された、または侵害された疑いがある場合)。
ただし、これはサブキーに署名する場合にのみ機能します。複数の暗号化サブキーがある場合、gpgは、最新の暗号化サブキーのみを暗号化し、すべての既知の無効化されていない暗号化サブキーは暗号化しないと言われます。