暗号と PKI の基本

Microsoft® Windows® 2000 Server

概要
このホワイトペーパーでは、暗号および PKI (公開キー基盤) の概念を紹介し、Microsoft® Windows® 2000 Server オペレーティング システム (以下 Windows 2000) で証明書サービスを利用する際の基本的な情報を提供します。このホワイトペーパーを読むことで、暗号および PKI テクノロジに馴染みでない方でも、Windows 2000 Web サイトにあるさらに技術的な関連文書を理解しやすくなります。

トピック

はじめに はじめに
暗号の概念 暗号の概念
公開キー基盤の概念 公開キー基盤の概念
まとめ まとめ

はじめに

Microsoft® Windows® 2000 証明書サービスが提供する統合された PKI は、セキュリティにより保護された環境での電子商取引を可能にします。このホワイトペーパーでは、暗号および PKI の概念を紹介します。Windows 2000 の一部として提供される証明書サービスの機能を理解するには、暗号および PKI の概念を把握する必要があります。

暗号および公開キー テクノロジに馴染みでない方は、このホワイトペーパーを読み、「参考情報」に一覧されている次のより技術的な関連するホワイトペーパーを参照してください。

  • Windows 2000 Certificate Services

  • Troubleshooting Windows 2000 PKI Deployment and SmartCard Logon Issues

  • MS Windows 2000 公開キー基盤

  • Public Key Interoperability

ページのトップへ ページのトップへ

暗号の概念

暗号はイントラネット、エクストラネットおよびインターネットを使った、セキュリティで保護された情報交換に不可欠な技術です。実務的には、暗号により使用することができるセキュリティ機能は次のものがあります。まず、メッセージの送信者が本人であることをメッセージ受信者に伝える "確認"、次に、対象となる受信者以外がメッセージを読むことができない "機密性"、およびメッセージが送信中に改ざんされなかったことを保証する "整合性" です。技術的には、暗号化とはデータを解読不能な形式に数学的に変換し、データを保護することです。

この節では、次の暗号の概念について説明します。

  • 対称キー暗号 : 1 キー

  • 公開キー暗号 : 2 キー

  • 一方向ハッシュ アルゴリズム

  • デジタル署名 : 公開キーとハッシュの併用

  • キー交換 : 対称キーと公開キーの併用

最初の 3 セクションでは、対称キー暗号、公開キー暗号およびハッシュ アルゴリズムについて説明します。次の 2 セクションではこれらの技術を "併用" する方法を説明します。つまり、公開キー アルゴリズムとハッシュ アルゴリズムを合わせてデジタル署名を作成する方法、および対称アルゴリズムと公開キー アルゴリズムを合わせて秘密キーを交換する方法について説明します。

対称キー暗号 : 1 キー

対称キー暗号は、共有キー暗号または秘密キー暗号とも呼ばれ、送信者と受信の両方が同じ単一のキーを持ちます。このキーは、暗号化および復号化の両方で使われ、秘密キー (または対称キー、セッション キー) と呼ばれます。対称キー暗号は大量のデータを暗号化するのに適しています。

対称キー暗号にはいろいろなアルゴリズムが存在しますが、それらの目的は同じです。つまり、"平文" (暗号化されていないデータ、クリアテキストとも呼ばれる) から "暗号文" への可逆変換です。暗号文は、暗号キーを使って暗号化され、復号化キーを持たない者には意味がないデータとなります。対称キー暗号は暗号化と復号化で同じキーを使うため、この方法の安全性は第三者が対称キーを入手しないことに依存しています。このため、この方法は秘密キー暗号化とも呼ばれます。対称キー暗号を利用する者は、暗号化されたデータをやり取りする前にキーを安全に交換する必要があります。

対称キー アルゴリズムの強度の基準は、キー サイズです。キー サイズが大きければ大きいほど、データを解読する正しいキーを見つけるために試すキーの数が増えます。必要なキーが増えれば、アルゴリズムを破るのは難しくなります。優れた暗号アルゴリズムと十分なキー サイズがあれば、第三者が変換プロセスを逆転し、暗号文から平文を得るのは、計算上不可能になります。

公開キー暗号 : 2 キー

公開キー暗号では、"公開キー" と "秘密キー" と呼ばれる数学的に関連した 2 つのキーが使用されます。公開キー暗号は、対称キー暗号に対して、非対称キー暗号と呼ばれることもあります。公開キー暗号では、公開キーをオープンに仲間内で渡したり、公開された保管場所に置くことができますが、関連する秘密キーは秘密にしておく必要があります。公開キーで暗号化されたデータは秘密キーのみで復号化することができ、秘密キーで暗号化されたデータは公開キーのみで復号化することができます。図 1 では、送信者は受信者の公開キーを使ってメッセージを暗号化します。メッセージを復号化できる秘密キーは受信者のみが持っています。

