web-dev-qa-db-ja.com

WebブラウザーがWebサイトにプレーンテキストのパスワードを提供するのはなぜですか?

ユーザー名「John」とパスワード「Secret」を使用して、website.comにサインアップするとします。

現在、webbrowserは、website.comに私の本当のプレーンテキストパスワードを提供しています。ハッキングされた場合のユーザーへの被害を最小限に抑えるために、それらを信頼して適切にソルトおよびハッシュする必要があります。

Webブラウザーがパスワードをハッシュしてソルトしないのはなぜですか?代わりに、それが伝達した場合の欠点は何でしょうか:

username: John
password: Sha256("website.com|john|Secret") => 
"655cd29ded358433da16867b682c21621664d26b9ca493ab224488dffce17050"

多分それは世界で最高の計画ではありませんが、何もないより悪いのですか?

このスキームでは、Webサイトはサインアップしたドメインを追跡する必要があり、ハッシュ関数でユーザー名をすべて小文字に変更して、ユーザー名の大文字小文字がどのように関係なくWebブラウザーが同じパスワードを通信できるようにする必要があります。 。

ハッシュにドメインやその他の会社IDを含めることをお勧めする理由は、Rainbowテーブルを一度に複数のサイトで使用できないようにするためです。

-

更新:私の質問は、JavaScriptでの1回限りの実装ではなく、クライアント側ハッシュのWebブラウザー実装に言及しています。クライアント側ハッシュの1回限りの実装に依存することは、サーバー側ハッシュに依存することに似ています。つまり、特定のWebサイト/会社/実装がプレーンテキストのパスワードを漏らしていないかどうかを確認することは困難です。これは、主要なWebブラウザーベンダーに負担を移すことです。

1
William

欠点は何ですか?複雑さの大幅な増加を除いて、本当に1、これはめったに良いことではありません。また、パスワードフィールドを持つ文字通りすべてのWebサイトの移行コストが高いことも、良いことではありません。

しかし、とにかくその影響を考慮して、コストを上回るかどうかを確認しましょう。このハッシュを処理する方法は2つあります。

  1. サーバー側でハッシュしないでください。データベースリークにより、攻撃者は全員のアカウントにすぐにアクセスできるようになります。これは、以前にリークされたパスワードを渡したのと同じように、ハッシュを渡しただけだからです。
  2. サーバー側で(もう一度)ハッシュします。ハッシュ関数が非常に奇妙でありそうにない方法で相互作用しない限り、これはおそらくセキュリティを傷つけることはしません。しかし、今はすべてが基本的に同じです。唯一の違いは、パスワードを直接知るのではなく、ブラウザのパスワードのハッシュしか知らないことです。

どちらの場合も、あなたは何の利点も得ません。悪意のあるクライアントを検討する場合、#1は明らかに誤りであり、#2はパスワードを盗聴し、他の場所でそれを再利用する攻撃者からのみ保護します。しかし、パスワードを再利用するべきではないので、それは不可能であるべきです。キーロガー、フィッシングサイトなど、他にも非常に多くの攻撃方法があります。そのため、自分が所属するWebサイトでパスワードがどのように処理されても、十分に注意する必要があります。


1:実装が回答する必要があるいくつかの質問は次のとおりです。

  • ソルトを保存する場所(または、保存されていない場合-必要に応じて-簡単に並列化してソルトの目的全体を無効にすることができない方法で生成する方法)
  • 使用するハッシュアルゴリズム(およびパラメーター)
  • ハッシュアルゴリズムが時間の経過とともに弱くなり、置き換える必要がある場合の対処方法
  • ブラウザ内のハッシュステップを実際に実装する場所。実際に座って考えるまでは簡単に思えます。
  • このクロスプラットフォームを安全に処理し、同じユーザーが同じパスワードを入力して同じハッシュをWebサイトに送信する方法
  • パスワードフィールドを提供する方法ハッシュなしハッシュ化。これは、SSNやクレジットカードなどの機密データを入力するのに役立つことが多く、Webページでプレーンテキストで知る必要があるため、不正なWebサイトが元の不正なコードを保持するために悪用しないように

これは信じられないほど複雑であり、そのすべての複雑さがバグの余地をたくさん追加しています。セキュリティコードでは、これは特に危険です。

これは理にかなっていますが、大規模な集中型の取り組みを調整するにはsome問題があります。 KOLANICHは、リモートパスワード用の非常に気の利いた、さらに安全なプロトコルであるSRPをすでに提案しています。

主な問題は、IT業界全体がすでに機能しているものを変更するように強制するために実際にセキュリティを気にする人がほとんどいないことです。一方、プライバシーフリークは、長いランダムパスワードを持つパスワードマネージャを使用するだけで、同じ結果を得ることができます。

たとえば、なぜDNS、ARP、SMTPが暗号化されておらず、認証もされていないのかなど、多くの同様の質問をすることができます。それが機能し、誰も気にしないので。

1
Andrew Morozko

レガシーのため。 https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol を実装し、いくつかの変更を加えてWebに適合させることで、ブラウザーに組み込むことが実際に可能です。しかし、業界では、TEEを使用したWebAuthnなどの集中型ソリューションが好まれます。この方法は、ユーザーのプライバシーとセキュリティにとってより有害であり、デバイスを販売する企業にとってより有益だからです。

0
KOLANICH