Vale:验证高性能密码汇编代码

作者:

巴里·邦德和克里斯·霍布利泽尔,微软研究院;马诺斯·卡普里索斯,密歇根大学;K.Rustan M.Leino和Jacob R.Lorch,微软研究;布莱恩·帕诺,卡内基·梅隆大学;阿沙·雷恩,德克萨斯大学奥斯汀分校;Srinath Setty,微软研究院;劳雷·汤普森,康奈尔大学
杰出论文奖得主!

摘要:

高性能加密代码通常依赖于为单个硬件平台定制的复杂手工调试汇编语言。这样的代码很难理解或分析。我们引入了一种新的编程语言和工具,称为Vale,它支持灵活、自动化的高性能汇编代码验证。Vale工具将带注释的汇编语言转换为抽象语法树(AST),同时生成有关AST的证明,并通过SMT解算器进行验证。由于AST是一个一流的证明术语,因此在将其提取到标准程序集中之前,可以通过经过验证的正确代码对其进行进一步分析和操作。例如,我们开发了一个新颖的、经过验证的污染分析引擎,用于验证代码是否不受数字渠道的影响。使用这些工具,我们验证了在x86和ARM上实现SHA-256、在x64上实现Poly1305以及在x86上实现硬件加速AES-CBC的正确性、安全性和安全性。一些实现达到或超过了未经验证的最新加密库的性能。

开放存取媒体

USENIX致力于开放访问我们活动上展示的研究。活动开始后,所有人都可以免费获得论文和会议记录。活动结束后发布的任何视频、音频和/或幻灯片也免费向所有人开放。支持USENIX以及我们对开放存取的承诺。

BibTeX公司
@进行中{203642,
作者={Barry Bond和Chris Hawblitzel、Manos Kapritsos和K.Rustan M.Leino、Jacob R.Lorch和Bryan Parno、Ashay Rane、Srinath Setty和Laure Thompson},
title={Vale:验证{高性能}加密程序集代码},
booktitle={第26届USENIX安全研讨会(USENIX-Security 17)},
年份={2017年},
isbn={978-1-931971-40-9},
地址={温哥华,不列颠哥伦比亚},
页数={917--934},
网址={https://www.usenix.org/conference/usenixsecurity17/technical-sessions/presentation/bond(网址:https://www.usenix.org/conference/usenixsecurity17/technical-sessions/presentation/bond)},
publisher={USENIX协会},
月=八月
}

演示文稿视频