素数が君を守る!

なるほど・ザ・すうがく
〜素数と暗号通信の話〜

(1)インターネットは盗聴に弱い

 パソコンや携帯電話の発達で、世界中とメールや情報のやり取りがきる時代になった。
そのおかけで、自宅に居ながらにして、買い物もできる。

けれど、インターネットは盗聴に弱いということをご存じだろうか?

インターネットって、あちこちに設置されたサーバー機を通信回線でつなぎ合わせたようなもの。あるサーバー機から別のサーバー機にデータを送ろうとすると、その間のいくつかのサーバー機をバケツリレーのようにして送られていくらしい。
たとえば、A社ケータイからB社ケータイへメールを送ろうとすると、直通で送られるのではなく、途中、いくつかのサーバーを経由して送られる・・・というわけだ。

 万が一、途中に悪質なサーバー機が潜んでいたら、そこからデータが流出する!

 したがって、インターネットでやり取りするデータは、常に、悪質な第3者に傍受されているという前提で利用しなければならない。


(2)盗まれても読ませない!

 そこで、たとえ盗まれても絶対に読めないように、データを暗号化するのだ。


@安全に送りたいデータに鍵をかける。(これを暗号化キーという)
Aインターネットで相手に届ける。
B受け取った相手は、データの鍵をあける(これを復号化キーという) 
こうすれば、盗まれても、復号化キーがなければデータを読めない。

(3)初めての相手に鍵を渡すには?

 ところが、例えば、ネットショップで買い物をするとき、ショップと客は初対面であることも多い。

 初めての相手には、まず、暗号化キーを渡さなければならない。

 どうやって渡すのがいいのか?
 もし、インターネットで送ろうとすると、暗号化キー自体が盗まれてしまう。だからと言って、あらかじめ郵便で暗号化キーを送るというのも現実的ではない。暗号化キーが届くまで買い物ができないし、インプットした住所などの個人情報自体が盗聴の危険にさらされる・・・。


(4)素数の積は一瞬なのに!
 そこで素数の登場だ。

 素数とは、2、3、5、7、11、13、・・・などのような、「約数を持たない数」のことである。

 2つの素数を「かける(積)」「もとの2つに戻す(素因数分解)」ということをやってみよう。

  【積を求める】 (例1) 素数47と素数61   ⇒かけると⇒ 2867

          電卓などがあれば、積を求めるのは一瞬である。

  【素因数分解する】 (例2) 積1591  ⇒分解しよう⇒   ? × ?
          電卓があっても、分解はなかなか難しい!

 このように、大きい素数の積は一瞬で求められるが、素因数分解には時間がかかるのである。

 素数の桁数が十分大きくなると
    積は一瞬なのに、素因数分解するには何万年もかかるようになる。

(5)素数が君を守る!
 素数のこのような性質をうまく使って、リベスト、シャミア、エーデルマンの3人が次のような暗号方式を考えた。3人の名前の頭文字をつかってRSA暗号と呼ばれている。

 @ショップ側はあらかじめ2つの大きい素数A,Bを用意し、積A×Bを求める。

 A積A×Bを客に送信する(盗聴されるかもしれないが)


                 B客は積A×Bを使って個人情報などのデータを暗号化する。

                 C客は暗号化したデータをショップ側に送信する。

 Dショップは素数A,Bを使って復号化する。


 この暗号化方式では、鍵をあける(復号化)には、もとの素数A,Bが必要である。もとの素数A,Bはショップ側しか所持していない。万が一、積A×Bを盗聴で入手しても、分解するのに何万年もかかるというのだから、 盗んでも無駄である。

携帯電話でWebにアクセスするとき、このようなRSAのロゴマークが表示されることがある。このとき、素数が仕事している・・・・・・・!

 

inserted by FC2 system