web-dev-qa-db-ja.com

公開鍵を使用したクライアント側の暗号化

私の状況:

  1. POSTリクエストからのログインパスワードは、キャッシュがクリアされない限り(ブラウザを手動で閉じるかぎり)、クリアテキストでブラウザのメモリに残されます。

  2. 接続はHTTPSです。

可能な解決策:

  1. ログイン要求ごとにサーバーで公開鍵と秘密鍵を生成します。
  2. 公開鍵をブラウザに送信します。
  3. JavaScriptを使用して、公開鍵でパスワードを暗号化し、サーバーに送信します。
  4. 秘密鍵を使用して復号化し、検証します。
  5. ログイン後にキーを削除します。

私の質問は、これは実現可能ですか?長所と短所?セキュリティとパフォーマンスの考慮事項はありますか?

私は次のようないくつかの質問をしました:

  1. ハッシュクライアント側
  2. Webcrypto
  3. javascript crypto

リクエストごとに新しいキーのペアを生成することを提案しているので、最初の質問は実際には私の質問に答えません(実現可能性とパフォーマンスに関する私の最大の懸念です)。他の2つのリンクは、HTTPS接続がある限り、javascript暗号は基本的に無意味であることを示唆しているようです。考え?

3
user2300868

このシナリオでは、別の公開鍵と秘密鍵を生成するのはやり過ぎです。

ブラウザのキャッシュを読み取るマルウェアが本当に心配な場合は、何もキャッシュしないようにブラウザに指示できます。

<meta http-equiv=”Cache-Control” content=”no-cache” />
<meta http-equiv=”Cache-Control” content=”no-store” />

ユーザーがメモリを読んでユーザー名やパスワードの平文を見つけるのが心配な場合は、シナリオ#2で定義されているものと同様のソリューションで実装できます( http:// resources。 infosecinstitute.com/browser-based-vulnerabilities-in-web-applications/

コンテンツを表示するには、そのページを少し下にスクロールする必要があることに注意してください。最初にポップアップする巨大な広告があります。

1
Daisetsu