一张贴在包装上的承诺

当你拿到一块全新的固态硬盘,翻过背面,能看见几行小字:支持硬件加密,符合TCG Opal 2.0标准。

这几个字看起来沉甸甸的。它暗示着某种技术意义上的安全保障——加密由硬盘内部的专用芯片完成,不依赖操作系统,不占用处理器资源,密钥深藏设备内部,不轻易暴露给外界。即便硬盘被人取走,对方也无法直接读取其中的数据。

打开网易新闻 查看精彩图片

对于企业采购人员而言,这几个字还有另一层价值:它可以被清清楚楚地填写进合规表格。"设备是否支持静态数据加密?"那个勾选框,可以被打上一个漂亮的对勾。

这是一种极具吸引力的安全叙事。简洁、直接、易于传播,也易于信任。

然而,一个问题在多年间几乎无人追问:当硬盘说它在加密数据的时候,到底有没有人真正检查过,它是怎么加密的?

直到一项针对38块自加密固态硬盘跨品牌测试,给出了一个令人不安的答案。

把硬盘当作黑箱来审问

这项研究由Linux安全领域的知名开发者Milan Brož及其三位同事完成。

Milan Brož的名字,在Linux世界里与磁盘加密深度绑定。他长期维护的cryptsetup,是Linux系统中配置磁盘加密最重要的工具之一,大量服务器、工作站和个人计算机依赖它来管理LUKS加密机制。

研究团队购买并收集了38块符合或声称符合TCG Opal 2.0标准的固态硬盘,品牌横跨三星、西部数据、美光、铠侠、闪迪等主流厂商。样本既有新购的零售产品,也有从真实使用中的笔记本电脑里拆出的二手硬盘——也就是说,它们曾经或正在承载真实的数据。

研究人员没有拆解任何芯片,也没有获取厂商内部的固件文档。

他们采取了一种近乎朴素的方式:将每一块硬盘都视作一个完全封闭的黑箱,只通过Opal 2.0标准公开定义的命令与设备通信,观察硬盘如何回应、如何生成随机数、如何处理认证信息,以及是否真正实现了自己宣称支持的那些安全功能。

这不是一场需要昂贵实验室、精密显微设备或者复杂逆向工程的研究。

研究人员做的事情,简单到令人意外:购买硬盘,接入测试平台,运行脚本。

但正是这样一套可以自动化、可以重复的测试流程,揭开了此前多年未曾被系统性审视的问题。

AES-XTS还在,但"变化"消失了

测试中最典型的问题,出现在两块联想OEM固态硬盘上。

它们在加密数据时使用了AES-XTS模式——这本身并没有问题,AES-XTS是专为磁盘加密设计的主流算法。然而问题在于,这两块硬盘为硬盘上所有扇区使用了相同的tweak值。

"tweak值"对普通用户而言是一个陌生的词,但它在磁盘加密中承担着至关重要的作用。

硬盘中的数据被划分为一个个扇区。如果两个扇区存储了完全相同的内容,而加密算法对它们的处理方式完全一样,加密后的结果也会一模一样。这意味着,即便攻击者无法解密数据,他仍然可以通过对比密文,发现哪些位置存储了相同的内容,从而识别出数据的结构、文件的特征,乃至某些重复出现的模式。

AES-XTS引入tweak值,正是为了避免这种情况。在正常实现中,即便两个扇区的明文内容完全相同,只要它们处于硬盘上的不同位置,参与加密的tweak值就应当有所不同,最终产生的密文也应当截然不同。tweak值让加密过程与数据所在位置产生了联系——同一句话,写在硬盘的不同位置,呈现出的应当是完全不同的密文。

然而,这两块硬盘用同一个tweak值覆盖了所有扇区,让这层关键的差异性凭空消失。

研究人员承认,这一缺陷在现实中的直接可利用性相当有限——攻击者仍然无法仅凭这些重复模式恢复完整明文,也很难由此直接拿到密钥。但"暂时难以利用"绝不等于"实现是正确的"。

加密系统的可信度,建立在一系列严格的数学假设与工程约束之上。厂商不能只选择一个响亮的算法名称,然后忽略这个算法安全运行所依赖的参数配置。

一块硬盘贴着"AES-XTS"的标签,并不等于它正确地实现了AES-XTS。

就像一扇门装了最昂贵的高安全等级锁芯,却把所有钥匙的齿纹磨成同一种形状。锁的品牌没有变,但安全性已经发生了根本改变。

随机数,在机械地"数数"

如果说tweak值的问题还涉及一定的密码学细节,那么部分硬盘随机数生成器的表现,就直白得令人警觉。

前述两块联想OEM硬盘内置的随机数生成器,每次被调用时返回的并不是难以预测的随机数据,而是一组可以预测的递增序列。

它不像是在掷骰子,更像是在机械地数数:第一次返回一个值,第二次加一,第三次再加一,如此循环。

另一块闪迪SATA固态硬盘的随机数输出则存在明显偏置——某个特定字节值出现的频率,大约是理论预期的两倍。