cryptp01

図 1: 公開キー暗号は公開キーと秘密キーが必要

対称キー暗号と同様に、公開キー暗号も多くのアルゴリズムが存在します。しかし、対称キー暗号と公開キー暗号のアルゴリズムは設計が異なります。対称キー アルゴリズムは、動作原理がどれも似ているのでプログラム内で対称キー アルゴリズムをほかのものと置き換えることが容易にできます。これに対して公開キー アルゴリズムは、それぞれの動作原理が大きく異なるため、置き換えることはできません。

公開キー アルゴリズムは非常に大きな数字を使った複雑な数式です。公開キー アルゴリズムの主な制限は、暗号化の方法として、かなりスピードの遅い部類のものであることです。実際に、公開キー暗号は対称キーの交換やメッセージのハッシュの署名などの要所でのみ使用されます (ハッシュは、ハッシュ アルゴリズムと呼ばれる一方向の数学関数をデータに適用して生成される固定長の計算結果です)。対象キー暗号などの、その他の暗号と公開キー暗号を併用したほうがパフォーマンス上効果的です。対称キー暗号を使用して大きなデータを暗号化した場合に、使用された秘密キーを送るために公開キー暗号を使うことが効率的です。さらに、公開キー暗号とハッシュ アルゴリズムを併用すると、デジタル署名の作成が可能です。

公開キー暗号を対称キー暗号またはハッシュ アルゴリズムと併用する詳細については、本ホワイトペーパーの「デジタル署名 : 公開キーとハッシュの併用」および「キー交換 : 対称キーと公開キーの併用」を参照してください。

デジタル署名のために公開キー暗号を使用する
デジタル署名は、メッセージ、ファイル、およびその他のデジタル データと、作成者の身元情報、つまり署名をデータに結び付ける方法です。情報にデジタル署名を付けるには、データと送信者が持つ秘密情報と共に、情報を署名と呼ばれるタグに変換します。デジタル署名は、公開キー環境で使われ、メッセージを送信した者が本人であることを確認し、送信されたメッセージが改ざんされていないことを保証できることで、安全な電子商取引の手助けをします。

多くの場合、デジタル署名は電子メールなどの平文のデータとともに使われます。メッセージの重要度が低いために暗号化が不必要でも、データが改ざんされていないことやそのメッセージが送信者本人でない者から送信されていないことが重要な場合に使われます。

公開キーとハッシュを併用してデジタル署名を作成する方法については、本ホワイトペーパーの「デジタル署名 : 公開キーとハッシュの併用」を参照してください。

一般的な公開キー暗号のアルゴリズム
次の 3 つの公開キーアルゴリズムが一般的に利用されます。

  • RSA 。デジタル署名およびキー交換。 RSA (Rivest-Shamir-Adleman) 暗号化アルゴリズムは、インターネットでデータ交換を行う際、もっとも広く使われている公開キーアルゴリズムです。このアルゴリズムの名前は、3 人の発明者、Ron Rivest、Adi Shamir、および Leonard Adleman の名前から由来します。RSA アルゴリズムの安全性は、大きな値を因数分解する場合の困難さ (コンピュータの処理能力と時間を必要とすること) に基づいています。RSA は、一般的な公開キーアルゴリズムと比べるとデジタル署名およびキー交換処理の両方に対応していることが特徴です。RSA 暗号アルゴリズムは、Microsoft Base Cryptographic Service Provider (Microsoft Base CSP 1) および Microsoft Enhanced Cryptographic Service Provider (Microsoft Enhanced CSP 2) でサポートされ、Microsoft Internet Explorer を含む多くのソフトウェア製品に組み込まれています。

  • DSA 。デジタル署名のみ。 DSA (Digital Signature Algorithm) は、米国国家安全保障局 (NSA) により開発され、米国国立標準技術研究所 (NIST) によりデジタル署名の連邦情報処理標準 (FIPS) として採用されています。 DSA の安全性は、離散対数計算の困難さを利用します。このアルゴリズムは、デジタル署名処理のみで利用できます (データの暗号化には利用できません)。Microsoft CSP は、DSA アルゴリズムをサポートしています。

  • Diffie-Hellman 。キー交換のみ。 世界ではじめて登場した公開キーアルゴリズムである Diffie-Hellman の名前は、発明者 Whitfield Diffie および Martin Hellman の名前から由来します。Diffie-Hellman の安全性は、有限体での離散対数計算の困難さを利用します。Diffie-Hellman アルゴリズムはキー交換のみに利用できます。Microsoft Base DSS 3 および Diffie-Hellman CSP が Diffie-Hellman アルゴリズムをサポートしています。

一方向ハッシュ アルゴリズム

