実はインターネットの仕組みは、外で遠くにいる人と大きな声で会話をしているのと同じ状態なのです。当然、大きな声で会話しているのですから他の人がその会話を聞こうと思えば聞こえてしまうのです。
「パケット盗聴」と呼ばれるソフトがあり、それを使うと実は、丸聞こえなのです。また、そのソフトは無料で配られています。
そんな場所で、こんな内容を通信したら、どうなりますか?
どんな状況になるかは想像に足りますね。
では、そんな丸聞こえな環境で上の内容を聞いた事もない国の言葉で会話したらどうでしょう。周囲の人には理解できないため会話している相手以外には内容が伝わりません。
細かく言うと少し違うのですが、そんな方法で秘密情報を理解できない暗号にしてインターネット上を通信しているのがSSLと呼ばれる方式です。
ブラウザのURLアドレスを見ていると日頃のhttpではなく、httpsで始まるURLに切り替わる時があります。この時、SSL通信を行っているのです。
上記の話からすると聞いた事もない国の言葉で会話をしなければならないのですから当然、通訳がいなければなりません。
聞いた事もない国の言葉に通訳する事を暗号化。
また、その言葉の通訳は、鍵と呼ばれます。
SSLは通信内容を暗号化します。通信相手にだけしか解読できない暗号にして通信を行います。暗号化する鍵と呼ばれるものが必要になります。その鍵によって秘密にしたい内容を暗号化し相手に送ります。相手は受け取った暗号文を、暗号化された鍵と同じ鍵で元に戻します。元に戻す事を複合化すると言います。また、この鍵は、共通鍵と呼ばれています。
共通鍵は通信相手としか解読できない様になっています。つまり、共通鍵を持っているのは、通信している自分と相手のみです。当然、他の人が持っていては、暗号化している意味がありません。
その共通鍵は、通信が始まる時に通信相手に渡されます。普通に渡したのでは他の人も鍵を受け取ってしまう可能性があります。
そこで、公開鍵暗号方式と呼ばれる方法で共通鍵を受け渡します。
公開鍵暗号化方式では、下記の様な仕組みを使用します。
公開鍵と秘密鍵の2つの鍵を用意します。
秘密鍵から公開鍵を作る事が出来ますが、公開鍵から秘密鍵を作る事は困難です。
公開鍵で締めた箱は、秘密鍵でしか開けられません。
この仕組みを使うと以下の様な事が行えます。
この方法で共通鍵をサーバに渡し、(上図プロセスで箱に共通鍵を入れて渡します。)その後の通信は、共通鍵で暗号化され通信が行われます。