答え:暗号は「数学的問題」に基づいています

 TLSにも使われている公開鍵暗号では、公開鍵と秘密鍵のペアを作成して使用する。ペアの片方で暗号化したデータは、対となる鍵でしか復号できない。公開鍵と秘密鍵の数学的な関係はわかっているのに、公開鍵からは秘密鍵を求めらない──。このような巧みさを実現できるのは、「公開鍵から秘密鍵を求めることは困難で、秘密鍵と公開鍵を生成するのは容易」という、非常に都合のよい一方向性を備えた数学理論(数学的問題)を基にしているからだ。

 現在使用されている公開鍵暗号は、「素因数分解問題」「離散対数問題」「楕円曲線上の離散対数問題」のいずれかに基づいている(図9)。素因数分解問題は、桁数の大きな合成数を素因数分解する問題だ。RSAなどがこれに基づいている。2つの素数 p 、q を作った人は、その積 n を容易に求められるが、n から p と q それぞれを求めるのは困難である。そのため、 p と q から秘密鍵を作れば公開鍵暗号に利用できる。

図9●公開鍵暗号が基づく数学的問題
図9●公開鍵暗号が基づく数学的問題
いずれの数学的問題も、秘密鍵と公開鍵のペアを作るのは容易だが、公開鍵から秘密鍵を求めるのは非常に困難な「一方向性」を有している。
[画像のクリックで拡大表示]

 図9の式(2)で y 、g 、p が与えられた場合に、整数 x を求めるのが離散対数問題である。整数 x が秘密鍵に対応する。DHやDSAなどが使っている。

▼合成数
素数の積。
▼離散対数問題
図9の式(2)中の「mod」は剰余を表す。
▼DH
Diffie-Hellmanの略。ディッフィー・ヘルマンともいう。
▼DSA
Digital Signature Algorithmの略。