PKIとは? — 公開鍵基盤
PKI(Public Key Infrastructure)は、公開鍵暗号を使って通信相手の本人確認と通信の暗号化を実現する仕組みです。インターネット上で安全な通信をするための基盤です。
公開鍵と秘密鍵のペア
公開鍵(Public Key)
誰でも入手可能。暗号化に使う。
「南京錠を開いた状態で配布」するようなイメージ
「南京錠を開いた状態で配布」するようなイメージ
秘密鍵(Private Key)
自分だけが持つ。復号・署名に使う。
絶対に外部に漏らしてはいけない
絶対に外部に漏らしてはいけない
暗号化は公開鍵で → 復号は秘密鍵で(一方向のみ。逆方向はできない)
デジタル証明書と認証局(CA)
デジタル証明書は「この公開鍵は本物のkurutann.comのものです」ということを第三者が保証する書類です。保証する第三者を認証局(CA: Certificate Authority)と呼びます。
証明書発行フロー
Step 1
サーバ管理者がCSR(証明書署名要求)を作成 — 「自分の公開鍵と会社情報」を記載
Step 2
CAがドメイン所有者であることを確認(DNS検証・メール検証・実地審査)
Step 3
CAが自分の秘密鍵で署名した証明書を発行 ← 「CA公認のデジタル保証書」の完成
Step 4
ブラウザはOSに組み込まれたルートCAの公開鍵で署名を検証 → 信頼チェーンが成立
ルートCA
最上位の認証局。ブラウザ・OS に最初から信頼リストとして組み込まれている(DigiCert、IPA等)
中間CA
ルートCAから委任された中間の認証局。セキュリティのために直接ルートCAは使わない
サーバ証明書(エンドエンティティ)
Webサーバが提示する証明書。中間CAが署名している
TLSハンドシェイク — HTTPSの接続確立
TLS(Transport Layer Security)はHTTPS通信を実現するプロトコルです。接続確立時に「TLSハンドシェイク」を行います。
TLS 1.3 ハンドシェイク(簡略版)
1. ClientHello
クライアント → サーバ:「サポートする暗号スイート一覧 + 乱数を送ります」
2. ServerHello + Certificate
サーバ → クライアント:「使う暗号スイートを選択 + 証明書を提示」
3. 証明書検証
クライアントがCAの公開鍵で証明書の署名を検証 → サーバが本物か確認
4. 鍵交換(ECDH)
双方が共通の暗号鍵を安全に生成(秘密鍵は通信に流れない!)
5. 暗号化通信開始
共通鍵で全ての通信を暗号化 ← HTTPS通信!
HTTP vs HTTPS — ポート番号の違い
HTTP(ポート80)
平文通信。盗聴・改ざんが可能。現在はほぼ廃止推奨
HTTPS(ポート443)
TLSで暗号化。盗聴・改ざん・なりすましを防ぐ。全てのWebサービスで必須
証明書の種類
DV(ドメイン検証)
ドメイン所有確認のみ。自動発行可能(Let's Encrypt等)。個人サイト向け
OV(組織検証)
会社の実在確認も行う。企業Webサイト向け
EV(拡張検証)
最も厳格な審査。ブラウザのアドレスバーに組織名が表示される。金融・EC向け
試験ポイントまとめ
公開鍵で暗号化 → 秘密鍵で復号(秘密鍵は通信に流れない)
CA = 第三者が「この公開鍵は本物」と保証する機関
TLSハンドシェイク = 証明書検証 + 共通鍵生成 + 暗号化開始
HTTPS = HTTP + TLS = ポート443