数字証明書とは何ですか?#
数字証明書は、オンライン資産(電子メールの通信、ドキュメント、ウェブサイト、ソフトウェアアプリケーションなど)の公開鍵の正当性を証明するために使用されるデジタルドキュメントです。
数字証明書には通常、以下の情報が含まれます:
- 公開鍵
- 所有者情報
- 証明書発行機関(CA)の情報
- CA によるファイルのデジタル署名と使用されるアルゴリズム
- 証明書の有効期間
- その他の追加情報
数字証明書の役割#
数字証明書の役割は、公開鍵の所有者の身元を認証し、第三者によるなりすましを防止することです。簡単に言えば、証明書はクライアントに対して、サーバーが正当であるかどうかを伝えるために使用されます。証明書が正当である場合、サーバーの身元は信頼できるということです。
CA とは何ですか?#
CA は「Certificate Authority」の略で、「証明書認証局」とも呼ばれます。CA は証明書の管理と発行を担当する第三者機関であり、例えば例の中の C 社のような仲介者と考えることができます。一般的に、CA はすべての業界と一般の人々に信頼され、認められる必要があります。したがって、十分な権威を持っている必要があります。A 社と B 社の両方が C 社を信頼する場合、C 社を公的な印鑑の仲介者として選ぶことになります。
CA 証明書とは何ですか?#
CA 証明書は、CA によって発行される証明書のことを指します。
誰でもツールを使って証明書を作成することができます。しかし、あなたが作成した証明書はあまり役に立ちません。なぜなら、あなたは権威のある CA 機関ではないため、自分で作成した証明書には権威性がありません。
証明書の信頼チェーンとは何ですか?#
実際には、証明書間の信頼関係はネストすることができます。例えば、C が A1 を信頼し、A1 が A2 を信頼し、A2 が A3 を信頼する... これを証明書の信頼チェーンと呼びます。信頼チェーンの最初の証明書を信頼すれば、後続の証明書も信頼できます。
ルート証明書とは何ですか?#
C 証明書が A と B を信頼していると仮定します。そして、A は A1 と A2 を信頼し、B は B1 と B2 を信頼しています。それらは次のような逆さまのツリー関係(逆さまのツリー)を形成しています。
最上位にあるツリーのルート位置にある証明書は「ルート証明書」と呼ばれます。ルート証明書以外のすべての証明書は、1 つ上の証明書に依存して自身を証明する必要があります。ルート証明書は証明書体系全体の安全性の基盤であり、証明書が信頼できなくなった場合、ルート証明書に信頼されている他のすべての証明書も信頼できなくなります。これは非常に重大な結果です。
CA 証明書の役割は何ですか?#
- ウェブサイトの信頼性を検証する(HTTPS に対して)
- ファイルの信頼性(改ざんされていないか)を検証する
ここで HTTPS について触れる必要があります。私たちは皆、HTTP と HTTPS の違いを知っています:
- HTTP は平文での通信であり、セキュリティリスクがあります。HTTPS は HTTP と TCP の間に SSL/TLS セキュリティプロトコルを追加することで、メッセージの安全な転送を可能にします。
- HTTP は TCP の 3 ウェイハンドシェイクの後に送信できますが、HTTPS は TCP の 3 ウェイハンドシェイクの後に SSL/TLS のハンドシェイクが必要です。
- HTTP のデフォルトポートは 80 であり、HTTPS のデフォルトポートは 443 です。
- HTTPS では、サーバーの身元を信頼できるようにするために、CA にデジタル証明書を申請する必要があります。
HTTPS は暗号化プロトコルであり、送信中に盗聴されないように保証することができます。しかし、HTTPS は必ずしも安全であると言えるでしょうか? 偽の基地局がすべての情報を転送する役割を果たしている場合、すべての情報を取得できますよね?
悪意のある人がこれを行わないようにするために、HTTPS プロトコルには暗号化メカニズムだけでなく、証明書メカニズムもあります。証明書によって、特定のサイトが実際にそのサイトであることが保証されます。
証明書があると、ブラウザが特定の HTTPS サイトにアクセスする際に、そのサイトの CA 証明書(紹介状のようなもの)を検証します。ブラウザがその証明書に問題がないことを確認すると(証明書が特定のルート証明書によって信頼されている、証明書にバインドされたドメイン名とサイトのドメイン名が一致している、証明書が期限切れでないなど)、ページが直接開かれます。そうでない場合、ブラウザは警告を表示し、そのサイトの証明書に問題があることを通知し、そのサイトにアクセスを続けるかどうかを尋ねます。
証明書の発行と検証のプロセス#
CA が証明書を発行するプロセスは、上記の左側の部分のようになります:
- まず、CA は所有者の公開鍵、用途、発行者、有効期間などの情報をパッケージ化し、これらの情報に対してハッシュ計算を行い、ハッシュ値を生成します。
- 次に、CA は自身の秘密鍵を使用してそのハッシュ値を暗号化し、証明書署名(Certificate Signature)を生成します。つまり、CA は証明書に署名を付けます。
- 最後に、Certificate Signature をファイル証明書に追加して、デジタル証明書を作成します。
クライアントがサーバーのデジタル証明書を検証するプロセスは、上記の右側の部分のようになります:
- 最初に、クライアントは同じハッシュアルゴリズムを使用して、その証明書のハッシュ値 H1 を取得します。
- 通常、ブラウザやオペレーティングシステムには CA の公開鍵情報が組み込まれています。ブラウザは証明書を受け取った後、CA の公開鍵を使用して Certificate Signature を復号化し、ハッシュ値 H2 を取得します。
- 最後に、H1 と H2 を比較し、値が同じであれば信頼できる証明書と見なし、異なる場合は証明書が信頼できないと判断します。