暗号化は、不特定多数が繋がるインターネット上の通信において、
ログイン時のパスワード入力などのやり取りを安全に行うために必要な技術です。
暗号通信を行う際には、
通信相手と自分の間で暗号の決め事(鍵)を用意することが重要です。
これがないと、暗号化したり、それを読み解いたり(復号化)することできません。
ところが、共通鍵暗号のように、
鍵が暗号化と復号化のどちらにも使われる場合、
その鍵を見た人が全員暗号を復号化できてしまいます。
そうなると、どうやって、誰にも見られずに、
通信相手とだけ鍵を共有するのかが難しい問題となります。
その問題を解決してくれるのが公開鍵暗号と呼ばれる暗号です。
この記事では、この公開鍵暗号についてまとめていきます。
公開鍵暗号とは
公開鍵暗号とは、その名前の通り、
公開してもいい鍵を持っている暗号です。
身近な例で、暗号の鍵というと、「たぬき」の"た"の文字のように、
せたいたかたい たぬき
暗号文を作るときにも利用し、
暗号文を解読するときにも利用します。
ところが、暗号化の鍵と、復号化の鍵が異なっているとどうでしょう。
暗号化の鍵を持っているだけでは、暗号化はできるけど復号化ができません。
つまり、暗号化の鍵を持っていても、暗号文の解読はできないのです。
そのため、この暗号化の鍵は誰が持っていたとしても、
暗号文の秘密は守られます。
暗号化の鍵は公開していい鍵になります。
この鍵は、公開鍵と呼ばれます。
メッセージを受け取りたい人は、公開鍵をみんなに知らせます。
そして、メッセージを送る人が公開鍵を使って暗号化します。
暗号文を受け取ると、公開鍵とは別の解読用の鍵(秘密鍵)を使って復号化します。
他の人は、公開鍵しか持っていないので、解読することができません。

このように、暗号化と復号化の鍵を分けることで、
内密に鍵を共有する必要がなくなり、
単純に、みんなに暗号化の鍵を知らせることで、
暗号化通信ができることが公開鍵暗号の特徴です。
公開鍵と秘密鍵
それでは公開鍵と秘密鍵とはどのようなものでしょうか。
公開鍵で暗号化した文章と、
秘密鍵で復号化して元の文章に戻るので、
公開鍵と秘密鍵は全く無関係というわけにはいきません。
公開鍵と秘密鍵には何らかの関係性が存在します。
ここで注意しないといけないのは、
この関係を使って、公開鍵から秘密鍵を簡単に推測できてはいけないということです。
公開鍵は皆に公開されるものなので、
もし、公開鍵から秘密鍵を推測できてしまうと、
誰でも暗号文の解読ができてしまい、暗号の意味を成さなくなります。
そこで、公開鍵と秘密鍵は共通した要素を持ちつつも、
公開鍵側にはその共通の要素が何であるかが分からないように、
逆算の難しい処理を加えることが一般的です。
公開鍵暗号として有名なRSA暗号では、
共通の要素として、素数を、
公開鍵としては、その素数の積を用いることで、
その逆算、つまり素因数分解が難しいことを利用して、
公開鍵から暗号鍵が推測されないようにしています。