暗号技術の基礎と応用
CTRモードで、誤って同じ鍵と同じナンスを使い、2つのメッセージを暗号化した。ある位置のバイトについて、1つ目の平文 P₁ は 01001000(ASCIIの「H」)、その暗号文 C₁ は 01110100、2つ目の暗号文 C₂ は 01010101 である。攻撃者が P₁ を知っているとき、同じ位置の2つ目の平文 P₂ はどれか。
- A00100001
- B00111100
- C01101001
答えと解説を見る
正解:C. 01101001
同じ鍵とナンスでは鍵ストリーム K が同じになるので、C₁ = P₁ ⊕ K、C₂ = P₂ ⊕ K です。まず K = P₁ ⊕ C₁ = 01001000 ⊕ 01110100 = 00111100 が分かり、P₂ = C₂ ⊕ K = 01010101 ⊕ 00111100 = 01101001(ASCIIの「i」)になります。鍵を知らなくても、片方の平文が分かれば、もう片方の平文がそのまま求まります。このため、CTRモードやGCMでは、同じ鍵で同じナンスを二度と使わないことが欠かせない条件です。
- A. 00100001 は C₁ ⊕ C₂ で、P₁ ⊕ P₂ に等しい値です。さらに P₁ とXORすると P₂ が求まります。
- B. 00111100 は P₁ ⊕ C₁ で求めた鍵ストリームです。これを C₂ とXORすると P₂ になります。
- C. 正しい。C₂ ⊕ (P₁ ⊕ C₁) = 01101001 です。