web-dev-qa-db-ja.com

パスワードで保護されたZip 2.0ファイルにファイルを追加することは可能ですか?

Zip 2アーカイブを使用する本番システムのマスターパスワードを決定/回復する機能がありません。ただし、既存の暗号化されたアーカイブに新しいファイルを追加できるようにする必要があります。既知のプレーンテキスト攻撃でZip 2.0暗号化を「解読」できるさまざまなツールがあり、コンテンツの復元が可能です。ただし、コンテンツの復元には興味がありません。

これらのツールは Zip 2.0 appnote (ほぼ最後までスクロール)に従ってキーの0-2(4バイトのキーの3つ組)を回復するため、理論的にはこれらのツール(または暗号化されたZip 2.0アーカイブを書き込むことができる変更されたオープンソースZipユーティリティ)、既知の復号化キートリプレットでキーセットを初期化し、12バイトの「ランダム」を生成し、これらの値を使用して既存のアーカイブにファイルを追加しますか?

簡単に言えば、バックエンドシステムが読み取ることができるバックアップファイルに06_14.dat07_14.dat08_14.datなどを追加することです。

暗号化されていないファイルを追加するだけでは不十分であることに注意してください-システムは暗号化/復号化キーにハードウェアトークンを使用します(そのため、復元できない可能性があります)。また、ロジックを使用して各ファイルを個別に復号化しようとします:1)リストアーカイブ; 2)上記の名前でソートします。最初の2桁は01〜12の月を表し、次の2桁は1997〜2014の年を表します。 3)次に、最新のファイルを最初に抽出しようとします-最初の復号化の失敗時に保釈します。復号化/解凍する現在のファイルが##_##.dat署名と一致していても暗号化されていない場合は、保釈されます。

システムの詳細は必要ないはずですが、この問題が発生した理由は、対称鍵を共有する(そして.datファイルを自動追加する)フロントエンドシステムが時代遅れの別世界に引き継がれたためですハードウェアは、一度誤作動すると機能します。

私は問題の可能な解決策を受け入れるつもりですが、これが実現可能/実用的/などであるかどうかについての活発な議論です。これで十分です-この推論の行が可能と思われる場合は、ソリューションを構築します。

3
Nick

一般的に言えば、あなたは正しいです。キー0、1、2が与えられれば、同じパスワードに対して他のファイルの暗号化された形式を生成することが可能です。この道をたどれば、おそらくPKZIPフォーマットのクリーンなオープンソースの再実装である Info-Zip に興味を持つでしょう。

または、実際のパスワードまたは同等のパスワード(同じキー0、1、2を生成する)を回復することもできます。そのために、 このペーパー 、特にセクション3.6で説明されている攻撃を検討してください。これは、あなたが話すツールによって実装される攻撃です。キー0から2までは、パスワード、または少なくとも一致するパスワードは、徹底的な検索よりも(はるかに)少ないコストで再構築できます。このようなパスワードを取得すると、標準のZipツールを使用してアーカイブを操作できるようになり、多くのトラブルを回避できます。

3
Tom Leek