荷兰拉德堡德大学的两名研究人员日前发表论文,描述了固态硬盘流行加密软件Bitlocker中的关键漏洞。固态硬盘需要口令来加密和解密其上存储的内容,但该口令可以被绕过。只要能接触到设备,固态硬盘(SSD)所用加密系统中的漏洞可被黑客用于轻松解密数据。
固态硬盘会用其存储的密钥来加密和解密其上存储的内容,但问题在于,用于加密和解密数据的密钥不是从用户的口令导出的,也就是说,只要能拿到硬盘,通过调试端口对其重编程,就可以重设任意口令。没错,固态硬盘的加密设计就是这么令人无语。
两名研究人员测试了3块英睿达(Crucial)和4块三星固态硬盘,发现它们或多或少都不能免疫上述攻击。这几款固态硬盘都试图实现 TCG Opal 加密标准,但显然未能成功。
研究人员分析发现多款固态硬盘的加密都能被完全绕过,不用任何密钥或口令就能完整恢复出数据。尤其是,固态硬盘未能将用户的口令与实际数据加密密钥(DEK)相关联,二者都存储在硬盘上。固态硬盘的内置处理器和固件都能自由使用该DEK,但只在接到正确口令的时候才选择这么做。如果固件被人通过调试端口重编程或加以篡改,就能跳过口令验证环节直接使用DEK。
DEK其实应该在某种程度上出自用户的口令。没有口令,就没有完整密钥。但实际上,固态硬盘并没有遵守这一原则。不仅如此,很多硬盘整颗盘都只用一个DEK加密——尽管这些硬盘提供不同分区使用不同口令加密的功能。
两名研究人员表示,通过连接硬盘电路板上的调试接口,修改固件中的口令核对流程,使硬盘在获取DEK以加密或解密设备之前可以接受任意口令,他们成功解密了多款固态硬盘上的数据。
其他案例中,研究人员可以修改硬盘固件,或利用可修改口令核验流程的代码注入漏洞来获取密钥,当然,两种方法都需要攻击者能物理接触到硬盘。
在论文中,研究人员表示,有方法可以保护这些硬盘,那就是确保解密硬盘所需的秘密信息存储在硬盘本身以外的地方。使用运行在主机上的全盘加密软件,并在数据进入硬盘之前和离开硬盘之后用从用户提供的口令导出的密钥加密及解密数据,可以帮助达成这一目标。
论文中呈现的结果告诉我们,不能仅依靠固态硬盘提供的硬件加密来保证机密性。依赖固态硬盘实现硬件加密的用户应再加一道全盘加密软件解决方案,最好还是开源和经过审计的那种。
但不幸的是,某些流行数据加密系统,包括 Windows 10 中采用的Bitlocker工具,都没有为固态硬盘采取软甲加密防护,而是依赖硬盘本身脆弱的硬件加密。
密码学大师 Matt Green 对此也没有保留他的意见:
老实说,微软信任这些设备来实现Bitlocker的举动,真心是这家公司史上最蠢。这就好像撑把雨伞就跳飞机而不是背好降落伞再跳一样。
某些情况下,研究人员建议用户和管理员试试采用VeraCrypt之类的东西替代Bitlocker。
他们称:VeraCrypt可以在操作系统运行时就地加密,能与硬件加密共存。而且,即便通过调整组策略设置就可以支持硬件加密,Bitlocker用户也可以修改偏好强制实施软件加密。
在发给媒体的电子邮件中,两名研究人员之一写道:
因为只懂ARM架构,我们只测试了上述几款应用此架构的固态硬盘。话虽如此,TCG Opal 标准也太难以正确实现了。该规范的要求特别多,而且相当复杂。
一个简单点儿的标准可以让供应商更好实现,也可以保证其实现更加安全。从安全角度上看,应该公开一个参考性质的实现,让安全界审查其设计与实现。这样一来,供应商也就方便实现这些加密策略了。
我们对固态硬盘硬件加密用户的一般性建议是,不要完全依赖当前的硬件加密技术,应采取额外的安全保护措施,比如安装VeraCrypt软件加密。
关于该漏洞的论文地址:
TCG Opal 加密标准地址:
https://trustedcomputinggroup.org/resource/storage-work-group-storage-security-subsystem-class-opal/