"ハッシュ値" または "メッセージ ダイジェスト" とも呼ばれるハッシュは、(対称キーや公開キーなどの) キーを利用したアルゴリズムとは異なるデータ変換の方法です。ハッシュとは、ハッシュ アルゴリズムと呼ばれる一方向の数学関数をデータに適用して、あらゆる長さのデータを不可逆性の固定長値に変換することです。生成されるハッシュ値は十分に大きいので、同じハッシュ値を持つ 2 つのデータを見つけるのは非現実的です。送信者はメッセージのハッシュを生成し、暗号化して、メッセージとともに送信します。受信者はメッセージとハッシュを復号化して、受信したメッセージから新しいハッシュを生成します。2 つのハッシュを比較して、一致する場合、メッセージが完全な状態で届いたという可能性が非常に高いということになります。

一般的な一方向ハッシュ関数
次の 2 つのハッシュ関数が一般的に利用されます。

  • MD5 MD5 は Ron Rivest が開発したハッシュ アルゴリズムで、128 ビットのハッシュ値を生成します。MD5 の設計は、インテル CPU に最適化されています。アルゴリズムの要素が折衷しているため、現在ではあまり使用されていません。

  • SHA-1 DSA 公開キー アルゴリズムと同様に、SHA-1 (Secure Hash Algorithm-1) は米国国家安全保障局 (NSA) により開発され、米国国立標準技術研究所 (NIST) によりデータのハッシュ用として連邦情報処理標準 (FIPS) に採用されています。160 ビットのハッシュ値が生成されます。SHA-1 は、デジタル署名を作成する手段として広く使われている一方向ハッシュ アルゴリズムです。

デジタル署名 : 公開キーとハッシュの併用

公開キー テクノロジとハッシュを併用してデジタル署名を作成することができます。デジタル署名は、データの整合性をチェックし、秘密キーの所有を証明できます。

次の手順で、Microsoft Outlook などの PKI を利用可能なアプリケーションでデータの署名および認証を行います。

  • 送信者は、データにハッシュ アルゴリズムを適用し、ハッシュ値を生成します。

  • 送信者は、秘密キーを利用してハッシュ値をデジタル署名に変換します。

  • 送信者は、データ、署名および送信者の証明書を受信者に送信します。

  • 受信者は、受信したデータに対してハッシュ アルゴリズムを適用し、ハッシュ値を生成します。

  • 受信者は、送信者の公開キーと新たに生成したハッシュ値を使用して署名を確認します。

このプロセスは、ユーザーに対して透過的に行われます。

ハッシュ アルゴリズムは、公開キー アルゴリズムより高速にデータを処理することができます。また、データをハッシュすることによって署名するデータの量が減りますので、署名プロセスが高速化されます。署名を作成または確認する際に、公開キー アルゴリズムは 128 ビットまたは 160 ビットのハッシュ値のみを変換する必要があります。署名の作成および署名の確認の詳細は、使用される公開キー アルゴリズムによって異なります。

キー交換 : 対称キーと公開キーの併用

対称キー アルゴリズムは、データを素早く安全に暗号化するには適しています。しかし、データを交換する前に、送信者と受信者が秘密キーを交換する必要があるのが弱点です。対称キー アルゴリズムでデータを暗号化し、公開キー アルゴリズムで秘密キーを交換する方法は、スケーラブルで時間がかかりません。

次の手順で、公開キーを利用したキー交換を行うことができます。

  • 送信者は、受信者の公開キーを入手します。

  • 送信者は、ランダムな秘密キーを生成します。この秘密キーを対称キー暗号で利用します。Windows 2000 では、CryptoAPI 4 を使用して秘密キーを生成します。(CyptoAPI の詳細については、本ホワイトペーパーの「証明書チェーン認証」を参照してください。)

  • 送信者は、秘密 キーと対称キー アルゴリズムを使用して平文データを暗号文データに変換します。

  • 送信者は、受信者の公開キーを使用して秘密キーを暗号化します。

  • 送信者は、暗号化データと暗号化された秘密キーを受信者に送信します。

  • 受信者は、受信者の秘密キーを使用して暗号化された秘密キーを平文データに変換します。

  • 受信者は、平文データの秘密 キーを使用して暗号文データを平文データに変換します。

これらのステップは、Microsoft Outlook などの PKI を利用可能なアプリケーションでユーザーに対して透過的に行われます。

ページのトップへ ページのトップへ

公開キー基盤の概念

公開キー基盤 (PKI) とは、証明書および公開キー、秘密キーを統制、操作する、ポリシー、標準およびソフトウェアのことをあらわします。通常、PKI はデジタル証明書、証明機関 (CA) および電子商取引に関わる者の正当性を確認および認証するその他の機関のことを示します。電子商取引の重要な要素として広く採用されつつありますが、PKI の標準は、現在も発展しつつあります。

