在近期的 TechNet 上,Win 10 的系统安全指引中说明了这样一个东西 Device Guard.
按照 TechNet 的说明,Device Guard 是一个软硬结合的安全特性,组合使用时可以锁定设备并让它只运行可信的应用。如果应用不可信就不可以运行,即便是周期性的。这也意味着即使有黑客获取了 Windows 的内核控制权,在计算机重启之后也极大可能无法运行恶意可执行代码,因为这一特性设计的如此:
Device Guard 使用了全新的基于虚拟化的安全防护来从 Windows 内核中分离编码集成 (Code Integrity)服务,让这个服务使用由企业控制分发的签名来决定哪些是可信的。实际上,编码集成 (Code Integrity)服务独立于内核运行在一个被保护的管理程序容器中。
提到的另一个根本点是思路的转变,从传统的每一个程序都可以运行直到被反病毒程序或者其他安全措施隔离掉,变成企业内部控制的只运行可信软件的方式。
Device Guard for Windows 10 |
Device Guard for Windows 10 + Virtualization extensions |
|
Helps provide strong malware protection with enterprise manageability
在企业管理下帮助提供高等级恶意软件防护 |
X | X |
Helps provide the most advanced malware protection ever offered on the Windows platform帮助提供在 Windows 平台下至今最强大的恶意软件防护 | X | |
Offers improved tamper resistance提供增强的干扰防护 | X |
DeviceGuard 的作用原理
DeviceGuard 通过限制 Windows 10 操作系统运行可信程序提供保护,这一功能基于企业的指定的硬件和安全配置策略,包括如下方面:
- 用户模式代码集成
- 新的内核代码集成规则(包括新的Windows硬件质量实验室 WHQL 签名)
- 数据库控制的安全启动
- 可选:基于虚拟化的安全措施帮助保护内存、内核程序以抵抗潜在威胁
- 可选:可信平台模块2.0 TPM 2.0
DeviceGuard 可以和镜像制作一起配合使用,所以你可以为兼容设备开启虚拟化安全特性、配置代码集成策略以及其他系统设置来满足安全需求,设置完成之后 DeviceGuard 可以按照如下方式保护设备:
- 使用 UEFI 设备并且通过 SecureBoot 启动的,那么其他的 boot 套件在 Windows 10 启动之前无法使用
- 安全启动 Windows 10 boot 套件之后,Windows 10 就可以启动基于 Hyper-V 的安全服务,包括内核代码集成等,这些服务保护系统内核、验证过的驱动以及反病毒解决方案,可以阻止恶意代码在 boot 进程的早期阶段就开始有所作用
- DeviceGuard 使用 UMCI 确保在用户模式运行的任何服务,如统一平台应用、典型的 windows 程序等可信的二进制文件执行
- 同时在 Windows 启动后,TPM 也已经启动
DeviceGuard 的软硬件需求:
- Windows 10 操作系统:最低需求,新特性仅在 Windows 10 具备
- UEFI: 已有很长时间的技术,参考 secure boot 相关技术
- TrustedBoot: UEFI 中的一种特定技术
- Virtualization-based security:基于Hyper-V 的容器,感知 Windows 10 的进程,得益于容器技术和 hypervisor 的特性,即便内核被控制也具备保护能力
重要注意:使用该技术需要开启虚拟化扩展
- Package inspector tool:一种可以创建目录清单要求这些典型 windows 程序提供可信签名的工具
2015.08.07补充一个 Win8.1 及之后的 Windows 启动的过程图解:
- UEFI 启动:防止未知的操作系统启动
- 第2步是整个的蓝色大框,内核载入前期就要加载的反病毒措施,检查第三方驱动和启动代码
- TPM 记录启动中的计量数据
- 反病毒软件可以根据 TPM 计量数据向远程验证中心证明客户端是否健康,注意用词是健康而不是安全,安全是一个最低程度的健康标准;健康在 server 环境中经常用到,用来表明客户端除了安全之外,是否升级到最新的版本,是否安装了指定的补丁以及是否处于正常的生命周期等等。
第二部分,使用 MicrosoftPassport 来验证身份安全
在 Windows 10 开始,MicrosoftPassport 将使用两步验证来替换传统的密码,这一验证适用于传统 PC 和移动设备,并且使用了新的方式在设备上绑定用户验证信息: WindowsHello (生物识别)和 PIN 码。
Passport 试图解决如下的遗留难题:
- 很难记住密码,并且普通用户习惯于在多个网站使用相同的密码
- 服务器端被攻破会暴露网络对端的验证信息
- 密码可以被轮举爆破
- 用户可能会因为钓鱼攻击丢失密码
Passport 通过如下方式验证用户:
- 一个微软账号
- 一个域账号
- 一个MicrosoftAzure 域账号
- 第三方支持 FIDO v2.0 的安全验证服务
在完成两步验证设置之后,Passport 会绑定到用户的设备,并且要求用户通过便捷方式如生物识别的 WindowsHello 或者 PIN 码来解锁,用户使用这些便捷方式解锁和认证自己的身份之后 Windows 再帮助用户使用另一重加密保存的验证信息来访问受限或受控制的资源。
作为管理员,可以通过创建策略来要求用户如何使用 Passport 来通过身份验证。
Passport 的优势
大规模攻击和安全威胁一直以来占据着头条,没有人希望自己的隐私暴露出去,现在启用了 Passport 的Windows 10 设备,在没有生物识别(WindowsHello) 或者 PIN 码的情况下无法被访问。
当然普通用户一定会好奇,为什么一个简短的 PIN 比密码更能保护自己。实际上,密码几乎是一个公开的密码,密码在设备上被键入、在网络上传输、传递到服务器,一个被截获的用户名和密码可以被任何人使用,因为最终验证结果保存在服务器上,服务器被解决掉之后任何密码验证都无效了。
在 Windows 10 上,Passport 代替了密码。如果设备带有硬件 TPM 或者通过软件的方式,Passport 会创建两组密钥,试图访问这些密钥时会要求用户通过生物识别认证或者PIN 码验证。在访问公/私钥之前,两步验证会完成到达验证管理器的身份识别过程。当用户输入账号并且输入了生物识别信息或者 PIN 码时,验证管理器会对比自己存储的用户账户的两步验证是否一致,通过则可以访问受限制的资源。除此之外,在初次注册的过程中,验证管理器会保证所有的Passport验证方式的信息已加密并且生成一份证书声明告知 Passport的密钥已经与 TPM 模块绑定。如果没有这份申明,验证管理器会默认 Passport使用的是软件加密方式。
想象一下有个人在 ATM 机上看到了你的密码,但是他无法盗取你的资金,因为银行卡不在他的手上,同样 PIN 也是这个原理,因为 PIN 码只针对你的绑定设备,并不能直接解锁你的账户。
Passport 所包含的验证方式都是如此,所有的验证方式都不直接作用于用户账户上,因此账户的安全得到了保证。
Passport 工作原理要点:
- passport 验证基于证书或非对称加密对,绑定于设备
- 验证管理器(AD 域、Azure 域、微软账号)在注册时将验证用户的身份与 Passport的公共密码做一个映射关系
- 根据策略,密钥可以通过 TPM 的硬件或者纯软件生成
- 任何验证一定是两步验证
- 私钥不会离开设备
- PIN 和 Passport 同时作为 Windows 10 的验证措施存在
- 用户私人和公司账户使用不同的密钥容器
- 证书添加在Passport的容器里,并且被便捷验证方式保护
- WindowsUpdate导致的重启可以自动登陆重启之前的活跃账户(免除便捷验证)
对比基于密钥和基于证书的验证方式:
Passport可以同时使用密钥或者绑定了密钥的证书来完成验证,已经使用了公共密钥基础设施 PKI 的公司可以继续使用 PKI 并和 Passport 做集成,没有 PKI 或想要减少负担的公司可以使用基于密钥验证的Passport。
TPM 当然提供了最高级别的安全性,详情请参考 TPM 的生产技术和原理。