web-dev-qa-db-ja.com

DES-CBC:2つの暗号文ブロックc2とc5が等しい。なぜこれが情報を漏らすのでしょうか?

ここで、CBCモードで暗号化されていることがわかっている暗号文を観察できたとすると、c2およびc5暗号文ブロックを知っていると情報がどのように漏洩するのでしょうか。

私の教授はクラスで私たちに尋ねて、それについて考えるように私たちに言って、私たちが平文ブロックm2の1つを知っていたらどうなるかについて私たちにヒントを与えましたか?

1

これについて考えてみましょう:

Ek =キー「k」を持つ暗号「E」

M#=プレーンテキストメッセージブロック「M」番号「#」

C#=暗号文ブロック「C」番号「#」

CBCモードは次のとおりです。

Cx = Ek(Mx XOR Cx-1)、または英語:現在のブロック番号の暗号文を取得するには、プレーンテキストメッセージブロックを取得して取得した値のキー暗号化を実行します同じ番号の、前の番号の暗号文ブロックに対してそれを排他的論理和します。これがCBCの定義です。

したがって、一連のCBCエンコードブロックがあり、C2とC5が同じ暗号文(つまり、C2 = C5)であることに気付いた場合、次のことがわかります。

C2 = Ek(M2 XOR C1)

C5 = Ek(M5 XOR C4)

そして、C2 = C5なので、それは次のことを意味します。

Ek(M2 XOR C1)= Ek(M5 XOR C4)

数学の力によって、それはあなたがまた知っていることをより重要に意味します:

AHA!:

(M2 XOR M5)=(C1 XOR C4)

暗号文を観察しているので、C2がC5に等しいことを知っているだけでなく、観察でC1とC4もキャプチャしました。

したがって、(C1 XOR C4)を計算すると、値が得られます。つまり、「AHA !!」とマークされた方程式の右辺に変数ではなく、実数があります。

上記のように、その値は(M2 XOR M5))に等しくなります。

したがって、教授が平文M2も知っていると言っているというあなたの仮説の下では、左側にそれを差し込んで解決することができます。

まだ未知のM5に対して既知のM2XORが、C1とC4のXOR)を取ることによって計算した既知の値に等しいことを知っています。

基本に立ち返って。 XORの魔法はこれです:

A XOR B = Cの場合、B XOR C = A、およびA XOR C = B。

ちなみに、3つのディスクを備えたRAIDディスクアレイはこのように機能します。

結果:ブロックの1つに対応する既知のプレーンテキストと組み合わせたCBCの重複した暗号文により、他の一致する暗号文ブロックのプレーンテキストを計算できます。

2
boggart