この節では、PKI がどのようなものであるか、および PKI を構築するのに必要なサービスについて説明します。この節では、次の PKI の概念を説明します。

  • 証明書

  • 証明機関 (CA)

  • ルート CA 階層

  • 登録

  • 証明書の登録

  • 証明書の失効

  • 証明書チェーン確認

Windows 2000 でどのように公開キー基盤が統合されているかの詳細については、「参考資料」の『Windows 2000 Certificate Services』ホワイトペーパーを参照してください。

証明書

単純に "証明書" とも呼ばれる "公開キー証明書" は、インターネット、エクストラネットおよびイントラネットで認証およびデータの安全なやり取りのために使用されます。証明書の発行者および署名者は、"証明機関" (CA) と呼ばれます。証明機関については、次のセクションで説明します。証明書を発行される者は、証明書のサブジェクトと呼ばれます。

公開キー証明書は、公開キーの値と、対応する秘密キーを所有するサブジェクト (人、デバイスまたはサービス) の身元を結びつけるデジタル署名されたステートメントです。証明書に署名することによって、CA は証明書に含まれている公開キーに対応する秘密キーが、証明書に名前がつけられているサブジェクトの所有であることを証明します。

証明書は、Web ユーザー認証、Web サーバー認証、S/MIME (Secure/Multipurpose Internet Mail Extensions) を使ったセキュリティにより保護された電子メール、IP Security、SSL/TIS (Secure Sockets Layer/Transaction Layer Security) およびコード署名などのさまざまな目的のために発行することができます。Windows 2000 エンタプライズ CA (『Windows 2000 Certificate Services』 ホワイトペーパーに記載されています) が企業で使われている場合、証明書を使って Windows 2000 ドメインにログオンすることができます。CA 同士で証明書を発行して、証明階層を構築することもできます。

サブジェクトとして、ユーザー プリンシパル名 (エンド ユーザー証明書の場合)、ディレクトリ名、電子メール名、DNS 名など、複数の名前を登録することができます。また、証明書には次の情報が含まれます。

  • 証明書の有効期間。

  • CA が一意であると保証する証明書のシリアル番号。

  • 証明書を発行した CA 名と証明書の署名に使われたキー。

  • サブジェクトの身元確認を行う際に CA が従ったポリシーの識別子。(CA ポリシーに関しては後述します。)

  • 証明書に記述されているキー ペア (公開キーと関連付けられた秘密キー) の使用目的。

  • CA が管理および発行する証明書失効リスト (CRL : Certificate Revocation List) の配布ポイント情報。CRL は、CA によって維持、発行される、失効した証明書を一覧にしたドキュメントです。CRL はその整合性を保証するために CA の秘密キーで署名されます。

証明書は、公開キーと、それに関連付けられている秘密キーを所有するエンティティの関係を確立するメカニズムを提供します。現在一般的に使用されている証明書の書式は、ITU-T X.509 v.3 (X.509v3) 国際標準で定義されています。X.509v3 の概略である RFC 2459 は、X.509v3 で定義されているフィールドをより明確にしています。Windows 2000 PKI は、X.509v3 標準を使用します。Windows の証明書は、RFC 2459 の解釈に従ってプログラムされていますが、X.509v3 証明書と呼ばれます。(ITU-T X.509 についての詳細は、『Windows 2000 Certificate Services』ホワイトペーパーを参照してください。)

ITU-T X.509 が唯一の証明書形式ではありません。たとえば、PGP (Pretty Good Privacy) 電子メールは、PGP 特有の証明書を使用します。

証明機関 (CA)

証明機関 (CA) は、個人、コンピュータ、およびその他の要求エンティティに対して証明書を発行することを委託されたエンティティです。CA は、証明書の要求を受理し、CA のポリシーに従い要求者の情報を確認し、秘密キーを使用して証明書にデジタル署名を適用します。次に、CA は PKI 内のセキュリティ資格情報の目的のために、証明書のサブジェクトに証明書を発行します。CA によって公開キーとサブジェクトの関連付けを確認する方法が異なりますので、CA を信頼する前にその CA のポリシー (次に説明します) を理解することが重要です。

CA は、VeriSign などのサードパーティを利用することができます。また、企業内で Windows 2000 証明書サービスをインストールして作成した CA を利用することもできます。各 CA によって、証明書の要求者に対する身元確認方法が異なります。たとえば、Windows 2000 ドメイン アカウント、社員証、運転免許証、公証要求書、または物理的な住所を要求する CA があります。

