荷兰拉德堡德大学的两名研究人员日前发表论文,描述了固态硬盘流行加密软件Bitlocker中的关键漏洞。固态硬盘需要口令来加密和解密其上存储的内容,但该口令可以被绕过。

荷兰拉德堡德大学的两名研究人员日前发表论文,描述了固态硬盘流行加密软件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软件加密。

关于该漏洞的论文地址:

https://t.co/UGTsvnFv9Y

TCG Opal 加密标准地址:

https://trustedcomputinggroup.org/resource/storage-work-group-storage-security-subsystem-class-opal/

最新文章

  1. 使用putty与SSHSecureShellClient登录远程服务器完成与本地Git项目的同步
  2. Image模块
  3. thymeleaf的常见用法
  4. UIKit框架之UIDynamicAnimator
  5. 锋利的jQuery学习总结
  6. mybatis框架中动态SQL的编写
  7. Java--笔记(5)
  8. C#语法糖
  9. datepicker自定义 -- iOS
  10. Apache脚本路径别名(CGI接口)
  11. ECSHOP在线手册布局参考图--商品详情页 goods.dwt
  12. Start-Process传递变量
  13. XBox360自制系统的更新(Update)
  14. HDOJ1251-统计难题(trie树入门)
  15. 面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况
  16. javascript如何解析json对javascript如何解析json对象并动态赋值到select列表象并动态赋值到select列表
  17. 移动端IOS第三方输入法遮挡底部Input及android键盘回落留白问题
  18. 第2次作业:stream案例分析
  19. 移动端,input输入框被手机输入法解决方案
  20. No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android"

热门文章

  1. Mybatis Generator for SQL Server
  2. Android控件篇
  3. NSTimer解除循环引用
  4. Java常用知识(长期更新)
  5. Python图像处理库PIL的ImageStat模块介绍
  6. nyoj--49--开心的小明(背包)
  7. centos7 配置redis
  8. 系统丢失的DLL文件问题根源解决(纯净官网下载放心)(图文详解)(博主推荐)
  9. windows下python3 使用cx_Oracle,xlrd插件进行excel数据清洗录入
  10. 洛谷P4180 [Beijing2010组队]次小生成树Tree