在密码系统里,随机数从不是一种装饰品。密钥、初始化向量、挑战值、认证令牌,许多关键的安全机制都依赖于随机数生成器的质量。一旦随机数可以被预测,或者某些数值出现得异常频繁,建立在它之上的安全机制便可能被悄悄削弱——而使用者毫不知情。

更值得关注的是,TCG Opal 2.0标准虽然要求硬盘提供随机数生成能力,却没有对生成器的具体质量作出足够明确的约束。这让设备可以在形式上"符合标准":它确实提供了随机数接口,也确实能够返回一串数字。但这串数字是否足够随机、是否经过安全设计,却不在标准的强制核查范围之内。

"能够工作"和"能够安全地工作",在工程领域从来不是同一件事。

印在标签上的PSID,也可以被猜出来

几乎所有支持Opal 2.0的自加密硬盘,外壳标签上都会印有一串被称为PSID的字符序列。

PSID可以理解为设备的物理安全标识。当用户忘记硬盘管理密码、或者设备需要被彻底重置时,可以凭借PSID执行恢复出厂操作。这一过程会清除原有访问配置,使盘内数据无法再通过原密钥读取——它更接近一种不可逆的设备重置与数据销毁机制,而不是简单地"找回密码"。

理论上,PSID必须具有足够高的不可预测性。攻击者不应通过获取一块硬盘的PSID,就能推算出另一块硬盘的编号。

然而,研究团队发现,一批闪迪硬盘的PSID竟然是按顺序生成的。这些编号拥有共同的前缀和后缀,中间只有一部分数字依次递增。只要获得其中一块硬盘的PSID,就有可能通过简单的加减运算,推测出同一批次相邻设备的编号。

这并不意味着攻击者可以直接解密数据,但它动摇了PSID原本承担的物理认证意义。对于批量采购了一批相邻序列硬盘的企业而言,如果攻击者通过设备标签、资产照片、维修记录乃至供应链环节获得了其中一个PSID,其他设备的重置令牌便可能变得唾手可得。

除此之外,还有六块硬盘在验证PSID时表现出过于宽松的逻辑——只要输入内容的前半部分包含正确的PSID,即使在后面附加任意垃圾字符,硬盘仍然会将其视为有效输入。

安全令牌的比对,本应是精确、严格、没有任何歧义的。一个认证系统如果把"正确答案后面随便写什么"也视为通过,便已经说明其实现者并没有认真对待认证边界的问题。

密码学系统往往不会因为某种惊天动地的算法突破而失效。它们更多时候,败在这些细小、普通、甚至显得有些粗糙的工程错误上。

企业买到的,是安全能力,还是营销文案?

这项研究真正让行业应当深思的,不只是某几块硬盘出了问题,而是这些问题为何能够在量产固件中长期存在、无人察觉。

大量企业采购自加密硬盘,是为了满足"静态数据加密"这一合规要求。在多数采购和合规流程中,判断一款产品是否符合要求,往往依赖几个简单的字段:是否支持硬件加密?是否符合Opal 2.0?是否能够设置访问密码?只要厂商规格表给出肯定答案,设备就可能顺利进入采购目录。

采购人员无法审查固件实现,管理员缺少统一的测试工具,安全团队也很少有时间逐块验证硬盘是否正确使用了加密参数、随机数是否符合统计特征、认证流程是否存在边界漏洞。

于是,"支持硬件加密"逐渐从一种需要技术验证的能力,悄悄退化成了营销页面上的一枚功能标签。厂商写下这几个字,企业便默认芯片内部的一切都是可靠的。

更令人不安的是,一些厂商的宣传材料还在主动模糊访问控制与数据加密之间的根本区别。

研究团队最初收集了超过50块硬盘,其中十余块最终未被纳入Opal 2.0加密测试——因为它们实际上只支持Pyrite 2.0。这两种标准看起来相近,却存在一个极其关键的区别:Pyrite 2.0可以提供密码验证和访问控制,但不要求数据必须经过加密。

也就是说,一块硬盘可以在启动时要求输入密码,外观上看起来像是被"锁住了",但底层数据仍然可能以明文形式存储在闪存颗粒上。一旦攻击者能够绕过控制器、利用固件缺陷或直接访问底层存储,这道"锁"便形同虚设。

密码验证,不等于数据加密。设备拒绝正常读取,不等于存储芯片上的内容已经变成不可理解的密文。

"我们知道,但不会修复"

研究人员将发现的问题逐一报告给了受影响的厂商。

最终,美光为旗下Crucial T500的一项扇区大小相关问题提供了固件修复。

但在其余案例中,研究团队收到的回应大多令人失望:有的问题被告知早已知晓,却没有提供补丁;有的设备已经停止支持;有的报告石沉大海,没有得到任何有效回应。部分厂商面对加密固件缺陷时,选择直接宣布相关功能不再受支持,并建议用户改用软件加密。

这种处置方式在商业层面或许可以理解——固态硬盘固件高度依赖具体的控制器和闪存颗粒,旧型号可能早已停产,重新构建和验证固件成本不低,还可能引入新的兼容性风险。