CA ポリシー
CA は、一連の決まった条件に基づいて要求者に対して証明書を発行します。CA が証明書要求、発行、失効および CRL の発行の際に利用する一連の条件は、"CA ポリシー" と呼ばれます。一般的に、CA は CPS (Certificate Practice Statement) と呼ばれる文書にポリシーを明記します。

CA ポリシーは、Windows 2000 の用語である "グループ ポリシー" とは異なります。グループ ポリシーは、ドメイン アカウントや IntelliMirror などのアプリケーション配布に関する用語です。(Windows 2000 での CA ポリシーと、Windows 2000 PKI でグループ ポリシーがどのような役割を演じるかの詳細については、『Windows 2000 Certificate Services』ホワイトペーパーの「Windows 2000 CA Policies」および「CA Certificate Distribution」を参照してください。)

CA の種類
次の 3 種類の CA 5 があります。

  • 自己署名 CA 自己署名 CA では、証明書で使われる公開キーと証明書を確認するキーが同じです。自己署名 CA は、ルート CA です。ルート CA については後述します。

  • 下位 CA 下位 CA では、証明書の公開キーと証明書を確認するキーが異なります。ある CA がほかの CA に対して証明書を発行するプロセスは "クロス証明" と呼ばれます。

  • ルート CA ルート CA は、特別なクラスの CA です。ルート CA はクライアントに無条件で信頼され、証明階層の最上位にあります。すべての証明書チェーンは、ルート CA で終結します。ルート CA は、証明階層でそれ以上高い位置にある CA がないため、自ら証明書に署名する必要があります。

    すべての自己署名 CA はルート CA です。これは、証明書チェーンが自己署名 CA に到達すると終結するためです。

    Windows 2000 では、ルート CA として自己署名 CA のみを設定することができます。CA をルート CA として設定するかどうかは、企業レベルまたはローカルで個々に決めることができます。

ルート CA 階層

管理者は、ルート CA 証明書から始まる CA の階層を構築することができます。それに対して、中間 CA を追加し、さらに下位 CA に証明書を発行します。証明書チェーンは、CA がエンド エンティティ (ユーザー) に証明書を発行したときに終結します。

ルート CA 証明書は、ルートを変更すると PKI 全体を再構築する必要があるため、もっとも構築にコストがかかります。ルート証明書が変更されると、旧ルート証明書を取り消し、企業内の全クライアントに対して新しいルート証明書を追加する必要があります。さらに、ルートから下位に発行された証明書、および下位からエンド エンティティに発行された証明書も再発行する必要があります。よって、CA 階層を展開する際、小数のルート CA 証明書を長期間使うのがもっとも費用効果の高いソリューションであるといえます。無条件に信頼され、チェーンが終結する場所でもあり、そのため配布に伴って、ネットワークを使わない認証が必要となるため、ルート CA は重要です。つまり、ルート CA 証明書は自己署名形式なので、ルート証明書の信頼性を誰かが保証する必要があります。

CA に対してエンド エンティティの数が多いため、エンド エンティティに証明書を発行する CA は大量のデータに同じ秘密キーを使って署名します。1 つのキーを使ってデータを署名するほど、暗号が攻撃される機会が多くなります。よって、セキュリティを維持するには、エンド エンティティに証明書を発行するオンライン CA は、頻繁に署名キーを交換する必要があります。

中間および (別の下位 CA に対してのみ証明書を発行する) ルート CA に比べて、エンド エンティティに証明書を発行する CA は失効した証明書のリストが肥大化します。これは、CA に対するエンド エンティティの数が多いためです。さらに、従業員が転属したり、退社するなど、エンド エンティティの証明書を取り消す多くの理由が存在します。

CA は、証明書失効リスト (CRL : Certificate Revocation List) と呼ばれる、使用してはならない証明書の一覧を発行します。失効した証明書は、証明書の "有効期間" の終わりまで CRL に一覧され、有効期間が過ぎると CA が一覧から登録を削除します。CRL に一覧が多数あると、CRL のサイズが大きくなり、ダウンロードに時間がかかります。一般的に、ダウンロード時間はダイアルアップ回線などの遅いネットワーク接続でのみ問題になります。CA が CRL のサイズを調整することもできます。サイズを調整する方法として、"パーティション CRL" と呼ばれる CRL を複数の一覧で管理する方法があります。あるいは、発行された証明書の有効期間を短くして、CA が CRL から証明書を削除する間隔を短くする方法があります。(CRL の詳細については、本ホワイトペーパーの「証明書の失効」を参照してください。)

アプリケーションで、証明書の最新の失効状況を把握する必要があります。オンライン CA のみが証明書の現状を発行することができます。オフライン CA から発行された失効状況は、オンラインの場所にネットワークを使わない方法を使って配布する必要があります。

