根据戴维·A·惠勒的著作"如何在Linux和Unix系统下进行安全编程",对安全软件开发提出了三个方面的核心要求:
· 首先,必须对代码进行真正的检查。
· 其次,在开发和检验代码的人中,必须至少有一部分了解怎么撰写安全程序。
· 再次,一旦问题被发现,就必须被马上修正,并且将补丁迅速散发下去。
惠勒的文章对于希望了解安全技术学习安全编程的人来说,是最好的网络资源之一。对于广大真正的安全软件设计者来说,这三项原则是必备的。
惠勒的原则在一定程度上可以解释为什么开放源码软件比其封闭源代码的同类有更多潜在的安全性。和封闭源代码软件一样,开放源码软件没有任何理由显示不必遵守这三项原则,毕竟软件开发的模式都是类似的。
不过,这还是存在了一些问题的:
1. 由于保密协议的限制,独立代码审查的费用往往是极为昂贵的。
2. 免费代码审查将会很快地变得越来容易得到的,因为人们通常在意的是你给他们什么东西,特别是在开放源代码软件在很多地方都出现的时间。
3. 更多的代码审查,会让代码更安全–不过即使你为封闭源代码或"源"提供的代码进行了足够数量的审查,它的安全还是不会比开放源代码的软件高。
4. 大部分最好的安全程序代码的作者都认为,开放源码是获得安全代码的最好方式(见柯克霍夫原则),因此,你在代码封闭开发的时间,可能很难聘请到他们。
5. 由于雇佣和解聘导致人员频繁的变换,最后可能会让企业中代码的管理者并不知道安全代码的实际情况。
6. 企业的责任在于让股东获得利润而不是提高软件的实际质量。这就意味着,任何能提高收入或者降低成本的措施都是可以选择的,而这是与安全编码的目标相冲突的,也就是说安全编码的结果可能受到损害。考虑到了解如何编写安全代码的
程序员的身价都是很高的,人力资源部门对薪酬的严格限制将反过来限制雇用最好的程序员的能力。
7. 综观软件管理系统领域,象APT for Debian GNU/Linux这样的开放源代码的类UNIX操作系统以及FreeBSD操作系统的端口系统不会是封闭源代码的,是经常以开放源代码的形式出现,而象微软Windows操作系统在通常情况下无论如何也是不会接受任何第三方软件的。这就意味着,封闭源代码软件的快速修复通常依赖于最终用户提供的修复信息,以及他们自己获取和安装修补版本软件的能力。
8. 公司需要承担的责任对于补丁的发布来说是一个重要的因素;延迟发布安全补丁(有时是无限期),甚至阻碍用户找到可靠的资料对漏洞进行修复,对安全漏洞进行轻描淡写,可以让企业的短期利益获得最大化。
9. 对安全补丁进行分析、开发和测试的好坏取决于开发者和测试者的能力。在开放源代码软件的情况下,开发和测试的人员数量会有显著的增长。
10. 戴维·A·惠勒在"如何在Linux和Unix系统下进行安全编程"一文中指出,如果不能很方便地更改封闭源代码软件的时间,你可以选择开放源代码软件,并给予必要的内部支持。
对于封闭源代码来说,清除了这些缺点就可以带来改进或性能提高的。我们没有理由认为封闭源代码软件的开发商不能象开放源代码软件一样提供安全。但在条件相同的情况下,当前的趋势是看好开放源代码的安全软件,至少从安全原则的角度看是这个样子。