logo

暗号理論における暗号化と復号화 📂整数論

暗号理論における暗号化と復号화

ビルドアップ

20190219_141344.png

アリスボブに伝えたいメッセージがあるとしよう。この世に二人しかいなければ、このメッセージは二人だけのもので、隠す必要はない。[ NOTE: 暗号理論では、アリスとボブはそれぞれAABBを表す名前としてよく用いられる。]20190219_141352.png しかし、第三者のイヴがいるとしよう。イヴは特に悪意があるわけではないが、アリスがボブに伝えたいメッセージに興味がある。一方、アリスは自分が送るメッセージがボブだけに知られたいと願っている。[ NOTE: 暗号理論では、イヴは「盗聴者」を意味するEavesdropperの頭文字を取ってEEとして表され、メッセージを盗み見するだけの受動的攻撃者の役割を持つ。]20190219_141405.png だから、アリスはイヴに知られないようにメッセージを送りたい。これは「暗号理論」のモチーフであり、誰もが共感できるものだ。

アリスがメッセージをボブだけが理解できるように変換することを暗号化とし、ボブが変形されたメッセージを元の形に戻せるようにすることを復号という。また、暗号化される前のメッセージを平文といい、その集合をM\mathcal{M}、暗号化された後のメッセージを暗号文といい、その集合をC\mathcal{C}と表す。暗号化と復号は何らかのルールに基づいて行われるが、第三者がこのルールを知っていても復号できないようにキーを共有する。このようなキーの集合をK\mathcal{K}とするならば、暗号化と復号は以下のように数学的に表現できる。

定義 1

  1. 関数e:K×MCe : \mathcal{K} \times \mathcal{M} \to \mathcal{C}暗号化といい、簡単にek:MCe_{k} : \mathcal{M} \to \mathcal{C}とも表す。
  2. 関数d:K×CMd : \mathcal{K} \times \mathcal{C} \to \mathcal{M}復号といい、簡単にdk:CMd_{k} : \mathcal{C} \to \mathcal{M}とも表す。

ただし、eke_{k}dkd_{k}は互いに逆関数でなければならない。つまり、全てのmMm \in \mathcal{M}に対してdk(ek(m))=md_{k} \left( e_{k} ( m ) \right) = mである必要がある。

しかし、このような対応関係は非常に多く、その中で使い物になる暗号は次の条件を満たさなければならない。

暗号システム(K,M,C,e,d)( \mathcal{K} , \mathcal{M} , \mathcal{C} , e , d )は次の性質を持つ時に有用である。

  • (i): 全てのkKk \in \mathcal{K}mMm \in \mathcal{M}に対してek(m)e_{k} (m)を計算するのが容易でなければならない。
  • (ii): 全てのkKk \in \mathcal{K}cCc \in \mathcal{C}に対してdk(c)d_{k} (c)を計算するのが容易でなければならない。
  • (iii): kkを知らない場合、c1,,cnCc_{1} , \cdots , c_{n} \in \mathcal{C}が与えられてもdk(c1),,dk(cn)d_{k} ( c_{1} ) , \cdots , d_{k} ( c_{n} )を計算するのが困難でなければならない。

説明

要約すると、資格のある人だけが簡単にメッセージを見られ、資格のない人は見られないような暗号システムが有用だ。メッセージを傍受する攻撃者がいなければ最も良いが、仮にいたとしても、その内容を漏らしてはならない。さらに、通信を行う当事者同士でも、暗号化と復号に時間がかかりすぎると、セキュリティが良くても通信の機能性を大きく損なってしまう。


  1. Hoffstein. (2008). An Introduction to Mathematical Cryptography: p37. ↩︎