
私は PGP、そして GnuPG を 20 年以上使用していますが、私の最も古いキーは 1996 年から MIT サーバー上に残っています。(サブキーなしの RSA 1024...)
時間が経つにつれて、キーはメインキーとサブキーのペアになりました。サブキーは一度も必要なかった機能です。また、個人的にそれを使用した人を知りません。
サブキーを「使用すべき」理由に関する「正当な理由」をすべて読んだかもしれませんが、これらの理由はどれも私には当てはまりませんでした。
たとえば、サブキーは暗号化キーが侵害されたときに非常に役立ちます。しかし、私の暗号化キーは侵害されたことはありません。また、キーが侵害された人を知りません。
あるいは、1つのメインキーが複数の暗号化キーに関連付けられている組織に適していると言われています。私は見たことがありません。この宇宙のどこかにそのような組織が存在するのだろうかと思います。私が見た限りでは、サブキーのアイデアは次のケースのようです。過剰なエンジニアリング実生活では全く使われないか、非常にまれにしか使われません。おそらくこのアイデアは、DSA/elGamal スキームの合理化に過ぎません。
いずれにせよ、私はサブキーが利用されないソフトウェアに取り組んでいます。また、キーを RetroShare (サブキーなしで単一のキーのみを使用する、安全な P2P IM チャットおよびファイル交換) と互換性を持たせたいと思っています。
サブキーなしでキーを生成する方法があるかどうか、誰か知っていますか。--edit-key メニューでサブキーを削除するオプションしか知りません。サブキーなしでキーを生成できるかどうかはわかりません。方法はあるのでしょうか? この問題をさらに理解するためのご助力に心から感謝します。
答え1
サブキーを使用する利点
サブキーをより有効に活用するという考え方は、過剰設計のように見えるかもしれませんが、説得力のある議論があります。DSA のような署名のみのアルゴリズムで使用する場合の必要性は明らかです (議論されていません)。信頼のウェブに大きく依存していない場合は、秘密のプライマリ キーをオフラインにして (紛失のリスクを軽減して) キーのローテーションを容易にする機能が非常に重要に思えるかもしれません。しかし、他の理由もあります。暗号化と署名の両方を使用する場合、使用を分離することでリスクを軽減できる可能性があります。たとえば、かつては、不正な乱数と DSA キーに欠陥があり、署名を大量に発行すると秘密キーが明らかになりました。そのキーが暗号化にも使用されていた場合、プライベートな通信も明らかになっていたでしょう。もちろん、DSA キーはできなかった暗号化にはRSAが使われてきましたが、RSAでは同様の問題は発生しないと言われていますか?
別の例: OpenSSH には、秘密 SSH キーがキー サーバーに公開される可能性がある問題がありました。私は、monkeysphere とともに OpenPGP 認証サブキーを使用していますが、この場合、プライマリ キーではなく認証サブキーが公開されます。認証サブキーのロールには 5 分かかりましたが、完全に新しいキーを配布するには 1 時間 (またはそれ以上) かかります。
サブキーによって多少の複雑さが増すかもしれませんが、実際にはその複雑さは感じられず、問題なく動作します。計算とストレージのオーバーヘッドはごくわずかで、追加の手作業は必要ありません。(可能な)追加の利点を「無料で」享受してみてはいかがでしょうか。
とにかく使わない
理由はあるかもしれないないサブキーを使用する。OpenPGP インフラストラクチャの一部だけに依存し、信頼管理やその他の部分についてはまったく気にしないという場合もあります。他の人のためにソフトウェアを作成する場合は、ユーザーを制限しないことを検討してください。まったく関係のないキー ペアを作成するのではなく、サブキーを提供するだけでよい場合もあります。
サブキーなしでキーを生成するには、暗号化と署名の両方をサポートするアルゴリズムを使用する必要があります。RSA はこれをサポートします (DSA はサポートしません)。サブキーなしで「汎用」プライマリ キーを生成するには、キー--expert
生成メニューを使用する必要があります。
gpg --expert --gen-key
次に選択(8)RSA(自分の能力を設定する)キーの可能な用途を選択できます。C
プライマリ キーには (認証) が必要ですが、S
(署名)、E
(暗号化)、A
(認証) は任意に選択できます。アシスタントの残りの部分を完了すると、選択した機能を持つサブキーのないプライマリ キーが提供されます。
答え2
@jens-erat ご回答ありがとうございます。私も同じことを探していました。記録のために 1 つだけ詳細を記します。
gpg --expert --gen-key
私の環境では動作しませんでした (GPG 2.2.4)。これは動作しました:
gpg --expert --full-generate-key