web-dev-qa-db-ja.com

優れた汎用GnuPGキー設定とは何ですか?

ほとんどの種類の鍵は複数の目的、つまり認証、認証、暗号化、署名に使用できるため、すべてに対して1つの鍵を使用するだけでよい-これはbadアイデア、たとえば詳細 Thomas Pornin著 。したがって、さまざまな目的で、さまざまなバックアップ方法を使用してさまざまなキーペアを使用する必要があります(復号化は「永久に」可能である必要がありますが、署名キーは「単純に」交換できます)。しかし、次の質問に対する回答をまとめたベストプラクティスの1つにまとめられた記事を見つけることができませんでした。

  • どの目的でどのタイプの鍵を使用する必要がありますか(RSA、DSAなど...何ビット、いつ期限切れになるかなど)?
  • すべてのキーは、証明書マスターキーの(個別の?)サブキーにする必要がありますか、それとも前のキーで署名された個別のマスターキーにする必要がありますか?私が日常的に使用しているサブキーから秘密のマスターキーを削除する方法についての重要なガイドを見つけましたが、まったく別の認証キーと比較して、これらのキーへの信頼チェーンを短くする価値のあるトラブルが本当にあります?
  • A)「本当に」強力なパスフレーズまたはb)OpenPGPカードのようなハードウェアデバイスを使用する場合、認証キーをオフラインに保つことが実際にどのくらい重要ですか?
66
Tobias Kienzler

サブキーの使用について

必要な各アイデンティティに1つの主キーを使用します。それ以外の場合は、サブキーを使用します。

複数の主キーの使用例:

  • プライベートキーとプロ用キーを混同したくない
  • あなたはあなたの "現実の"アイデンティティと結び付けられていないいくつかのキーが必要です。当局によって起訴されたとき

サブキーの使用例:

  • 複数のデバイスに複数のキーを使用したい(モバイルを紛失した場合にコンピューターのキーを取り消す必要がない)
  • Web of Trustでの評判を失うことなく、定期的に(たとえば、数年ごとに)キーを切り替えたい

私は最近、別の回答で 作成するOpenPGPキーの数 について投稿しました。

キーサイズについて

GnuPG開発者は、暗号化と署名の両方に2k RSA鍵 の使用を推奨しています。これは、現在使用されているサブキーでは間違いなく問題ありません。

主キーはキー署名と署名の検証(そしてもちろん取り消し)以外には使用されないため、ここではかなり大きなキーを使用することをお勧めします。サブキーの小さいサイズ(必要な時間に十分な大きさ)(計算を高速化し、ファイルサイズを小さくします)。

Superuserでの別の質問に対して RSAとDSA/Elgamalが直面するより詳細な回答 がありました。さらに読むためにそこにアクセスしてください。

キーの有効期限

秘密鍵が危険にさらされる方法は2つあります。

  1. 誰かがあなたからそれを盗むことができます
  2. 誰かがあなたの公開鍵からそれを再計算することができます

1つ目はコンピュータのセキュリティ(およびキーの使用方法、以下を参照)の問題、2つ目は時間の問題です。今日(そしておそらく今後数年)、RSA 2k鍵は完全に正常になります。しかし、計算能力は劇的に上昇するため、攻撃者は、秘密鍵を再計算するために必要なCPUコア/グラフィックカード/コンピューター/発電所を減らすことができます。また、使用されているアルゴリズムにグリッチが見つかる可能性があり、必要な計算能力が大幅に低下します。量子コンピュータは、物事をさらにスピードアップできます。

鍵の有効期限は、鍵の有効性を、安全であると期待される特定の時間に制限します。後でそれをクラックする攻撃者は、あなたに送信された暗号化されたデータを読み取ることができるだけですが、誰もそれを使用することはありません。攻撃者があなたのキーを手に入れ、あなたが気付かれないままでいるならば、少なくともそれは彼が与えられた時間の後にそれからそれを使用することを阻止します。

プライマリキーの有効期限が切れると、Web of Trustのレピュテーションはすべて失われますが、少なくとも一定の時間が経過すると、アクセスが失われるとキーが無効になります(何をすべきか決して起こらない、私の答えの終わりに読んでください)。

