インターネットでは、欲しいものはすぐに買えるし、知りたいことがあればすぐに調べられる、とても便利なツールです。今では誰でも使っており、日常生活に欠かせないものとなっているのではないでしょうか。しかしその反面、非常にたくさんの脅威も潜んでいます。SSL/TLSはそんな脅威の中でも「盗聴」「改ざん」「なりすまし」という3つの脅威からデータを守る技術を組み合わせてできています。
開発者の方であれば、HTTPSと言えば通信内容を暗号化するというイメージが強いかもしれません。HTTPSはSSL/TLSでHTTPを暗号化するため、そのイメージは間違っていません。ID/パスワードやクレジットカード情報を他人に盗み見られないようにするために暗号化することはSSL/TLSの重要な機能の一つです。しかし、それだけでは上述の3つの脅威からデータを守ることはできません。
SSL/TLSには暗号化の他に改ざん検知・認証機能があります。それぞれの脅威からどのように対抗しているのかその概要を見ていきます。
暗号化で盗聴から守る
盗聴は最もわかりやすい脅威と言えるでしょう。通信路に重要なデータがそのままの状態(平文)で流れていたら、悪い人でなくても、ちょっとした好奇心から盗み聴きしたくなってしまうのは人の性(さが)です。
SSL/TLSはクライアントとサーバーの通信を暗号化して、例え盗聴されても内容がわからなくなるようにします。
データの改ざんを検知する
改ざんは、経路の途中でデータが書き換えられてしまう脅威です。改ざん検知機能は、クライアントとサーバー間の通信において、送受信するデータが改ざん(書き換え)された場合に気付くことができる、すなわちSSLプロトコル上でやり取りするデータが改ざんされていないことを保証する機能です。
例えば、オンラインショッピングサイトで本を購入する際、ユーザーはどの本を何冊購入するか指定するわけですが、悪意のある第三者がユーザーやショッピングサイトを邪魔する目的でどの本を買うかや何冊買うか、あるいは配送先の住所を通信経路上で書き換えてしまうようなことができてしまうと大問題です。そこで、そのようなことを防ぐ目的でショッピングサイトは通常SSL(HTTPS)を利用しています。
データが改ざんされていないかどうかを確認するために、データから計算した「メッセージダイジェスト」(MD値)を、データと合わせて送信します。受け取った方は、データから計算したメッセージダイジェストと、添付されているメッセージダイジェストを比較して改ざんされていないかを確認します。同じデータに対して計算するので、同じハッシュ値だったらデータが改ざんされていないということになります。
認証してなりすましから守る
なりすましは通信相手になりすますという脅威です。そして、認証とは対象が誰であるかを特定することです。
認証はどのような場合に必要でしょうか。例えばあなたが本を買うためにあるオンラインショッピングにアクセスしたとしましょう。
通常であれば、そのWebサイトで買いたい本を検索し、ログインして購入画面に進むと思います。でも、ちょっと待ってください。そのWebサイトは本当にあなたがアクセスしたかったWebサイトでしょうか。もしかするとフィッシングサイトかも知れません。では、どうすればアクセスしたかったWebサイトが元々アクセスしたかったWebサイトであると確認できるでしょうか。
Webサイトの見た目がいつもと同じであれば問題ないでしょうか。(本物のWebサイトのHTMLやCSSは誰でも簡単にダウンロードできるため、本物そっくりなWebサイトを構築することは容易です。)
Webブラウザのブックマークからアクセスしたら問題ないでしょうか。(ブックマークしたWebサイトがそもそもフィッシングサイトだったかも知れません。)
有名な検索サイトの検索結果上位に載っていたら問題ないでしょうか。(大抵は問題ないかもしれませんが、問題ないとは言い切れません。)
Webブラウザのアドレスバーを見てドメイン名が正しければ問題ないでしょうか。(これも大抵は問題ないかも知れませんが、DNSサーバーの乗っ取りや、DNSキャッシュポイズニングの被害を受けている可能性もあります。)
このように、本当に問題ないサイトであると確認するのは考えてみると難しいものです。
SSLでは、この「本当に問題ない(求めているWebサイトである)」ことを確かめるために「ディジタル証明書」を使用します。データを送信する前に「あなたの情報をください」とお願いし、送られてきたディジタル証明書をもとに正しい相手かどうかを確認します。