《“I’m pretty expert and I still screw it up”》
2025-S&P-CCFA
总结:对21位加密库开发者进行半结构化采访,获取关于加密库相关的设计经验。
一、研究背景与动机
加密库作为现代软件系统中基础且关键的安全组件,其设计和使用错误却频繁导致严重的安全问题。现有研究多集中在“开发者如何误用加密库”,而本研究首次聚焦“加密库API设计者是如何作出设计与实现决策的”。
二、研究目标与方法
核心研究问题(RQs):
- RQ1:加密库API的设计与实现决策是如何做出的? why & how
- RQ2:开发者在设计这些API过程中面临哪些挑战?
- RQ3:如何更好地支持API设计者提高安全性与可用性? 辅助作用
方法:
- 进行了21位加密库开发者的半结构化深度访谈;
- 采用主题分析(Thematic Analysis)进行编码与归类;
- 受访者来自开源、商业、嵌入式、微型和研究类库的核心开发者或维护者。
相关工作:
- API设计的原则和进程
- 密码库的可用性
- 密码误用的影响
选人相关:
- 怎么选人(大体背景)
- 面试程序
- 定性分析
- 道德与数据保护
- 限制(幸存者偏差)
三、核心发现
1. 设计动因与影响因素(RQ1)
- API设计广泛受库的用途、标准、其他库、语言生态、遗留代码等因素影响;
- 抽象层次选择在设计中极其关键:高抽象利于误用防止,低抽象利于灵活性;
- 安全默认(safe defaults)广受推崇,但其设定常依赖设计者直觉;
- 大部分库都在标准之上做了本地裁剪或补充设计,标准并非一锤定音;
- 设计者高度依赖个人经验与社群反馈,缺乏系统的可用性参考依据。
2. 面临的挑战(RQ2)
- 缺乏对“API可用性”的明确定义和评价工具;
- 文档维护成本高、质量不稳定;
- 用户反馈多但有效信号少,尤其在开源社区中面临用户威胁或无效建议;
- 兼容性 vs 安全性冲突突出,很多功能因历史遗留难以彻底废弃;
- 资源受限严重:许多开发者兼职、志愿、缺乏资金支持,难以进行系统可用性测试。
3. 设计三难困境:Usability vs Security vs Flexibility(RQ3)
- 抽象程度的调整决定了API对不同用户的适配能力;
- 误用防止设计往往需要牺牲灵活性;
- 安全需求(如常数时间、形式化验证)可能会导致用户体验恶化;
- 开发者自测是主要的可用性评估方式,缺乏系统工具或方法支持。
四、研究贡献
- 首次系统性地从API设计者视角出发,揭示加密库API背后的设计权衡;
- 明确指出当前标准化流程中严重缺乏对API设计与可用性的考虑;
- 提出促进“人因密码学(Human-Centered Cryptography)”发展的建议:
建议:
- 将API设计指导纳入标准化流程;
- 推动基于经验和实证的可用性研究;
- 开发低成本的可用性评估工具,便于开发者在有限资源下测试API设计;
- 构建更系统化的误用场景分析与知识传播机制。
五、研究局限与未来方向
- 受访样本倾向于经验丰富、偏重可用性意识的开发者,样本选择存在偏倚;
- 为定性研究,不追求统计意义上的普适性,更重在提供深入洞察;
- 未来需结合更大规模的量化分析、工具实验验证来强化结论的推广性。
六、总结语
本研究打破了以往“以使用者为中心”的单一视角,从“设计者为中心”出发,系统揭示了当前加密库API在现实设计与实现过程中的真实挑战,尤其在人因工程、标准化指导缺位、经验主义过重等方面提供了深入反思和建设性建议。它为未来设计更安全、可用、可维护的加密库提供了实证基础与方向引导。
七、个人理解
这个研究首先不能用复现,也不能用于复制(R+R,not),本质上这个工作是一个人脉的体现(大胆)。从加密API误用检测领域去考虑,这个工作属于如何避免加密API误用,从设计加密库的方法去避免,也就是从源头减少误用。之前有工作1(CogniCrypt: Supporting developers in using cryptography ASE-2017-ccfa)提出CogniCrypt,一个集安全代码生成与静态分析于一体的 Eclipse 插件,实现开发人员在写代码的过程中避免误用;有工作2(From Struggle to Simplicity with a Usable and Secure API for Encryption in Java ESEM-2024-ccfb)提出了SafEncrypt框架,通过”安全默认配置+流式API引导”的设计范式,解决了传统加密接口的三大安全漏洞问题,有点类似本文的加密库设计来避免误用。
对于本文给出的结论,目前感觉并没有特别好的点(可能是我没发现),都算是一些老生常谈的问题,不过本文有条理有逻辑的梳理出来,对之后的相关工作肯定是有帮助的。