メインコンテンツへスキップ
見出し画像

TLSとは?「証明書を確認してから暗号通信を始める」仕組みをやさしく解説

    Webサイトを開いた時、URLが「https://」で始まっていれば、通信にはTLSが使われています。しかし、「証明書」「公開鍵」「秘密鍵」「共通鍵」が一度に登場するため、仕組みが分かりにくく感じます。

    結論から言うと、TLSは次の三つを実現する仕組みです。

    • 通信相手が正しいサーバか確認する

    • 通信内容を暗号化して盗み見を防ぐ

    • データの書き換えを検知する

    HTTPSは「HTTPをTLSで保護した通信」と考えると分かりやすいです。

    TLS通信は三段階で始まる

    例として、ブラウザからWebサーバへ接続する流れを見てみます。

    1.使用する暗号方式を決める

    最初にブラウザは、対応できるTLSのバージョンや暗号方式などをサーバへ伝えます。サーバは、その中から利用する方式を選んで応答します。

    この時点では、まだ本格的な暗号通信は始まっていません。安全な通信を始めるための準備段階です。

    2.サーバ証明書を確認する

    次にサーバは、サーバ証明書をブラウザへ提示します。証明書には、サイトのドメイン名、公開鍵、有効期限、発行者などが記録されています。

    ブラウザは主に次の点を確認します。

    • 信頼できる認証局が発行した証明書か

    • 接続先のドメイン名と証明書の名前が一致するか

    • 有効期限が切れていないか

    • 証明書が改ざんされていないか

    この確認には、端末やブラウザが持つ「信頼できる認証局の一覧」が使われます。Javaアプリケーションから外部のHTTPS APIへ接続する場合は、Javaのトラストストアが同じような役割を担います。

    証明書を見れば公開鍵は入手できますが、サーバだけが持つ秘密鍵は外部へ送られません。サーバは秘密鍵を使って通信開始時の情報に署名し、「この証明書の正当な所有者である」ことを証明します。

    3.共通鍵を作って暗号通信を始める

    相手を確認した後、ブラウザとサーバは、やり取りした情報から同じ「共通鍵」を作ります。現在主流のTLSでは、共通鍵そのものをネットワークへ送るのではなく、双方が鍵交換用の情報を出し合って同じ秘密を計算します。

    その後のWebページ、パスワード、APIのデータなどは、この共通鍵を使って暗号化されます。

    なぜ公開鍵方式を通信全体に使わないのでしょうか。公開鍵暗号は本人確認や鍵交換に向いていますが、大量のデータ処理には負荷がかかります。一方、共通鍵暗号は高速です。そのためTLSでは、それぞれの長所を組み合わせています。

    画像

    公開鍵と秘密鍵の役割を整理する

    混乱しやすい点を、ひと言で整理すると次のようになります。

    • サーバ証明書:サーバの身分証明書

    • 公開鍵:証明書に含まれ、利用者にも公開される鍵

    • 秘密鍵:サーバだけが厳重に保管する鍵

    • 共通鍵:接続ごとに作り、実際のデータ暗号化に使う鍵

    • トラストストア:信頼する認証局の証明書を保管する場所

    「サーバの秘密鍵でWebページ全体を暗号化している」と覚えるのは正確ではありません。少なくとも現在主流のTLSでは、秘密鍵は主にサーバの本人確認に使われ、実際の通信データは接続ごとに作られた共通鍵で守られます。

    画像

    まとめ

    TLSの流れは、「相手を確認する→安全に共通鍵を作る→共通鍵でデータを守る」の順番です。

    鍵や証明書を別々に暗記するより、「誰を信頼するのか」「どの鍵を何に使うのか」を通信の順番に沿って考えると、TLSの全体像が見えやすくなります。

    あわせて読みたい関連記事

    HTTPSについて記事にしておりますので、こちらもご覧いただければ幸いです。


     
     
    情報処理試験、セキュリティ・Webアプリ開発を学ぶ現役SE。初心者目線で、つまずいたIT用語や仕組みを整理しています。心理・セルフケア、本から学んだことも発信。Amazonのアソシエイトとして、Yotsuhaは適格販売により収入を得ています。

    あなたへのおすすめ