使用全息远程处理建立安全连接概述
如果你是全息远程处理新手,建议阅读概述。
注意
本指南特定于运行 Windows Mixed Reality 的 HoloLens 2 和 Windows 电脑上的全息远程处理。
此页概述了全息远程处理的网络安全。 你将找到有关以下内容的信息:
- 全息远程处理语境中的安全性以及你可能需要它的原因
- 基于不同用例的推荐措施
全息远程处理安全性
全息远程处理通过网络交换信息。 如果没有采取安全措施,同一网络上的攻击者可能会危及通信的完整性或访问机密信息。
Microsoft Store 中的示例应用和全息远程处理播放器已禁用安全性。 这样做会使示例更易于理解。 它还可帮助你更快地开始进行开发。
对于现场测试或生产环境,我们强烈建议在全息远程处理解决方案中启用安全性。
如果为你的用例正确设置了全息远程处理中的安全性,则可为获得以下保证:
- 真实性:播放器和远程应用都可以确定对方的身份就是其宣称的那样
- 机密性:任何第三方都无法读取播放器与远程应用之间交换的信息
- 完整性:播放器和远程应用可检测到在传输过程中对其通信进行的任何更改
重要
为了能够使用安全功能,你需要使用 Windows Mixed Reality 或 OpenXR API 来实现自定义播放器和自定义远程应用。
注意
从 2.4.0 版开始,可以创建使用 OpenXR API 的远程应用。 此处是有关如何在 OpenXR 环境中建立安全连接的概述。
规划安全实现
当你在全息远程处理中启用安全性时,远程处理库将自动对通过网络交换的所有数据启用加密和完整性检查。
不过,确保正确的身份验证需要额外的工作。 需要执行的具体操作取决于你的用例,本部分的其余内容介绍如何确定必要的步骤。
重要
本文仅提供一般性指导。 如果你不确定,请考虑咨询安全专家,他们可以针对你的用例为你提供指导。
首先有一些术语:在描述网络连接时,将使用术语“客户端”和“服务器”。 服务器是在已知的终结点地址上侦听传入连接的一端,而客户端是连接到服务器终结点的一端。
注意
客户端和服务器角色与应用是充当播放器还是充当远程应用无关。 尽管示例在服务器角色中具有播放器,但如果角色更适合你的用例,则可以轻易地反转角色。
规划服务器到客户端身份验证
服务器使用数字证书向客户端证明其身份。 客户端在连接握手阶段验证服务器的证书。 如果客户端不信任服务器,此时它将结束连接。
客户端如何验证服务器证书以及可以使用哪些类型的服务器证书,取决于你的用例。
用例 1:服务器主机名不是固定的,或者服务器根本没有按主机名进行寻址。
在此用例中,为服务器的主机名颁发证书是不切实际的(甚至不可能)。 建议改为验证证书的指纹。 与人类的指纹一样,该指纹可唯一标识证书。
很重要的一点是,将指纹传达给带外客户端。 也就是说,不能通过用于远程处理的同一网络连接发送它。 而是可以手动将其输入到客户端的配置中,或让客户端扫描 QR 码。
用例 2:可以通过稳定的主机名来访问服务器。
在此用例中,服务器具有特定的主机名,并且你知道此名称不太可能更改。 然后,你可以使用颁发给服务器的主机名的证书。 将基于主机名和证书的信任链来建立信任。
如果选择此选项,则客户端需要事先知道服务器的主机名和根证书。
规划客户端到服务器身份验证
客户端使用自由格式的令牌对服务器进行身份验证。 此令牌应包含的内容将再次取决于你的用例:
用例 1:仅需验证客户端应用的标识。
在此用例中,共享机密就足够了。 此机密必须足够复杂,才能不被猜出。
良好的共享机密是一个随机 GUID,它是在服务器和客户端的配置中手动输入的。 例如,若要创建一个,可以在 PowerShell 中使用 New-Guid
命令。
请确保此共享机密永远不会通过不安全的通道传达。 远程处理库确保始终以加密的形式发送共享机密,并确保只发送到受信任的对等方。
用例 2:还需要验证客户端应用用户的身份。
共享机密不足以涵盖此用例。 相反,你可以使用标识提供程序创建的令牌。 使用标识提供程序的身份验证工作流如下所示:
- 客户端向标识提供程序授权并请求令牌
- 标识提供程序生成一个令牌并将其发送到客户端
- 客户端通过全息远程处理将此令牌发送到服务器
- 服务器根据标识提供程序验证客户端的令牌
Microsoft 标识平台是标识提供程序的一个示例。
与上一用例类似,请确保这些令牌不通过不安全的通道发送或以其他方式公开。