从技术上来说,你理应永远不需要用到这种东西。但是现实情况是:你没有太多选择。
倒不是因为《战地 6》公测的事情。我最近在做关于 EN 18031 认证相关的事情,其中对于固件升级和系统完整性验证部分实际上是有要求的。只是恰好最近这个游戏公测了,而它的一个让人蛋疼菊紧的要求就是需要电脑打开「安全启动」功能,所以我想,或许该谈谈这件事了。
我的想法是:「安全启动」是计算机自由的又一大退步。但现在,它反而在逐渐成为标配。
这是为了你好。
到底什么是「安全启动」?
安全启动做这样一个事情:它会在操作系统启动之前校验操作系统负责启动的代码是否经过签名且受信任。如果这个条件不满足,电脑就不会进入这个操作系统。它不会监视你的动作,也不会收集额外的信息,也不会向谁汇报你在用什么配置的机器,也不会偷偷扫盘。
看起来人畜无害对么?相比于别的明目张胆的搞事情而言,「校验系统完整性」听起来像是一个十分好的功能,但它的实现却带来了一个很严重的问题:它的「受信任」的验证过程不受你的控制,而且它是刻意被设计为无法被用户所控制的。
我换一个说法,或许更好理解:这个功能可以决定你的电脑今天还能不能正常开机,而这个决策过程你完全没法控制。你无法手动添加或者删除某个系统为受信任的操作系统,也无法临时授权某个系统启动。你唯一能做的事情是关掉这个功能。
哦对了,它实际上也不会真的校验整个操作系统的完整性。它只会校验引导程序是否正常,至于之后的部分,比如操作系统内核、驱动和别的东西,一律交由引导程序去管理。某种意义上来说,这是为数不多的幸运。
你的手机实际上默认就会开启「安全启动」。如果你需要刷第三方 ROM 或者 Root 手机的话,第一个步骤通常就是解 BL 锁,这个解锁步骤实际上就是在想办法关掉这个「安全启动」。
为什么说这是退步
用户买了这台设备,理应可以按照他们自己的意愿去干任何事情。这里的干任何事情包括:运行自定义的操作系统。
注意到权利不是一个「要不要」的问题,而是一个「能不能」的问题。用户可以要这台电脑用到死都只运行 Windows 系统;但用户必须能选择运行 Windows 以外的系统。这里之所以强调 Windows 系统,是因为几乎所有市售主板的信任证书都只有唯一一个:微软密钥交换证书,而且大部分主板压根不支持安装新的证书。
以及还需要再强调一下:所有证书都是有有效期的。而微软上一任证书将会在 2026 年过期。如果你的电脑买的比较早,你会需要想办法更新你的主板 BIOS 才能正常使用安全启动功能;而并不是所有主板厂商都会愿意给他们的旧主板更新新固件的。所以,不要以为「今天你的电脑因为安全启动没通过突然无法开机了」的问题离你很远——它是一柄悬在每个人头上的达摩克斯之剑。
那反作弊……
反作弊是永远的猫捉老鼠的游戏。安全启动机制压根无法解决任何问题,就跟 Ring 0 反作弊无法解决任何问题一样。
现在最新最热的作弊工具是软路由(很抱歉,又一个本来好好的名词在大众眼中沦陷成了作弊工具。上一个受害者是 DMA)。这套系统的工作原理是直接分析网络上的游戏数据,将游戏中的全部信息还原出来,从敌人位置显示到动态修改数据一个不差。这套系统可以完全独立于电脑运行,它甚至不需要知道后面打游戏到底是电脑还是手机。
好了,我的作弊设备压根就不在这台电脑里,就算开启这套机制,你又能检测到什么呢?我挂开得照样很爽。下一步你该干嘛了?扫我的局域网?
打着反作弊的旗号来侵害我的计算机自由,抱歉,这样的软件我不感兴趣。
那数据安全……
这个功能唯一能够防护的场景是有恶意软件修改你的预引导环境。当然,在这里我需要承认:确实存在这样的恶意软件,而「安全启动」功能确实可以有效地检测这种恶意修改,并阻止你的电脑在被感染之后启动。考虑到预引导环境可以配置 Windows 内核不检测驱动签名,这会使得被感染的电脑可以让任何代码以最高权限运行,包括各种恶意程序,这种阻止机制是显然必要的——如果用户知情且有选择的话。
但这套机制终究只解决这一个问题。它不是某些组织所描绘的灵丹妙药。它无法阻止更常见的恶意软件的侵害:那些疯狂弹窗的广告软件、那些卸载不掉的牛皮癣软件、那些偷偷扫盘的间谍软件、那些「借你算力一用」的恶意挖矿软件、那些默默执行遥控指令的后门软件……所有的这些东西,都可以简单地以用户身份执行。它们会小心地隐藏自己的踪迹,而修改启动环境这种会触发安全软件警告大动作它们是绝对不去做的。
更不要提那些按 GB 售卖的个人隐私数据。这种正经的数据安全问题就更没法通过「安全启动」解决了。
那用户友好……
手机厂商推行 BL 锁的主要理由就是:绝大多数人用不上你解锁之后要用的功能。而且锁了 BL 可以杜绝用户手机被恶意篡改的情况(或者说得直白一点,免得那群傻逼无脑跟着网上的教程一通瞎改把手机搞坏了又反过来报修投诉)。
我也是做消费电子领域的程序员,我也很烦啥也不懂的终端用户对着设备一通瞎操作把东西玩坏了又在评价里给差评。但这终究是一个无法通过技术手段解决的人文问题。为了免得麻烦而选择直接给设备阉割,这是一种削足适履。
更不要说给一台之前没有开安全启动的 Windows 电脑开安全启动功能有多麻烦了。你要真为用户友好着想,你最好就别让小白来鼓捣这种可能直接让他们电脑没法进系统的事情。
推行无法关闭的固件验证就是对计算机自由的侵害
许多物联网芯片会有 eFuse 用于烧录厂商密钥。这个密钥一旦烧录就无法被擦除。自此,这个设备就只能运行由该厂商签名的固件了。同样,这套系统也可以用于封堵调试接口,所以通过调试接口烧录未经签名的软件也是不可行的。
EN 18030-2 中明确要求了:固件升级必须校验固件完整性[1]。这里的完整性可不仅仅是校验文件在传输过程中是否有损坏,而是还需要有效签名,才可以被安装执行[2]。这就使得为了合规,许多在欧盟售卖的物联网设备自生产起就注定要进入电子垃圾堆——因为固件验证功能一旦开启就无法关闭,用户自然就没办法下载自制固件。即使有大神有 SDK 并且做了自制固件,那也是完全没卵用的——除非你想办法换一块没有烧录过 eFuse 的芯片上去。
我可能需要再次强调:权利是「能不能」的问题。是,一个电子温度计可能用到彻底坏掉都不需要刷固件,但是我想要让它显示时间或者连接 HomeAssistant, 就绝对需要能刷固件。
作为普通人,我们能怎么做?
最直接也是最有效的选择,就是拒绝使用这种侵害你的计算机自由的软件。
但我明白,很多时候我们没有其他选择。无论是受迫于同侪压力还是市场限制,我们只能接受现有的状态。但是,对不公说哪怕一次「不」也是在推进公正。如果你能向身边的人或者网上的朋友建议停止使用这些侵害自由的软件,那么你就已经在帮助传播解放思想了——无论他们是否接受这么做。
即使是出于各种原因,你现在无法开口说这个「不」,那么能记住「这个世界仍有人愿意为之奋斗」这件事,时不时地想起「用户应有自由使用设备的权利」,你也在无形中播撒着以人为本的理念。
自由软件无法在体量上直接和背靠资本的大公司竞争,但如果我们能取得文化胜利,如果我们可以让大多数人意识到:他们有自由使用自己设备的权利,他们需要争取自由使用自己设备的权利,那么我们就能撼动这些厂商生产真正符合大众利益的产品,我们就能够让这个世界变得更好。
CEN/CLC/JTC 13/WG 8. Common security requirements for radio equipment - Part 2: radio eqiupment processing data, namely Internet connected radio equipment, childcare radio equipment, toys radio equipment and wearable radio equipment[S/TPOL]. European Committee for Standardization. (2024-08-14)[2025-08-15]. https://www.gwst.cn/wp-content/uploads/2024/09/FPrEN-18031-2.pdf || p83-84. ↩︎
虽然但是,完整的标准里还是规定了不使用签名的固件更新方案的,但那样做的话,需要搞的流程就会变得更多、更复杂。猜猜大多数厂商会选择哪种合规方案吧——签名方案排在第一位可不是没有原因的。 ↩︎
正在加载评论……