web-dev-qa-db-ja.com

Zip暗号化パスワードは、解読に10年かかりますか?

使っています Zip 3.0.0 macOS High SierraおよびDebian。これがmacOSでの私のZipバージョンです:

$ Zip --version | head
Copyright (c) 1990-2008 Info-Zip - Type 'Zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008), by Info-Zip.
Currently maintained by E. Gordon.  Please send bug reports to
the authors using the web page at www.info-Zip.org; see README for details.

Latest sources and executables are at ftp://ftp.info-Zip.org/pub/infozip,
as of above date; see http://www.info-Zip.org/ for other sites.

Compiled with gcc 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14) for Unix (Mac OS X) on Feb 22 2019.

これがUbuntuのものです:

$ Zip --version | head
Copyright (c) 1990-2008 Info-Zip - Type 'Zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008), by Info-Zip.
Currently maintained by E. Gordon.  Please send bug reports to
the authors using the web page at www.info-Zip.org; see README for details.

Latest sources and executables are at ftp://ftp.info-Zip.org/pub/infozip,
as of above date; see http://www.info-Zip.org/ for other sites.

Compiled with gcc 6.3.0 20170221 for Unix (Linux ELF).

私は https://security.stackexchange.com/a/186132/108239 でこの回答を読みました。暗号化にZipを使用しないことをお勧めします。

しかし、私がいる環境では、技術者以外のユーザーにファイルを安全に送信する必要があります。ここに私の制約があります:

  • 受信者に任意の長いパスワードを送信することは許可されています。
  • Zipファイル(暗号化または非暗号化)を送信できます。
  • 私は受信者に追加のソフトウェアをインストールするよう依頼することは許可されていません。
  • 私はファイルの内容の機密性のみを気にします。
  • 私はしないファイル名またはファイルのメタデータの機密性を気にしません。
  • 私はしない整合性または否認防止を気にしません。

これらの制約を考えると、これまでのところ、この方法でファイルを送信してきました。

Zip -e secret.Zip secret.txt

80文字のランダムに生成された英数字(A-Za-z0-9)シークレットファイルを暗号化するためのパスワード。 Zipユーティリティはパスワードを受け付けなくなりました。そうしようとすると、(line too long--try again)エラー。

これは、次の暗号方式を使用します。

$ 7z l -slt secret.Zip | grep Method
Method = ZipCrypto Deflate

私の質問:

  • 80文字の長さのランダムに生成された英数字のパスワードは、Zipユーティリティの弱い暗号技術を補うのに十分強力ですか?
  • Zipユーティリティで使用するためにパスワードを十分に安全にするために必要な最小エントロピーは何ですか? 「十分に安全」を定義するには、たとえば、Zipファイルのクラックには現在の計算能力で10年程度かかるはずです(単純化のために、今のところ計算能力の増加は無視してください)。
10
Lone Learner

暗号化にZipCryptoを使用している場合、パスワードの長さは安全ではありません。

より安全なAESではなく、ZipCrypto暗号を使用しています。 ZipCryptoは、内部的に [〜#〜] crc [〜#〜] と呼ばれる非暗号化構造に基づいているため、非常に脆弱です。これは、既知のプレーンテキスト攻撃に対して非常に脆弱です。実際には、Zipファイルの内容を正確に知る必要はなく、ごく一部です。これは通常、一般に知られているファイルのヘッダーを使用することで満たすことができます。

90年代に発見された攻撃の詳細は PKZIPストリーム暗号に対する既知の平文攻撃 に記載されています。 13バイトの既知の平文により、2の複雑さで鍵全体を復元できます。38、それは多くありません。実際、パソコンでは数時間しかかかりませんでした。それは90年代のハードウェアでした!攻撃は時間とともに改善するだけであり、ZipCryptoに対する攻撃も例外ではありません。それ以降、ペーパー PKZIP暗号化アルゴリズムに対する既知のプレーンテキスト攻撃の改善 で説明されているように、改善されました。


AESをサポートする新しいZip暗号化形式に切り替えると、ファイルを安全に暗号化し、無期限に機密性を保つことができます。 128ビット以上のセキュリティが必要で、62記号のセット(英数字のパスワード)からパスワードを選択する場合、ログとして 少なくとも22文字 を使用します。2(6222)≈131ビット、明らかに131≥128。あらゆる種類のZip暗号化は整合性を提供しませんが、機密性のみが必要であると指定しました。

8
forest

ランダムに生成された80文字の英数字のパスワードは、Zipユーティリティの弱い暗号技術を補うのに十分強力ですか?

最初に、AES 128以上で暗号化する必要があります。10年間で256を検討したい場合があります(10年間は​​量子化の可能性を省きます)。

申し訳ありませんが、Zipパッケージが古すぎてサポートできない場合。古いアプリには脆弱性が含まれている可能性が高く、いつか悪用される可能性があるため、新しいパッケージを確認することをお勧めします。

長く疑似ランダムなキーを選択することは重要です。できるだけ長く、ランダムに移動します。キーの安全な保管は、10年以上重要です。

Zipユーティリティで使用するのに十分な安全性を確保するためにパスワードで最低限必要なエントロピーは何ですか? 「十分に安全」を定義するには、たとえば、Zipファイルは10年ほど亀裂が入っていない状態にしておく必要があります。

10年とは言い難いが、暗号化アルゴリズム内のさまざまな追加のコンピューティング能力と脆弱性が明らかになる可能性がある。もう一度行き、信頼できる疑似乱数ジェネレータを使用してください。

0
ISMSDEV

これは2つの質問を1つにまとめたものです。 1つは簡単です、1つは難しいです。簡単なものから始めましょう:

暗号化パスワードを10年間安全に保つにはどのくらいの期間が必要ですか?

ランダムな128ビットシークレットは、最速の(ただし脆弱ではない)ハッシュアルゴリズムで保護されていても、クラックされないように十分なエントロピーであることはよく知られています。私がハッシュ化を導入する理由は、パスワードハッシュクラッキングに関する多くの研究、優れたソフトウェア、および多くのベンチマークがあるためです。 Zipファイルの復号化は、基本的に復号化操作を実行し、値が何であるかがわかっているバイトを復号化できるかどうかを確認します。 ( Zip形式の仕様 、または the Python実装 のセクション6.1を参照してください。)上のZipファイルのクラッキングに関する唯一の速度表示GPUは 100億のマーケティングの主張 1秒あたりの試行回数です。これは、セットアップに関する参照や詳細情報のない、いくつかの小さな灰色のテキストで言及されています。これは考慮すべきデータポイントですが、ハッシュアルゴリズムは非常に高速になるように設計されており、いくつかの操作を適用して結果を確認するという点でハッシュはこれに似ています。

たとえば、MD5クラッカーは、適度に高価なハードウェアで 1秒あたり数十億回の試行 に到達できます。 100億のマーケティングの主張ではなく、これを私たちの基礎として使用してみましょう。なぜなら、私たちはそれが何年だったか、彼らが使用した設定がわからないからです。

ムーアの法則が成立し(成立せず)、「18か月ごとにコンピューターの速度が2倍になる」(そうではない)と解釈できると仮定しても、10年後には6.7倍になります。便宜上、常にその速度で実行しているとしましょう。数千億回の速度で実行します26.7なので、毎秒数兆回の試行(50兆回としましょう)。 10年間で3600 * 24 * 365.25 * 10 = 3億1600万秒です。これは50e12 * 316e6 = 16セクシオン(16e21)の推測です...したがって、約73ビットのエントロピー、または可能なキーの0.000000000000005%を確認します(log(16e21)/ log(2)は〜73であり、16e21/2であるため)128* 100は上記の割合です)。

