25.5 公開鍵暗号化の基本

25.5.1 概要

Webページのブラウズや公開チャットフォーラムなど、ほとんどのインターネット通信のコンテンツは、必要なデバイスを持っていれば誰でもモニタすることができます。オンラインショッピングでのクレジットカード情報のやり取りといったデータ転送のコンテンツは、機密にしておかなければなりません。

公開鍵暗号化は、インターネット上でのデータ転送を機密にして保護するために広く使用されている手法です。具体的には、公開鍵暗号化とは、メッセージの送信者を認証するため、そしてメッセージのコンテンツを暗号化するために、「鍵」と呼ばれるデジタルコードを使用するシステムのことを指します。

25.5.2 セキュアなデータ転送

データ転送は、次の2つによって機密かつセキュアになります。

  • 認証: データ受信者が、データ送信者の身元、またはデータ送信者が主張する本人そのものであることを把握します。

  • 暗号化: 送信されるデータは、対象とする受信者だけが読み取れるように暗号化されます。

25.5.3 鍵ペア

認証と暗号化はどちらも、関連するデジタルコード、つまり「鍵」のペアを使用して行われます。各ペアの一方の鍵は一般に配布され、もう一方の鍵は厳重に機密保持されます。

データ送信者のそれぞれには、それが個人、ソフトウェアプログラム、また銀行や企業などの機関であるかに関わらず、公開鍵暗号化システムによって鍵ペアが発行されます。

鍵ペアを構成する各鍵の基本的な原則と役割について、以下の図に要約します。

図 25-1 鍵ペアの基本的な説明

鍵ペアと認証

「認証」とは、データ送信者が誰であるか、またはデータ送信者が主張するデータ送信元を、データ受信者が正確に把握することを意味します。

たとえば、銀行に、自分の口座から別の口座への送金を許可するとします。その場合、銀行は、そのメッセージを送信したのが口座名義人本人であること、そしてメッセージが送信中に改ざんされていないことを証明しなければなりません。以下の図に、公開鍵暗号化を使用したオンライントランザクションのプロセスを示します。

図 25-2 公開鍵によるプロセス

デジタル署名とその検証については、デジタル署名を参照してください。

鍵ペアと暗号化

暗号化とは、対象とする受信者だけがデータを読み取れることを意味します。

たとえば、インターネットのベンダに本を注文して、その代金の支払にクレジットカードを使用しなければならないとします。対象とする受信者以外には、誰にもクレジットカード番号が読み取られないようにしなければなりません。

以下の図に示す暗号化プロセスが、クレジットカード番号を安全に送信するメカニズムを提供します。

図 25-3 暗号化プロセス

25.5.4 信頼関係の確立

送信者と受信者が互いを知っていて信頼している場合、公開鍵を交換するだけで、認証と暗号化を含めたセキュアなデータ転送を確立できます。この場合、送信者と受信者のそれぞれが、相手の公開鍵と自分の公開鍵を使用します。

しかし通常は、セキュアなデータ転送を必要とする当事者には、互いの識別情報を信頼する基盤がありません。送信者と受信者が共通して信頼するサードパーティに、それぞれの識別情報を証明してもらう必要があります。

認証局

公開鍵暗号化環境で識別情報を証明する必要がある当事者は、認証局と呼ばれる、信頼できるサードパーティのサービスを利用します。

認証局の主な目的は、当事者の身元または当事者が主張している本人であることを検証してから、その当事者が使用するための公開鍵証明書を発行することです。公開鍵証明書は、その証明書に含まれる公開鍵が、証明書に指名されている当事者に属することを検証するためのものです。

図 25-4 証明書要求

認証局は、証明書を要求している当事者の識別情報が正しいものであると認めると、電子「証明書」を発行し、その証明書にデジタル署名を付けます。

デジタル署名

紙の文書上の個人の署名がその文書の信ぴょう性を表すのと同じく、デジタル署名は電子データの信ぴょう性を表します。

デジタル署名を作成するには、署名の作成に使用されるソフトウェアで、署名を付けたデータを署名者の秘密鍵にリンクします。以下の図に、認証局が公開鍵証明書のデジタル署名を作成するために従うプロセスを示します。

図 25-5 デジタル署名

デジタル署名は、署名者とデータを固有にリンクします。署名者以外は、署名者の秘密鍵を持っていないため、署名を複製することはできません。さらに、署名者がデータに署名したことを否認することもできません。これは、「否認防止」と呼ばれます。

認証局が公開鍵証明書に署名を付けるということは、認証局がその公開している確立済みのポリシーに従って、公開鍵の所有者の識別情報を確認したことを保証するということです。

署名付きのデータ(公開鍵証明書など)を受信すると、署名作成ソフトウェアは当初使用した計算と同じ計算をそのデータに適用して、データの信ぴょう性を検証します。データが改ざんされていなければ、両方の計算で同じ結果が出ます。これにより、データも署名も送信中に改ざんされていないと確実に見なすことができます。

証明書チェーン

証明書チェーンとは、順序付けられた証明書のリストのことです。証明書は、サーバ証明書またはユーザ証明書の後に、その証明書を発行した認証局の証明書が続くように順序付けられます。

認証局の証明書には、認証局自体が署名を付ける場合も(つまり、自己署名証明書)、別の認証局が署名を付ける場合もあります。自己署名証明書を使用する認証局は、一般にルート認証局と呼ばれます。自己署名証明書を使用しない認証局は、一般に従属認証局または中間認証局と呼ばれます。

ユーザ証明書またはサーバ証明書が、自己署名証明書を使用する認証局によって署名付けされている場合、証明書チェーンは、エンドエンティティの証明書とルート認証局証明書だけで構成されます。

ユーザ証明書またはサーバ証明書が中間認証局によって署名付けされている場合は、証明書チェーンが長くなります。最初の2つの要素は同じくエンドエンティティの証明書と、その後に続く中間認証局の証明書です。ただし、中間認証局の証明書の後には、その上位認証局の証明書が続きます。このリストが、最後の証明書がルート認証局証明書になるまで続きます。したがって、証明書チェーンは無限に長くなる可能性があります。しかし実際には、ほとんどの証明書には2つか3つの証明書しかありません。

ルート認証局

ユーザ証明書またはサーバ証明書チェーンを構成する証明書のうち、少なくとも1つの証明書を信頼しなければ、デジタル署名を検証することはできません。ユーザまたはサーバの証明書自体を信頼することも、チェーンを構成する任意の証明書を信頼することもできます。通常、信頼する証明書は、ルート認証局証明書です。

証明書を使用できるアプリケーションソフトウェアの大半には、信頼する証明書のリストがすでにインストールされています。これらの証明書はルート認証局のものなので、「信頼されたルート」と呼ばれます。ルート認証局は一般に、営利目的の認証局です。必要に応じて、信頼する証明書のリストに他の認証局を追加したり、リストから認証局を削除したりできます。