Schannel SSP の技術概要

 

公開日: 2016年8月

対象: Windows Vista、Windows Server 2008、Windows 7、Windows 8.1、Windows Server 2008 R2、Windows Server 2012 R2、Windows Server 2012、Windows 8

この IT プロフェッショナル向けのリファレンス トピックでは、Secure Channel (Schannel) セキュリティ サポート プロバイダー (SSP) の機能と、SSP がトランスポート層セキュリティ (TLS) プロトコルおよび Secure Sockets Layer (SSL) プロトコルを使用して提供する認証サービスについて説明します。

このトピックには、次のセクションが含まれています。

注意

TLS については、「トランスポート層セキュリティ プロトコル」のトピックで説明しています。

DTLS は Schannel SSP に含まれていますが、これについては、「データグラム トランスポート層セキュリティ プロトコル」のトピックで説明しています。

TLS、SSL、Schannel の機能

ネットワークを管理する際に対応する問題の 1 つとして、アプリケーション間で信頼できないネットワークを経由して送信されるデータのセキュリティを確保することが挙げられます。 TLS/SSL を使えば、サーバーとクライアント コンピューターを認証できるだけでなく、認証される当事者間のメッセージを暗号化できます。

TLS プロトコル、SSL プロトコル、DTLS プロトコル、および Private Communications Transport (PCT) プロトコルは、公開キーの暗号化に基づいています。 Schannel 認証プロトコル スイートは、これらのプロトコルを備えています。 すべての Schannel プロトコルでは、クライアント/サーバー モデルが使用されています。 サポートされているプロトコルの一覧については、「サポートされる暗号スイートおよび Schannel SSP のプロトコル」を参照してください。

認証プロセスでは、TLS/SSL クライアント コンピューターが TLS/SSL サーバーにメッセージを送信すると、サーバーが応答してそのサーバー自体を認証するための適切な情報を返します。 クライアントとサーバーは、さらにセッション キーの交換を実行し、認証のやり取りが終了します。 認証が完了すると、サーバーとクライアントの間で SSL 通信を開始できるようになります。その際、認証プロセス中に確立されている対称暗号化キーが使用されます。

サーバーがクライアントに対して認証される場合、TLS/SSL はドメイン コントローラーや、Active Directory ドメイン サービスなどのデータベース内にサーバーのキーを格納する必要はありません。 クライアントが、信頼されたルート証明機関 (CA) 証明書を使用してサーバーの資格情報が有効かどうかを確認します。この証明書は、Windows Server オペレーティング システムをインストールするときに読み込まれます。 そのため、サーバーによるユーザー認証が不要な場合、ユーザーは、サーバーとのセキュリティで保護された接続を作成するためにアカウントを確立する必要はありません。

TLS と SSL の歴史と標準化

SSL は、World Wide Web 経由でのトランザクションをセキュリティで保護する目的で、1994 年に Netscape Communications Corporation によって開発されました。 その後間もなく、インターネット技術標準化委員会 (IETF) が、同じ機能を提供する標準のプロトコルの開発に着手します。 この委員会が開発の基礎として使用したのは SSL 3.0 で、これが TLS プロトコルへと進化しました。 Windows Server 2003 から開始された TLS プロトコルの実装は、IETF RFC データベースに登録されている以下の仕様で定義された仕様に厳密に従っています。

TLS と SSL は、Web ブラウザーと Web サーバーの間でのインターネット トランザクションにセキュリティで保護された HTTP (HTTPS) を提供するプロトコルとして、最も広く認められています。 TLS/SSL は、ファイル転送プロトコル (FTP)、ライトウェイト ディレクトリ アクセス プロトコル (LDAP)、簡易メール転送プロトコル (SMTP) など、その他のアプリケーション レベルのプロトコルでも使用できます。 TLS/SSL では、World Wide Web などのネットワーク上で、サーバー認証、クライアント認証、データの暗号化、およびデータの整合性確保を実現します。

TLS と SSL との違い

