2

libcurlを使用してhttpsサーバーと通信し、SSLクライアント認証を使用する(マルチOS)アプリケーションがあります。クライアント証明書がパスワードで保護されている場合、アプリケーションはユーザーにパスワードの入力を求める必要があります。アプリケーションは何百もの異なるhttpsリクエストをサーバーに送信するため、新しい接続が作成されるたびにユーザーにパスワードの入力を求めることはできません。これで、アプリケーションの起動時にパスワードを1回入力するようにユーザーに求めるだけで、「CURLOPT_KEYPASSWD」オプションを使用してパスワードをcurllibに設定します。しかし、悪意のあるユーザーが実行中のプロセスに簡単に侵入してクライアント認証パスワードを読み取る可能性があるのではないかと心配しています。とにかく、クライアント認証パスワードをキャッシュして、メモリから簡単に読み取れないようにすることはできますか?

4

1 に答える 1

3

実生活では、それほど心配する必要はありません。このような攻撃が心配な場合は、ハードウェア ベースのキーとスマート カードの証明書を調べてみてください。

スワップおよびコールドブート攻撃に対抗するためのいくつかの提案:

  • パスワードを保持するメモリをロックし、スワップアウトを許可しません (mlock+mprotect および posix では、Windows にも同様の機能があります)。
  • パスワードを保持するメモリを暗号化し、パスワードの使用中にのみ復号化する可能性があります。

実生活では、誰かがアクセスしてはならないプロセスに侵入できるようにマシンが所有されている場合、あなたはすでに侵害されており、それを曖昧にしようとする考えはありません.

キャッシュを制御していると思う場合 (もう一度考えてみてください)、状況によっては、たとえば curl がパスワードを使用してメモリをコピーしてリークするかどうかを知ることはできません。

SSL とセキュリティを真剣に考えている場合は、ハードウェア トークンまたはスマート カードを使用してください。それ以外の場合は、ホストが侵害されると、そのホストを介して実行されているソフトウェアとアクセス コードが侵害されていると考えてください。

于 2009-12-04T21:32:44.220 に答える