もっともセキュリティが弱いと判断される CA は、オンラインで、物理的なセキュリティが弱く、そして大量の証明書に署名する CA です。そのため、ルートおよび下位 CA を構築する場合、セキュリティと可用性のバランスをとる必要があります。多くの場合、3 階層の CA が推奨されます。これには、オフラインのスタンドアロン ルート CA、オフライン スタンドアロン下位ポリシー CA、およびオンラインの下位発行のエンタプライズ CA が含まれます。

  • オフライン ルート CA CA 階層を設計する際、ルート CA に対して最高のセキュリティを確保します。ルート CA はオフライン状態にして、安全な場所に配置し、小数の証明書のみを発行するようにします。CA とキーを保管室に保管し、最低 2 名のオペレータに保管室へのアクセスを許可します。1 人のオペレータは操作を行い、もう 1 人が操作の監査を行います。(Windows 2000 ネットワークでは、スタンドアロン CA はオフラインで操作できるように設計されています。)

  • オフライン中間 CA ルートの下に 1 つ以上の中間 CA を配置することができます。中間 CA をオフラインにすると、CA の安全性が増します。

  • オンライン発行 CA チェーンの末にある CA は、オンライン状態で広い範囲のクライアントからの要求を処理する必要があります。ルートの下のオンライン CA は、最新の失効状況を発行することもできます。管理者はこの種の CA のキーを頻繁に交換することもできます。これは、新しい証明書を配布する (管理オーバーヘッドの) コストを最低限に抑えることができるためです。下位 CA を自由に処分できるわけではありませんが、下位 CA に対して攻撃を行ってもメリットが少なく、 上位 CA で証明書を失効させることによって簡単に回避することができます。

登録

"登録" とは、サブジェクトが CA に対して自分の存在を知らせるプロセスです。登録は、証明書を要求する明示的な行為、または (スマートカード登録ステーションなどの) ほかの信頼されたエンティティがサブジェクトの代理で行う行為、または (ドメイン管理者などの) 信頼されたソースから受信した情報の結果として行われます。CA に登録されると、CA ポリシーで定義されている条件に合っていれば、サブジェクトに証明書が発行されます。

証明書の登録

"証明書の登録" とは、エンド エンティティが CA から証明書を要求し、入手するために従う手順です。証明書の要求で CA に身元情報を提供します。この情報が発行された証明書の一部になります。CA はオフラインで行われる非自動的なデータ確認 (ネットワークを使わないデータ確認) を必要とする一連の条件に基づいて要求を処理します。要求が無事処理されると、CA はユーザーに証明書を発行します。

Windows 2000 PKI は、Microsoft Enterprise CA および Microsoft スタンドアロン CA、および VeriSign などのサードパーティ CA への証明書の登録をサポートしています。Windows 2000 証明書登録サポートは、媒体に依存しない方法でインプリメントされ、業界標準の Public Key Cryptography Standards (PKCS)-10 証明書要求メッセージと、証明書または証明書チェーンを含む PKCS-7 レスポンスに基づいています。(Windows は更新の場合、PKCS-7 に含まれている PKCS-10 を使います。これにより、Windows は既存の証明書を使って要求にデジタル署名を行うことができます。) 現在、Windows 2000 は RSA および DSA キーと署名をサポートする証明書に対応しています。(PKCS についての詳細は、『Windows 2000 Certificate Services』ホワイトペーパーを参照してください。)

登録機関を介した証明書の登録
特殊な証明書の登録は、登録機関 (RA : Registration Authority) を介して行われ、RA は、証明書の所有者となる者の公開キー、身元、属性の関連付けを CA に対して保証します。RA は、特殊な証明書を持つサブジェクトです。この特殊な証明書は、CA にサブジェクトの身元を証明する情報が含まれています。通常、RA は公開キーとサブジェクトの関連付けを確立し、RA が関連付けを保証している CA に証拠を提供するためにサブジェクトが生成する証明書の要求に署名を行います。簡単に説明すると、RA の使用は管理の委任のようなものです。つまり、CA は、公開キーとエンティティの関連付けを確認する作業を RA に委任します。

RA は、サブジェクトと公開キーの強力な関連付けを確立する証明書を発行します。Windows 2000 では、多くの証明書要求の場合、証明書サービスは要求を行ったユーザーの身元確認の方法としてドメイン認証を使用します。スマートカード ログオン証明書を作成する Windows 2000 スマートカード登録ステーションは、RA により使用されます。RA は、スマートカードの受取人の身元を確認し、ドメイン認証だけの場合よりも強力なサブジェクトと公開キーの関連付けを確立することができます。

証明書の失効

証明書は有効期間が設定されていますが、CA は証明書の失効と呼ばれるプロセスによって有効期間を短縮することができます。CA は、証明書失効リスト(CRL : Certificate Revocation List) と呼ばれる、使用することができなくなった証明書のシリアル番号の一覧を発行します。一般的に、CRL の有効期間は証明書の有効期間に比べると短いです。CA は、CRL の中に証明書が失効した原因を明記することもあります。また、証明書の状態変更が有効となる日付も明記されます。

