LinuCレベル3 303試験の例題と解説
325.2暗号化、署名および認証のX.509 証明書
■トピックの概要
このトピックの内容は以下の通りです。
<325.2 暗号化、署名および認証のX.509 証明書>
重要度 4
<説明>
OpenSSLの構成および使用方法を知っていることが求められる。これには、自分自身の認証局を作成し、さまざまなアプリケーションにSSL証明書を発行する知識も含まれる。
<主要な知識範囲>
・証明書の生成
・鍵の生成
・SSL/TLS クライアントとサーバのテスト
<重要なファイル、用語、ユーティリティ>
・openssl
・RSA, DH 及び DSA
・SSL
・X.509
・CSR
・CRL
■例題
SSLについての解説で間違っているものを選びなさい。
1. SSLはHTTPSやSSL-VPNなどで暗号通信を行うために使用されている
2. サーバー証明書にはサーバーの秘密鍵が含まれている
3. サーバー証明書には認証局(CA)によって電子署名が行われている
4. クライアント証明書を利用することでクライアント認証が行える
※この例題は実際のLinuC試験とは異なります。
解答と解説
答えは2. サーバー証明書にはサーバーの秘密鍵が含まれている です。
SSLはプロトコルとしてのバージョンがあり、脆弱性を改善するためにバージョンアップしています。現在はSSLの上位バージョンである「TLS」(Transport Layer Security)が最新となります。ただし、SSLという名称が一般的に広まったために、今でもSSLと呼ばれたり、「SSL/TLS」をセットで呼ばれたりすることもあります。プロトコルとしては基本的な仕組みは同じと考えてもよいでしょう。
SSLで重要なのは「秘密鍵・公開鍵」の仕組みです。この仕組みはSSHなどでも使用されていますが、SSLでは「サーバー証明書」が重要な役割を果たしています。サーバー証明書は「サーバーの情報」+「サーバーの公開鍵」+「電子署名」で構成されます。「サーバーの情報」+「サーバーの公開鍵」を第三者である認証局(CA:Certificate Authority)の秘密鍵で暗号化したものが「電子署名」です。
(「サーバーの情報」+「サーバーの公開鍵」)
↓CAの秘密鍵で暗号化
「電子署名」
「秘密鍵・公開鍵」は以下のような法則を持っています。
(A) 秘密鍵と公開鍵は1対で生成され、同じ対を再度生成するのは(理論上)難しい
(B) 公開鍵で暗号化した情報は、対となる秘密鍵で復号(情報の取り出し)できる
(C) 秘密鍵で暗号化した情報は、対となる公開鍵で復号できる(電子署名とも呼ぶ)
サーバー証明書の例で言うと、サーバーの電子署名(CAの秘密鍵で暗号化)をCAの公開鍵で復号すれば、「サーバーの情報」+「サーバーの公開鍵」を取り出すことができます(C)。暗号化されていない情報と比較することで、そのサーバー証明書が偽造されたものでないことが分かります。
「電子署名」
↓CAの公開鍵で復号
(「サーバーの情報」+「サーバーの公開鍵」)
正しい公開鍵を取得することができたので、クライアントはサーバーの公開鍵を使って情報を暗号化し、サーバーは秘密鍵でその暗号化情報を復号できるようになります(B)。
同様に、クライアント証明書(公開鍵や電子署名を含む)を利用すると、クライアントはサーバーに対して公開鍵を適切に渡す事ができるようになります(C)。サーバーから見ると、そのクライアントはアクセスを許可してもよいクライアントということになります。
このあたりの仕組みは、分かりやすくするために説明をかなり簡略化しており、実際にはもう少し複雑なやり取りを行っています。この仕組みは1つの例ですが、SSLはいくつかの暗号化の仕組みを使って、安全に情報のやり取りができるようにするためのプロトコルとなっています。実際に自分で認証局を作ってHTTPS用のサーバー証明書を作成したり、OpenVPNでクライアント証明書によるVPN接続認証などを行ってみることで、その仕組みを理解してみましょう。