共通鍵暗号方式に使われる排他的論理和の性質
目次
今回は共通鍵暗号方式に使われている排他的論理和の特徴についてまとめました。
はじめに #
こんにちは、IKです。
自分が学んだことを文書として記録しておこうと考え、記述します。
今回は共通鍵暗号方式に使われている排他的論理和の特徴についてまとめました。
共通鍵暗号方式とは #
まず、簡単に共通鍵暗号方式とは何なのかについて
共通鍵暗号法方式とは、暗号化と復号化に同じ鍵を用いる暗号方式です。
現実世界の鍵と同じです。
そして、この暗号化、復号化に使われる鍵には排他的論理和が大きく関わっています。
では、次に排他的論理和とは何なのかについて書いていきたいと思います。
排他的論理和とは #
排他的論理和とは、「2つの入力のどちらか片方が真でもう片方が偽の時には結果が真となり、両方とも真あるいは両方とも偽の時は偽となる演算」とWikipediaには書かれています。
文字にするとややこしいので式にしてみました。
(排他的論理和は xor や ⊕ で表現されます)
- 演算規則
0 ⊕ 0 = 0
0 ⊕ 1 = 1
1 ⊕ 0 = 1
1 ⊕ 1 = 0
基本的にはこの4つの式で排他的論理和は表現されます。
では、次に共通鍵暗号方式に使われている排他的論理和の性質をまとめます。
排他的論理和の性質 #
排他的論理和には重要な性質が3つあります。
性質①(同じものを計算すると0になる)
a ⊕ a = 0
性質②(0を計算しても変化しない)
a ⊕ 0 = a
性質③(値は入れ替えることができる)
a ⊕ b = b ⊕ a
この3つの性質を利用して共通鍵暗号方式は成り立っています。
では、実際にどのようにこの性質が使われているか見てみましょう。
共通鍵暗号方式での排他的論理和の使われ方 #
では、簡単に共通鍵暗号方式にどのように排他的論理和が使われているのかを見てましょう。
※実際はもっと複雑に暗号化されますが、上記の3つの性質を軸としています。
AさんからBさんへ暗号化通信を行うと仮定します。 まず、それぞれの値を二進数で表します。
送信したい平文 :
1010
AさんBさんが保有している共通鍵 :
0011
実際に暗号化して送信 #
では、実際に暗号化して送信してみましょう。
- まず、Aさんが共通鍵で平文を暗号化します。
1010 ⊕ 0011 = 1001
- Aさんが作成した暗号文
1001
をBさんに送信します。 - Bさんが暗号文
1001
を共通鍵で復号化します。
1001 ⊕ 0011 = 1010
- BさんはAさんが送信した平文
1010
を得ることができました。
この流れを一つの式へ #
この流れを一つの式にしてみましょう。
1010 ⊕ ( 0011 ⊕ 0011 ) = 1010
上記の性質①(同じもの計算すると0になる)から 0011 ⊕ 0011
は0
となります。
0011 ⊕ 0011 = 0000
そして、上記の性質②(0を計算しても変化しない)から平文に0
を計算しても平文から変化しません。
1010 ⊕ 0000 = 1010
このようにして、共通鍵暗号方式は暗号化と復号化を行っております。
実際のAESなどはもっと複雑な工程を経て暗号化されますが、軸となる技術はこの排他的論理和の性質を利用しています。
終わりに #
共通鍵暗号方式に利用される排他的論理和の性質について書きました。
備忘録としてこの文書を残しますが、誰かの学びの糧となれば幸いです。
最後までお読みいただきありがとうございました。