web-dev-qa-db-ja.com

静的IV(AES)の使用を強制

ユーザーの資格情報を256ビットキーのAESを使用して(クエリ文字列で)サプライヤーのWebサイトに通信するようにWebサイトを拡張する必要がありましたが、情報の復号化時に静的IVを使用しています。

IVは静的であってはならず、それを行うことは私たちの標準にはないことをお伝えしましたが、それらが変更すると、[大きな]コストが発生するため、これをセキュリティリスクとして受け入れ、同じIVを使用してください(私の極度の欲求不満の大部分)。

私が知りたかったのは、これはセキュリティの脅威のどれくらいですか?私はこれを経営陣に効果的に伝え、彼らが同意していることを正確に理解できるようにする必要があります。

全体を通して同じKEYも使用しています。

ありがとう

30
Mantorok

連鎖モードに依存します。 AESはブロック暗号であり、16バイトのブロックに(正確に)適用されます。連鎖モードは、入力データがそのようなブロックになる方法と、出力ブロックがどのようにまとめられるかを定義します。ほとんどの連鎖モードは、ある種の「開始値」で動作する必要があります。これは秘密ではありませんが、メッセージごとに変更する必要があります。それがIVです。

CTR連鎖モードを使用する場合、同じIVの再利用は致命的です。 CTRモードでは、連続したカウンター値のシーケンス(IVで始まる)でAESが使用され、結果の暗号化されたブロックのシーケンスが(ビットごとのXORによって)データと結合されて暗号化(または復号化)されます。同じIVを使用すると、同じシーケンスが得られます。これは、悪名高い「2タイムパッド」です。基本的に、2つの暗号化された文字列をXORすることにより、2つのクリアテキストデータのXORを取得します。これにより、多くの攻撃が開かれ、基本的にすべてが壊れます。

CBCを使用すれば、事態はそれほど悲惨ではなくなります。 CBCでは、データ自体が16バイトのブロックに分割されます。ブロックを暗号化する場合、最初に以前のencryptedブロックとXORが実行されます。 IVには「-1」ブロック(最初のブロックの以前の暗号化ブロック)の役割があります。 IVを再利用する主な結果は、2つのメッセージが同じバイトシーケンスで始まる場合、暗号化されたメッセージもいくつかのブロックで同一になることです。これによりデータが漏洩し、いくつかの攻撃の可能性が開かれます。

要約すると、それを行わないでください。同じキーで同じIVを使用すると、IVの目的が完全に無効になります。その理由は、IVを使用した連鎖モードが最初に使用された理由です。

39
Thomas Pornin

すべてのデータに同じIVを使用することは、IVをまったく使用しないことと同じです。暗号文の最初のブロックは、同一の平文でも同じになります。サプライヤが定数IVを使用する理由を知りたいのですが、それは重要ではありません。ポイントは、システムがこのように影響を受けやすいことです。攻撃者が独自の資格情報を設定し、生成された暗号文を観察できる場合、他の暗号化された資格情報と比較して、キーに関する情報を見つけることができます。

8
user185

私は暗号学者ではありませんが、IVが変更されず、同じ値が再暗号化された場合、出力は同じになると私は理解しています。したがって、要求ごとに渡される資格情報など、繰り返される値を探すことでコンテンツを推測することができます。

繰り返しますが、私は暗号の人ではないので、間違っている可能性があります。

2
Steve