web-dev-qa-db-ja.com

一般的なWebサイトのパスワードチェックプロセス

これは非常に基本的な質問のように思えますが、何かを見逃さないようにしたかったのです。

ログインページにパスワードを入力してEnterキーを押すと、「承認」されるまでは、正確にはどうなりますか?一般的な/通常のウェブサイトを意味します。

パスワードマネージャーや安全なメールプロバイダーなどの一部のWebサイトは、コンピューターから直接ハッシュを生成してサーバーに送信しますが、パスワードは送信しません。

ただし、一般的なWebサイトの場合、私の理解では、パスワードは平文でサーバーに送信されます。接続がTLS(/ HTTPS)で暗号化されているかどうかは、ここでは問題ではありませんが、私の懸念はサーバーのみです。

平文のパスワードがサーバーに到着すると、サーバーはそのハッシュを計算し、それをそのハッシュデータベースと比較します。この時点では、どのハッシュアルゴリズムが使用されているかは問題ではありません(bcrypt、sha-256、ソルトありまたはソルトなし、これはここでの議論ではありません)。

1)これが2020年の通常のプロセスであることを確認できますか?

2)クライアント側で、ハッシュが計算された直後にサーバーがすべてのタイプのメモリからパスワードを平文で消去することを確認できる「メカニズム」は何ですか?このメカニズムは「信頼」と呼ばれますか、それともその懸念に答えるものはありますか?

2
Ozwel
  1. これが2020年の通常のプロセスであることを確認できますか?

それはあなたが「通常の」プロセスで何を意味するかによる。 最先端の技術と見なされますほとんどのユースケースで、確立されたセキュリティ標準とガイドラインで推奨されています。

これは、誰もがベストプラクティスに従っていることを意味するのではなく、実際にさまざまなプロトコルを見ることができます。私の経験に基づいて、ほとんどの確立されたWebサイトは、あなたが説明したものと同様のスキームを使用しています。

  1. クライアント側で、ハッシュが計算された直後にサーバーがすべてのタイプのメモリからパスワードを平文で消去することを確認できる「メカニズム」は何ですか?このメカニズムは「信頼」と呼ばれますか、それともその懸念に答えるものはありますか?

「信頼」はそのための良い答えです。サーバーが何かを消去したことを証明する技術的な方法はありません。サーバーコンポーネントがオープンソースの場合は、実装と信頼を確認できます。サーバーは変更せずに同じコードを実行しています。企業は、通過した独立したセキュリティ監査の証拠を示すこともできます。ただし、これもある時点で行われたレビューであり、それ以降に何が変更されたかを推測することはできません。

一言で言えば、信頼に帰着します。しかし、Webサーバーの所有者が意図的にセキュリティレベルを弱める必要があるのはなぜですか。安全でない実装から得るものは何もないので、彼らが何をしているかを知っているのは、主に要件エンジニアと開発者への信頼です。

3
Demento

短い回答:1)いいえ。2020年には、Webパスワードを安全でない方法で管理するレガシーシステムがまだ数多く存在します。パスワード管理戦略は、ソフトウェアを開発したエンジニアの質とソフトウェアの時代に依存します。 2)標準のHTTP/sプロトコルを使用するそのようなメカニズムはありません。サーバーコンポーネントはクライアントとは独立して動作するため、クライアント側からサーバーの動作を制御する可能性はなく、バックエンドエンジニアが作業を正しく行うことを望んでいます。

1

既存の回答を少し拡張するには:

ある時点で、サーバーはユーザーの認証に使用できるものを受け取る必要があります。パスワードでも、ハッシュでも、クライアント側の証明書でもかまいません。その「何か」は、常にサーバーのメモリのどこかに行き着きます。すぐにアクティブなメモリから消える場合があります。リクエストの処理後にプロセスが終了したが、物理メモリのその部分に新しいプロセスがアクセスしなかった場合、サーバーアプリケーションが明示的にパスワードメモリを使用して書き込みを行わない限り、ハードウェアに無期限に留まる可能性があります。前代未聞ではありませんが、ごくまれです。

攻撃者がターゲットサーバーのメモリにアクセスできる場合、攻撃者は実行中のプログラムまたはソースコードを変更して、受信時に認証トークンを傍受して潜在的に保存する可能性もあります。彼がメモリにアクセスできない場合は、サーバーアプリケーションの通常のプログラマーも信頼できない場合を除いて、問題全体が悲観的になります。

サイトは、前述の何かが常に変化するメカニズムを理論的に実装できます。時間要素をクライアント側のハッシュメカニズムに統合することにより、しかしある時点で、労力はリスクよりもはるかに大きくなります。

クライアント側では、提供した認証トークンがすぐに消去されることを確認する方法はありません。ソースコードが公開されている場合でも、実行中のソースコードが公開されていることを保証することはできません。サーバーでプログラムを起動した後でも、いつでも変更されている可能性があります。

ページを信頼してサーバーを保護し、認証情報のプライバシーを維持しない場合は、最初にログインしない(または登録しない)か、(ランダムに生成された)1回限りの電子メール+を使用するのが唯一の選択肢です。パスワードの組み合わせ。

これはまだかなり単純化されていることに注意してください。
セキュリティは広大で複雑なトピックです。

1
Morfildur