アプリ版:「スタンプのみでお礼する」機能のリリースについて

CTR(カウンター)モードを使って同じノンスで暗号化したという条件のもとで
暗号文C1,暗号文C2、それと暗号文C1のもととなる平文P1がある場合、
暗号文C2の元となる平文P2をもとめることはできるのでしょうか?
できるとしたらどのようにすればよいのでしょうか?

例をあげて説明して頂けたらありがたいです。

よろしくお願いします。

A 回答 (1件)

> 暗号文C2の元となる平文P2をもとめることはできるのでしょうか?



はい、nonceが同じ場合、求めることができてしまいます。nonceは、その名の通り (number used once)、二度と同じものを使用してはいけません。

> できるとしたらどのようにすればよいのでしょうか?

ビット毎の排他的論理和(XOR)を×とすると、C1とC2のnonceが同じだと
 P2 = C2×(C1×P1)
で求めることができます。

【証明】

平文Pn、暗号文Cn、カウンタRnのi番目のブロックをPn_i, Cn_i, R1_i とし、鍵kによる暗号関数を Ek(・) とすると、CTRモードの暗号は、以下のように表せる。

C1_i = Ek(R1_i)×P1_i ... (1)
C2_i = Ek(R2_i)×P2_i ... (2)

任意のx,yについて (x×y)×x = y、(x×y)×y = x であることから、(1)(2)を変形し、

Ek(R1_i) = C1_i × P1_i ... (3)
P2_i = C2_i×Ek(R2_i) ... (4)

さて、nonceが同じなので、すべてのブロックiについて R1_i = R2_i であり、Ek(R1_i) = Ek(R2_i) なので、(3)から、

Ek(R2_i) = C1_i × P1_i ... (5)

(5)を(4) に代入して以下を得る。

P2_i = C2_i×(C1_i × P1_i) ■
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!