开放源始码和安全性有什么关系?

诚如密码学专家 Bruce Schneier(布鲁斯・施奈尔)所著《秘密与谎言:如何建构网路安全防卫系统》一书第二十二章【产品测试及验证】中的描述,他认为公众开放的密码学加密方法其安全上的好处优于私人专有的方法,因为唯一可以确认密码方法之安全性的作法,即是由许多专家投注一段很长的时间评估,而将该方法公诸于世是经济效益最佳的方法;所以基于相同理由,他认为任何与安全防卫相关的事务都应有公众的解决方案,这包括採用开放源码方式发佈软体,就让世上所有专家评估、让时间考验。

他认为一个 优良的安全防卫设计,其设计细节不会有什麽必须隐瞒之处;换句话说,这套安全防卫设计之所以安全,纯粹来自于产品本身,以及产品自身可以改变的祕密:如密钥、密码、信符…等等。但如果是透过隐匿的方式获得安全性(security by obscurity):即系统的细节是安全防卫的一环,那麽一旦设计细节公诸于世,它们可能会在极短的时间内被破解。若一个软体的安全设计相当拙劣,就只能期待设计细节不曝光来得到安全;若系统设计相当优良,即便将相关细节公诸于世,也仍旧安全。

而软体也是一样,要在源始程式码中找到安全防卫上的漏洞,唯一的方法是评估检验,但你不可以随便找人评估,你需要的是安全防卫软体专家来评估,你需要它们从各种不同角度、经年累月的一再检验。虽然聘请这类专家是可行的,但是让大众一同动手会更省钱、也更有效率,所以 最简单的方式就是公佈软体的源始码。

说到这,最常见的反对论点是:公布软体的源始程式码只会给怪客们找寻弱点所需之资讯,并且利用这些资讯来作恶。这些人认为,保护源始码秘而不宣,能够阻断攻击者得到相关资讯。Bruce Schneier 讲到这裡说道:「除了惊叹他们的天真之外,我还真不知道该说些什麽」。

毕竟将软体源始码公诸于世,并没有因此增加该软体的臭虫与缺陷数目,唯一增加的是一般大众对它们认识的可能性而已。他提到:「那些把程式码隐匿不为人知的厂商多半很懒散;而愿意将产品源始码公诸于世的厂商,往往可以因此找到漏洞,所以,他们也就能修补它们。」「秘密的软体是脆弱的:它就像密码学一样。若将源始码公诸于世,会比隐匿源始码的措施提供了更扎实的安全防卫」。

然而,开放源始码软体并不能保证安全,他认为 大众应该把两件警告铭记在心。

首先,仅仅将源始码公开并不自动等于人们会检验它的安全漏洞,并且,当然这也不代表专家们会检验它的安全漏洞。他举例说:「研究员在 MIT 麻省理工开发的 Kerberos 程式码发表后十年,才在其中找到缓衝器超限的问题」、「另一个开放源始码的软体 Mailman,用来管理邮递清单,有显著的安全问题存在长达三年之久⋯⋯直至原作者检查源始码,才找到问题所在」。毕竟安全防卫专家是一群常为杂事分神、极其忙碌的一群人。他们没有什麽时间,也没有意向想检阅世上所有公布的源始码。所以,虽然公布源始码是件好事,但是它无法带给你安全的保证。

其次,仅仅将源始码公诸于世,并不自动等于安全问题只要一发现就可以被迅速解决。我们没有任何理由推论:一个两年的开放源始码软体之安全性,会比一个两年的专有源码软体的漏洞少。如果开放源始码的软体已经被专家详细检验过,那麽以上的论调有可能是真的。但若只是因为一段程式码已经公诸于世多年,并不具任何特别的意义。

Bruce Schneier 总结道:「我相信软体开放源始码有潜力可以增进安全防卫能力。但是,软体并不会因为源始码公开而自动变得很安全,就像不能因为程式码不公开,就下断语认为它不安全一样」。

最后,Bruce Scheier 提及软体开发模式也是影响软体安全性的因素之一,而上述探讨只针对源始码开放与否作分析,没有涉及到「哪一种开发程序可能在设计上产生安全的软体」。他认为若採用传统的专有软体方式(教堂式开发)或许较能产出高品质、大规模的软体;所以对于安全防卫而言,最好的作法也许是先以教堂式开发製作出专有授权的软体;然后,再将它转为开放源始码公开让所有人检验、让时间考验。

参考资料
书名:《秘密与谎言:如何建构网路安全防卫系统》
作者:Bruce Schneier
译者:吴蔓玲
出版社:商周出版
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值