Mimosa

Posted by Maxul's Technical Notes on June 22, 2018

题目: Protecting Private Keys against Memory Disclosure Attacks using Hardware Transactional Memory

作者: Le Guan, Jingqiang Lin, Bo Luo, Jiwu Jing, Jing Wang

单位: Chinese Academy of Sciences

出版: IEEE Symposium on Security and Privacy 2015

解决问题:

  • 加密密钥在安全界享有最高等级保护。但在很多情况下,非对称加密的私钥却在内存中以明文的形式储存。Memory Disclosure Attacks就是一种直接将内存数据拿走的攻击,如OpenSSL HeartBleed。很多程序缺陷都直接导致内存可以被非法访问。已有的方式有溢出检查和完整性检查。但对于冷启动而言,却可以绕过所有已有的方案,直接获取数据。
  • Mimosa是含羞草,意味着当攻击者碰触时自动关闭,保证数据的隐私性不泄漏。HTM本意是为了并发控制系统对数据竞争访问的硬件支持,简称硬事务内存。本工作发现Intel TSX(一种HTM实现)的原子性保障可用于内存敏感数据的保护,而且其基于cache的设计可以保证加密过程不泄漏到RAM芯片上。
  • 方法简介:集成TRESOR,使用内核态下debug寄存器存储主key,然后每个进程一个私key。私key默认情况下在内存中用主key加密。当某个进程需要加密时,创建一个事件,在事件中解密得到私key,然后进行正常载荷的加密/解密操作,事务退出时清除私key明文,并用主key再次加密私key存储在内存中。事务发生时,所有外界对事务内存区间的访问导致自动回滚。

贡献:

  1. 第一篇使用TSX技术实现隐私保护的工作。
  2. 实现证明可有效抵御Memory Disclosure Attack,代价较小。
  3. 提出程序应如何结合HTM保护自身的guideline。

假设:

  1. TSX的正确实现。
  2. OS启动过程不受攻击。
  3. 假设内核完整性不被破坏。
  4. 需要用到调试寄存器,因此禁止LKM和/dev/mem,对ptrace打补丁,移除JTAG端口。

实现挑战:

  • MMX寄存器会导致TSX Abort事件,因此需要对加密库做修改。

体会:

  • 将加密过程使用的数据放在XBEGIN和XEND之间,就可以保证任何不是当前上下文的代码访问(其余线程)无法得到加密数据。本质可以视为基于事务内存的访问权限控制,粒度在线程级别上。

思考:

  • 已有不少工作使用x64上闲置的segment寄存器作为线程级别的最小特权实现,取得了不少成果。TSX也是线程级别的原子访问。观察性能实现,进而思考:是否可以用TSX来实现轻量级的线程特权分离。另外TSX还可以很好地抵御cache侧信道攻击:Strong and Efficient Cache Side-Channel Protection using Hardware Transactional Memory. USENIX Security Symposium 2017。值得探索。