いくつの主要な Web サイトがハッキングされ、パスワードのデータベースが解読されているかを考えると、認証を保護する最善の方法は何ですか?
基本的に、ハッキングされた場合にハッカーがユーザーのパスワードを取得できないように、サイトの一部へのアクセスをメンバーに保護する方法に興味があります。
無敵というものはありませんが、少なくともクラッキングを非常に困難にします。
http://codahale.com/how-to-safely-store-a-password/
bcrypt
bcryptを使用します。bcryptを使用します。bcryptを使用します。bcryptを使用します。bcryptを使用します。bcryptを使用します。bcryptを使用します。bcryptを使用します。bcryptを使用します。
MD5
など} ?SHA1
SHA256
SHA512
SHA-3
これらはすべて、大量のデータのダイジェストをできるだけ短時間で計算するように設計された汎用ハッシュ関数です。これは、データの整合性を確保するのに優れていることと、パスワードを保存するのにまったく役に立たないことを意味します。
最新のサーバーは、毎秒約 330MB の MD5 ハッシュを計算できます 。ユーザーが小文字、英数字、および 6 文字の長さのパスワードを使用している場合、そのサイズの可能なすべてのパスワードを約 40 秒で試すことができます。
そして、それは何も投資せずにです。
約 2,000 米ドルを費やして 1 週間か 2 週間 CUDAを手に入れる気があるなら 、1 秒間に約 7 億のパスワードを試すことができる独自の小さなスーパーコンピューター クラスターを組み立てることができます。そして、その速度では、これらのパスワードを 1 秒あたり 1 回以上の速度でクラックすることになります。
ソルトは、辞書攻撃やブルート フォース攻撃を防ぐのには役に立たないことに注意することが重要です。巨大な塩、または多くの塩、または手で収穫された日陰で育った有機ヒマラヤピンクソルトを使用できます。データベースのハッシュとソルトがあれば、攻撃者が候補パスワードを試す速度には影響しません。
塩であろうとなかろうと、速度を重視して設計された汎用ハッシュ関数を使用している場合は、非常に効果的です。
bcrypt
これらの問題を解決しますどのように?基本的に、それは地獄のように遅いです。これは、Blowfish 暗号化アルゴリズムのキーイング スケジュールのバリアントを使用し、ワーク ファクターを導入して、ハッシュ関数のコストを決定できるようにします。このため、bcrypt
ムーアの法則についていくことができます。コンピューターが高速になるにつれて、作業係数を増やすことができ、ハッシュは遅くなります。
bcrypt
たとえば、よりどれくらい遅いMD5
ですか?仕事の要因によります。作業係数 12 を使用すると、ラップトップで約 0.3 秒でbcrypt
パスワードがハッシュされます。一方、1 マイクロ秒未満で済みます。yaaa
MD5
つまり、5 桁程度の桁数です。40 秒ごとにパスワードをクラックする代わりに、12 年ごとにクラックすることになります。パスワードにはそのようなセキュリティは必要ないかもしれませんし、より高速な比較アルゴリズムが必要かもしれませんが、bcrypt
速度とセキュリティのバランスを選択できます。これを使って。
適切なパスワード処理 (前述の bcrypt など) に加えて、専用のデバイス/マシンでパスワードのハッシュを行う必要があります。
このパスワードハッシュ用の「デバイス」は、いわゆる「ローカルパラメーター」を含む別のシステムであり、これはハッシュ関数への追加の入力です (たとえば、128 ビットの強力な乱数)。このローカル パラメーターは、ホスト システム (ユーザー認証を行うアプリ) によって読み取れないようにする必要があります。
このような専用マシンをパスワード ハッシュに使用すると、パスワード データベースやアプリが危険にさらされた場合に、追加のセキュリティ レイヤーが得られます。