SSL 3.0 と各バージョンの TLS との間には、わずかな違いはありますが、このリファレンス ガイドでは、このプロトコルを TLS/SSL と呼びます。

注意

TLS と SSL 3.0 には互換性はありませんが、これらの違いはわずかです。 クライアントとサーバーで同じプロトコルがサポートされていない場合、クライアントとサーバーは正常に通信するために、共通のプロトコルをネゴシエートする必要があります。

SSL は増大するセキュリティへの攻撃に対して脆弱であったため、IETF は、インターネット標準となる安全性の高いプロトコルを開発しました。それが、TLS です。 次の一覧では、TLS の機能強化について説明します。この機能強化は、信頼されていないネットワークでの通信をセキュリティで保護する SSL の機能を高めています。

  • SSL メッセージ認証コード (MAC) アルゴリズムに代わってキー付きハッシュ メッセージ認証コード (HMAC) アルゴリズムを採用しています。

  • TLS は標準化され、インターネット標準になっています。一方 SSL にはさまざまなバリエーションがあります。

  • TLS には、追加の警告メッセージが備わっています。

  • SSL にはルート CA によって発行された (またはルート CA にチェーンされた) 証明書が必要です。 TLS を使用する場合は、必ずしもルート CA にチェーンされた証明書を含める必要はありません。 中間証明機関を使用できます。

  • Fortezza アルゴリズムは、パブリック レビューの対象になっていないため、TLS の RFC には含まれません。

TLS と SSL の利点

TLS/SSL は、他のクライアントとサーバーの認証方法に比べて、数多くの利点があります。 以下の表では、その利点について説明します。

特長

説明

強力な認証、メッセージのプライバシーと整合性

TLS/SSL では、暗号化を使用して、送信されるデータをセキュリティで保護できます。 TLS/SSL は、サーバーを認証し、必要に応じてクライアントを認証して、セキュリティで保護された通信を行っているシステムの身元を証明します。

また、整合性チェックの値を使用してデータの整合性も確保します。

TLS/SSL セキュリティ プロトコルを使用すると、データの公開に対する保護だけでなく、なりすまし攻撃、中間者攻撃やバケツ リレー攻撃、ロールバック攻撃、リプレイ攻撃などに対する保護にも役立ちます。

相互運用性

TLS と SSL は、ほとんどの Web ブラウザー、オペレーティング システムおよび Web サーバーで動作します。 また多くの場合、ニュース リーダー、LDAP サーバーやその他のさまざまな商用アプリケーションに統合されています。

アルゴリズムの柔軟性

TLS/SSL では、セキュリティで保護されたセッション中に使用される認証メカニズム、暗号化アルゴリズム、およびハッシュ アルゴリズムのオプションを提供します。

容易な展開

多くのアプリケーションが、Windows Server オペレーティング システムで透過的に TLS と SSL を使用します。 Internet Explorer およびインターネット インフォメーション サービス (IIS) を使用する場合は、閲覧の際のセキュリティを強化するために TLS を使用できます。 既にサーバー証明書がサーバーにインストールされている場合は、Internet Explorer でチェック ボックスをオンにするだけで使用できます。

使いやすさ

TLS/SSL は、アプリケーション層の下に実装されるため、その処理のほとんどは、クライアント コンピューターにまったく認識されません。 これにより、クライアントは通信のセキュリティをほとんど認識しなくても、またはまったく認識しなくても、攻撃者から保護されます。

TLS と SSL の制限事項

次の表で説明するように、TLS/SSL の使用には 2 つの制限があります。

制限

説明

プロセッサの負荷の増加

これは、TLS/SSL を実装する際の最も重要な制限です。 暗号化のなかでも特に公開キーの操作は、CPU を集中的に使用します。 その結果、SSL を使用している場合に、パフォーマンスが変動します。 どの程度パフォーマンスが低下するのかを把握する方法はありません。 パフォーマンスは、接続を確立する頻度と接続の持続時間に応じて変動します。 TLS は、接続を確立するときに、最も多くリソースを消費します。

