1. ホーム
  2. hash

[解決済み] SHA-256 javascriptの実装で、一般に信頼できるとされるものはありますか?

2022-03-04 04:15:58

質問

フォーラムへのログインを作成しており、サーバーに送信する前にクライアント側でjavascriptでパスワードをハッシュ化する必要があります。私は実際に信頼できるSHA-256の実装を見つけるのに苦労しています。私は、誰もが使うような権威あるスクリプトがあると期待していたのですが、さまざまなプロジェクトが独自の実装を持っていることがわかりました。

しかし、これは一般的で重要なことのように思えるので、何を使うべきかについて何らかのコンセンサスがあるはずです。私が世間知らずなだけでしょうか?

コメントでよく出てくるので編集します。はい、サーバー側でより厳密なハッシュを再度行っています。クライアント側のハッシュは、データベースに保存される最終結果ではありません。クライアント側のハッシュは、人間のクライアントが要求したものだからです。特に理由はないのですが、おそらく、やりすぎが好きなのでしょう。

解決方法は?

時代遅れです。 最近のブラウザの多くは、暗号化操作をファーストクラスでサポートするようになりました。参照 Vitaly Zdanevichの回答 の下にあります。


Stanford JS Crypto Library には、SHA-256の実装が含まれています。JSにおける暗号は、他の実装プラットフォームに比べ、十分に検証された取り組みではありませんが、この暗号は少なくとも部分的に開発されており、ある程度はスポンサーもついています。 ダン・ボネ 彼は暗号の分野では有名で信頼も厚いので、このプロジェクトは、実際に何をやっているのかを知っている人による監督下にあるということです。また、このプロジェクトは NSF .

しかし、指摘すべきは......。

... もし、パスワードを送信する前にクライアント側でハッシュ化した場合、そのパスワードは ハッシュがパスワード そのため、元のパスワードは無関係になります。攻撃者は、ユーザーになりすますためにハッシュを傍受する必要があるだけで、そのハッシュがサーバーに変更されずに保存されていればよいのです。 を保存していることになります。 パスワード(ハッシュ)の平文 .

つまり、あなたのセキュリティは今 悪い を決めたからです。 改善点を追加する 以前は信頼できるスキームであったのに。