デジタル証明書

 公開鍵を利用する場合は、真正性(公開鍵の発行者がなりすましをされていないこと)が保障されている必要がある。そうした公開鍵の真正性を保証するためにデジタル証明書が利用されており、ブラウザにはルートのデジタル証明書があらかじめ登録されている(下図参照)。公開鍵の確認ができない場合は、中間者攻撃などのなりすましの危険性がある。別名、公開鍵証明書、電子証明書、X509証明書など。

証明書のフォーマット

公開鍵証明書も標準化されており、X509という規格が存在する。主な内容は以下の通り。

署名値には証明書の内容のハッシュ値ををCAの秘密鍵で暗号化したものが記載されている。その際に用いるハッシュ関数も証明書に記載されている。

サーバ側

 サーバ側では秘密鍵と公開鍵のペアを生成したのちに、CA(認証局)に対して公開鍵の登録と証明書の発行を依頼する。
証明書の中にサーバの公開鍵が登録されているため、ユーザに公開鍵を送信する際には公開鍵の証明書を送信する。

ユーザ側

 サーバから受け取った証明書の署名値をCAの公開鍵で正しく復号できるかを確認する。CAの公開鍵はあらかじめブラウザに登録されている。
その後に受け取った証明書の有効期限とCRL(証明書失効リスト)を確認して、証明書が有効がどうかを確認する。

感想

 もやっとしていたデジタル証明書がようやくすっきりした。特にブラウザに登録されている証明書を実際に見ると納得する。昔は本当になにも理解していなかったのだと痛感した。次は実際に証明書の作成から組み込みまでを是非やってみたい。