我听说新电脑将内置“安全启动”功能,据说它可以防止“未签名的代码”启动。我还没有看到任何可能启动错误操作系统的问题,正如它的信息所暗示的那样。那么它实际上是为了阻止 rootkit,还是为了防止在 PC 上安装其他操作系统?
答案1
答案取决于你有多么热衷于阴谋论。
该技术能够阻止 rootkit 占据文件系统的关键部分,但同样的技术也可以用来防止加载“未经批准”的操作系统 - 其中未经批准是由系统制造商而不是系统所有者定义的。
我认为(目前)可以在 BIOS 中禁用 Secureboot,并且可以启动任何系统。但是,制造商可能会删除禁用 Secureboot 的功能 [ 可能是大型操作系统提供商向他们投钱 ],这可能会限制其功能。
要了解“什么是可能的”,请考虑智能手机。有些 [ 如 Google 和三星品牌的手机 ] 可以加载任何版本的 Android - 例如 Cyanogenmod 支持的版本,而其他手机则锁定在它们附带的操作系统中,无法升级 - 我相信 LG 这样做,摩托罗拉也曾经这样做(我妻子有一部摩托罗拉手机,无法从古老的 2.x 版 Android 升级 - 被迫淘汰 - 我确实注意到摩托罗拉可能已经改变,因为他们现在归 Google 所有)。无论如何,锁定的引导加载程序在手机中很常见,所以如果你正在研究影响,它可能是一个有用的类比点。
答案2
整个要点在于它创建的“信任链”。如果我有一款软件,我需要确保没有恶意程序可以拦截我正在做的事情并把他们自己的代码放进去,我需要信任启动我程序的程序。要信任启动我程序的程序,你需要信任启动启动我程序的程序的程序,依此类推。
安全启动为第一个“受信任的程序”提供了锚点。它允许计算机上的硬件断言“没有人修改过这个引导加载程序,它的行为与原始程序员编写的程序完全一样“。然后引导加载程序可以检查”没有人修改过这个操作系统,它的行为与最初程序员编写的程序完全一样“。然后操作系统就可以”没有人修改过这个程序,它的行为与最初程序员编写的程序完全一样“现在,您就有了一条从程序一直到运行机器的物理硬件的“可信路径”,所有这些都验证了没有任何东西可以拦截或修改代码的行为。
现在,Bootloader、操作系统或程序本身如何处理该信任链完全取决于公司。Bootloader 可以选择只启动特定供应商的操作系统,而您无法阻止。操作系统可以选择只允许运行获得授权的软件(这是 Windows 8 RT 通过 App Store 所做的),而您不能。程序可以实现某些形式的 DRM,而您无法绕过它。
如何使用安全启动完全取决于软件供应商。
答案3
Secureboot 提供了“信任链”,理论上允许您运行的代码具有极高的可信度,即使用受信任密钥签名的代码。支持此功能的固件由制造商植入 x509 证书,该证书嵌入在固件中。
这是一个相当聪明的平台,允许您手动更改授权密钥:简而言之,PK(平台密钥)显示谁控制机器,KEK(密钥交换密钥)显示谁可以更新机器,dbx/db(签名数据库密钥)标识可以在安全模式下启动平台的启动代码。(见:http://blog.hansenpartnership.com/the-meaning-of-all-the-uefi-keys/和http://kroah.com/log/blog/2013/09/02/booting-a-self-signed-linux-kernel/)
就像浏览器信任的证书一样,任何有足够钱的人都可以购买预装的(或固件!)“信任链”。因此,实际上,Secureboot 使得将软件推广到大众市场硬件的成本略高 - 对您和坏人来说都是如此。
这是件好事。乍一看,这似乎只是放宽了门槛,将个人和小偷小摸的罪犯拒之门外,但简单地说,在计算方面,信任意味着金钱。金钱是我们作为一个文明所能想到的衡量匿名信任的最佳标准。信任最终是我们所知的最有价值的商品,因此金钱是有价值的。