証明書を失効する原因として、次の理由があります。

  • キーが改ざんされた

  • CA が改ざんされた

  • 認証の情報が変更された

  • 認証が置き換えられた

  • 利用中止

  • 一時中止 (理由コードとして、一回失効した証明書を再度状態を変更できる唯一のものです。証明書の状態が不明の場合便利です。)

CA が証明書を失効させるとは、CA が証明書の通常の有効期間より前に、キー ペアの使用への保証を引き下げるということです。失効された証明書の有効期間が過ぎると、CRL のサイズを減らすため CRL のエントリは削除されます。

署名確認を行う際、アプリケーションはある証明書とキー ペアが信頼できるかどうか CRL をチェックすることができます (アプリケーションには、CryptoAPI に含まれている Microsoft chain verification API を使用してこの手順を実行するものもあります)。信頼できないと判断した場合、アプリケーションは失効の原因や日付が証明書の使用に影響があるかどうかを判断することができます。証明書が署名の確認に使われており、署名の日付が CA による証明書の失効日付より前であれば、署名は有効であると判断できます。

アプリケーションが CRL を入手すると、CRL はクライアントによりキャッシュされ、有効期間が過ぎるまで使用されます。CA が新しい CRL を発行しても、有効な CRL を持っているアプリケーションは現在使用している CRL の有効期間が過ぎるまで新しい CRL を使用しません。

証明書チェーン確認

Microsoft CryptoAPI は、アプリケーションが暗号およびデジタル署名サービスを利用できる標準フレームワークを提供します。CryptoAPI が Windows 95、Windows 98、Windows NT、および Windows 2000 に提供する標準サービスに加えて、サードパーティ ベンダーは、独自の暗号サービスを提供するプラグイン モジュールを開発、販売することができます。

Windows ネットワークでは、新しい証明書の要求を行うと、要求に含まれる情報は、要求を行うプログラムから CryptoAPI に渡されます。 CryptoAPI は、コンピュータにインストールされている CSP (Cryptographic Service Provider) と呼ばれるプログラム、またはコンピュータに接続されている (スマートカードなどの) デバイスに情報を渡します。CSP は、秘密キー交換、デジタル署名、および公開キー認証などの暗号化処理を行う独立したソフトウェア モジュールです。すべての Windows 2000 サービスあるいはアプリケーションは CSP に暗号化処理を要求することができます。

