人気のゼロ知識ファイル共有サイトでは、暗号化に128ビットのマスターキーを使用しています。
ただし、AES256を使用していると主張しています。質問されたとき、彼らはマスターキーがPBKDF2とランダムソルトを使用して256ビットに拡張されていると説明しました。
これは技術的にはまだAES256と呼ばれますか? 128ビットから256に拡張するこの方法は許容できる方法ですか?
編集:私は彼らのプロセスに関するこれ以上の詳細な情報を持っていません。
AES-256は特定のアルゴリズムであり、キー3e9e98e31ba18d8d18283aceb3c6e17016b729e1363afc5bea8bf7df295b03e9を毎回使用するか、パスワードからPBKDF2を使用してキーを取得するか、コインを256回フリップしてキーを選択するかは同じアルゴリズムです。
したがって、これは矛盾ではありません。しかし、それは彼らのシステムが危険信号でいっぱいでないわけではありません!
AES128とAES256の違いを理解することが重要です。 AESが2倍のサイズのキーを取得するだけではありません。アルゴリズム自体はわずかですが異なります。 AESは基本的にラウンドの数で構成されます。各ラウンドはミニ暗号と考えることができます。平文が十分なラウンドを通過すると、計算を元に戻すことが事実上不可能になります。 AESの場合、各ラウンドは独自の128ビットキーを使用します。 AES128は10ラウンドを使用しますが、AES256は14ラウンドを使用します。 キースケジュールの役割は、単一のキーを多数の異なるラウンドキーに変換することです。これらの2つのバージョンのAESは、異なるサイズの鍵に対応するために異なる鍵スケジュールを使用します。さらに、AES256は、AES128より4つ多いラウンドキーを生成して、追加のラウンドにキーマテリアルを提供する必要があります。
128ビットキーが指定されたAES256(キーが安全なKDFを使用して拡張されるか、ゼロが埋め込まれるか、単純に2回繰り返されるか)は、キースケジュールが256ビットの素材に作用し、14ラウンドあるため、AES128と同一ではありません。つまり、10ではなくはい、それでもAES256と呼ぶことができますですが、キースペースは2です。128 期待される2の代わりに256。これは、総当たり攻撃から保護するにはまだ十分です。
興味深いことに、理論的には、128ビットキーを使用するAES256は、128ビットキーを使用するAES128よりも暗号化分析に対して少し安全です。これらのラウンドは、キースペースをまったく増やしませんが、暗号に対する特定の種類の数学的な攻撃を大幅に難しくします。ありがたいことに、10ラウンドはまだ安全です。
はい、広く受け入れられている実装手法です。 pbkdf2は、従来のブルートフォース攻撃に対してresilientである鍵を作成するために使用される鍵拡張アルゴリズム(鍵導出関数)です。これは、最初に提供されたキーに対してMACまたはハッシュ関数を繰り返し計算して、longer、より復元力のあるキーを導出することによって機能します。これはslow-by-designアルゴリズムでもあり、攻撃者がキースペース全体をブルートフォースでブルートフォースにしようとするために必要な計算リソースを増やし、暗号化されたデータが盗まれる影響を制限します。
それはより短い長さのキーを取り、ゆっくりはそれをより大きなキーに拡張します。これは期間を長くする攻撃者がキーを破る必要があります。このキーは、AES暗号化に使用されます。つまり、彼らは、AES-256とpbkdf2を使用して、鍵の拡張を行っています。
追加したいことの1つは、攻撃者の観点から、pbkdf2が使用されていることを知らなければ、キーデータを回復する可能性がはるかに低くなることです。キーパスフレーズの試行に対してpbkdf2を計算することができないため、256ビットのそれぞれを明確にターゲットにする必要があります。 彼らは、pbkdf2が使用されていることを知っていた場合と同じように、単に単語リストを起動することはできません。
知識ゼロという彼らの主張について、そしてその証拠がどこにあるかについて私はもっと考慮されるだろうが。しかし、これはあなたの質問に答えるのに役立ちますか?
AES-256仕様(ラウンド数など)に準拠している場合は、AES-256です。
128ビットのキーを取得し、SHA-256で実行して256ビットを取得し、それをAES-256キーとして使用しても、それでもAES-256です。このようなものはAES-256のセキュリティを提供しませんが、それはAES-256です。
ランダムなソルトを生成し、KDFを使用して256ビットのキーを生成する場合、Steffen Ullrichがコメントで書いたように、128ビット+ソルトのサイズ(ビット単位)のセキュリティが得られます。
練習です。たとえば、WPA2はこの種のアプローチを使用します。特定の例でセキュリティを向上させるかどうかは、より微妙な問題です。
AES-128と128ビットのキーをベースラインとして始めましょう。これは明らかな解決策です。現時点では、AES-128は壊れにくいです。しかし、おそらくこれは将来は真実ではないかもしれないと心配している。 AES-256は将来の証明を提供します(または少なくとも将来の証明を提供するようです...悪魔は詳細にあります)。
したがって、AES-256にアップグレードして、256ビットのキーを使用できます。これも明らかな解決策です。他の回答で他の人が言及した特典のすべてが得られます。しかし、256ビットのキーを使用できない理由がある場合はどうなるでしょうか。 256ビットのキーを使用できない理由を推測することはできません。しかし、議論のために、実際には256ビットのマスターキーを使用できない理由があると仮定しましょう。 128ビットのマスターキーを使用する必要があります。下位互換性の問題があるか、CEOが12月8日に生まれたのかもしれません。何らかの理由で、このように制限されていることに気づきます。
128ビットのキーを一連のゼロ(またはその他の既知の値)と連結して、256ビットのキーを取得できます。これにより、AES-256の多くの利点(追加のラウンドなど)が得られますが、ブルートフォースには128ビットのエントロピーしかありません。現在、ほとんどの用途で「十分なエントロピー」ですが、256ではありません。
現在、AESは高速になるように設計されています。とても早い。そしてエネルギー効率も。これらはすべて暗号アルゴリズムにとって素晴らしいことですが、攻撃者にとっても素晴らしいことです。攻撃者は、キー拡張が単にゼロを連結していることを知っていれば、それを直接攻撃することができ、高速になるように設計されたアルゴリズムを攻撃することができます。
PBKDF2と入力します。これは、最初から低速で実行されるように設計されたアルゴリズムです。どのくらい遅い?かなり遅い。内部アルゴリズムの反復回数を変更することで、必要な速度を選択します。たとえば、WPA2は4096回繰り返すことを選択します。
PBKDF2 を使用してキーを128ビットから256ビットに拡張し、AES-256を使用する場合、ゼロを連結した場合よりも状況は良好です。エントロピーはまだ128ビットしかありません。しかし、もし彼らが128ビットのみの問題である問題を解きたければ、AESよりもはるかに遅いPBKDF2を通過する必要があります。あなたは彼らがどの反復カウントを選んだのかわからないので、どれほど遅く計算することはできませんが、理論的には彼らはそれを非常に遅くすることを意図してカウントを選びました。
一方、データは256ビットのAES-256キーでエンコードされます。この256ビットの鍵には、256ビットのエントロピーはありません。 128しかありません。入力したものしか取得できません。ただし、256ビットのキーです。そして重要なのは、どれを決定するのが難しいか2128 キーはPBKDF2からの可能な出力です(既知のパラメーター(ソルトを含む))。したがって、理論的には、攻撃が早いAES暗号化を攻撃したい場合は、256ビットのキースペースで行う必要があります。小さい128ビットのキースペースを攻撃する場合は、低速のPBKDF2を使用する必要があります。
したがって、理論的には、AES-128を使用したり、単純なキー拡張アルゴリズムでAES-256を使用したりするよりも、このアプローチを使用する方が安全です。ただし、詳細には悪魔がです。このようなアルゴリズムの階層化を開始すると、それらが提供するセキュリティを精神的に追加することはできません。実際に攻撃面を2倍にします。 AESに問題がある場合またはPBKDF2に問題がある場合、システムが壊れる可能性があります。しかし、総当たり攻撃に対しては、これは非常に強力です。
最後の警告は、この会社が行った奇妙な選択を思い出させるものです。 256ビットのマスターキーがないのはなぜですか?もしそうなら、これはすべて非常に簡単になります。 128ビットのマスターキーが必要だったため、複雑になりました。場合によっては、このパターンが理にかなっています。 WPA2の場合、PBKDF2を使用してこのようにAESにフィードすることは、セキュリティをほとんど知らず、256ビットのエントロピーでパスワードを生成するのが難しい平均的なユーザーによって生成されるため、理にかなっています。詳細が提供されていないため、代わりに256ビットのパスワードを生成できなかった理由は不明です。しかし、おそらく、より詳細に説明すれば、彼らのパターンがなぜ理にかなっているのかという議論が生まれるかもしれません。少なくとも1つのドメイン、WiFiでそれが理にかなっているという証拠があります。