知识卡片

只实现需要的功能子集能降低审计成本

普通读书笔记卡 · 1456.c

内容

评估现成的CA软件方案时发现,它们支持了大量本不需要的复杂证书属性和扩展字段,这些用不上的功能反而拖累了整体的可读性和可验证性——多支持一种属性,就多一处需要被审计、可能出错的代码路径。最终选择只实现自己实际用例所需的那部分标准(面向Web服务的常见证书类型),换来的是一个功能更少但更容易被完整理解和验证的系统。这提示”完整实现某个标准/协议”不是天然正确的目标,功能覆盖范围应该由真实用例反推,而不是由规范文档的全集决定。

参考来源

- 位置:《Google系统架构解密:构建安全可靠的系统》第11章《案例分析:设计、实现和维护一个受信任的公共CA》11.4.2节(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_095.html`) - 结论依据:原文说明开发CA时"没有按照标准实现全部功能,而是只实现了其中的一部分",评估商用和开源CA方案后发现它们适配了不需要的复杂属性和扩展,"这样一方面增加了系统的复杂度,另一方面也使验证软件变得困难且极易出错"。 - 原始内容:我们开发CA时没有按照标准实现全部功能,而是只实现了其中的一部分……在评估了商用和开源CA软件解决方案后,结论是这类方案适配了我们不需要的复杂属性和扩展……我们最终选择开发功能有限但具有更高可读性的CA。