危険を冒してプレイしたい場合は、約80ビットのエントロピーを含むパスワードを使用することができ、攻撃者がパスワードを解読する可能性はわずかです(無視できないほどです)。より現実的には、暗号化アルゴリズムが弱体化している場合にも、ある程度の誤差が必要です。 128ビットのエントロピーを使用することをお勧めします。これはまた、EUの研究プロジェクトが結論付けたものと一致します。「一般的な長期保護(30年)には、128ビットキーが推奨されます(レベル7)」。 (出典: Wikipediaの私

A-z、A-Z、0-9を使用する場合、パスワードの各位置は26 + 26 + 10 = 62の可能な値を持つことができます。 128ビットに必要な文字数を計算するには、log(10 ^128 *ログ(2))/ log(62)= 21.5文字(log(62 ^ 21.5)/ log(2)= 128であるため)。

回答:22 ランダムに生成された文字。AからZ、aからz、0から9の文字で構成されます例:M89bqltyuPQ0g34Uv2CR6b。あなたが提案したような80文字のパスワードは必要ありません!

今難しい質問:

Zip暗号化は10年間安全ですか?

Zip形式では、さまざまな種類の暗号化がサポートされています。このセクションは、Zipソフトウェアが最近デフォルトでAESを使用し、フォレストが実際にデフォルトで使用していると指摘している古くて壊れたCRCベースの暗号ではないという前提の下で記述しました。

したがって、AESを使用するようにソフトウェアを構成する場合:

これは想定ですが、かなりの時間と精査に耐えてきたようです。いくつかの攻撃が知られていますが、今後10年間で大幅に弱まる可能性は低いと思われます。量子コンピューターは状況を多少変えますが、そのタイムラインがどうなるかは誰にも言えません。次の10年間でまともな量子コンピューター、特に1億ユーロに投資する数十億ユーロがない人が利用できるものは、非常に楽観的に聞こえます。

量子コンピューターが心配な場合は、対称暗号化アルゴリズムと少なくとも 256ビットのハッシュアルゴリズムのみを使用するソフトウェアを使用します(そのため、キーにはそのようなエントロピーが含まれ、ソフトウェアはそれを使用する必要があります)。 AES-256およびSHA-256として。使用する実装によっては、Zipが適格となる場合があります。 仕様 に従って、フォーマットバージョン5.1はAES-256のサポートを追加します。元の暗号化は対称暗号化であり、非対称暗号化のように壊滅的に破壊されることはありませんが、使用するキーが短すぎます。量子コンピューターは対称暗号化とハッシュアルゴリズムを弱めますが、グローバーのアルゴリズムは基本的にビット数を半分にするオーダーであるため、今日の256ビットのエントロピーを含むパスワードは、量子コンピューターの場合と同じくらい強力です。 128ビットのエントロピーを含むパスワード。

(適切なパスワード管理も適用する必要があることに注意してください。パスワードを他の場所で再利用したり、他の人がパスワードを間違えたりすることは避けてください。ただし、パスワードの管理方法はこの回答の範囲外です。)

回答:AESでZipを使用している場合、おそらくそうですが、確実に言うことはできません。

0
Luc