かつてのインターネットは性善説の世界

インターネットができた当初は、性善説の世界で出来上がっていて、セキュリティに対する考慮は殆どありませんでした。ちょっとした知識さえあれば、通信の盗聴が可能で、改ざんやなりすましも簡単にできました。

しかし、商用利用が解禁され、たくさんの人々がインターネットを利用するようになると、それでは不都合が生じました。クレジットカード番号などを入力する際に盗聴されては、犯罪に利用されてしまいます。

そこで登場したのがSSLです。

SSLはアメリカのネットスケープコミュニケーションズ社が開発しました。Webブラウザを開発していたことでも有名な会社です。1994年の7月にSSL1.0がリリースされましたが、プロトコルそのものに重大な欠陥が見つかり、公開は見送られています。実際に実装されたのはSSL 2.0が最初になります。当時他にもインターネット通信においてセキュリティを確保するためのプロトコルはいくつかありましたが、SSLが先に普及し、デファクトスタンダートとして広く使われるようになりました。

SSLは、「通信の盗聴やなりすまし、改ざん」といった危険から守るために作られたプロトコルです。対盗聴としては、やりとりするデータを暗号化して防ぎ、通信相手がなりすましをしていないかどうかについては、認証局が発行する「サーバー証明書」で確認することができるようになっています。また、改ざんはハッシュ技術を使って検出します。

しかし、SSLはIETFが定めるインターネット標準ではありません。RFC化は目指していましたが、SSLがネットスケープ1社開発のプロトコルであったためか、採用されませんでした。そこで、中立の立場を印象付けるためにTLSという名称にし、標準化を行った経緯があるようです。

TLSの誕生

TLS1.0はそのような経緯から、SSL3.0とほぼ同様の内容のプロトコルです。SSL3.0に対してサポートしている暗号アルゴリズムの見直しやエラーメッセージの増加など、細部の改善が行われたものがTLS1.0です。1999年1月にインターネット標準となりました。

SSLとTLSの間に互換性はありませんので、下位互換性を考慮して、製品ではSSL3.0もサポートされ続けられ、SSKが利用されている状況は近年まで続いていました。

しかし、SSL3.0に「POODLE」という深刻な脆弱性が見つかったことで状況が変わります。

この脆弱性は、攻撃するためには、クライアントとサーバーの間のすべての通信データを受信して制御する必要があります。問題はSSLのデータ検証方法にありました。通常のSSLでは、クライアントから送信されるデータが少しでも改変されるとサーバーはそれを検知して受け付けません。しかし、SSL3.0ではこの動作が不十分であったため、改変があっても受け入れてしまう不具合がありました。また、サーバー側の対応の解析によって、中間に存在する攻撃者は暗号化前のデータを推測できてしまいます。

これを受け、IETFによってSSLの使用が廃止されました。