2009-04-06 16 views
2

私はアプリケーションで作業しており、ユーザーのパスワードを保存する必要があるので、レジストリの現在のユーザークラスに保存すると思っていますが、ハッシュしたい明らかな理由から、SHA1がクラックされていることを示すニュース項目を見たことがあります。「標準」システムまたは.netで利用可能な(分断されていない)ハッシングアルゴリズムがありますか?SHA1よりも優れたハッシング

+0

はい、私はSHA1が技術的には暗号化機能ではないハッシュ関数であることを認識していますが、依然として問題はあります。 – UnkwnTech

+2

あなたがその違いを理解しているのであれば、なぜあなたはまだあなたの質問に2つを混同していますか? – Blorgbeard

+0

暗号化ではなく、ハッシングを示す質問とタイトルを更新しました。 –

答えて

11

SHA1は、それがcryptographic hash functionだ、encryptionではありません。はい、それは壊れています。つまり、ブルートフォース方式よりも速く衝突を生成することができます。 SHA2ファミリは壊れていません。

しかし、私はrainbow tableがパスワードを試すために使用することができなかったように、エントリごとにカスタムの種子を使用するように助言します。 SQLメンバーシッププロバイダを使用している場合、password format "Hashed"は既に各ユーザーに対して異なるシードを使用しています。あなたのハッシュを播種について

詳しい情報は、トーマス・Ptacekによる記事What You Need To Know About Secure Password Schemesで見つけることができます。

2

あなたのコメントで言うように、SHA1は暗号化ではなく、ハッシュアルゴリズムです。これは、たとえ壊れていてもパスワードを取得できない一方通行の機能です。

あなたは.NETに既にある強力なハッシュ関数をしたい場合は、SHA2ファミリを見て - SHA256、SHA384、SHA512を。 (SHA224も存在しますが、System.Security.Cryptography名前空間には実装されていません)。

SHA1に対するコリジョン攻撃は実際にはまだ悪用されていませんが、先を見据えていることは間違いありません。 NISTは現在、これらの攻撃に照らしてSHA3の選択プロセスを実行していますが、これは完了と商業的承認から数年です。一方、SHA2は、NISTによって標準化されており、MD5およびSHA1に対して成功した攻撃の対象ではない既存のファミリのアルゴリズムです。

+0

より良いハッシュであっても、虹の攻撃を避けるために塩を使用する必要があります。 – Richard

+1

はい、合意しました、私はそれを否定していません。しかし、疑問は、それを使用するためのベストプラクティスではなく、より良いハッシュアルゴリズムに関するものでした。 –

1

あなたのパスワードはsaltです。 SHA1と塩析を使用するC#の実際のsample codeがあります。

SHA1の「クラックされている」問題は、すべての基本的な可能な組み合わせがあらかじめ計算されていますが、ソルトはパスワードを非基本的にします(脆弱であるか簡単に推測できれば凶悪ですが、 )

+1

はい、確かにそれらを塩にします。しかし、SHA1が少なくとも暗号化の用語で「壊れている」という事実は丸められません。 –

0

はい、SHA512を使用できますが、実際のハッシュの長さを覚えておいてください。ハッシュ結果をソルトすることによって、常にセキュリティを追加することができます。

SHA512("The quick brown fox jumps over the lazy dog") = 
    07e547d9 586f6a73 f73fbac0 435ed769 51218fb7 d0c8d788 a309d785 436bbb64 
    2e93a252 a954f239 12547d1e 8a3b5ed6 e1bfd709 7821233f a0538f3d b854fee6 

あなたは手遅れ他のハッシュalgorythms、here's a short list.

-5

5日に見てみたいが、あなたは、この安全性の高い暗号化機能を試すことができる場合:

uint64_t highly_secure_encrypt(char* password) { 
    sleep(1); 
    return 0; 
} 

あなたが取得している方法はありませんそれからのパスワード。

今、重大な問題に。あなたの質問に対する答えがわからない場合は、セキュリティシステムを設計するべきではありません。

レジストリの現在のユーザーのセクションにパスワードを保存している場合は、(通常の状況下で)それにアクセスできる唯一の人は、ユーザと管理者です。私はレジストリの現在のユーザーセクションを(やや)信頼し、OSが提供する標準のパスワードハッシングメカニズムを使用します。

ジェフ・アトウッドの"Rainbow Hash Cracking"は初心者向けのハッシュとパスワードの保存方法を説明しています。Thomas Ptacekの"Enough With the Rainbow Tables: What You Need to Know About Secure Password Schemes"は、あなたが通常は自分で試してやってはいけない理由を説明しています。

良いハッシュ関数を選択することは、戦闘の1%未満です。攻撃者がハッシュ関数を何百万回も実行できる場合、秒間に数百万回の組み合わせをテストできます。あなたが必要とするものは、遅く調整可能な安全なハッシュです。それは来るのは簡単なことではないし、SHA *、MD5などは、通常は速度が重要なファイルやファイルの塊に使用されるため、血まみれに高速になるように設計されている。

答えはそこにあり、見つけやすいので、もっと読むことをお勧めします。

+0

アクセスの前提は、システムが侵害されていないことを前提としています。これは、一般ユーザーが教育を受けていて、自分のシステムを「管理」しているときに、 – UnkwnTech

1

ハッシュアルゴリズムは、彼らが新しいAESとしてRijndaelを戴冠暗号化コンテストを持っていたようにNISTがhashing contestくらいまで提供してきた理由である、後半のようweaknessのいくつかの兆しを見せてきました。

私は個人的には MD6が提供しなければならないことがあります。これは、30年以上にわたり暗号化スペースに入っていたRon Rivestが先導しているためです。 MD6が取り下げられましたので、私は謙虚な意見の中で、第2ラウンドの強力な候補者の中には、Keccak、Blue Midnight Wish、Fugueが挙げられます。

そこから、塩漬けなどの良い方法を間違いなく使用してください。

+0

SHA3コンテストの[最近の開発](http://groups.csail.mit.edu/cis/md6/OFFICIAL_COMMENT_MD6_2009-07-01.txt)には、完全性のために、レビューされていない暗号化を使用することの慎重さが示されていますアルゴリズムは、Rivestのようなマスターによって設計されたものでもあります: "..この時点では、MD6はSHA-3候補に必要とされるべきであると私たちが信じるもののための私達自身の基準を満たしていません..."(もちろん、 – ladenedge

+0

「最近の開発」の意味が13か月前の場合:) –

+0

現在の作物(ラウンド2)は、http: //csrc.nist.gov/groups/ST/hash/sha-3/Round2/submissions_rnd2.html –

関連する問題