一. 概述
在上篇文章中,我们介绍了安全启动Secure Boot的几个核心的概念。在现实中,用户的计算机通常是加密的,使用TPM来保存加密口令是一个很好的解决方案——用户可以拥有一个加密磁盘,但不必在每次重启时重复输入口令。此外还可以确保当硬盘被恶意者从电脑上拔出来时,由于密钥保存在TPM中,密钥不会泄露。
二. 理想状态下的安全启动
UEFI受密码保护,没有凭证无法修改。
UEFI只允许从单个磁盘设备和特定启动文件启动。
使用 Secure Boot,只能调用经过签名、未被篡改的二进制文件(例如 GRUB2)。
GRUB2 EFI 可执行文件配置内嵌,因此无法修改、添加额外参数或中途停止启动过程。
GRUB2 受密码保护,只允许单个entry启动,不允许添加其他参数。
GRUB2 仅加载经过签名的内核。
GRUB2 信任 initramfs/initrd,initramfs/initrd也经过签名。
initramfs/initrd 调用 TPM获取密钥,并确保/UEFI不会被篡改,因为重置 UEFI密码也会重置 TPM 的内容。
图1. Secure Boot启动过程
BIOS 信任使用微软证书的 SHIM。
使用微软证书签名的 SHIM 信任另一组证书--自签名证书或 Canonical 证书。SHIM 是 GRUB 前的boot loader。
SHIM 信任由 Canonical 签名的 GRUB EFI 二进制文件。
GRUB 信任使用 Canonical 证书的内核(所有库存内核都由 Canonical签名),或使用自签名证书的自定义内核(和模块),但需要对使用的每个内核和该内核使用的每个模块都使用自签名证书。
图2. Secure Boot签名、验签过程
SHIM 可以用微软信任的其他 EFI 二进制程序(如 Windows 加载器)代替。这将导致跳过整个信任链,进入另一个我们无法控制的流程。
SHIM可以使用自签名证书进行编译(然后将其作为受信任证书输入 BIOS SecureBoot),但这将给SHIM的部署带来麻烦,每次更新时需要重新编译。
使用 grub-standalone需要使用 Canonical 证书或自签名。如果使用自签名,我们将从 SHIM 中移除 Canonical 证书,但这样就必须使用我们的证书重新签名内核。或者我们将自签名证书添加到 SHIM 中,但这样一来,我们被锁定的 GRUB 就可以被替换为由 Canonical 签名的普通 GRUB2,并轻松绕过锁定。
三. 牢牢掌握你的安全启动
3.1
Shim
消除默认密钥所带来的安全隐患:理论上,安全启动应能阻止恶意软件运行。但另一方面,攻击者总是有可能诱骗微软签署恶意软件;或者签署的软件可能存在漏洞。如果使用默认密钥的 Shim,计算机仍会受到这些威胁的攻击。
消除操作系统密钥所带来的安全隐患:与前述情况类似,操作系统的密钥也有可能被泄露,在这种情况下,攻击者可能会分发使用泄露密钥签名的恶意软件。
无需使用MOKs:Shim 和 Pre Loader 工具都依赖于机器所有者密钥 (MOK),MOK 与安全启动密钥类似,但更容易安装。由于更容易安装,它们更容易被社会工程或其他手段滥用。因此,取消 MOK 可以提高安全性。
图3. 使用MOKs
图4. Secure Boot的几类密钥
四. 总结与讨论
推荐阅读
本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。
关于我们
绿盟科技研究通讯由绿盟科技创新研究院负责运营,绿盟科技创新研究院是绿盟科技的前沿技术研究部门,包括星云实验室、天枢实验室和孵化中心。团队成员由来自清华、北大、哈工大、中科院、北邮等多所重点院校的博士和硕士组成。
绿盟科技创新研究院作为“中关村科技园区海淀园博士后工作站分站”的重要培养单位之一,与清华大学进行博士后联合培养,科研成果已涵盖各类国家课题项目、国家专利、国家标准、高水平学术论文、出版专业书籍等。
我们持续探索信息安全领域的前沿学术方向,从实践出发,结合公司资源和先进技术,实现概念级的原型系统,进而交付产品线孵化产品并创造巨大的经济价值。
长按上方二维码,即可关注我