Winsock Secure Socket Extensions

Winsock のセキュリティで保護されたソケット拡張機能を使用すると、ソケット アプリケーションはネットワーク経由のトラフィックのセキュリティを制御できます。 これらの拡張機能を使用すると、アプリケーションはネットワーク トラフィックのセキュリティ ポリシーと要件を提供し、適用されたセキュリティ設定に対してクエリを実行できます。 たとえば、アプリケーションでは、これらの拡張機能を使用して、アプリケーション レベルのアクセス チェックを実行するために使用できるピア セキュリティ トークンのクエリを実行できます。

セキュリティで保護されたソケット拡張機能は、IPsec やその他のセキュリティ プロトコルによって提供されるサービスを Winsock フレームワークと統合することを目的としています。 Windows Vista より前の Windows Server 2003 および Windows XP では、ローカル ポリシーとドメイン ポリシーを使用して管理者によって IPsec が構成されています。 Windows Vista では、セキュリティで保護されたソケット拡張機能を使用すると、アプリケーションはソケット レベルでネットワーク トラフィックのセキュリティを完全または部分的に構成および制御できます。

アプリケーションでは、IPsec 管理、Windows フィルタリング プラットフォーム、セキュリティ サポート プロバイダー インターフェイス (SSPI) などのパブリック API を使用して、ネットワーク トラフィックを既にセキュリティで保護できます。 ただし、これらの API を使用すると、アプリケーションの開発が困難になり、構成とデプロイがより困難になる可能性があります。 Winsock のセキュリティで保護されたソケット拡張機能は、Winsock が複雑さの大部分を処理できるようにすることで、セキュリティで保護されたネットワーク トラフィックを必要とするネットワーク アプリケーションの開発を簡素化するように設計されています。

これらのセキュリティで保護されたソケット拡張機能は、Windows Vista 以降で使用できます。

Secure Socket Functions

セキュリティで保護されたソケット拡張関数は次のとおりです。

注意

セキュリティで保護されたソケット関数は現在、IPsec プロトコルのみをサポートしており、Windows Vista 以降で使用できます。

 

セキュリティで保護されたソケット関数で使用される構造体と列挙型は次のとおりです。

セキュア ソケット関数は、通常のアプリケーションで使用するのが簡単であり、セキュリティを高度に制御する必要があるアプリケーションに十分な柔軟性を備えています。 これらの関数を使用すると、基になるセキュリティ メカニズムをアプリケーションから非表示にすることができます。 アプリケーションでは、一般的なセキュリティ要件を指定し、管理者が要件をサポートするために使用されるセキュリティ プロトコルを制御できます。 これらの関数を拡張して他のセキュリティ プロトコルを追加することはできますが、現在、セキュリティで保護されたソケット関数と統合されるのは IPsec のみです。

WSASetSocketSecurity 関数を使用すると、接続が確立される前に、アプリケーションでセキュリティを有効にし、セキュリティ設定を適用できます。

WSASetSocketPeerTargetName 関数を使用すると、アプリケーションでピア エンティティに対応するターゲット名を指定できます。 選択したセキュリティ プロトコルは、ピアを認証するときにこの情報を使用します。 この機能は、信頼できる中間者攻撃に関する懸念に対処します。

WSADeleteSocketPeerTargetName 関数を使用して、ソケットの以前に指定したピア名を削除します。

接続が確立されると、 WSAQuerySocketSecurity 関数を使用すると、アプリケーションは接続のセキュリティ プロパティに対してクエリを実行できます。これには、ピア アクセストークンまたはコンピューター アクセス トークンを含めることができます。

接続が確立されると、 WSAImpersonateSocketPeer 関数を使用すると、アプリケーションは、アプリケーション レベルの承認を実行するために、ソケット ピアに対応するセキュリティ プリンシパルを偽装できます。

WSARevertImpersonation を使用すると、アプリケーションはソケット ピアの偽装を終了できます。

Secure Socket アーキテクチャ

winsock セキュア ソケット拡張機能の基本的なアーキテクチャ

  • アプリケーションは、セキュリティで保護されたソケット関数を呼び出して、ソケットのセキュリティ設定を設定またはクエリします。
  • セキュリティで保護されたソケット関数は、Windows Vista 以降で使用できる dwIoControlCode パラメーターの新しく定義された値を使用して WSAIoctl 関数の呼び出しをラップするタイプ セーフな拡張関数のセットです。 これらの IOCTL は、ネットワーク スタックによって処理されます。
  • ネットワーク スタックは、呼び出しをエンドポイント ハンドルと共に Application Layer Enforcement (ALE) に転送します。 WSADeleteSocketPeerTargetNameWSASetSocketPeerTargetName、および WSASetSocketSecurity 関数の場合、ALE はローカル エンドポイントでアプリケーションの設定を構成します。 WSAQuerySocketSecurity 関数の場合、ALE は、該当するローカルおよびリモート エンドポイントから要求された情報を読み取ります。
  • アプリケーション層の適用 (ALE) では、ソケット イベントに基づいて、Windows フィルタリング プラットフォームを使用して、セキュリティで保護されたソケット アーキテクチャのポリシーが適用されます。 詳細については、「 Windows フィルタリング プラットフォームアプリケーション層の適用 (ALE)」を参照してください。

Windows フィルタリング プラットフォームについて

Secure Socket Extensions を使用した高度な Winsock サンプル

アプリケーション層の適用 (ALE)

IPsec 構成

IPsec 関数

Secure Winsock プログラミング

セキュリティ サポート プロバイダー インターフェイス (SSPI)

Secure Socket Extensions の使用

Windows フィルタリング プラットフォーム

Windows フィルタリング プラットフォーム API 関数