Winsock 安全套接字扩展
Winsock 的安全套接字扩展允许套接字应用程序控制其流量通过网络的安全性。 这些扩展允许应用程序为其网络流量提供安全策略和要求,并查询应用的安全设置。 例如,应用程序可以使用这些扩展来查询可用于执行应用程序级别访问检查的对等安全令牌。
安全套接字扩展旨在将 IPsec 提供的服务和其他安全协议与 Winsock 框架集成。 在 Windows Vista 之前,在 Windows Server 2003 和 Windows XP 上,管理员已通过本地和域策略配置 IPsec。 在 Windows Vista 上,安全套接字扩展允许应用程序在套接字级别完全或部分配置和控制其网络流量的安全性。
应用程序已经可以使用公共 API 来保护网络流量,例如 IPsec 管理、Windows 筛选平台和安全支持提供程序接口 (SSPI) 。 但是,使用这些 API 可能会使应用程序更难开发,并可能使配置和部署更加困难。 Winsock 安全套接字扩展旨在通过让 Winsock 处理大部分复杂性来简化需要安全网络流量的网络应用程序的开发。
这些安全套接字扩展在 Windows Vista 及更高版本上可用。
安全套接字函数
安全套接字扩展函数如下所示:
- WSADeleteSocketPeerTargetName
- WSAImpersonateSocketPeer
- WSAQuerySocketSecurity
- WSARevertImpersonation
- WSASetSocketPeerTargetName
- WSASetSocketSecurity
注意
安全套接字功能目前仅支持 IPsec 协议,可在 Windows Vista 及更高版本上使用。
安全套接字函数使用的结构和枚举如下所示:
- SOCKET_PEER_TARGET_NAME
- SOCKET_SECURITY_PROTOCOL
- SOCKET_SECURITY_QUERY_INFO
- SOCKET_SECURITY_QUERY_TEMPLATE
- SOCKET_SECURITY_SETTINGS
- SOCKET_SECURITY_SETTINGS_IPSEC
安全套接字功能对于普通应用程序使用简单,对于需要高度控制其安全性的应用程序,它们足够灵活。 这些函数使基础安全机制对应用程序保持隐藏成为可能。 应用程序可以指定一般安全要求,并允许管理员控制用于支持这些要求的安全协议。 虽然可以扩展这些函数以添加其他安全协议,但目前只有 IPsec 与安全套接字函数集成。
WSASetSocketSecurity 函数允许应用程序在建立连接之前启用安全性并应用安全设置。
WSASetSocketPeerTargetName 函数允许应用程序指定与对等实体对应的目标名称。 所选安全协议在对等方进行身份验证时将使用此信息。 此功能解决了对受信任的中间人攻击的担忧。
WSADeleteSocketPeerTargetName 函数用于删除以前为套接字指定的对等名称。
建立连接后, WSAQuerySocketSecurity 函数允许应用程序查询连接的安全属性,其中可能包括对等访问或计算机访问令牌。
建立连接后, WSAImpersonateSocketPeer 函数允许应用程序模拟与套接字对等方对应的安全主体,以便执行应用程序级授权。
WSARevertImpersonation 允许应用程序终止套接字对等方的模拟。
安全套接字体系结构
- 应用程序调用安全套接字函数来设置或查询套接字的安全设置。
- 安全套接字函数是一组类型安全扩展函数,这些函数使用 Windows Vista 及更高版本上可用的 dwIoControlCode 参数的新定义值包装对 WSAIoctl 函数的调用。 这些 IOCTL 由网络堆栈处理。
- 网络堆栈会将调用定向到 应用程序层强制 (ALE) 以及终结点句柄。 对于 WSADeleteSocketPeerTargetName、 WSASetSocketPeerTargetName 和 WSASetSocketSecurity 函数,ALE 将在本地终结点上配置应用程序的设置。 对于 WSAQuerySocketSecurity 函数,ALE 将从适用的本地和远程终结点读取请求的信息。
- 基于套接字事件,应用程序层强制 (ALE) 使用 Windows 筛选平台强制实施安全套接字体系结构的策略。 有关详细信息,请参阅 关于 Windows 筛选平台 和 应用程序层强制 (ALE) 。
相关主题