gnupg – 複数のシステムで GPG キーを管理するには?

gnupg pgp

私はGnuPGを使うのは初めてで、どのように使うのがベストなのかを理解しようとしています。技術者でない人にもわかりやすく短いGPG/PGPの説明?をレビューしてみましたが、ほとんどのガイドはPGPを単発的な視点で説明しています

Linux PC、Linuxノートパソコン、Android携帯電話の3つの計算機でGnuPGを使いたいと思っています

基本的なユースケースはIMAPサービスで管理されているメールの暗号化/復号化であり、復号化には全てのデバイスで同じ秘密鍵が必要となります

私の選択は

  1. 私の鍵をすべて各デバイスのキーリングにコピーして、主に秘密鍵のパスワードに頼って保護してください

  2. 私のアイデンティティを表すマスターキー(–gen-keyで)を作成し、メールを暗号化/復号化するための別の使い捨てキー(同じく–gen-keyで)を作成し、マスターキーで署名します。前者は私のPCにのみ存在し、後者は各デバイスに配布されます。モバイルデバイスが危殆化していない限り、使い捨て鍵は有効なままです

私は被害妄想が強すぎて、必要以上に複雑になっているかもしれませんが、 ユーモアをお願いします。私は、一つのカゴに全ての卵を入れないことを信じています

マスターキーは私のデジタルアイデンティティであることになっています。そのIDの周りに信頼を築くために 多くの努力が費やされるでしょう 不注意で鍵を失って 新しいマスターキーの周りに信頼を築かなければならないよりも 私の被害妄想の不便さに苦しみたいのです(これは私が思っているほど悪くないのかもしれませんが 私は不慣れなのです)

パソコンよりも ノートパソコンや電話を失う可能性の方が高い損失が 妥協の産物だとしたら マスターキーのペアを失うよりも 使い捨てのキーのペア(取り消すことができる)を失う方がマシだ。僕は いつでも新しい使い捨てキーにマスターキーの信頼を与えることができる

本当に長い質問で申し訳ありません。)

TL;DR

複数のデバイスにまたがってマスター秘密鍵を保存する場合、パスワードは十分に保護されていますか?

私のプランのオプション2は実現可能でしょうか?何か間違ったことをしたのか、それとも改善できるのか?

オプション#2が悪い考えだとしたら、1人のユーザが複数のデバイスにまたがってGnuPGを使用する場合のベストプラクティスは何でしょうか?

  117  Justin C  2012-08-25


ベストアンサー

これはちょっと恥ずかしい話です。この問題を解決するために一週間かけて何時間も費やしてきましたが、答えはサブキーにあるようです

サブキーとは何か、なぜ –gen-key の代わりに使うのかを調べていたら、このような逸品に出くわしました。http://wiki.debian.org/subkeys

Debian の wiki では、オプション #2 (OP を参照) の実装方法について説明しており、さらに、マスターキーをバックアップ媒体 (フラッシュドライブなど) に保存した後、システムからマスターキーを削除する方法についても説明しています。サブキーはその後、各デバイス上のマイキーリングの間で配布することができます

Pros:

  1. 主にマスターキーを保護するためのパスワードに依存していません

  2. いずれかのシステムが危殆化した場合、マスターキーはすぐには利用できません(愚かなことにフラッシュドライブを接続したままにしておくか、危殆化したシステムにそのドライブを接続しない限り)

  3. これは Debian 開発チームが実施しているプラクティスです

  4. GnuPGのサブキー機能を使っています。キーホルダーにたくさんのゆるい鍵があるよりも、少しは整理されているように思えますよね?

Debian Subkey Wiki の関連部分

  1. 既存の GnuPG ファイル ($HOME/.gnupg) のバックアップを取っておきましょう。安全に保管してください。以下の手順の間に何か問題が起きた場合は、これを既知の良い場所に戻すために必要になるかもしれません。(注意: umask 077 を指定するとバックアップのパーミッションが制限されます)

    • umask 077; tar -cf $HOME/gnupg-backup.tar -C $HOME .gnupg
  2. 署名用の新しいサブキーを作成します

    • キーIDを検索してください。gpg --list-keys yourname
    • gpg --edit-key YOURMASTERKEYID
    • gpg>プロンプトで。addkey
    • これはあなたのパスフレーズを要求するので、それを入力してください
    • RSA(符号のみ)」のキータイプを選択します
    • キーサイズは4096(または2048)ビットを選択するのが賢明でしょう
    • 有効期限を選択してください(マスターキーよりも頻繁にサブキーを回転させたり、マスターキーの寿命のために、有効期限なしで保持したりすることができます)
    • GnuPGは(最終的には)鍵を作成しますが、そのためには十分なエントロピーが得られるまで待つ必要があるかもしれません
    • キーを保存します。save
  3. これを繰り返して、お好みで「RSA(暗号化のみ)」のサブキーも作成してください

  4. ここで、$HOME/.gnupgをUSBドライブにコピーします

  5. ここからが厄介なところです。秘密のマスターキーを削除する必要がありますが、残念ながら 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 には秘密鍵の sec だけでなく sec# が表示されていることを確認してください。これは秘密鍵が実際には存在しないことを意味します。(gpg --export-secret-key YOURMASTERKEYID | gpg --list-packets の出力にダミーの OpenPGP パケットがあることも参照してください)
    • オプションで、サブキーを保護するパスフレーズを変更します。gpg --edit-key YOURMASTERKEYID passwd.(プライベート・マスター・キーを含むバックアップ上のプライベート・キー・マテリアルは、古いパスフレーズによって保護されたままであることに注意してください)

これでパソコンは通常の使用が可能になりました

マスターキーを使用する必要がある場合は、暗号化されたUSBドライブをマウントし、GNUPGHOMEの環境変数を設定します

export GNUPGHOME=/media/something
gpg -K

または –home コマンドライン引数を使用します

gpg --home=/media/something -K

後者のコマンドは、秘密鍵を sec# ではなく sec でリストアップするようになりました

1 台のマシンに複数のサブキーを使用する場合と、すべてのマシンに 1 つのサブキーを使用する場合の比較

Debian のサブキー wiki からの抜粋です。元々はコメントに書かれていました。[言い換え] と強調しています

1 台のマシンに 1 つのサブキーを設定して、そのマシンの危殆化した可能性のあるサブキーだけを交換する必要があるようにしたいと思うかもしれません。すべてのマシンで使用されている単一のサブキーの場合は、すべてのマシンで交換する必要があります[その単一のサブキーが危殆化している、またはその疑いがある場合]

しかし、これは署名サブキーに対してのみ動作します。複数の暗号化サブキーを持っている場合、gpgは最新の暗号化サブキーに対してのみ暗号化し、すべての既知の暗号化サブキーや取り消されていない暗号化サブキーに対しては暗号化しないと言われています

71  Justin C  2012-08-26


単一の障害点(マスターキーや特にパスワードを含む)を好まない者として、これは私がそれを行う方法です。デバイスが信頼の網を介して動作することを可能にする一方で、分散化されたアイデンティティを可能にします

このための既存のシステムがあるかどうかはわかりませんが、おそらくcronジョブと数行のBashを使ってスクラブすることができると思います

このシステムでは、デバイスキーペアとタイムフレームキーペアの 2 つのクラスのキーペアがあります。1つのデバイス鍵ペアは各デバイス上のユーザに対して生成され、そのデバイス上にその寿命まで残ります。タイムフレーム鍵ペアは、中央のサーバによって定期的な間隔で生成される(月、日、時間ごとに生成される)。公開鍵は公開され(サーバ自身が署名するデバイスの鍵ペアを持つ)、秘密鍵はこの鍵へのアクセスを意図した各デバイスの公開鍵で暗号化されて配布されます(この配布は、デバイスの公開鍵と同じくらいプライベートであるべきです)。(この配布は可能な限りプライベートなものにしてください。例えば、デバイスが直接サーバに接続するなど)

メッセージに署名するには、メッセージを送信しているデバイスのデバイスキーを使用します。もし誰かがあなたにメッセージを送りたい場合、あなたの現在の公開時間枠キーを使って署名することができます。(相手はアナウンスに追いつくように自動化されたシステムを持っているはずです。) その後、どのデバイスからでも相手のメッセージを読むことができます

古い暗号化されたメッセージを読むために、古いタイムフレームのキーペアは適切な戦略に従って各デバイスにバックアップされています(あなたが望むならタイムフレームキーペア生成サーバーも含めて-これもあなたの被害妄想のレベルによります)

デバイスが盗まれた場合やその他の方法で危殆化した場合、公開信頼されている別のデバイスを使用して、公開署名されたメッセージを作成して、あなたの身元を確認することができます(例えば、公開のミートアップに参加することや、信頼できる友人に直接確認してもらうなど、どのような方法であれ)。鍵を失効させる際には、サーバの信頼できるデバイスのリストから盗まれたデバイスを削除します(パスワードとあなたの信頼できるデバイスの鍵を使って)

新しく発表されたデバイスの鍵を信頼するためのポリシーは、現在の信頼ポリシーのようなものに従うべきです

サーバが危殆化した場合、他の危殆化したデバイスの場合と同じ手順でサーバを失効させ(新しいデバイスを追加する場合と同じように、より強力なポリシーで)、今後は再セキュリティ保護された、あるいは全く新しいサーバ(新しいデバイスのキーペアを持つ)を使用するだけです

10  Stuart P. Bentley  2014-08-02


タイトルとURLをコピーしました