为什么BIOS在重启时不要求硬盘密码,而是在断电后才要求?

逆向工程 BIOS
2021-06-23 09:38:16

我正在阅读有关 BIOS 的内容,我看到了这个:

接下来,BIOS 将在 0000:0472h 开始检查内存。这个地址包含一个标志,它会告诉 BIOS 系统是从冷启动还是热启动。

如您所见,它告诉 BIOS 有 2 种类型来检查启动过程。它表示当 BIOS 发现热启动(值 1234h)时,它将跳过剩余的 POST 例程,但是如果 BIOS 发现冷启动,则将运行剩余的 POST 例程。

现在,假设我在系统和硬盘的启动中有密码(在BIOS中设置的用户密码)。

当我打开计算机电源时,这意味着 BIOS 将读取冷启动并运行剩余的 POST 例程,当然还会询问用户和硬盘的密码。但是当我从操作系统(在本例中为 Linux 发行版)重新启动系统时,为什么 BIOS 不要求输入硬盘密码?这是否意味着 BIOS 现在正在读取热启动?

1个回答

您的报价是关于旧的传统 BIOS(16 位)。现在大多数 BIOS 都实现了符合UEFI的固件,它的工作方式完全不同。TCG 发布Opal 规范描述了 UEFI 固件如何与自加密硬盘驱动器交互。但是,您的方案似乎与 BIOS 并不真正相关。根据ArchLinux wiki 上的主题

典型的自加密驱动器一旦解锁,只要提供电源就会保持解锁状态可以通过改变驱动器外部的环境来利用此漏洞,而无需切断电源,实际上使驱动器处于解锁状态。例如,已经证明(由埃尔兰根-纽伦堡大学的研究人员)可以在不切断驱动器电源的情况下将计算机重新启动到攻击者控制的操作系统中。研究人员还展示了在不切断电源的情况下将驱动器移动到另一台计算机

所以它可能是驱动器本身,而不是 BIOS/固件,它在热重启时缓存了密码。

其他参考: