ものすごく分かりやすい公開鍵暗号方式のしくみ

公開鍵暗号方式

公開鍵暗号方式の仕組みが前々からいまひとつ理解できなかった。

理解できないというよりは、「復号できない公開鍵ってどゆこと?」ってな感じ。

公開鍵暗号方式というのは、情報をセキュアに伝達するための手法で、インターネット上ではあらゆるところで利用されている。ECサイトでクレジットカードの番号を入力したり、銀行の口座番号を入力するようなフォームページでは、全てなにかしらの暗号化プロトコルを利用している。

URLの頭が「https://」になっているところは全部これを使ってるんだって。

で、つい最近「世界でもっとも強力な9のアルゴリズム」(日経BP社)という書籍に出会って、そこに公開鍵暗号方式のものすごく分かりやすい解説があった。

 

問い

AはBに対して超重要機密事項の数字「16」を伝えたい。

ただし、他の何者かに「16」という数字を聞かれてはいけない。AとBは初対面で共通する暗号なども打ち合わせは出来ていない。もちろん、内緒で耳打ちすることなどできない。

Aは、いかにして超重要機密事項「16」をBまで伝えられるだろうか??

 

答え(公開鍵暗号方式の仕組み)

公開鍵暗号方式

  1. Aの秘密鍵を8とする(Aだけの秘密)。
  2. Bの秘密鍵を9とする(Bだけの秘密)。
  3. 公開鍵に2つの数字、除数11と基数2を設定(公開)。
  4. Aは2の8乗、Bは2の9乗を計算し、11で割った余り3と6をお互いに伝える(公開)。
  5. AはBから聞いた6の8乗、BはAから聞いた3の9乗を計算し、11で割った余り4を秘密鍵として認識する。
  6. Aは伝言16に秘密鍵4を足して20を伝える。

 

公開鍵暗号方式の仕組みをシンプルに説明するとこのようになる。

もちろん除数11はもっと大きな数値になるし、基数も除数の原始根である必要があるなど、本来の仕組みはかなり複雑だったりもするけれど、大枠のアルゴリズムはこれで理解したと言ってよいと思う。