管理オーバーヘッド

TLS/SSL の環境は複雑であり、メンテナンスが必要です。 システム管理者は、システムを構成して、証明書を管理する必要があります。

一般的な TLS と SSL のシナリオ

一般的には、TLS/SSL はインターネットをより安全に閲覧するために Web ブラウザーで使用するプロトコルであると考えられています。 その一方で TLS/SSL は、認証とデータの保護が必要なあらゆる場面に使用できる汎用プロトコルでもあります。 実際に、セキュリティ サービス プロバイダー インターフェイス (SSPI) を使用してこのプロトコルにアクセスできるため、ほぼすべてのアプリケーションで使用できます。 TLS/SSL の機能を活用できるよう変更が進められているアプリケーションは、数多くあります。 次の表では、TLS/SSL の使用方法の例を示します。

シナリオ

説明

電子商取引 Web サイトとの SSL トランザクション

この状況は、ブラウザーと Web サーバー間での SSL の一般的な使用例を表しています。 たとえば、得意客がクレジット カード番号を提供する必要がある電子商取引ショッピング サイトがあるとします。 このプロトコルではまず、Web サイトの証明書が有効であることを確認し、その後、暗号化テキストとしてクレジット カード情報を送信します。 この種類のトランザクションでは、サーバーの証明書の発行元が信頼できる場合は、サーバーに対する認証のみが行われます。 TLS/SSL は、注文フォームなど、データのトランザクションが発生する Web ページに対して有効にする必要があります。

SSL で保護された Web サイトにアクセスするクライアントの認証

クライアントとサーバーには、相互に信頼された証明機関 (CA) からの証明書が必要です。 Schannel SSP を使用すると、Windows Server オペレーティング システム上のユーザーまたはコンピューターのアカウントに、1 対 1 または多対 1 の単位でクライアント証明書をマップできます。 さらに、[Active Directory ユーザーとコンピューター] を使用してクライアント証明書を管理できます。また、パスワードを指定しなくても、Web サイトに対してユーザーを認証できます。

多対 1 のマッピングには、いくつかの用途があります。 たとえば、複数のユーザーに機密資料へのアクセスを付与する場合は、グループを作成します。そのグループにユーザーの証明書をマップし、資料に必要なアクセス許可をグループに付与できます。

1 対 1 のマッピングでは、サーバーは、クライアントの証明書のコピーを所有し、ユーザーがクライアント コンピューターからサインインするときに、証明書が同じであるかどうかを確認します。 通常、この 1 対 1 のマッピングは、個人的な資料に使用します。たとえば、銀行の Web サイトのように、自分の口座を表示する権限がその人にだけ与えられる場合です。

リモート アクセス

在宅勤務は、Schannel SSP の一般的な用途です。 このテクノロジを使用すると、ユーザーはリモートで Windows ベースのシステムやネットワークにサインインするときに、認証とデータ保護を利用できます。 ユーザーは、自宅から、または出張中に、より安全に電子メールやエンタープライズ アプリケーションにアクセスできます。これにより、インターネット上のユーザーに情報が漏れるリスクが低減されます。

SQL Server へのアクセス

SQL Server を実行しているサーバーにクライアント コンピューターが接続する場合は、クライアント コンピューターの認証を要求できます。 クライアントまたはサーバーを構成して、両者の間で転送されるデータの暗号化を要求できます。 財務データベースや医療データベースなどのきわめて機密性の高い情報を保護して、未承認のアクセスや、ネットワークに関する情報の漏えいを防ぐことができます。

電子メール

Exchange Server を使用する場合は、Schannel SSP を使用すると、イントラネットまたはインターネット上のサーバーから別のサーバーにデータが移動するときに、データの保護に役立ちます。 エンド ツー エンド全体に対するセキュリティには、S/MIME (Secure/Multipurpose Internet Mail Extensions) が必要な場合があります。 ただし、サーバー間のデータ交換でデータを保護しやすくなると、企業はインターネットを使用して、その企業、子会社、およびパートナー内の部門間で電子メールを安全に転送できます。 これは、S/MIME を使用するかどうかに関係なく実現できます。

Schannel SSP のアーキテクチャ

Windows Server オペレーティング システムでは、Schannel 認証プロトコル スイートに TLS が含まれています。 次の図は、これらおよびその他のテクノロジのどの部分に Schannel SSP が適合するのかを示しています。 クライアント アプリケーションまたはサーバー アプリケーションは、Secur32.dll を使用し、SSPI 呼び出しを介してローカル セキュリティ機関サブシステム サービス (LSASS) と通信します。

Schannel SSP のアーキテクチャ

Schannel Architecture

次の表では、TLS/SSL に関与する要素の説明を一覧で示します。

TLS と SSL の認証で使用されるセキュリティ サブシステムの要素

要素

説明

Schannel.dll

TLS/SSL 認証プロトコル このプロトコルは、安全性の低いクリア チャネルではなく、暗号化されたチャネルで認証を提供します。

Lsasrv.dll

LSASS は、セキュリティ ポリシーを適用し、ローカル セキュリティ機関のセキュリティ パッケージ マネージャーとして機能します。

Netlogon.dll

TLS サービスにおいては、Netlogon サービスは SSL チャネルを介してドメイン コントローラーにユーザーの証明書情報を渡し、ユーザー証明書をユーザー アカウントにマップします。

Secur32.dll

SSPI を実装する複数の認証プロバイダー。

この認証プロトコル スイートは、Schannel SSP によって実現しています。その Schannel SSP は、Windows Server オペレーティング システムにセキュリティ サービスを提供する SSPI アプリケーション プログラミング インターフェイス (API) によって支えられています。

Microsoft セキュリティ サポート プロバイダー インターフェイス (SSPI) は、Windows オペレーティング システムにおける認証の基盤です。 つまり、認証を必要とするアプリケーション サービスとインフラストラクチャ サービスは、SSPI を使用して認証を提供します。 クライアントとサーバー間の通信の安全性を高めるために、クライアントとサーバーを認証する必要がある場合は、現在使用中のネットワーク プロトコルに関係なく、認証の要求が SSPI にルーティングされ、SSPI が認証処理を完了します。 SSPI は、Generic Security Service API (GSSAPI) の実装です。 GSSAPI の詳細については、IETF RFC データベースの次の RFC を参照してください。

すべての SSP 向けの SSPI のアーキテクチャと、Kerberos プロバイダーがこのアーキテクチャに適合するしくみについては、「Security Support Provider Interface Architecture」を参照してください。

電子メールや Web ページで提供されている個人情報などの Web 対応サービスにアクセスするために、Schannel SSP を使用できます。 Schannel SSP では、公開キー証明書を使用して利用者を認証します。 Schannel SSP は、スイートとして 4 つの認証プロトコルを備えています。 利用者を認証するときに、Schannel SSP は、次の優先順位に従って 4 つのプロトコルから 1 つを選択します。

  1. TLS バージョン 1.2

  2. TLS バージョン 1.1

  3. TLS バージョン 1.0

  4. SSL バージョン 3.0

Schannel SSP は、クライアントとサーバーがサポートできる最も優先順位の高い認証プロトコルを選択します。 たとえば、サーバーが 4 つの Schannel プロトコルをすべてサポートしていて、クライアント コンピューターが SSL 3.0 しかサポートしていない場合は、Schannel プロバイダーは認証に SSL 3.0 を使用します。

クライアント認証のための信頼された発行者の管理

Windows Server 2012 および Windows 8 以前では、Schannel SSP (HTTP.sys と IIS を含む) を使用するアプリケーションまたはプロセスは、クライアント認証のためにサポートしている信頼された発行者の一覧を提供することができました。 この情報は、証明書信頼リスト (CTL) を介して提供されました。

