どのような攻撃があるのかを知る。
暗号理論を勉強する上で念頭においておきたいこと。
既存の暗号化ではどのような攻撃があって、それに対してどのような処置を取っているのかというのを知るのが大事。
XORを使って暗号化・復号化
ワンタイムパッド
アリスがメッセージMをボブに送りたいとする。
アリスとボブ二人がなんらかの処置をとって共通の数値Pを手に入れた場合
アリスは$M \oplus P = C$をして、Cをボブに送る。
この時、Cは誰からでも観測できるものとする。
ボブはCを受け取り、
$C\oplus P = M$
の処理をして、Mの内容を知ることができる。
ただし、問題はどのようにしてアリスとボブは共通の数値Pを手に入れたかということ。
Diffie-Hellman(DH)共通鍵交換
アリスは秘密鍵aを持っていて、ボブは秘密鍵bを持っている
二人とも互いの秘密鍵をしらない。
アリスが素数pを生成して、プリミティブルートgを見つける。
プリミティブルートとは、素数pに対して
${1,2,3,4,... p-1} = {g^1, g^2, g^3, .... g^{p-1}}mod\ p$
gの累乗がpまでの整数とおなじ集合をもつ数字のことを言う。
このpとgは公開され、
アリスは$A \equiv g^a(mod\ p)$を計算し、ボブは$B\equiv g^b(mod\ p)$を計算する。
それぞれAとBを公開。
アリスはボブの公開鍵Bを入手して$B^a=K_b(mod\ p)$を算出
ボブはアリスの公開鍵Aを入手して$A^b=K_a(mod\ p)$を算出
これらの共通鍵は$K_a = K_b$のような性質を持っている。
一つ前のワンタイムパッドのようにして使用すればメッセージのやりとりが完全に秘密に行うことができる。
XORの落とし穴
もしも$C_1, C_2$ともに同じ鍵Pを使っていた場合以下が成り立つ
$C_1 \oplus C_2 = M_1 \oplus M_2$
攻撃者は直接メッセージを得ることはできないが、片方のメッセージがわかった場合もう片方も一瞬でわかってしまう。
それこそ、ずっと同じワンタイムパッドを使っていた場合すべてのメッセージが解読されてしまう。