弱いハッシュとの戦いに参加します。
OWASPには、いくつかのガイダンスが記載されたパスワードストレージチートシート( https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet )があります。彼らは、2012年の時点で最低64,000のPBKDF2反復を推奨しており、2年ごとに2倍になります(つまり、2012年には90,510回)。
ユーザーIDごとに暗号的にランダムな長いソルトを保存することは常に基本であることに注意してください。
ユーザーごとの反復回数が大きく変動し、反復回数をソルトとともに保存すると、クラッキングソフトウェアが複雑になり、特定の最適化が妨げられる可能性があることに注意してください。たとえば、「bob」は135817回の反復で暗号化されますが、「alice」は95,121回の反復を使用します。つまり、2013年の最小値は(90510 + RAND(90510))です。
また、ユーザーが「password」、「Password1!」、「P @ $$ w0rd」、「P @ $$ w0rd123」などの弱いパスワードを選択できる場合は、これらすべてが役に立たないことにも注意してください。ルールベースの辞書攻撃は確かに非常に迅速です(後者は、次のルールを持つ単純な「パスワード」です:大文字の最初の文字、1337-話す、最後に3桁の数字を追加します)。基本的な辞書リスト(phpbb、良い、小さなスターターワードリスト)を取り、このようなルールを適用すると、人々が「巧妙な」トリックを試みる非常に多くのパスワードを解読できます。
したがって、新しいパスワードをチェックするときは、「P @ $$ w0rd123」がこの一見非常に厳しい規則に準拠しているため、「上、下、数字、数字の4つすべて、少なくとも11文字の長さ」を適用しないでください。代わりに、その基本的な辞書リストを使用して、基本的なルールがそれをクラックするかどうかを確認します(実際にクラックを試みるよりもはるかに簡単です。リストとその単語を小文字にして、「最後の4文字が一般的な年、最後の4文字を除くすべてを単語リストと照合します」、「最後の3文字を除くすべてを数字と照合します」、「最後の3文字を除くすべてを単語リストと照合します」、「最後の2文字を除くすべてを単語リストと照合します」および「パスワードをDe-1337-@をaに、3をeに、というように変換します。
パスフレーズに関する限り、特に単語の途中に他の文字が追加されている場合は、一般的に優れたアイデアですが、十分な長さがある場合に限り、可能な組み合わせをたくさんあきらめているためです。
GPUを搭載した最新のマシンは、2012年でも、1秒あたり最大数百億回のハッシュ反復(MD5、SHA1、SHA-256、SHA-512など)であることに注意してください。パスワードを入力します。これはせいぜい非常に控えめなパスワードです。スペースを含む長さ7以下のすべて小文字の英語の単語は4つだけです。したがって、180億のXKCDスタイルのパスワードを探しに行くと、2番目の設定が推測されます。現代の小さなアメリカ英語辞書には次のようなものがあります。長さ5以下の6k語長さ7以下の21k語長さ9以下の36k語46k語長さ11以下の長さ13以下の49k語
XKCDスタイルのパスフレーズを使用し、人気で単語をフィルタリングすることなく(「正しい」、「椅子」、「ダンピア」、「出血」)、21k ^ 4になります。これは、約2E17の可能性にすぎません。180億/秒のセットアップ(単一のSHA1反復に直面している場合は8つのGPUを備えた単一のマシン)では、キースペースを徹底的に検索するのに約4か月かかります。そのようなセットアップが10回あった場合、それは約2週間です。「dumpier」のようなありそうもない単語を除外した場合、最初のパスをすばやく実行する方がはるかに高速です。
さて、「Balsamina」や「Calvinistically」(どちらも「go to row」機能を使用して選択)など、「巨大な」Linuxアメリカ英語の単語リストから単語を取得すると、長さ5または長さ7以下の115kワード以下長さ9以下の231kワード長さ11以下の317kワード長さ13以下の362kワード
長さの最大制限が7であっても、この巨大な辞書をベースとしてランダムに選択された単語を使用すると、115k ^ 4〜= 1.8E20の可能性があります。セットアップが最新の状態に保たれている場合は、約12年です(18か月ごとに電力が2倍になります)。 )。これは、13文字、小文字+数字のみのパスワードに非常によく似ています。「300年」はほとんどの見積もりでわかることですが、ムーアの法則を考慮に入れていません。