はじめに
このドキュメントの目的
本ドキュメントは、インターネット上の通信を安全にする仕組みであるSSL/TLSについて、わかりやすく解説することを目的としています。専門的な背景がなくても、仕組みの全体像や重要な用語、日常での活用例を理解できるように構成しています。
なぜ重要か(身近な例)
オンラインバンキングやネットショッピング、ログイン画面などで送受信する情報は、暗号化されていないと第三者に見られるおそれがあります。SSL/TLSはその情報を読み取れない形に変えることで、プライバシーや金銭被害を守ります。ブラウザの鍵マーク(https)を見かけたことがある方は、これがSSL/TLSの働きです。
誰に向けた内容か
本書は、Webを使う一般の方、サイト運営者、初級〜中級の技術者を想定しています。数学や高度な暗号理論の事前知識は不要です。具体例を多く用い、用語は最小限に抑えます。
本書の構成と読み方
全5章で、まず基本概念を示し、次に主要な機能、利用される暗号技術、最後にTLSハンドシェイクの流れを順に説明します。まず第2章から順に読むと理解が進みますが、関心のある章だけ読んでも役立ちます。
SSL/TLSの定義と基本概念
SSLとTLSとは
SSL(Secure Sockets Layer)とTLS(Transport Layer Security)は、インターネット上の通信を暗号化して安全にする仕組みです。現在はTLSが主流で、Webブラウザとサーバーの間でデータを守ります。
何を守るのか
個人情報やパスワード、クレジットカード番号などの機密データを第三者から見られたり改ざんされたりするのを防ぎます。例えば、オンラインショッピングでカード番号が盗まれにくくなります。
ざっくりした仕組み
TLSは大きく三つの役割を果たします。1) 通信内容を暗号化して盗聴を防ぐ、2) 相手が本物かを証明する(サーバー証明書)、3) データが途中で改ざんされていないかを確認する。これらを短時間のやり取りで決めて、安全な接続を作ります。
日常での見分け方
ブラウザのアドレス欄が「https://」で始まる、または鍵のマークが付いているとTLSで保護されています。個人情報を入力する際は必ず確認してください。
SSL/TLSの主要な機能
暗号化(Confidentiality)
暗号化は、通信内容を第三者に読まれないようにする機能です。たとえば銀行のサイトに入力する口座番号やパスワードを、目に見えない暗号文に変えて送ります。これにより、盗聴者が情報を傍受しても中身を理解できません。日常例では、封筒に手紙を入れて封をするイメージです。
認証(Authentication)
認証は、相手が本当にそのサービスの正当な側であることを確認する機能です。サーバーは証明書という身分証を提示し、ブラウザがそれを確認します。たとえば公式の銀行サイトと表示されていても、証明書が正しくなければ接続を拒否します。これによりなりすましを防ぎ、安全にやり取りできます。
整合性(Integrity)
整合性は、送ったデータが途中で改ざんされていないかを確かめる機能です。データに短いチェック値を付けて送り、受け取り側で照合します。もし改ざんがあれば検出できるため、受け取った情報が送信時と同じであることを保証します。
三つの機能の連携
暗号化・認証・整合性は一緒に働きます。暗号化で内容を守り、認証で相手を確かめ、整合性で改ざんを検出します。この連携により、安全な通信が実現します。
SSL/TLSで利用されている暗号化技術
はじめに
SSL/TLSは複数の暗号技術を組み合わせて通信を守ります。ここではそれぞれの役割を分かりやすく説明します。具体例を交えて読みやすくまとめます。
共通鍵暗号(対称)
役割:通信データを高速に暗号化します。例としてAESがあります。実際の会話では、両者が共有する「セッションキー」を使って大量データを効率よく暗号化します。動画や画像の転送で重宝します。
公開鍵暗号(非対称)と鍵交換
役割:安全に鍵を共有するために使います。RSAのほか、Diffie-Hellman(DH)や楕円曲線版のECDHが用いられます。TLSでは一時鍵(エフェメラルECDH)を使うと、将来鍵が漏れても過去の通信が守られる「前方秘匿性」が得られます。
ハッシュ化
役割:データの改ざん検知に使います。SHA-256などの一方向ハッシュでメッセージの要旨を作り、送信側・受信側で一致するか確認します。小さな要約を比べることで改ざんの有無を検出します。
認証とデジタル署名
役割:相手が本物か確認し、送信者が否認できないようにします。証明書(CA署名)やRSA/ECDSA署名が使われます。例えばウェブサイトは証明書で本物と示します。
鍵派生と認証付き暗号
TLSではランダム値から複数の鍵を安全に作る「鍵派生(HKDFなど)」を使います。暗号化と同時に改ざん検知を行う認証付き暗号(例:AES-GCM)で、安全性と効率を両立します。
実務上のポイント
- 強い乱数が重要です。弱い乱数は全体を危険にします。
- アルゴリズムは時代で変わります。安全な組合せ(ECDHE+AES-GCM+SHA-256など)を使うと良いです。
以上が、SSL/TLSで使われる主な暗号技術の概要です。
TLSハンドシェイクプロセス
TLSハンドシェイクはクライアントとサーバーが安全な通信路を作る手順です。ここでは順を追って分かりやすく説明します。
1. Client Hello(接続開始)
クライアントが使える暗号方式やバージョン、乱数を送ります。例えると、使える言語やルールを最初に伝える挨拶です。
2. サーバーの身元確認(証明書提示)
サーバーはデジタル証明書を送ります。証明書は身分証のようなもので、信頼できる認証局が発行します。クライアントは証明書の有効性を確認します。
3. サーバーキー交換(必要な情報の受け渡し)
サーバーが追加の暗号パラメータを送ることがあります。これにより後で共通の秘密を作れます。
4. 共通鍵の生成(プリマスターシークレット)
クライアントとサーバーはRSAや(E)DHのような方法でプリマスターシークレットを作ります。イメージは鍵を作るための箱をやり取りして中身を共有することです。
5. マスターシークレットの導出
受け取ったプリマスターシークレットと乱数を使い、ハッシュ関数でマスターシークレットを作ります。ここから通信で使う対称鍵が生成されます。
6. Change Cipher Spec(暗号切替の合図)
両者がこれから新しい暗号方式で通信する準備が整ったと知らせ合います。
7. Finished(最終確認)
ハンドシェイクの内容が改ざんされていないかを示すFinishedメッセージを互いに交換します。これで安全な通信路が確立され、以降のデータは対称鍵で暗号化して送信します。












