当硬盘驱动器在启动时被解密时,是否可以在某个比较计算步骤中被专门构建的CPU截获,或者是否涉及到更高的数学?
这将是明目张胆的,所以我想没有。但我想确定一下,我很好奇它到底是如何工作的。
发布于 2021-05-24 04:39:55
没有任何与密码的比较操作,因为没有什么可与之比较的。纯文本密码没有存储在系统的任何地方(如果是的话,攻击者可以在没有猜测、蛮横或需要合法用户输入的情况下盗取它)。确切的操作取决于磁盘加密软件(Bitlocker、FileVault、VeraCrypt、LUKS等)以及它在什么模式下工作(有时根本没有密码;密钥来自闪存上的文件和/或称为可信平台模块( TPM)的硬件安全模块),但通常,密码是通过某种形式的密码散列/密钥派生算法运行的,这是一种不可逆的密码操作,它将密码转换成适合用作密码密钥的二进制字符串。即使这个函数的输出(摘要)也不会直接与任何东西进行比较--毕竟,如果攻击者得到了它,那么它只是跳过了密码->散列步骤,所以您也不能将摘要存储在任何地方--但是您可以再次散列它,或者使用它解密一些秘密并检查解密的完整性,在这两种情况下(散列密钥摘要,或解密的身份验证标记),这些数据都可以安全地存储在磁盘上,因为没有办法将任何实际的秘密从磁盘中提取出来。
尽管如此,当然,恶意修改的CPU在输入密码时可能会窃取密码。键盘上的每一个按键,经过各种可能发生的操作-- CPU (例如在键盘内的微控制器或主板的USB控制器中)--最终进入CPU (计算机固件-- BIOS或UEFI --至少有一个基本的键盘驱动程序,即使操作系统还没有运行,它也在CPU上运行)。您不会在任何比较中捕获它-因为没有在密码上执行-但它仍然在那里捕捉(简单地)。
请注意,还有很多其他地方可以捕捉到这样的数据。一个典型的例子是硬件键盘记录器,无论是在键盘内部,还是在键盘和主板之间。另一个选项是在主板上的USB主机控制器中。另一个是在RAM中,因为这是键盘输入被缓冲的地方,直到CPU处理它(而且,大多数情况下,用户在任何时候输入字符串(比如密码),它都会作为字符串驻留在RAM中,至少在短时间内是这样)。最后,固件/启动前代码中有键盘驱动程序。
CPU是大多数计算机中最复杂的部件(高端GPU可能有更多的晶体管,但很可能仍然是一个更简单的设计命令),而且只有少数公司有能力制造高端x86 CPU,因此这是一个相对不太可能出现恶意植入的地方。这并不是不可能的,但你需要大量的资源,当用恶意CPU替换某人的CPU甚至是可行的时候,到目前为止已经有了更容易的攻击。
而且,这并不是真正破坏硬盘加密。这只是窃取获得解密密钥所需的密码。这就打败了加密,但它并没有破坏它,就像有人在你的门垫下找到“秘密”钥匙,用它解锁你的前门是“打破”你的锁。实际上,破解密码--对任何现代密码来说,即使是半体面地实现--都需要专家密码分析人员研究密码,才能进行(除了愚蠢的蛮力之外),即使你让任何一个CPU运行了几十年,对任何现代密码的最著名的攻击也远远超出了它的潜力。对于某些密码来说,量子计算机可能会改变这一点,但它们仍然远远不适用于实际问题,即使是“加密硬盘而你没有密钥”的实际问题。
发布于 2021-04-24 01:42:47
你所描述的听起来就像“邪恶的女佣袭击”。有关更多信息,请参见https://www.schneier.com/blog/archives/2009/10/evil_女仆_attac.html。
https://security.stackexchange.com/questions/248675
复制相似问题