SSL または TLS を使用したクライアント コンピューターの認証が必要な場合は、信頼された証明書の発行者の一覧を送信するようにサーバーを構成できます。 この一覧には、サーバーが信頼する証明書発行者のセットが含まれます。これが、複数の証明書が存在する場合にクライアント コンピューターがどのクライアント証明書を選択するかについてのヒントとなります。 さらに、構成されている信頼された発行者の一覧に対して、クライアント コンピューターがサーバーに送信する証明書チェーンを検証する必要があります。

Windows Server 2012 および Windows 8 では、基になる認証プロセスに変更が加えられ、次のようになりました。

  1. CTL ベースの信頼された発行者の一覧の管理はサポートされなくなりました。

  2. 信頼された発行者の一覧を送信する動作は既定でオフに設定されます。 SendTrustedIssuerList レジストリ キーの既定値は、1 ではなく 0 です (既定でオフ)。

  3. 以前のバージョンの Windows オペレーティング システムとの互換性は維持されます。

これにより、Windows PowerShell プロバイダーの既存の証明書管理コマンドレットや certutil.exe などのコマンドライン ツールを使用して、管理がしやすくなりました。 Schannel SSP でサポートされる信頼された証明機関の一覧の最大サイズ (16 KB) は Windows Server 2008 R2 の場合と同じですが、Windows Server 2012 ではクライアント認証の発行者のための新しい専用の証明書ストアが用意されるため、関係のない証明書はクライアント/サーバー メッセージに含まれません。

しくみ

信頼された発行者の一覧は証明書ストアを使用して構成されます。その 1 つは既定のグローバル コンピューターの証明書ストア、もう 1 つはサイトごとにオプションの証明書ストアです。 一覧のソースは、次のように決定されます。

  • サイトに対して特定の資格情報ストアが構成されている場合は、それがソースとして使用されます。

  • アプリケーションで定義されたストアに証明書が存在しない場合、Schannel により、ローカル コンピューター上のクライアント認証の発行者ストアが調べられます。 証明書が存在する場合は、Schannel はソースとしてそのストアを使用します。

  • グローバル ストアとローカル ストアのどちらにも証明書が含まれていない場合、Schannel SSP は、信頼されたルート証明書機関ストアを信頼された発行者の一覧のソースとして使用します (これは、Windows Server 2008 R2 でも同じ動作です)。

可能性の高い証明書の発行者名の一覧を構築して、証明書を選択する際のヒントをエンド ユーザーに提供できます。 この一覧は、グループ ポリシーを使って構成できます。

信頼されたルート証明書機関ストアにルート (自己署名) と証明機関 (CA) の両方の発行者証明書が含まれている場合、既定で CA 発行者証明書のみがサーバーに送信されます。

信頼された発行者の証明書ストアを使用するように Schannel を構成する方法

Schannel SSP では、前に説明したように、既定でストアを使用して、信頼された発行者の一覧を管理します。 引き続き Windows PowerShell プロバイダーの既存の証明書管理コマンドレットや certutil.exe などのコマンドライン ツールを使用して、証明書を管理できます。

Windows PowerShell プロバイダーを使用して証明書を管理する方法の詳細については、Windows での AD CS 管理コマンドレットに関するページを参照してください。

証明書ユーティリティを使用して証明書を管理する方法の詳細については、certutil.exe に関するページを参照してください。

Schannel の資格情報について定義されるデータ (アプリケーションによって定義されるストアを含む) の詳細については、SCHANNEL_CRED 構造 (Windows) に関するページを参照してください。

クライアント認証の発行者ストアを使用するためのアプリケーションまたは機能の構成

一部のテクノロジは、既定では、クライアント認証の発行者ストアを使用しません。 このような場合に、ストアを使用するようテクノロジを構成する必要があります。

たとえば、Web サーバーの場合、Windows HTTP サーバー スタックを実装する HTTP.sys は、既定ではクライアント認証の発行者のストアを使用するよう構成されていません。

クライアント認証の発行者のストアを使用するよう HTTP.sys を構成するには、次のコマンドを使用できます。