Windows 2000 証明書チェーン構築メカニズムは、ユーザー証明書などのエンド エンティティ証明書から CA ルート証明書までの証明チェーン、つまり証明書パス (証明書チェーン) を構築しようとします。次にそのプロセスを説明します。

  1. 証明書チェーン メカニズムは、存在する場合、証明書の機関キー識別子 (AKI : Authority Key Identifier) フィールドを参照して、システム証明書ストアの親 (発行元) 証明書を検索します。AKI に Issuer (発行元) および SerialNumber (シリアル番号) フィールドの値が含まれている場合、証明書チェーン メカニズムはシステム ストア内で特定の親証明書を検索します。または、key Identifier 値を使用して一致する親証明書を検索します。証明書に Issuer、SerialNumber および Key Identifier フィールドに値が存在しない場合、証明書チェーン メカニズムは IssuerName を使用して一致する親証明書を検索します。

  2. 証明書チェーン メカニズムが上で説明したフィールドに基づいた親証明書がシステム ストアに見つからない場合、証明書の機関情報アクセス (AIA : Authority Information Access) フィールドを参照します。AIA に記述された情報がある場合、記述された HTTP 6 アドレス (https://www.microsoft.com/など) または LDAP 7 (Lightweight Directory Access Protocol) ロケーションから親証明書を取得します。

このプロセスは、ユーザーのエンド エンティティ証明書の上にある各親証明書に対して繰り返され、ローカルの信頼されたルート証明書 ストアにある自己署名証明書で終結します。自己署名証明書は、そのサブジェクトと発行元が同一で、その公開キーで証明書に添付された署名を確認できるものです。

ページのトップへ ページのトップへ

まとめ

暗号は、データの暗号化およびほかのユーザーの身元を確認する手段を提供することによってユーザーを保護します。暗号技術によって、電子的なメッセージの受信者が送信者の身元を確認し、意図する者以外がメッセージを読めないことを保証し、通信中にメッセージが改ざんされていないことを保証することができます。このホワイトペーパーでは、対称キー暗号、公開キー暗号、ハッシュ アルゴリズム、デジタル署名、およびキー交換の暗号の概念を説明しました。

PKI (公開キー基盤) には、電子商取引の関係者の身元を認証するための、証明書、公開キー、および秘密キーを管理する技術と標準が含まれています。このホワイトペーパーでは、証明書、証明機関、ルート CA 階層、登録、証明書の登録、証明書の失効および証明書のチェーン確認について説明しました。

暗号および PKI を理解することによって、Windows 2000 Server オペレーティング システムが提供する証明書サービスがどのようにセキュリティにより保護された環境で電子商取引を可能にするか理解することができます。

参考情報

Windows 2000 Server に関する最新情報については、Windows 2000 Web サイト (https://www.microsoft.com/japan/windows2000/) を参照してください。

参考情報に関しては、次の情報源を参照してください。

『Windows 2000 Certificate Service』ホワイトペーパー (英語)

https://www.microsoft.com/TechNet/prodtechnol/windows2000serv/deploy/2000cert.asp

『MS Windows 2000 公開キー基盤』ホワイトペーパー

https://technet.microsoft.com/ja-jp/library/cc949745.aspx

『Public Key Interoperability』ホワイトペーパー (英語)

https://technet.microsoft.com/library/bb742463.aspx

RSA Laboratories Public-Key Cryptography Standards Web ページ

http://www.rsa.com/rsalabs/node.asp?id=2124

『Applied Cryptography: Protocols, Algorithms, and Source Code in C. 2nd Ed』 (Bruce Schneier 著、John Wiley & Sons、 1995)

この文書に記述されている情報は、発行時点での Microsoft Corporation の最新情報に基づいています。Microsoft の公約として見なされるべきではなく、Microsoft はこの文書の発行後もその情報の信頼性を保証しません。

Microsoft は、明示または黙示を問わず、この文書でいかなる保証もしないものとします。

Microsoft、MSN、Windows、および Windows NT は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。

その他、記載されている会社名および製品名は、各社の商標および登録商標です。

Microsoft Corporation. One Microsoft Way. Redmond, WA 98052-6399 USA

06/00

  1. CSP (Cryptographic Service Provider) は、秘密 キー交換、データのデジタル署名および公開キー認証などの暗号処理を行う独立したソフトウェア モジュールです。
  2. Microsoft Enhanced Cryptographic Provider は、Microsoft Base Cryptographic Provider と同じ機能を提供します。sさらに、より長いキーや追加の暗号化アルゴリズムをサポートすることによって、より強力なセキュリティが提供されます。輸出規制が緩和されたため、この CSP の重要性は低くなりつつあります。
  3. DSS (Digital Signature Security Standard) は、署名アルゴリズムとして DSA を使用し、メッセージ ハッシュ アルゴリズムとして SHA-1 を使用する標準です。
  4. Windows 95、Windows 98、Windows NT、および Windows 2000 において、Microsoft は CryptoAPI (CAPI とも呼ばれます) と呼ばれる特殊な暗号化 API を提供しています。CryptoAPI は、アプリケーションが暗号化およびデジタル証明書サービスを利用できる標準フレームワークを提供します。
  5. これらの汎用的な CA は、Windows 2000 証明書サービス特有のエンタプライズ CA とスタンドアロン CA と異なります。Windows 2000 証明書サービスをインストールすると、証明書の扱いに異なる性格を持つ 2 つの CA ポリシーから 1 つを選びます。この 2 つのポリシーは、"エンタプライズ ポリシー" および "スタンドアロン ポリシー" と呼ばれます。エンタプライズ ポリシーを使用する CA はエンタプライズ CA と呼ばれ、スタンドアロン ポリシーを使用する CA はスタンドアロン CA と呼ばれます。エンタプライズおよびスタンドアロン ポリシーは、Active Directory との連携、認証方法、および Windows 2000 が提供する証明書テンプレートを使用するかどうかの点で異なります。Windows 2000 エンタプライズ CA および Windows 2000 スタンドアロン CA はどちらも自己署名型ルート CA または下位 CA として使用することができます。
  6. HTTP は、WWW (World Wide Web) で情報を交換する際に使用するプロトコルです。
  7. LDAP は、直接 TCP/IP 上で動作するディレクトリ サービス プロトコルです。Active Directory に格納されている情報の追加、変更、削除および情報の検索と抽出を行う主要なディレクトリ アクセス プロトコルです。Active Directory クライアントが Active Directory から情報を抽出したり、情報を管理するには、LDAP を使用する必要があります。Active Directory は、ほかの LDAP 互換クライアント アプリケーションとの互換性を確保するため、LDAP を使用します。必要な権限があれば、あらゆる LDAP 互換クライアント アプリケーションを使用して Active Directory に格納されている情報の閲覧、検索、追加、変更、および削除を行うことができます。

ページのトップへ ページのトップへ