web-dev-qa-db-ja.com

PGPプロトコルとSSHプロトコル間でRSAキーを共有する:これはセキュリティ上のリスクをもたらしますか?

たとえば、認証機能しか持たないPGPサブキーを生成し、これを使用してSSHキーペアを生成してGitを認証する場合、これはセキュリティ上の脅威になりますか?

その場合、PGP秘密鍵または公開認証サブキーを使用する必要がありますか?

次に、te ssh-addコマンドを使用して、パスフレーズで保護された秘密SSHキー(./ssh/id_rsa)を追加すると、パスフレーズの入力を求められます。しかし、Gitを使用して後続のコミットを行うと、SSHエージェントからパスフェーズの入力を求められません。どうしてこれなの?

これに関するベストプラクティスは何ですか?キーを分離しておくべきですか?

4
matthiasdv

私が理解している限り、認証サブキーをSSHキーに変換し、これを使用して認証する必要があります。

たとえば、認証機能しか持たないPGPサブキーを生成し、これを使用してSSHキーペアを生成してGitを認証する場合、これはセキュリティ上の脅威になりますか?

これが妥当かどうかは、達成しようとしていることに依存します。 OpenPGPの重要な部分は、その鍵と信頼管理機能です。 SSHを使用した認証にそれらを使用する場合(monkeysphereではこれが可能ですが、いくつかの構成が必要です)、キー管理をSSHからOpenPGPに完全に引き渡して、キーの追加、交換、取り消しをはるかに簡単にします。もしそうなら;認証サブキーを使用すると、本当の利点が得られます。

これらの拡張機能を使用したくない場合(または将来的に特定の計画なしでいつでも使用する可能性がある場合)は、使用しないでください。実際には利点がなくても、複雑さ(情報セキュリティでは常に悪いことです)を追加しています。たとえば、GitHubでmonkeysphereの拡張機能を使用することはできません-古き良き通常のSSHキーを直接使用するほうがよいので、とにかく手動でそれを「取り消す」必要があります(ただし、GitHubから削除する必要があります)。アカウントパネル)。

一般に、シークレットを再利用すると、それらの1つで1つの違反が発生するシステム/サービスが増えるため、一般的にそうすることは悪い考えです。しかし、キー管理の利点は、少し大きなリスクに見合う価値があるかもしれません。それ以外の方法でOpenPGP認証キーを使用していない場合、is SSHに認証のみのサブキーが使用されるリスクはありません--他のサービスがないため可能性があるためのために使用される。

その場合、自分のPGP秘密鍵または公開認証サブキーを使用する必要がありますか?

認証を行いたいシステムにpublic認証サブキーを保存する必要があります。 privateキーは非公開のままであり、認証サーバーから送信されたチャレンジに応答するために使用されます。

次に、te ssh-addコマンドを使用して、パスフレーズで保護された秘密SSHキー(./ssh/id_rsa)を追加すると、パスフレーズの入力を求められます。しかし、Gitを使用して後続のコミットを行うと、SSHエージェントからパスフェーズの入力を求められません。どうしてこれなの?

SSHを使用した認証とGnuPGを使用した署名には、共通点はありません。質問はよくわかりません。あなたはあなたのパスワードを要求するもの(そしてそれをどこに期待するか)とOpenPGPキーをssh-agentにどのように追加するかについてより具体的にしたいかもしれません。

3
Jens Erat

問題はおそらくアルゴリズムのセキュリティではありません。問題は、アプリケーションの1つにセキュリティの問題がある場合、他のアプリケーションにもセキュリティの問題があることです。さらに、鍵を共有するため、何らかのプロトコルプロトコル上が可能になる場合があります。言い換えれば、これはシステムのセキュリティに関して良い考えではありません。

全体として、キーは別々にしておく必要があります。通常、1つのキーが特定のアプリケーションに使用されます。暗号化キーと認証キーまたは署名キーを共有すると、それ以外の方法では不可能なアルゴリズムへの攻撃が発生する可能性があります。


secondの質問については、SSHセッションが認証されている限り、キーはもう必要ありません。

5
Maarten Bodewes