netsh http add sslcert ipport=0.0.0.0:443 certhash=GUID hash value appid={GUID application identifier}  sslctlstorename=ClientAuthIssuer

サーバー上の certhash と appid の値を検索するには、次のコマンドを使用できます。

netsh http show sslcert

信頼モードの既定値

Schannel SSP では、3 種類のクライアント認証信頼モードがサポートされます。 信頼モードは、クライアントの証明書チェーンの検証を実行する方法を制御します。 信頼モードは、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel の下にある REG_DWORD "ClientAuthTrustMode" によって制御されるシステム全体の設定です。

信頼モード

説明

0

コンピューター信頼 (既定値)

信頼された発行者の一覧内の証明書によってクライアント証明書が発行される必要があります。

1 で保護されたプロセスとして起動されました

排他的ルート信頼

呼び出し元が指定した信頼された発行者ストアに含まれているルート証明書に、クライアント証明書をチェーンする必要があります。 さらに、信頼された発行者の一覧から証明書を発行する必要もあります。

2 で保護されたプロセスとして起動されました

排他的 CA 信頼

呼び出し元が指定した信頼された発行者ストアに含まれている中間 CA 証明書またはルート証明書に、クライアント証明書をチェーンする必要があります。

信頼された発行者の一覧の構成の問題が原因で発生する認証エラーの詳細については、Microsoft サポート技術情報の記事 280256 を参照してください。

TLS と SSL の依存関係

TLS と SSL は、適切に機能するために、いくつかの関連するテクノロジとリソースを使用します。 次の表では、これらのテクノロジおよびリソースについて説明し、どのように TLS/SSL 認証と関連するかについて要約しています。

条件

説明

オペレーティング システム

TLS と SSL の認証は、Windows Server オペレーティング システムおよび Windows クライアント オペレーティング システムに組み込まれているクライアントの機能を使用します。 クライアントまたはサーバーが TLS/SSL をサポートしていないオペレーティング システムを実行している場合は、TLS/SSL 認証を使用できません。

TCP/IP ネットワーク接続

TLS や SSL の認証を実行するには、クライアントとターゲット サーバーの間に TCP/IP ネットワーク接続が必要です。 詳細については、「TCP/IP」を参照してください。

Active Directory ドメイン

サーバー アプリケーションにクライアント認証が必要な場合、Schannel SSP は、クライアント コンピューターによって指定された証明書をユーザー アカウントに自動的にマップしようとします。 クライアント証明書を使用してサインインするユーザーを認証するには、手動でマッピングを作成します。これにより、証明書の情報が Windows ユーザー アカウントに関連付けられます。 証明書のマッピングを作成して有効にすると、そのユーザーは、クライアントがクライアント証明書を提示するたびに、サーバー アプリケーションによって Windows オペレーティング システムの適切なユーザー アカウントに自動的に関連付けられます。 証明書のマッピングを使用する場合は、Active Directory ドメイン サービスのユーザー アカウントを使用する必要があります。 詳細については、「Active Directory ドメイン サービスの概要」を参照してください。

信頼された証明機関

認証はデジタル証明書を使用するため、証明機関 (CA) (Verisign や Active Directory 証明書サービスなど) は TLS/SSL で重要な役割を果たします。 CA は、証明書の要求元の身元 (通常はユーザーまたはコンピューター) を確認し、要求元に証明書を発行する、Microsoft 以外の相互に信頼された証明書です。 証明書は、要求元の ID を公開キーにバインドします。 CA は、必要に応じて証明書を更新したり、失効させたりします。 たとえば、クライアントにサーバーの証明書が提示された場合、クライアント コンピューターは、クライアントの信頼された CA の一覧を使って、サーバーの CA を照合しようとします。 発行元の CA が信頼されていれば、クライアントによって、証明書が本物であり、改ざんされていないことが確認されます。 CA の詳細については、Active Directory 証明書サービスの概要に関するページを参照してください。

関連項目

Schannel セキュリティ サポート プロバイダーのテクニカル リファレンス