DES (またはトリプル DES) を使用して一部のデータを暗号化する必要があるとします。使用される IV が 8 バイトで、「0」に設定されている場合 (つまり、IV は定数バイト [] で、すべて 0x00 に設定されています)、大丈夫ですか? それともそもそもIVを使わないのと同じですか?
1 に答える
ダメです。ハードコーディングされた IV は、同じ平文が常に同じ暗号文に暗号化されることを意味します。それはまさにIVが防ぐことを意図しているものです. IV をまったく許可するモードを使用する場合、IV をランダムに生成し、暗号化するプレーン テキストのすべてのブロックの暗号化に使用し、暗号化されていない IV を暗号文の先頭に追加することをお勧めします。 .
多くの人は、「攻撃者は IV を見ないのではないか」と心配しています。答えはイエスですが、それは問題ではありません。秘密にする必要があるのは鍵だけです。暗号化のセキュリティを劇的に強化するために、IV を秘密にする必要はありません。ただし、ランダムである必要があります。
これはアクティブな攻撃者を阻止するには不十分であることに注意してください。しかし、受動的な盗聴者を阻止するには十分です。
編集: OK、攻撃を思い出す限り、これがアクティブな攻撃者を止められない理由を説明します。この説明では、一般的に使用されている暗号ブロック連鎖 (CBC) について考えます。この説明を他のモードに当てはめる必要があります。したがって、暗号化ブロック チェーンは、メッセージの最初のブロックを IV で XOR し、ECB モードで行われるようにそのブロックを暗号化します。その暗号化の出力は暗号テキスト ブロック 1 ですが、ブロックが暗号化される前にメッセージ ブロック 2 と XOR されます。その出力は、その後のブロックと最後まで XOR されます。
復号化するには、ECB モードの場合と同様に暗号文の最初のブロックを復号化し、暗号化で使用したのと同じ IV で XOR します。これにより、合計で暗号化と復号化が行われ、IV で XOR が 2 回行われ、これら 2 つの XOR が互いに相殺されるため、プレーン テキストが生成されます。次に、暗号文ブロック 1 (プレーン テキストではありません) を取得し、ブロック 2 を復号化した後、この前の暗号文ブロックで出力を XOR します。
以上で、CBC のしくみを簡単に確認できました。暗号化テキストから任意のブロックのメッセージへの往復メッセージは、XOR-Encrypt-Decrypt-XOR であり、2 つの XOR が互いに相殺されます。それでは、これを非常に単純にして、多額のお金が口座に振り込まれようとしている非常にばかげた例を想像してみましょう。口座番号以外のすべての詳細が整理され、現在要求されています。
たとえば、アリスがそのアカウント番号をボブに送信するとします。詳細の中で説明の要点を見失わないように、アカウント番号は正確に 10 進数で 10 桁の長さであり、したがって数バイトの AES の単一ブロックに収まると想像してください。余裕のあるパディング。彼女は送金先の口座番号を暗号化します: 1234567890、暗号化の出力を IV で XOR し、IV と暗号化された口座番号を処理のために銀行のボブに送信します。
ただし、Eve は Alice と Bob の間でルーターを操作しています。アリスが口座 1234567890 に電信送金することを計画していることを彼女が知っていて、これが暗号化されたブロックの内容であると知識に基づいて推測すると、彼女は電信を盗むことができます。
これを行うために、彼女は元の IV を取得し、それを 1234567890 で XOR します。次に、結果を自分の口座番号 4564564560 で XOR します。元の IV をこの最終出力に置き換え、暗号テキスト ブロックをそのままにして、ボブに転送します。 . ボブはブロックを解読し、元の暗号テキスト ブロックで得たものとまったく同じものを取得します。彼が IV で XOR した場合を除いて、彼はプレーンテキストとしてパディングを使用して 1234567890 を取得しません。彼は 4564564560 を受け取ります。彼は、受け取った指示 (ただし、アリスが送信した指示ではありません) に従って、イブに送金します。
これと同じ改ざんは、攻撃者が受信者側で文字化けしたプレーン テキストを受け入れられると見なす限り、長いメッセージでも可能です。ここでは理由を説明しませんが、考えてみれば明らかなはずですが、元のプレーン テキストを正しく推測でき、ブロック X-1 の復号化に問題がない限り、ブロック X を好きなように復号化できます。ランダムノイズに。
MAC の使用 (SSL、TLS、IPSec などのよく知られているプロトコルの一部と同様) は、この攻撃に対する生の CBC の脆弱性を補強する 1 つの方法です。正当な理由がない限り、これらのプロトコルのいずれかを使用することをお勧めします。