backbar
公開鍵暗号(3)公開鍵暗号

公開鍵暗号は、DiffieとHellmanによって1976年にそのアイデアが提案されました。暗号化するための鍵と、もとの文に戻すための鍵が異なり、その一方を公開しても安全性が保てるような暗号です。

100人のグループで必要な秘密鍵は、公開鍵暗号の仕組みを使わないとき、任意の2人の組について一つずつ、計4950(100×99÷2)必要になります。しかし、公開鍵暗号の方法によれば、各人一つづつの100で済みます。人数が増えていくと、この差はますます大きくなります。秘密にすべき鍵の数が少なくて済むことは、秘密を守るコストを考えるとネットワーク社会において大変な利点といえます。

また、暗号化と復号化が逆変換、つまり秘密鍵で暗号化し公開鍵で復号化できることを使って、送られてきたメッセージが、誰かが別の人の名前を語って送ったものではないことを示すことができます。
AさんからBさんへ、メッセージを送るものとします。AさんもBさんもそれぞれの秘密鍵と公開鍵を持っているものとします。通常AさんはBさんにBさんの公開鍵を使ってメッセージを暗号化して送りますが、そのメッセージが確かにAさんのものからであることを、Bさんに保証したいとします。

まず、メッセージをAさんの秘密鍵で暗号化し、さらにBさんの公開鍵で暗号化します。Bさんは、Bさんの秘密鍵でメッセージを複合化したのち、さらにAさんの公開鍵で復号化します。

Aさんの公開鍵で復号化して一定のメッセージになるような暗号を作ることのできる人は、秘密鍵を知っているAさんだけですから、それがAさんの印です。

すなわち、公開鍵暗号を使えば、メッセージにサインすることも可能になるわけです。

落し戸関数−数学的補足

暗号化の関数fに対して複合化の関数は、逆関数の記号を使えば-1と表わせます。

原理的には、fがわかれば-1は計算可能です。公開鍵暗号を作るために必要なのは、逆関数が実際上容易に計算できない関数です。計算に大変な手間がかかる関数といいかえることもできます。

-1が実際上容易に計算できないような、関数fを、一方通行関数(oneway function)と呼びます。
しかし、いくら解読が難しくとも、復号化にも時間がかかるのでは暗号としては使いものになりません。そこで、あるしかけ(すなわち複合化鍵)があって、しかけなしでは一方通行関数だが、しかけを使えば-1も簡単に計算できて欲しいわけです。

一方通行関数fで、複合化鍵を使って-1が容易に計算できるような、関数fのことを、落し戸関数(trap-door function)と呼びます。

そんな都合のいいことが本当に可能でしょうか?
nextRSAの原理