2015/12/10
| 更新
2019/03/18
SSLとTLSの違いは? 最新版1.3の進化ポイントと個人情報保護の仕組みを解説
ネットショッピングを守る暗号化テクノロジー
ネットショッピングにネットバンキングはもはや当たり前。公的な書類申請やさまざまな会員登録、お店の予約だってネットで完結。そんな今だから、インターネットの世界を膨大な数の個人情報や機密情報が飛び交っている。
これらの大事な情報が盗まれたり、改ざんされたりしないように、ChromeやSafariといったブラウザを使ってやり取りされる通信内容を暗号化し、ハッカーから守る仕組みがSSLであり、TLSなのだ。
自分の通信がSSL/TLSで守られているかどうかは簡単に確認できる。ブラウザのアドレスバー(検索語を入れたり、URLが表示されたりする窓)を見ればいい。鍵のマークが表示されていて、かつURLの先頭が「https://」のように、「http」の次に「s」がついていたら、このサイトとのやり取りはSSL/TLSで守られているということだ。
TIME & SPACEのアドレスバーを見ると、鍵マークがついていることが確認できる。
さらにアドレスバーをタップすると、TIME & SPACEの「https」URLが現れる。
なりすまし、盗み見、改ざんを防止
「SSL(Secure Socket Layer)」が正式運用され始めたのは、1994年のこと。SSL 3.0にバージョンアップ後、1999年にSSL 4.0にあたるバージョンが「TLS(Transport Layer Security)」と名前を変えて登場した。というわけで現在、SSLはもう使われていないのだが、TLSを慣習的にSSLと呼ぶ人が今も多く、そのために「SSL/TLS」と表記されたりもする。とにかく今、SSLと言えばTLSのことだと思ってもらってOKだ。
TLSの役割は大きく分けて、以下の3つ。
- ① なりすまし防止:通信相手が正しい相手かどうか確認をする。
- ② 盗み見防止:相手以外に通信内容を見られないようにする。
- ③ 改ざん防止:データが勝手に書き換えられないようにする。
では、どうやってハッカーたちからデータを防衛しているのだろうか。その仕組みは通信の暗号化とサイトの身元保証の二本柱からなっている。
防衛策①:SSLサーバ証明書というデジタル身元保証
ユーザーとサーバーがブラウザで通信のやり取りをするためには、まずはハンドシェイクという、お互いの認証と暗号鍵のやり取りをする。このとき、サーバーからは公開鍵(盗まれても大丈夫な暗号鍵)と一緒に、SSLサーバー証明書というものが送られてくる。証明書といってももちろん紙ではなく、デジタルな情報だ。ユーザー側のブラウザは、このSSLサーバー証明書を確認、サイトは信頼できると判断した後に通信のやり取りを始めるのだ。
SSLサーバー証明書は、認証局という第三者機関が実際に発行するもので、SSL/TLSを自社のサイトで運用するときに必ず申請・発行してもらわなければいけない。サーバーが正式で安全なものか、その企業がちゃんと法人登録されているか、その企業がちゃんと運営されているかなど、三段階の認証のレベルがある。銀行などネット決済のサービスをおこなっている会社は、もっとも厳格なレベルの「EV(Extended Validation)」という証明書を持っていることが多い。
このSSLサーバ証明書はPCやスマホから見ることができる。アドレスバーに表示されている鍵マークをクリックするだけだ。すると、小さなウィンドウが出てきて、そこにその企業の所在地や発行者名など、詳細な情報が表示される(Chromeの場合は、鍵マークをクリック後に表示されたウィンドウで「証明書」をクリック)。
なお、iPhoneの場合、アドレスバーの鍵マークは表示されるが、詳細情報を確認することはできない。
Android標準ブラウザの場合、アドレスバーの鍵マークをタップするとまず左画面が表示され、「詳細」をタップするとより詳しい情報(中画面)、さらに「証明書情報」をタップすると証明書ビューアを確認することができる。
また、「EV」レベルのサイトなら、ブラウザによっては緑色でURLが表示されたり、あるいは鍵マークの後に企業名と国名(JP、USなど)が表示され、ひと目でわかるようになっている。
防衛策②:金庫を「閉めるための鍵」と「開けるための鍵」を別々に
以上がいわば、ウェブサイトの身元保証。次は暗号化だ。SSLサーバ証明書を確認したユーザー側のブラウザは、サーバーと暗号鍵をやり取りする。TLSでは、暗号鍵として公開鍵、秘密鍵、共有鍵の3つの鍵が使われる。
公開鍵と秘密鍵の関係を説明しよう。ここに、特殊な金庫があるとしよう。この金庫では、金庫の扉を閉めるときの鍵と、開けるときの鍵が別々になっている。つまり、金庫を閉めた鍵では金庫を開けることができない。開けるための専用の鍵が必要なのだ。この金庫を閉めるためだけの鍵が公開鍵で、開けるためだけの鍵が秘密鍵だ。
サーバーはこの閉めるための鍵(公開鍵)と金庫を一緒にユーザーに送る。ユーザー側のブラウザは、新しい暗号鍵である共有鍵というものをつくり、それを受け取った金庫に入れ、公開鍵で扉を閉める。そしてその金庫をサーバー側に送り返す。サーバー側は開けるための鍵(秘密鍵)を使って金庫を開け、共有鍵を取り出すというわけだ。
このやり取りの時点で、公開鍵が盗まれても、ハッカーは秘密鍵を持っていないので金庫を開けることができない。こうしてユーザー側とサーバー側は、ハッカーに知られていない共有鍵を使って暗号化したり、暗号を解読したりして通信をやり取りするというわけだ。また、このやり取りの際に、通信データが途中で改ざんされていないかをチェックする機能も持っている。
SSL/TLSの仕組みをシンプルに図説すると以下のようになる。
最新版、TLS1.3ではどこが進化した?
TLSの最新バージョンは2018年8月にリリースされた「TLS1.3」で、前バージョンの1.2から4年をかけて改善されてきたものだ。この1.3では、仕様策定の段階から暗号学の研究者が加わることで暗号の強化が図られ(これまでは暗号学者が設計に深く関与していなかった)、また前バージョンの脆弱性も徹底的に調べられてさまざまな防御策が盛り込まれた。
ハッカーたちがいちばん攻撃しやすいのが通信を開始するハンドシェイクの段階なのだが、この時、ブラウザとサーバーとの最初のやり取り以外がバージョン1.3ではすべて暗号化された。これでハッカーの付け入る隙がなくなった。さらに、複数使用されている暗号化アルゴリズム(暗号の作り方)のほとんどが、まったく新しいアルゴリズムに置きかえられたのだ。ほかにも通信のスピードアップなど、多くの改良がなされている。
今後、さまざまなブラウザが、史上最強と言われるこのTLS1.3に対応していくはずだ。セキュリティをいつも意識して、「ポチッと」ショッピングする前には、ブラウザのアドレスバーの鍵マークをしっかり確認することを忘れずに!!(←これ大事)
文:吉田 努