Secure Boot

前言:自由软件基金会的呼吁
  在2012年将近结束的时候,自由软件基金会(FSF)发出呼吁,要求人们继续支持反Secure Boot垄断,希望签名者能达到5万人。我觉得,这个呼吁很重要。如果我们不支持,未来就无法自由地使用硬件、安装自己想要的软件。
  这绝非危言耸听。而且,由于这个事件直接与Windows 8操作系统有关,因此意味着一切已经迫在眉睫了。下面,谈谈这到底怎么回事。如果你想要自己安装操作系统,下面的内容与你直接相关。



  1、BIOS和UEFI
  所有电脑启动的时候,都会运行BIOS程序,用于初始化硬件。自从个人电脑诞生后,就一直如此。过去30年我们都在使用类似上图的画面,设置硬件参数。不用说,BIOS已经变得日益不适用了。


  1998年,Intel牵头,联合AMD、AMI、Apple、Dell、HP、IBM、Lenovo、Microsoft和Phoenix等业界主要厂商,开始制定新一代BIOS。这个项目叫做"统一的可扩展固定接口"(Unified Extensible Firmware Interface),简称UEFI。2005年推出1.1版,目前是2.3版。
  将来一开机,电脑运行的将不是BIOS,而是UEFI BIOS。等它运行结束,再载入操作系统。



  2、微软的态度
  UEFI是一个很先进的、面向未来的规格。但是很长时间内无法推广,原因就是微软公司不积极。Windows操作系统是桌面市场的主流系统,如果它不推广UEFI,就没有硬件厂商会跟进。所以,普通消费者对这个新规格所知甚少。
  意想不到的变化,出现在2011年9月,微软毫无预兆地突然宣布,Windows 8将启用UEFI。这本来是一件好事。但是,问题是微软感兴趣的不是整个UEFI,而是UEFI的一个子规格Secure Boot。它要强行部署Secure Boot。



  3、Secure Boot
  Secure Boot只是UEFI的一个部分。两者的关系是局部与整体的关系。Secure Boot的目的,是防止恶意软件侵入。它的做法就是采用密钥。UEFI规定,主板出厂的时候,可以内置一些可靠的公钥。然后,任何想要在这块主板上加载的操作系统或者硬件驱动程序,都必须通过这些公钥的认证。也就是说,这些软件必须用对应的私钥签署过,否则主板拒绝加载。由于恶意软件不可能通过认证,因此就没有办法感染Boot。
  这个设想是好的。但是,UEFI没规定哪些公钥是可靠的,也没规定谁负责颁发这些公钥,都留给硬件厂商自己决定。现在,微软就是要求,主板厂商内置Windows 8的公钥。


  4、Windows 8
  首先明确,在不打开Secure Boot的情况下,Windows 8可以安装。这与安装以前版本的Windows没有差别。
  但是,微软规定,所有预装Windows 8的厂商(即OEM厂商)都必须打开Secure Boot。因此,消费者购买一台预装Windows 8的台式机或笔记本,想要在上面再安装其他操作系统(包括以前版本的Windows)是不可能的,除非关闭Secure Boot,或者其他操作系统能够通过Windows 8公钥的认证。
  如果选择关闭Secure Root,那么预装的Windows 8将无法使用,需要重新安装。根据Sam Varghese测试,打开Secure Boot之后,再安装其他操作系统(包括以前版本的Windows),全部被主板拒绝。


  5、关于移动设备
  Secure Boot对移动设备的影响,比PC还要严重。微软明确规定,所有PC主板必须带有关闭Secure Boot的选项。这不是因为微软的善意,而是因为如果不这样做,它一定会遭到反垄断起诉。
  但是,在移动设备领域,微软不占优势,所以它就没有顾虑,规定所有安装Windows的移动设备的Secure Boot必须打开,而且没有关闭选项。
  微软的平板电脑Surface RT就是一个最好的例子。它的Secure Boot是打开的,没法关闭,而且微软用了一个不同于桌面电脑Windows 8操作系统的公钥,且不提供获得数字证书的途径。因此理论上,用户不可能在Surface RT上安装其他操作系统。



  6、结束语
  Secure Boot的本来用意是保证系统安全,但现在似乎成了厂商保护市场垄断、阻碍竞争一种手段。除了微软公司,苹果公司也有这种倾向。在新一代的iPhone和iPad上面安装其他操作系统,似乎是不可能的。
  自由软件基金会呼吁反Secure Boot垄断,就是基于这种考虑:用户应该拥有硬件和软件的使用自由,操作系统应该是开放的,而不是封闭的。作为一种规格,自由软件基金会并不反对Secure Boot,它只是要求硬件厂商提供便利,使得用户可以更容易地安装和管理公钥,从而使用硬件平台对所有操作系统(以及设备驱动)保持开放。我认为,这是完全合理的要求,对于保证用户的自由和业界的健康生态极为重要。让我们一起支持这个行动(签名和捐助),密切关注事态下一步的发展。
