web-dev-qa-db-ja.com

ファイル暗号化パスワードを解読する時間-単なる反復以上のもの

特定の長さのパスワードを解読するのにx時間かかることがよくあります。しかし、これはすべての可能性を反復するのにかかる時間のようです。それが機能するかどうかを確認するために各反復をチェックするのにかかる時間はどうですか?それはプロセスをはるかに長くしませんか?

私が最も興味を持っているのは、暗号化されていると思われるが、未知の方法で暗号化されているファイルがある場合です。 (ウェブパスワードのログインにはあまり興味がありません)。このファイルで数十億のパスワードを試す手順はどのようなもので、復号化の合計時間にどのように影響しますか?

8
wayne_h

可能なすべてのパスワードを列挙し、ある時点で各パスワードをメモリに保持することは、非常に高速なプロセスです。単純なPCでは、クロックサイクルごとおよびCPUコアごとに、このようなパスワードを1つ作成できると想定できます。したがって、PCは1秒あたり10億のパスワードを列挙します。表示される数値がそれより大幅に少ない場合、パスワード検証コストも含まれます。

パスワード検証のコストは非常に変動します。通常、パスワードを検証するシステムは、salted hashed passwordsを格納します。ハッシュ関数が SHA-1 の場合、2.4 GHzで実行されているIntel Core2 x86 CPUは、1秒あたり(およびコアあたり)約1200万のパスワードを試すことができます。これは、プロセッサが各パスワードにハッシュ関数を適用できる速度(パスワードの列挙自体はそのコストの1%未満です)。私のPCはクアッドコアなので、毎秒4800万です。私はまた、パスワードハッシュを実行できる、それほど悪くないNvidiaグラフィックカードも持っています。これは、単純な生のSHA-1で毎秒1億6千万回です。その速度で、すべての8文字のパスワード(大文字と小文字、数字を含む)が2週間ほどチェックインされます。

優れたパスワードストレージスキームでは、反復ハッシュまたは連結ハッシュを使用します。このハッシュでは、パスワードのハッシュが数千回行われます。これにより、パスワードの検証が数千倍遅くなります。これは、ユーザーが認識できるほどの低速化を意味するわけではありませんが、タスクがはるかに難しくなります(つまり、数千)攻撃者にとってははるかに困難です)。

9
Thomas Pornin

はい、それも重要な要素です。 リソースを消費するパスワードの正確さを確認することは、少なくとも攻撃者にとって困難にするのいくつかの方法です。それがまさにKeePass辞書攻撃からの保護 を試みていることです。

しかし、問題は、この測定のみに基づいて、攻撃者がはるかに高速なコンピューター/クラッキングマシンに切り替えないという事実に頼っています。

このプロセスに強制的に外部制限を強制できる場合、それは本当に役立ちます。実際、パスワードチェックのレート制限は、適切な場合の適切な解決策です。通常、銀行口座のパスワードを「推測」するために3回試行され、しばらくの間または無期限にロックされます。これを総当たりにしてみてください。

6
Karol J. Piczak

私があなたの質問を正しければ、それはハッシュされたパスワードの標準コレクションのパスワードをクラックするのではなく、ファイルの暗号化に使用されるパスワードを総当たりにすることについてです。また、暗号化されたファイルの形式さえわからない場合があります。

したがって、これは nicity distance-Wikipedia の概念に関連し、ここでの前の質問に密接に関連しています 誰かが暗号化を破った場合、彼らはどのようにして彼らが成功したと知っていますか?-ITセキュリティ

与えられたパスワードの成功を確認するのに必要な時間は、一般的なデータ形式のほとんどのファイルでは通常非常に速いと思います。しかし、スペクトルの反対側で、ファイルが非常にランダムに見えるように慎重に選択された場合(たとえば、高度に圧縮され、典型的なヘッダーとメタデータが取り除かれた場合)、実際に各パスワードを検証することは恣意的に難しい場合があります。

6
nealmcb