ウェブのSSL化やメール暗号化など、暗号化を当たり前に要求される事の多いこの頃ですが、そもそも暗号化通信ってどんな仕組みなのでしょうか。 暗号化の仕組みや方式について、解説しています。
SSL/TLSで出来る事
SSL/TLSは暗号化プロトコルで、具体的には、暗号化と署名、認証を行います。これにより、次の事が保証できるようになります。
- 通信内容が誰からも読み取れない事
- 通信内容を改ざんできない事
- 正しい相手と通信している事
通信内容が読み取られたり、改ざんされる事を防ぐため、必要なのは「暗号化」です。また、正しい相手かどうかを確認するのに、必要なのは「署名」です。基本的に、暗号化は次のような通信となります。
- 読み取り可能な文字列「こんにちは」が、解読できない記号「hsieW5ge+osh1aeh」へ暗号化されます。
- 暗号化されたままインターネットを経由して相手に送られます。
- 届いた記号を、相手が、元の文字列「こんにちは」へ復元します。

共通鍵暗号とは?
まず最初の暗号化方式は、共通鍵、つまり、送信者と受信者の両方で、同じ鍵を使って暗号化と複合化を行う方式です。

自宅の鍵と同じですね。例えば、事前に2人で同じ鍵を所有しておくことができていれば、ファイルを安全にやり取りできます。
ただ、もしも事前に相手の鍵を持っていない場合はどうでしょう?
ファイルと併せて鍵も送ってしまったら、鍵ごと盗まれてしまう可能性もありますよね。そこで誕生するのが、次に紹介する公開鍵方式です。
現在では、暗号化といえばほとんどが、次に紹介する「公開鍵方式」を前提としています。
公開鍵暗号とは?
共通鍵の場合、鍵自体の受け渡しができない場合に、インターネットでやり取りしてしまうと、鍵ごと盗まれてしまう可能性があります。
そこで、公開鍵暗号方式では、「公開鍵」「秘密鍵」という、2つの鍵を使います。
暗号化と複合化を、2つの鍵でどのように行うのかを見てみましょう。

- 送信者の男性が、メッセージを暗号化する連絡を宛先の女性へ行います。
- 宛先の女性は、自分用の公開鍵と秘密鍵を持っています。連絡をくれた男性へ、公開鍵を送ります。
- 男性は宛先の女性から受け取った公開鍵で、メッセージを暗号化し、送ります。
- 宛先の女性は、自分の秘密鍵を使ってメッセージを復元します。
復元するのには公開鍵とセットの秘密鍵が必要で、その秘密鍵は自分だけが所有しているわけですから、これなら安心ですね!でも、まだ問題があります。
証明書とは?
先ほどの公開鍵暗号方式で残っている問題点とはなんでしょうか。
例えば、先ほどの2人の会話を知りたい、3人目の男性がいたとします。どうしたら2人の会話を知る事ができるでしょうか。

- 送信者の男性が、メッセージを暗号化する連絡を宛先の女性へ行います。
- 宛先の女性に成りすました3人目の男性が、偽物の公開鍵を送ります。
- 男性は宛先の女性が送ってくれた公開鍵だと思い、届いた公開鍵でメッセージを暗号化し、送ります。
- 受け取った男性は、自分の秘密鍵を使ってメッセージを復元します。
そう、男性は、最初に暗号化する旨を連絡した後、到着した公開鍵が、本当に正しい相手からの鍵なのかどうかを確認する必要があるのです。そこで登場するのが証明書。
女性が公開鍵と一緒に、自分の身元を証明する「証明書」を添付する事で、宛先が正しい事を確認できるのです。
認証局とは?
先ほどの証明書、例えば3人目の男性が偽装した場合はどうなるでしょう?
そもそもこの証明書は、だれがその正当性を判断してくれるのでしょうか。
全く関係のない外部機関である必要がありますね。
例えて言うなら運転免許証みたいなものです。この証明書を認証してくれる第3者機関が認証局です。
SSLとは?
ここまでの説明を踏まえて、最後にSSL通信の仕組みをご説明します。
SSL通信は次のように行われています。

- パソコンのブラウザで、https:から始まるURLへ接続します。これが暗号化通信のリクエストとして扱われます。
- リクエストを受信したウェブサーバーが、自分の公開鍵と証明書を送ります。
- ブラウザがウェブサーバーから届いた証明書を確認し、大丈夫だと確認できたら、次にランダムな共通鍵を生成します。
- ブラウザから、生成した共通鍵をウェブサーバーの公開鍵で暗号化し送ります。
- ウェブサーバーは、自分の秘密鍵でデータを復元し、共通鍵を取り出します。
- 共通鍵を使って、その後の暗号化通信を行います。
いかがでしょうか?SSL通信では、共通鍵方式と公開鍵方式を、ハイブリッドで採用しているんですね。ご参考になれば幸いです。