主キーをオフラインで保存する

あなたの主キーは最も重要なものです。すべての信頼(着信と発信の両方)はこれに関連しています。誰かがそれにアクセスできる場合、彼は次のことができます。

  • 名前を使用して新しいキーを作成します(GnuPGは常にデフォルトで最新のサブキーを使用します!)
  • サブキーと主キーの取り消し
  • 発生する最悪の事態である他のキーへの信頼の発行:攻撃者は新しいキーを作成し、古いキーに信頼を与え、その後古いキーを取り消すと、「移動した」IDにアクセスできなくなります-彼は文字通りあなたのアイデンティティを追い越します

A)「本当に」強力なパスフレーズを使用する場合、実際に認証キーをオフラインに保つことはどのくらい重要ですか[...]?

お使いのコンピューターは、常にハッキングまたはマルウェアによるキーのダウンロードとキーロガーのインストールによるパスワードの取得に感染している可能性があります(これは、使用しているオペレーティングシステムの問題ではなく、現時点では誰も知らない重大なセキュリティホールが含まれています。 )。

プライマリ(プライベート)キーをオフラインにしておくことは、これらの問題を防ぐための良い選択肢です。それはいくつかの面倒を含みますが、上記のようにリスクを減らします。

もちろん、最高のセキュリティとは、プライマリキーを使用してすべてのキー管理を行い、サムドライブを使用してOpenPGPデータ(外部キーと署名)のみを転送するために、別個のオフラインコンピューター(ハードウェア、仮想マシンなし!)を使用することを意味します。

b)OpenPGPカードのようなハードウェアデバイス?

OpenPGPスマートカードは、サムドライブにオフラインで保存する中間のどこかにありますが、署名用にコンピューターに接続して、この目的専用の別のオフラインコンピューターを使用します。秘密鍵は、「管理用PIN」を必要とする(バックアップ目的を除いて)スマートカードから出ることはなく、すべての署名と鍵の作成さえもカード内部で行われます。キーの「使用」(暗号化、署名、信頼の付与)に必要なのは「ユーザーPIN」だけなので、カードを「損傷した」コンピューターに接続しても、攻撃者はIDを完全に追い抜くことができません。

OpenPGPを実際に使用するには、公開鍵をどこにでも保存できます。OpenPGPを(および他の公開鍵)をキーサーバーに送信することもできます。


また、主キーの失効証明書を作成して印刷することを忘れないでください。この証明書がない秘密鍵を失うことは、鍵サーバーに残っているアクセスできない鍵があり、それについて何もできないことを意味します

それをおそらく数回印刷し、信頼できる場所に置きます。あなたの両親、いくつかの銀行預金ボックス、...-この証明書が漏洩した場合、最悪の事態はWeb of Trustを失うことです。

49
Jens Erat

キーの有効期限は、サイエンス、テクノロジーの進歩、または欠如により、キーが安全でなくなる時点を予測できる場合にのみ意味があります秘密鍵の保護に関してあなたの側に関心があります。与えられた非対称鍵が将来弱くなるかどうかは、計算能力の将来の増加に関する予測(これはあいまいに予測できるだけです)および新しい科学的発見(まったく予測不可能)に依存します。計算能力については、さまざまな研究者や機関が予測式を使用して推奨事項を公開しています。良い調査については this site を参照してください。多くの科学と情報に基づく推測がこれらの推奨事項に組み込まれていますが、それらの予測成功率は、羊を屠殺して肝臓を調べて神の意志を解明した場合よりも必ずしも優れているわけではないことを覚えておいてください。

とにかく、通常の想定では、次の条件下では、2048ビットのRSA鍵は少なくとも2030年まで、おそらくそれより長く回線を保持する必要があります。

  • 鍵は 暗号的に安全なPRNG で適切に生成されました。 (GnuPGはOSリソースを適切に使用していると信じられていますが、OpenSSLも Debianが壮観に手を加えたとき まで)です。
  • 数学者は 整数因数分解 への致命的な近道を見つけませんでした(最後の主要な進歩は1989年の 一般数フィールドシーブ の発見でした;それ以来、研究は多くの小さなことに焦点を当てています、累積最適化。現在のレコードは 768ビット )です。
  • 私たちが知っているように、コンピューターは物理法則の下で動作し続けます。特に 量子コンピューター 理論的なものだけを維持します(いくつかのQCが構築されましたが、現在の記録は、 8ビット整数)。

