Security Support Provider Interface

Security Support Provider Interface (SSPI) は、Microsoft Windowsにおいてセキュリティに関する様々な機能を提供するAPIである。

WindowsではSecurity Support Provider (SSP) と呼ばれるアプリケーションにセキュリティ機能を提供するダイナミックリンクライブラリ (DLL) が実装されており、SSPIはこれらSecurity Support Providerの共通インタフェースとして機能する。

Security Support Provider 
Windowsでは以下のSecurity Support Providerが提供されている。

 （Windows NT 3.51より） (msv1_0.dll) - Windows 2000以前におけるクライアント-サーバドメインでのNTLM チャレンジアンドレスポンス認証と、非ドメイン認証 (SMB/CIFS)
 Kerberos（Windows 2000より。Windows VistaでAESに対応） (kerberos.dll) - Windows 2000以降で推奨されるクライアント-サーバドメイン相互認証 
 （Windows 2000より）(secur32.dll) - ケルベロス認証とNTLM認証を選択する。Negotiate SSPによってシングルサインオン（） が提供される。Windows 7以降では、クライアント・サーバの双方で利用可能なカスタムSSPを認証に利用できるようにするNEGOExtsが導入された。
 Secure Channel (SChannel) (schannel.dll) - Windows 2000より導入され、Windows VistaからAESおよび楕円曲線暗号に対応した。TLS/SSLでの暗号化機能を提供する。
 （廃止済）およびMicrosoft TLS/SSL実装 - TLS/SSLにおける公開鍵暗号機能を提供。Windows 7以降でTLS 1.2に対応
 Digest SSP（Windows 2000より）(wdigest.dll) - HTTP認証およびSASLを提供
 Credential (CredSSP)（Windows XP SP3より）(credssp.dll) - リモート デスクトップ サービスのための認証機能を提供
 Distributed Password Authentication (DPA) （Windows 2000より）(msapsspc.dll) - 公開鍵証明書による認証機能を提供
 Public Key Cryptography User-to-User (PKU2U)（Windows 7より）(pku2u.dll) - ドメイン外のシステム間でのピアツーピア認証を提供

GSSAPIとの比較 

SSPIは、のプロプライエタリな変種であり、Windows独自のデータタイプや拡張が追加されている。

Windows NT 3.51およびWindows 95におけるNTLMSSPがその始まりであり、Windows 2000では、ケルベロス認証 (RFC 1964) が追加された。SSPIでのケルベロス認証で用いられるトークンはGSSAPIのものとほぼ互換性があり、WindowsのSSPIクライアントはWindows以外のGSSAPIクライアントと相互に認証を行うことが可能である。

IETFによって定義されたGSSAPIとWindowsのSSPIの間には、アクセストークンの  "impersonation" に関して大きな違いが存在する。このモデルでは、クライアントが「完全な」特権を持っていれば、サーバはその特権により操作を行うことが可能である。すなわち、サービスアカウントの特権レベルは接続/認証されたクライアントに依存する。GSSAPIモデルでは、サーバがサービスアカウントで実行されている場合、アカウントの特権を上昇させることができず、すべてのアクセス制御を有効にする必要がある。このようなセキュリティ上問題のある実装は、WindowsのSSPIではVista以降で解消されている。

脚注

外部リンク 
 SSPI(Windows)
 SSPI Information and Win32 samples

マイクロソフトのAPI
Transport Layer Security
Windowsのセキュリティ技術
長大な項目名