web-dev-qa-db-ja.com

私の秘密鍵がパスワードで保護されている場合、私に尋ねずにどのように使用されますか?

TLSおよびSSHに関連します。私の秘密鍵がパスワード/パスフレーズで保護されている場合、TLSまたはSSH通信中にパスワードを要求せずにこれを自動的に使用するにはどうすればよいですか?

4
Engineer999

SSL/TLSの場合、サーバーでない限り、通常、秘密鍵を所有していないか、使用していません。サーバーである場合、またはクライアント証明書(TLS相互認証)を使用している場合は、使用する前に秘密キーのロックを解除する必要があります(パスワードで保護されている場合)。詳細は実装固有です。

  • FirefoxなどのWebブラウザーは、キーのパスワードを一度要求し、ブラウザーが閉じられるまでそれをキャッシュする場合があります。
  • Windowsのキーストアを使用するブラウザーまたはサーバー(IE/Edge/ChromeやIISなど)は、キーが使用されるときにパスワードプロンプトを取得するか、キーがキーストアに追加されたときにのみパスワードを必要とし、その後Windowsログイン資格情報で保護されたキーを使用して暗号化しているため、パスワードを再入力する必要はありませんが、Windowsパスワードを知らない人はキーを使用できません。
  • Macはキーチェーンにキーを格納できます。これはWindowsのキーストアと同様に機能し、SafariとChromeで使用されます。
  • プラットフォームが提供するキー管理を使用しない、またはユーザーにパスワードを要求しないソフトウェアでは、プログラムの起動時にコマンドラインでパスワードを指定し、どこかに(できれば環境変数またはファイルに保存しますが、一部の人はソースにハードコーディングします)。これは、たとえばにアクセスする必要があるサーバーアプリケーションでは非常に一般的です。 a Javaキーストアとその秘密キー、そしてもちろん、攻撃者がローカルファイルを読み取ることができるようになると、セキュリティ上のリスクになります。

SSHの場合、最も一般的なアプローチは ssh-agent プログラム(opensshに付属、または代替プログラムを使用できます)。 ssh-agentは起動時にキーのパスワードを必要としますが、プログラムが閉じるまでロック解除されたキーを保持します。 ssh-agentは実際には誰にも鍵を明かしません。代わりに、そのキーでデータに署名するサービスとして機能します。プログラムのIPC=エンドポイントは、同じユーザーとして(またはスーパーユーザー権限で)実行しているプログラムからのみ到達可能です。そのため、アカウントで実行されている信頼できないソフトウェアは、任意のマシンにSSHでキーを効果的に使用できます。 、ユーザーセッションで悪意のあるソフトウェアのポイントに到達すると、すでに大きな問題に直面しています。

4
CBHacking