2012-06-08 12 views
12

password leak of LinkedInは、パスワードを安全にハッシュすることの重要性を証明しました。しかし、塩を使ったパスワードをハッシュすることは、ハッカーが毎秒2億3千万のハッシュ(ブルートフォース)を計算できるように、スピードに合わせて最適化されているため、通常のハッシュアルゴリズム(MD5やSHAファミリなど)では安全ではありません。.NETハッシュアルゴリズムのどれがパスワードハッシュに十分安全ですか?

PBKDF2,Bcrypt、PBMAC、およびscryptのように、はるかに計算量が多いので、使用するのに安全なハッシュアルゴリズムがあります。しかし、これらのハッシングアルゴリズムは、.NETフレームワークには含まれていないようです。

.NET Frameworkには、パフォーマンスの高いハッシュアルゴリズムが含まれていますか。

ANSWER: PBKDF2はフレームワークに含まれ、this site shows how to use it properlyです。

+1

興味深い質問、私は理由と同じ理由で同じことを思っていました。 :) – pyrocumulus

+3

"Secure"はありません。セキュリティのために選択するものは、常に速度、メモリ使用量、CPU使用率などの他の要件とのトレードオフになります。「十分に安全」とは、あなたの要件に基づいています。 –

+0

@PeterRitchie:だからこそ、私は「より安全なハッシュアルゴリズム」を参照しています。それが質問の内容です。 – Steven

答えて

10

私はそれが本当に意味のあるクラス名ではないと思うが、それが.NETフレームワークに含まれていると思う。複数の情報源によると、Rfc2898DeriveBytesは実際にはPBKDF2実装です。 MSDNも同様にそう言います。

は、例えば Why do I need to use the Rfc2898DeriveBytes class (in .NET) instead of directly using the password as a key or IV?PBKDF2 implementation in C# with Rfc2898DeriveBytes

を参照してください。

-1

100%安全なハッシングアルゴリズムはありません。リンクされたハッキン​​グは、ハッシュアルゴリズムよりもインフラストラクチャ/コードのセキュリティが原因でした。任意のハッシュを計算することができます。ハッシングアルゴリズムが複雑になるほど時間がかかります。衝突攻撃などの一部の攻撃は、実際には複雑なハッシュで達成するのがはるかに遅くはありません。

私は必ずハッシュパスワード(暗号化するだけではない)を確認し、サーバーへのアクセスを制限します。すべての開発者は、少なくともセキュリティの基本(SQLインジェクション、オーバーフローなど)を理解しており、私が作業しているハイプロファイルサイトはペンテスト済みです。

+5

私はStevenが安全なハッシングアルゴリズムを選ぶことが彼をハッキングから守ると思っているとは思わない。しかし、あなたのDBアクセスが危険にさらされた場合に彼を守ります。 LinkedInはSHA1(!!)ハッシュを塩なしで使用しました(!!);それは信じられないほど悪いです。スティーブンはもっと安全なアルゴリズムを選びたいと思っています。明らかに100%安全です。ハッシュが実行可能な時間内に強制的に強制されることはほとんどありません。 – pyrocumulus

+0

さて、実際には、私のユーザーリストを公式にウェブサイトからアクセス可能にし、誰も解読できないのでハッシュされたパスワードを含めることを望んでいました。いいえ、もちろんではなく、ちょうど冗談です:-P。 @クラウドは絶対に正しいですが、その欠陥は私にあります。私は私がこれを知っていることを私の質問で記述することでより良い仕事をしていたはずですが、これは私にとってとても明白なものであり、忘れ易いものです。 – Steven

+1

しかし、リンクされたものに比べてまともなハッシュを攻撃することは、少なくとも10億倍の費用がかかります。 – CodesInChaos

関連する問題