### Secure Boot 是什么? Secure Boot 是一种固件级别的安全特性,通常由设备的 BIOS 或 UEFI 固件实现。其主要目的是在系统启动过程中验证每个阶段的代码完整性,从而防止恶意软件或未经授权的内核加载。Secure Boot 通过公钥/私钥机制验证签名是否合法,确保只有经过数字签名的可信代码才能被执行[^2]。它从固件级别开始,逐步验证引导加载程序、操作系统内核等组件,建立一个信任链,以确保整个启动过程的安全性[^3]。 ### 如何启用 Secure BootSecure Boot 的启用通常涉及以下几个步骤: 1. **进入固件设置界面(BIOS/UEFI)**:在计算机启动时按下指定键(如 F2、Del 或 Esc),进入 BIOS/UEFI 设置界面。 2. **查找 Secure Boot 设置选项**:在“Security”或“Boot”菜单中找到“Secure Boot”相关选项。 3. **启用 Secure Boot**:将 Secure Boot 状态更改为“Enabled”。 4. **保存并退出**:保存更改并重启系统,Secure Boot 即可生效。 某些系统可能还提供“Setup Mode”、“Audit Mode”和“User Mode”等不同模式,用于管理密钥配置和策略控制[^1]。 ### 如何配置 Secure BootSecure Boot 的具体配置取决于平台和固件支持情况,以下是通用流程及 ESP32 的特定配置示例: #### 通用 PC 平台(如 Windows 或 Ubuntu) - **添加/删除信任密钥**: - 在 UEFI 设置中,可以导入自定义的签名密钥(PK、KEK、db、dbx)来允许或阻止特定引导程序加载。 - 例如,在 Linux 中使用 `sbsigntools` 对引导程序进行签名,并通过 `efibootmgr` 工具管理 EFI 启动项。 - **处理 Secure Boot 引导链验证失败问题**: - 若在安装 VMware 或 Ubuntu 时遇到 Secure Boot 验证失败,可以选择关闭 Secure Boot,或者使用已签名的引导程序(如 Shim)来兼容 Secure Boot 策略[^1]。 #### ESP32 平台(使用 ESP-IDF) ESP32 支持 Secure Boot v1 和 v2,可通过以下方式配置: ```bash idf.py menuconfig ``` 进入配置菜单后,选择: - `Security Features` —> `Enable Secure Boot in bootloader` —> 选择 Secure Boot 版本(v1 或 v2) - 可选:启用 Flash 加密(Flash Encryption) 配置完成后编译并烧录项目: ```bash idf.py build idf.py flash ``` 系统会在首次启动时生成签名并锁定 eFuse,后续启动将自动验证固件签名[^3]。 ### 注意事项 - 启用 Secure Boot 后,未签名的操作系统或引导程序将无法加载。 - 某些 Linux 发行版需要 Shim 来兼容 Secure Boot。 - ESP32 上一旦启用 Secure Boot,部分 eFuse 将被永久写入,不可逆,请谨慎操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值