但从用户角度看,问题依然摆在那里:企业当初采购产品时,支付的价格中包含了"硬件加密"这项能力;如今这一能力被证明存在缺陷,厂商却可能只留下一句"请使用软件加密"。

更现实的困难在于,即便厂商愿意发布补丁,硬盘固件更新本身也是一件让普通用户望而却步的事情。一些更新只能通过厂商提供的Windows专属工具完成;另一些则需要制作可启动镜像,在操作系统之外执行升级。一旦产品页面被下架、下载链接失效,用户甚至难以判断自己当前运行的是否为最新固件。

软件漏洞通常可以通过操作系统的自动更新机制集中修复,而存储设备固件却散落在不同厂商、不同平台、不同工具之间,构成了一个长期被忽视的安全盲区。漏洞可能在真实设备上存在多年,而使用者甚至不知道固件可以更新,更不知道应当去哪里更新。

验证工具,已经开源

尽管问题丛生,这项研究也留下了一些令人宽慰的成果。

研究团队不只是发现了问题,还将测试结果转化为可以被社区持续使用的工具与代码。Opal 2.0的支持已经进入cryptsetup,相关Linux内核改动也在推进之中。

更重要的是,团队公开发布了Opal Test Suite。

任何具备相应条件的人,都可以使用同样的方法检查自己的硬盘,而不必重头搭建整套研究体系。这意味着,检验硬盘是否真正加密的能力,不再只属于少数研究机构,而是开始向更广泛的开发者、管理员和安全团队开放。

测试结果同样揭示了单用户模式的问题。

单用户模式的核心价值,在于在设备管理权限与用户数据访问权限之间建立真正的隔离——让"能够管理硬盘"不自动等同于"能够读取所有数据"。在38块受测硬盘中,24块宣称支持这一功能,但最终只有14块的实现达到了可用程度。

为此,cryptsetup现在会在启用单用户模式之前,主动测试硬盘的固件行为。如果测试未能通过,工具将自动放弃依赖该功能,退回到更安全、更保守的配置。

这是一种值得记住的设计转变:过去,软件相信硬件会按照标准行事;如今,软件开始主动验证硬件的行为,并为硬件实现错误预留降级路径。

软件加密与硬件加密,不是单选题

自加密硬盘最初的销售逻辑是:加密由硬件完成,用户无需再承担软件加密带来的复杂性和性能成本。然而,这项研究给出的实际建议,恰好与这种宣传方向相反。

不要只依赖硬盘自身的加密能力。

研究人员建议,在硬件加密之上,叠加一层经过充分验证的软件加密,让硬盘内部的加密成为第二道防线,而不是唯一的防线。这种思路被称为"纵深防御"——当软件加密正确配置时,即使硬盘固件错误地使用了加密参数,或者设备实际并未提供预期中的保护,攻击者面对的仍然是操作系统加密层产生的密文。

双层加密当然也有成本,它会增加部署和恢复流程的复杂度,需要妥善管理恢复密钥与运维权限。但与"把全部信任托付给一个无法审计的芯片"相比,这些成本至少是可见的、可管理的,可以通过流程加以控制的。

真正危险的,从来不是某一层安全机制不够完美。真正危险的,是组织误以为某一层机制绝不会出错,因此撤销了所有其他保护。

安全产品,也必须接受安全检验

这项研究并没有宣判所有自加密硬盘都不可信,也没有否定Opal 2.0标准的价值。

它真正揭示的,是标准、实现与验证之间的三个不同层次:标准定义设备应该做什么;厂商固件决定设备实际做了什么;独立测试负责回答二者是否一致。

长期以来,存储行业认真对待前两个环节,却几乎忽视了第三个。企业相信品牌,品牌引用标准,标准通过功能列表进入采购文档。至于芯片内部是否正确生成随机数、是否为每个扇区使用正确参数、是否严格验证恢复令牌、是否真正实现宣传中的权限隔离——几乎没有人持续、系统地检查。

安全行业经常强调"零信任"。但零信任不应只针对用户、终端和网络连接,也应当适用于安全产品本身。

一块硬盘声称自己加密了数据,不是信任的终点,而应当是验证的起点。

一个标准被写进规格表,不代表所有厂商都准确实现了它;一个功能可以正常启用,不代表它提供了预期中的安全性;一个漏洞暂时没有现实攻击路径,也不代表它可以被搁置不理。

值得庆幸的是,这一次,验证工具已经开源,第一次系统性的跨品牌检验已经完成,结论也已经公开。

而这场测试留下的最重要启示,或许不是"哪一块硬盘有问题",而是一条更朴素、更普遍的安全原则:任何宣称保护数据的机制,都不应仅凭标签获得信任。硬件加密,也不例外。

打开网易新闻 查看精彩图片

在看不见的芯片内部,密码算法不会因为产品页面上的一句承诺而自动正确运行。真正的安全,来自透明的标准、严谨的实现、持续的测试、可获得的更新,以及当任何一层失效时,仍然存在的下一道防线。

毕竟,数据是否被真正加密,不该由广告文案来决定。

合作电话:18610811242

合作微信:aqniu001

联系邮箱:bd@aqniu.com

打开网易新闻 查看精彩图片