事务内存Transactional Memory,是高性能计算领域的技术概念,早在1993年提出。其基本想法是由底层的软硬件跟踪记录并行任务的内存访问,确保声明为事务的代码片段的内存读写操作原子性。具体为:对于声明为事务执行的代码片段,如果在事务执行期间,有任何其它并行的任务也访问了事务代码的数据、且其中一方是写操作,则事务代码就会自动回滚到事务的开始点、所有执行痕迹都被自动清除。
利用Intel在2013年推出的硬件事务内存特性(称为TSX),可以构建安全的密码计算环境:将密码计算定义为事务,私钥作为事务执行的写操作结果,然后再进行密码计算。能够获得如下的安全保障:在密码计算期间,任何其它的(可能是非法攻击)任务读取了私钥的内存地址,就会触发事务回滚到开始点、私钥就被清除,攻击者只能得到无效数据。
以上方法能够防范各种类型的、窃取密钥数据的攻击:不论攻击所利用漏洞是什么类型,攻击都会有最后的读操作,都会触发事务回滚;包括软件攻击和D M A攻击都是如此。而且,在现有的硬件事务内存实现中,都是利用了CPU Cache来暂存事务的中间状态数据,所以上述方案也能够有效防御Cold-Boot攻击。