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)。
相关主题
-
关于 Windows 筛选平台 的
-
使用安全套接字扩展 高级 Winsock 示例