知识卡片

安全库防不了设计层面的错误

普通读书笔记卡 · 1451.h

内容

Google的Tink加密库通过不允许GCM模式下随机数重用等”防呆”设计,消除了大量因不熟悉密码学细节导致的实现级漏洞,但无法阻止更高层面的设计错误——比如工程师明知要保护信用卡号这类取值范围很小的数据,却选择用普通哈希而非专门的认证加密,哈希结果依然可被暴力枚举破解。发散:这提示审查代码时”用了公认安全的库”和”用对了这个库”是两件事,安全库能兜住最底层的实现陷阱,选型和场景适配这类更高层的判断仍要靠人。

参考来源

- 位置:《Google系统架构解密:构建安全可靠的系统》第6章《面向易理解性的设计》6.4.3节Tink案例(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_060.html`) - 结论依据:原文说明Tink通过不允许GCM随机数重用防止实现级漏洞,但明确指出"Tink不能避免加密代码中高级别的设计错误",并以选用哈希而非认证加密保护小取值范围数据(如信用卡号)会被暴力枚举破解为具体反例。 - 原始内容:但是有一点需要特别注意:Tink不能避免加密代码中高级别的设计错误。例如,没有足够密码学背景的软件开发人员可能会选择通过散列来保护敏感数据。如果所涉及的数据来自一组规模相对较小的数据,例如信用卡或社会保障号码,则数据是不安全的。