PKIの仕組み (公開鍵基盤)

目次

PKI(公開鍵基盤)とは

PKI(Public Key Infrastructure)とは、公開鍵暗号と電子証明書を用いて、通信相手の正当性を保証し、安全な通信を実現するための仕組み全体のことです。

 

単なる暗号技術ではなく、以下を含む運用・信頼の仕組みです。

公開鍵と主体(サーバ・ユーザ)を結び付ける
証明書の発行・配布・更新・失効
信頼の連鎖(ルートCA・中間CA)
検証ルール(ブラウザ・OSの信頼ストア)

 

PKIの目的

PKIは主に次の3つを実現します。

①通信の暗号化 盗聴を防ぐ
②改ざんの検知 通信内容が途中で変更されていないことを保証
③なりすましの防止 通信相手が正しい相手であることを確認

 

PKIを使用する際の流れ

大きく分けて以下2つのフェーズに分かれます。

1.証明書を発行するための事前準備
2.実際に通信を行う際の接続時のプロセス(TLSハンドシェイク)

 

1. 事前準備:デジタル証明書の発行とインストール

サーバーが安全な通信を提供するために、まず信頼できる第三者機関から証明書を取得します。

1.鍵ペアの生成 サーバ側で以下を生成します。
・公開鍵と秘密鍵
2.CSR(証明書署名要求)の作成 CSR(Certificate Signing Request)を作成します。
内容:公開鍵、ドメイン名、組織情報(必要に応じて)
3.認証局(CA)への申請と審査 CA(またはRA相当の仕組み)が以下を確認します。
ドメインの所有権(DV)、組織情報(OV/EV)
4.証明書の発行 CAは以下を行います:
CSRの公開鍵と情報を元に証明書作成し自身の秘密鍵で電子署名
→ サーバ証明書が発行される
5.サーバーへのインストール サーバー管理者は、発行された証明書をサーバー(Nginx、Apache、AWSのACMなど)に設定し、利用可能な状態にします。

 

証明書チェーン

実務では、証明書は単体ではなくチェーンで信頼されます。

ルートCA(信頼済)

中間CA

サーバ証明書
  • ルートCAはOSやブラウザに事前登録済み
  • 中間CAはセキュリティのために分離される

 

2.実際に通信を行う際の接続時のプロセス(TLSハンドシェイク)

準備が整ったサーバーにクライアント(ブラウザなど)がアクセスした際、以下の手順で安全な通信が確立されます。

1.挨拶と証明書の提示 クライアントからの接続要求を行います。
サーバーはクライアントに以下を送信します。
サーバ証明書、中間証明書、鍵交換パラメータ
2.証明書の検証(クライアント側) クライアントは以下を確認します。
署名の検証 → CAの公開鍵で署名を検証
証明書チェーン → 信頼されたルートCAまでつながるか
有効期限 → 期限内か
ホスト名一致 → アクセス先ドメインと一致するか
失効確認(必要に応じて) → OCSP:リアルタイム問い合わせ、CRL:リストのダウンロード
3.共通鍵の生成と鍵交換 鍵交換のECDHEでは、双方がパラメータを交換して独立に共通鍵を導出します。
鍵交換の現在の主流:ECDHE(楕円曲線Diffie-Hellman)
特徴:共通鍵は通信ごとに生成、前方秘匿性(Forward Secrecy)あり
※補足 昔はRSAで共通鍵を暗号化して送る方式もあったが、現在はほぼ使われない
共通鍵の確立:クライアントとサーバで同じ共通鍵を生成
4.暗号化通信の開始 以降は共通鍵で高速に暗号化通信

PKIの主な構成要素と関連用語

構成要素

認証局(CA) 証明書を発行する信頼の中心となる機関
・公開鍵と主体の対応関係を証明する
・電子署名を付与する
例:Let’s Encrypt(無料・DV証明書・自動化向け)、商用CA(DigiCert など)
登録局(RA) 申請者の確認(本人確認・ドメイン確認)を行う役割
・CAが直接担う場合もある
・ACME(Let’s Encrypt)などでは自動化されている
証明書(X.509証明書) 公開鍵と主体情報を結びつけた電子データ
主な内容:
・公開鍵
・ドメイン名(CN / SAN)
・発行者(CA)
・有効期限
・電子署名
公開鍵と秘密鍵 ・公開鍵:誰でも取得可能(証明書に含まれる)
・秘密鍵:所有者のみ保持(外部に漏れてはいけない)
電子署名 電子署名とは、データの改ざんがないこと、署名者が正しいことを保証する仕組みです。
証明書では、CAの秘密鍵で署名され、クライアントはCAの公開鍵で検証します。

 

関連の用語

SSLとTLS ・SSL:すでに廃止
・TLS:現在の標準
Let’s Encrypt ・誰でも無料で、自動的にTLS証明書を発行できる認証局
・自動化(ACME)
・DV証明書のみ
AWS Certificate Manager(ACM) ・AWSの証明書管理サービス
・公開証明書 / プライベートCA / インポート証明書を扱える

関連の記事

ルート証明書とは (Chromeで確認)
SSLサーバ証明書とは (Chromeで確認)
ローカル環境でhttps通信を行う(おれおれサーバ証明書)

△上に戻る