SSL(Secure Socket Layer)とはなにか

先日、SSL通信とはどういうものかと教える機会があったのですが、
意外とうまく説明出来なかったため、簡単にまとめて見ました。

SSLとは何者か?

"SSL(Secure Socket Layer)"を一言で言うと暗号化通信を行うための
通信プロトコルです。
OSI参照モデルではセッション層とトランスポート層の間で動作しており、
Netscape Communications社により規定されましたが、現在ではRFC2246や
RFC4346などでTSL(Transport Layer Security)として標準化されています。

規約の詳細を理解することは大事な事ですが、今回は少しライトな感じに
まとめてみたいと思います。

暗号化通信の仕組み

SSL/TSLでの暗号化通信は、公開鍵(Public Key)・秘密鍵(Private Key)・
共通鍵(Secret Key)の3つの鍵によってとり行われます。

1. WebブラウザよりSSL通信をサーバに要求
2. 署名付き証明書とサーバ公開鍵を送付
3. 共有鍵をランダムに生成し、共有鍵をサーバの公開鍵で暗号化して送付
4. 共通鍵により暗号化通信を開始

SSL/TSL通信では、サーバは不特定多数のクライアントと暗号化通信を行う
必要に迫られているため、通信相手が公開鍵暗号方式のようにキーペアを
所持しているとは想定できません。そこで公開鍵を利用して共通鍵を送付し、
共通鍵による暗号化通信を行います。

忘れてはいけない第三者認証

SSL/TSLを語る上で忘れていけないのがPKI(Public Key Infrastructure)です。
読んで字のごとく、日本語では公開鍵基盤と呼ばれておりますが、公開鍵の
持ち主を証明するための基盤を提供します。
SSL暗号通信について言えば、PKIよりもCA(Certification Authority:認証局)
といったほうが馴染み深いのではないでしょうか?

先にも説明したとおり、SSL/TSL通信ではサーバ公開鍵で暗号化された共有鍵を
使って暗号化通信を行うため、公開鍵が正規のサーバから発行された鍵である
ことが証明できない限りは正しい相手と通信している保証が取れません。

そこで、第三者から公開鍵に署名付き証明書を付加してもらうことで正当性を
与える必要性があります。