G.O.S.S.I.P 阅读推荐 2024-03-25 曲突徙薪亡恩泽,焦头烂额为上客

客有过主人者,见其灶直突,傍有积薪。客谓主人:“更为曲突,远徙其薪;不者,且有火患。”主人嘿然不应。俄而,家果失火,邻里共救之,幸而得息。于是杀牛置酒,谢其邻人,灼烂者在于上行,余各以功次坐,而不录言曲突者。
人谓主人曰:“乡使听客之言,不费牛酒,终亡火患。今论功而请宾,曲突徙薪亡恩泽,焦头烂额为上客耶?”主人乃寤而请之。
(东汉·班固《汉书·霍光传》)

古老的智慧总是不断在现代发光,今天我们要介绍的这篇论文 “These results must be false”: A usability evaluation of constant-time analysis tools 讲的就是这么一个“主人嘿然不应”的故事。

密码学教科书上介绍的算法和协议都是抽象的理论知识,当我们要把理论转换成具体的代码实现时,一些新问题就会出现。在现实世界的安全威胁中,针对密码算法代码的侧信道分析是一类大家都熟知的攻击手段:通过观察密码算法代码在使用不同密钥时产生的差异,推测和恢复秘密信息。实际上,侧信道安全往往和代码的实现方式相关,所以最近几年来在密码代码实现中大家都会强调常量时间实现(constant time implementation)的代码风格。很多研究人员也开发了相关的代码分析工具(见下表,是不是有种“乱花渐欲迷人眼”的感觉),用来检查已有代码中是否存在不是常量时间实现(并且和密钥等关键数据相关)的实现。

然而本文的作者发现,现实世界中的这些代码分析工具,对用户往往非常不友好,这也是导致开发人员“嘿然不应”的主要原因,那就让我们一起看看今天推荐的这篇论文从哪些方面揭示了代码安全分析工具的不足之处吧。

先直接看论文的实验设定:

  1. 选取了六个constant time分析工具(简称CT工具)

  2. 邀请了24名计算机专业(且学过密码学)的学生作为测试人员

  3. 把整个user study分为了两个阶段

整篇论文读下来,可以感觉到里面的user study设计得很好,如果我们的读者在自己的论文中也涉及到开展user study的话,这篇论文是非常好的参考。而且如果你是产品经理,就更应该看一下这篇论文的调查结果,了解现在这么多工具都无人问津的主要原因。

本文的user study并没有上来就直接要求参与者投入到测试中,而是给了大家一个热身的机会:所有参与人员都可以有8小时时间,通过作者设计的10个暖场任务(既包括对有问题代码的检测,还要求参与者对其进行修复)来熟悉会用到的CT工具(或者“从入门到放弃”,不强求一定要坚持)。

参与者热身完毕之后(上面的表格展示了大家使用工具进行热身的效果,不同的工具在不同的暖场任务中表现差别很大)就可以进入到“正餐”环节:作者要求大家去分析真实的密码学代码库(包括OpenSSLNettlembedTLS)。当然,作者自己也会跟着一起做一遍,这样能够更好地和参与者产生共情理解参与者在实验过程中遇到的种种挑战的细节。此外,在阅读中我们还学习到一个新的概念——System Usability Scale(SUS),是一篇1995年的文章(John Brooke. SUS: A quick and dirty usability scale. Usability Eval. Ind., 189, 11 1995)中提出的,虽然不懂是什么,但是听起来很厉害,我们就权且认为社科人文领域的研究都是对的吧(充满了黑气)。

作者用SUS进行打分后,所调查的六个工具好像在可用性(usability)方面的得分都不高(根据定义,得分要超过68分才算above average):

迪斯尼今年的动画音乐电影《星愿》里面有句歌词“你们不感恩,还要抱怨。”CT工具开发者在看到论文实验的参与者的言论之后,估计也会嘟囔这句台词。实际上在整个user study过程中,几乎在每个环节,参与者都在吐槽所有的六个CT工具:

我们来节选一些抱怨的言论:

(第19号参与者):这些工具的文档里面几乎找不到任何操作工具的命令的说明,对用户非常不友好(唯一没被吐槽的是ctverif,是因为该工具使用起来很简单,但是在热身阶段没有一个人能使用该工具去解决暖场任务2,因为输出完全看不懂)。
(第31号参与者):论文作者提供了一些工具使用的tutorial,这简直太棒了,为什么这些工具的开发者没有写出这么好的tutorial。
在安装这些工具的过程中,大部分参与者遇到了各种部署的问题,特别是工具的编译安装。
在分析阶段,参与者对这些工具的输出信息表示出了高度的困惑,特别是分不清工具报告的问题里面哪些是warning,哪些是真正的violation。
(第6号参与者):对于CT工具检测结果(特别是针对现实世界密码算法代码库)表示不确定,当然自己也并没有太高的自信心去判定结果的正确性。

总之,虽然很多CT工具的开发者都是用爱发电,但是如果读完了这篇论文,能够百尺竿头更进一步,把一些用户体验做做好,也许又能孵化出下一个Matlab或者VMWare吧(哈哈哈我们搞安全的都知道这是绝不可能的)。作者还谦虚地表示 “Although our analysis focused on CT tools, we believe that many of our findings also apply to tools for analyzing microarchitectural side-channels”,实际上我们知道这些结论同样也能帮助到其他的代码安全分析工具(特别是SAST,不是吗?)


论文:https://cryptojedi.org/papers/usect2-20240305.pdf


免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。查看原文

为您推荐