web-dev-qa-db-ja.com

パスワードで保護された7zアーカイブを適切に安全にすることはできますか?

thisthis の質問と回答を読んだ後、最後の質問から、zipは安全ではなくデータを共有する方法として安全ではないと考えられたという全体的な印象を残しました。

パスワードで保護された圧縮ファイルを安全にすることができると私はまだ思います。だからこれでこれをまっすぐにしましょう

特定のシナリオ

  • Linuxマシンで7zコマンドのバージョン9以降を使用しています。 Zipではありません。 rarではありません。
  • 私が間違っている場合は修正してください。ただし、アーカイブ形式が.Zipまたは.7zになるかどうかに関係なく、パスワード保護されている場合、7zはデフォルトでAES-256を使用します。
  • 自己解凍ファイルarchive.exeをディレクトリdir1から作成し、すべてのファイル名の内容と名前、およびすべてのヘッダーを暗号化したいので、

    7z a -mhe=on -psecretpassword -sfx archive.exe dir1

  • 使用されたパスワードは非常に強力でした、十分なエントロピーを想定してください
  • ファイルの目的の受信者とパスワードを安全に共有しました。あなただけがパスワードを知っています
  • また、アーカイブのSHA1ハッシュを安全に共有します
  • このファイルをダウンロードできるようにします

私はそう言います

  • ユーザーは、パスワードを知っていれば、プログラムがなくてもWindowsマシンでもこのアーカイブを抽出できます。
  • 暗号化されたディレクトリdir1にあるファイルの名前は、パスワードがわからない場合は読み取れません
  • ファイル名とヘッダーも暗号化されているため、アーカイブはファイル置換で改ざんできません
  • ダウンロード後にSHA1を確認した場合、なんらかのテンパリングが発生します。
  • ファイル名と内容の機密性の観点から、これはディレクトリを何か(Zip、rar、tar.gz)で圧縮してopenssl aes-256-cbcを適用するのと同じくらい安全です
  • 自己解凍は脆弱性を追加しません。その場合、-sfxを削除するか-t7zに変更するだけで修正されますが、この場合、解凍するために7-Zipが必要になります。

正しいかどうか?

4
Strapakowsky

質問:自己解凍型アーカイブは、AESの完全な実装で暗号化されていますか?アーカイブの暗号化ハッシュとキーが送信された場合、盗聴者またはアクティブな中間者に対して十分なエントロピーを持つキーを使用して暗号化されていますか?安全であると想定されている別のチャネル?

はい。

ただし、これらの仮定の一部は現実の世界では適用されない場合があります。

最初の仮定を検討すると、ほぼ1年前からこのフォーラムに関連する質問があります: https://stackoverflow.com/questions/12470378/how-key-derivation-and-key-verification-functions-are-実装済みの7-Zip-arc

そこでの議論によると、7zは強力なパスワードベースのキー導出関数とCBCモードのAESを使用します(これは問題ありません。これは、復号化が試行される前にアーカイブのSHA1ハッシュが検証されると想定しているため、Oracleのパディングが停止するためです。攻撃)。

ただし、前述の説明では、ドキュメントの欠如と7zでの読みにくいコードも強調されています。 7zで実行される実質的な暗号解読については知りません。したがって、それを使用することで、最終的にはすべての暗号化実装が正しくなるように開発者に信頼を置くことになります。

6
  • ファイル名とヘッダーも暗号化されているため、アーカイブはファイル置換で改ざんできません
  • 自己解凍は脆弱性を追加しません

これは誤りです。予想されるユースケースが自己解凍型アーカイブの実行によるものである場合、.exeファイルを改ざんできる攻撃者は自己解凍コードを変更して、解凍されたファイルを自分が望む方法で変更する可能性があります。 (もちろん、パスワードの記録やバックドアのインストールなど、彼はさらに多くのことを行うこともできます)

したがって、改ざんがリモートでさえ可能な状況にある場合、自己解凍アーカイブは非常に悪い考えです。

3
Guest