机房360首页
当前位置:首页 » 安全资讯 » “质数+探查”可攻击英特尔软件防护扩展指令拿到密钥

“质数+探查”可攻击英特尔软件防护扩展指令拿到密钥

来源:安全牛 作者:DJ编辑 更新时间:2017-3-13 16:27:23

摘要:软件防护扩展指令( Software Guard Extensions:SGX )本应隐藏数据,但“质数+探查”的攻击方法搞定了它。

  软件防护扩展指令( Software Guard Extensions:SGX )本应隐藏数据,但“质数+探查”的攻击方法搞定了它。

  1月,英特尔SGX输入输出防护被曝存在可能缺陷,现在,应受保护的SGX飞地上又出现了恶意软件。

  奥地利格拉兹科技大学的研究人员写了概念验证程序(PoC),不用SGX保护系统,却用来隐藏恶意软件,并在5分钟之内,就从SGX管辖范围内获取到了RSA密钥。

  设计SGX就是为了避免出现这种情况。SGX是隔离机制,本应防止代码和数据不被窥探——恶意特权用户也不行。研究人员所用边信道攻击被他们称为“质数+探查(Prime+Probe)”,对原生英特尔环境或Docker容器都有效。

  该PoC包含复杂的3步过程,专门用于在别人领地恢复出RSA密钥:首先,发现受害者的高速缓存组地址;然后,在受害者触发RSA签名计算时窥探缓存;最后,抽取密钥。

  论文中,研究人员写道:

  我们开发了目前为止英特尔CPU上最精确的时序测量技术,专为英特尔CPU硬件量身定制。我们结合了DRAM和缓存边信道,打造出无需猜测页面大小便可恢复物理地址位元的尖端方法。OpenVPN等工具采用mbedTLS协议,其中的RSA实现,就是我们的攻击目标。尽管有使用定时乘法原语的边信道攻击防护,我们的攻击还是成功了。单次 Prime+Probe 追踪,就能抽取4096比特RSA私钥的96%,仅11次追踪,就可在5分钟之内完全恢复出密钥。

  该攻击甚至能跨不同Docker容器进行,因为Docker引擎调用的是同样的SGX驱动。

  Docker容器共享相同的SGX驱动模块

  定时:加密边信道攻击需要高分辨率定时器,也就是SGX中被禁止的东西。但研究人员梳理了英特尔的规范,将目光锁定在inc和add指令上——因为这俩指令有1个周期的延迟,且在寄存器作为操作数的时候有0.25周期/指令的吞吐量。

  为模拟遭禁定时器,研究人员使用了如下x86指令:

  mov &counter , %rcx

  1: inc %rax

  mov %rax , (%rex)

  jmp lb

  “回收集”生成:该步骤用于发现映射到同个高速缓存组的虚拟地址:我们顺序扫描内存,搜索可致行冲突的邻近地址对。由于SGX内存是连续分配的,我们可在虚拟地址中进行该项扫描。

  以上两步完成后,便可开始监视脆弱的高速缓存组,寻找RSA密钥计算的特征签名。

  这部分攻击必须离线完成。也就是说,与收集数据的缓存监视过程是分开的。因为数据中包含了太多噪音(来自定时错误、上下文切换、非RSA密钥活动、电源管理引发的CPU时序改变等)。

  密钥恢复分3步完成。首先,预处理跟踪。其次,每次跟踪抽取出部分密钥。最后,融合各部分密钥恢复出私钥。

  在带SGX功能,安装 Ubuntu 16.10 的联想 ThinkPad T460s 上,他们发现:

  340次尝试后,他们的恶意软件从2048个可用高速缓存组中找出了可利用的那个;

  从脆弱高速缓存组捕获一个密钥追踪平均耗时72秒;

  一次高速缓存追踪,可获得4096比特RSA密钥的96%,11次追踪,即可恢复出完整RSA密钥。

  研究人员称,该攻击可被阻止,但漏洞修复应来自英特尔,因为对操作系统的修改会有弱化SGX模式的风险。

  责任编辑;DJ编辑

机房360微信公众号订阅
扫一扫,订阅更多数据中心资讯

本文地址:http://www.jifang360.com/news/2017313/n206394342.html 网友评论: 阅读次数:
版权声明:凡本站原创文章,未经授权,禁止转载,否则追究法律责任。
相关评论
正在加载评论列表...
评论表单加载中...
  • 我要分享
推荐图片