では、公開鍵暗号を紹介していきます。

さて、この暗号はコンピューター上で使われている暗号で、暗号化と復号が違う鍵によって行われるものを言います。
秘密鍵暗号での「相手とを安全に共有しなければならない」という問題点を解決する方法として、ディンフィーとヘルマンが1976年に鍵を公開するという方法を発表した。

もちろん秘密鍵(共通鍵)を公開する訳にはいかない。そこで、公開鍵と秘密鍵という二つの鍵で成り立つ暗号にし、公開鍵を公開するという方法が考えられた。

下の図のようなイメージである。














このように公開鍵で暗号化した暗号文は秘密鍵でしか復号できなくなっている。
そうすることにより、公開鍵と暗号文が傍受されても復号することはできなくなる。

この暗号はデジタル署名などに使われている。

しかし、処理が秘密鍵暗号と比べて非常に遅いため、場合によって秘密鍵暗号と使い分ける状態である。

さて、これだけでは「どうやって非対称アルゴリズム」を作るのか分からないと思う。
例えば最初にできた公開鍵暗号「RSA暗号」は、「素因数分解」(素数×素数×…の形にすること)と「素数」を使って作られている。
例えば、「323を素因数分解しろ」と言われたらすぐにできるでしょうか?
できないと思う。
しかし、コンピューターを使えば総当たりですぐに出てくる。(ちなみに17×19が答え)
ただ、素数×素数は簡単なのに、素因数分解はそれに比べると非常に難しい
それも桁が100、200と増えるにつれ、それが難しくなってくる。

これを鍵に使うのである。
さっきの例で言う「323」が公開鍵に、17,19が秘密鍵になるのである。

しかし、323で暗号化したものがなぜ17,19で復号できるのか?
それはmod(モジュル)と呼ばれる余りが答えになる計算を使うからだそうだ。

中途半端ではあるがmodから先は僕も理解ができていないので割略させてもらう。



(「現代暗号」岡本竜明、山本博資著 参考)