web-dev-qa-db-ja.com

保護されたZipファイルを多数提供すると、パスワードを取得する可能性が高くなる理由

Fcrackzipで man 彼らは言う:

提供するファイルが多いほど、優れています。

理由を知りたい。パスワードを取得するために使用する方法は何ですか?

1
Hunsu

完全な説明は読む

fcrackzipは、指定された各zipファイルで暗号化されたファイルを検索し、推測を試みますパスワードを検索します。 すべてのファイルは同じパスワードで暗号化する必要があります、提供するファイルが多いほど良いです。

コマンドラインオプションを見ると、パスワードを推測する方法がさまざまなモードでわかります。これは基本的に、辞書攻撃か、さまざまなパスワード仕様によるブルートフォーシングのいずれかです。より多くの暗号文を持つことで恩恵を受ける暗号分析の深い魔法はありません。

攻撃者が20個のファイルを持っているとしましょう。彼らは同じパスワードで暗号化されていることを知っていますが、どちらのパスワードかはわかりません。 20個のファイルすべてを一度に渡すと、fcrackzipは最初のファイルのパスワードを推測しようとし、正しいファイルが見つかると、他の19個のファイルすべてに対して同じパスワードを試し、一度にすべてを解読します。しかし、攻撃者が20個のファイルを次々に渡すと、fcrackzipは各ファイルのブルートフォーシングを再開します。

2
Philipp

古いZip形式には、パスワードが正しいか間違っているかをすばやく確認するために、アーカイブエントリごとにチェックバイト(場合によっては2バイト)が含まれています。このチェックバイトは、復号化された「復号化ヘッダー」の最後のバイトに対して検証されます。

PkWareのAPPNOTE.TXTから:

ヘッダーが復号化された後、バッファの最後の1バイトまたは2バイトは、Intelの下位バイト/上位バイトの順序で格納された、復号化されるファイルのCRCの上位ワード/バイトである必要があります。 2.0より前のバージョンのPKZIPは、2バイトのCRCチェックを使用していました。 2.0以降のバージョンでは1バイトのCRCチェックが使用されます。これは、指定されたパスワードが正しいかどうかをテストするために使用できます。

ほとんどのブルートフォースクラッカー(fcrackzipやyazcなど)は、アーカイブ内の各ファイルが同じパスワードを使用して暗号化されているという前提を使用しているため、複数のチェックバイト(各ファイルには1つのチェックバイトがあります)を使用して誤検知をより迅速に排除します。大量のパスワードをテストし、回復の速度を大幅に低下させると、誤検知が頻繁に発生します(1/256)(基本的に、少なくとも1つのファイルを復号化して膨張させ、crcをテストして誤検知を特定する必要があります)。

したがって、これが複数のファイルの背後にある理由であり、プロセスを高速化するための単なる仮定です。

注:元のfcrackzipの場合、各誤検知は、実際に 'unzip'コマンドを呼び出し、コマンドの出力をテストすることによってテストされました(これは非常に遅いです)。

2
bookmarc