Transport Layer Security(TLS)とは、暗号化して通信を行うための仕組みである。かつてはSecure Socket Layer(SSL)と呼ばれていた。
概要
まず、暗号には2種類あるところから説明しなければいけないだろう。同じ鍵を使って暗号化と復号化をする共通鍵暗号、異なる対になった鍵を使って暗号化と復号化をする公開鍵暗号の2種類である。計算の負荷や技術的制約などに伴い、TLSではこの2種類の暗号を使い分ける。
例えば、あるサイトにHTTPSでアクセスを始める時、以下のような手順が行われる。
- ブラウザはSSL/TLSのバージョン・乱数・暗号化方式などを送る
- サーバはSSL/TLSのバージョン・乱数・使用すると決めた暗号化方式などを送る
- サーバはサーバ証明書を送る
- ブラウザは証明書の検証を行う
- ブラウザは証明書からサーバの公開鍵を取得する
- ブラウザは秘密の値を生成する
- ブラウザは6の秘密の値を5の公開鍵を用いて暗号化してサーバに送る
- サーバは7のデータを秘密鍵で復号化し6の値を得る
- ブラウザとサーバはそれぞれ6の秘密の値から共通鍵(このセッション限りの)を取得する
- 以後のやり取りは9の共通鍵を用いて暗号化した上で行われる
証明書の検証は何をするのか
例えばブラウザが接続した先のサーバがhogehoge.foo.barだったとしよう。もし、証明書の検証を行わないのだとすると、DNSなどが乗っ取られて偽のhogehoge.foo.barに接続しても気づかない。なので、本当に正しいhogehoge.foo.barに接続していることを証明するために証明書の検証を行う。
じゃあどうやって証明書の検証をするのかというと、認証局が証明できるといったサーバが信用できるというのが結論である。で、その認証局が信用できるかは上位の認証局が証明する。このままでは無限に進んでしまうので、ある認証局が「俺を信用しろ」と言ってるのを信用するか、というところに落ち着く。じゃあ「俺を信用しろ」と言ってる認証局が信用できるか、という話だが、それを証明するのがルート証明書というもの。ブラウザやOSに入ってるのでそれで検証が可能である。
その「俺を信用しろ」と言ってる認証局になるには、「WebTrust for CA」という厳格な規則に従う必要があり、相当ハードルが高いので信用できる、というわけである。
ちなみに、かつてルート証明書としてシステムに追加されていたある認証局が乗っ取られてしまった時、その認証局の会社は潰れているので、それだけ重要だ、ということである。
関連商品
関連項目
参考文献
- 1
- 0pt