これらの条件のいずれかが将来失敗する可能性がありますが、失敗の時期を正確に予測することはできないため、それらの条件に基づいてキーの有効期限ポリシーを設計することはできません。あなたができる最善のことは仮定それらが起こらないことであり、そして最善のために祈ることです。

DSAキーとElGamalキーは、同じキー長で同様の抵抗を提供します。つまり、これらの2048ビットも問題ないはずです。

より実用的な観点では、有効期限 2038年より前 を維持する必要があります。

マスターキーは保持する必要がありますほぼオフライン。マスターキーが非常に強力なパスフレーズで保護されている場合は、特にオンラインコンピューターでanywhereに保存できます。ただし、typeというパスフレーズを使用する場合は、そのときに使用しているマシンが「クリーン」であり、キーロガーやその他の悪意のあるアドオンでいじられていないことを確認する必要があります。マスターキーは(少なくともあなたにとって)「重要」であり、盗まれたのを見たくないのです。 「オンライン」であり、日常のインターネット関連の活動に関与しているコンピュータは、100%の保証ではクリーンであるとは見なされません。

つまり、ストレージは、コンピューター、スマートフォン、Gmailアカウント上でsageが専用のオフラインコンピューター上にある限り問題ありません。マスターキーは、サブキーを発行する場合にのみ使用してください。つまり、最大で10年に1回です。これにより、パスフレーズの追加の問題が発生します。今から10年後、入力しないパスフレーズをどのように覚えますか?

本当に優れた復元力を得るには、マスターキーファイル(Base64エンコード)をprintingしてから、鉛筆でパスフレーズを書くことをお勧めします(do not同じ用紙に!)プリンタを使用し、銀行の金庫に保管します。最悪の場合、10年後にファイルを紛失した場合andパスフレーズを忘れても、入力してマスターキーを復元できます。

18
Thomas Pornin

クックブック

これは、上記の良い答えを例示する料理本のアプローチです。これは より安全なGPGキーの生成:ステップバイステップガイド の蒸留バージョンであり、これらの機能すべてを個別のキーに分離します

主キーを作成する

$ gpg --expert --gen-key

(8)RSA(独自の機能を設定)

Your selection? 8

(S)符号機能を切り替えます

Your selection? s

(E)暗号化機能を切り替えます

Your selection? e

(Q)完成

Your selection? q

What keysize do you want? (2048) 4096
Key is valid for? (0) 3y
Is this correct? (y/N)y

次に、UID、メール、パスフレーズを追加します。

これにより、証明書のみの主キーが生成されます。

署名(など)サブキーを作成する

$ gpg --expert --edit-key [email protected]
gpg> addkey

(8)RSA(独自の機能を設定)

Your selection? 8
Your selection? e
Your selection? q

What keysize do you want? (2048) 3072
Key is valid for? (0) 6m
Is this correct? (y/N)y
Really create? (y/N) y

これにより、署名のみのサブキーが生成されます。

(暗号化および認証サブキーに対してこのaddkeyプロセスを繰り返します)

[...]

終了したら、キーリングにキーを保存します。

gpg> save

バックアップ

$ gpg -a --export-secret-key [email protected] > secret_key
$ gpg -a --gen-revoke [email protected] > revocation_cert.gpg

主キーの削除

$ gpg -a --export-secret-subkeys [email protected] > secret_subkeys.gpg
$ gpg --delete-secret-keys [email protected]
Delete this key from the keyring? (y/N) y
This is a secret key! - really delete? (y/N) y
$ gpg --import secret_subkeys.gpg

これにより、「ラップトップ」状態になり、主要な秘密鍵が失われます。転送は経由で行われます

$ gpg -a --export-secret-keys [email protected] > laptop_keys_secret.gpg
$ gpg -a --export [email protected] > laptop_keys_public.gpg

(USBスティックまたはCD経由で転送)およびラップトップ

$ gpg --import laptop_keys_public.gpg
$ gpg --import laptop_keys_secret.gpg
15
serv-inc