为什么开源很重要?

什么是开源?

开源软件是其版权持有人已公开可用的源代码的软件。在真正的开源许可证下,该软件是协作开发的,其他程序员可以查看,修改或使用其自己的目的。这种“纯”开源模型通常称为FOSS(免费和开源软件)。

开源的一种变体是“可用来源”,这意味着没有授予修改或以其他方式使用代码的许可,但可以进行检查。出于安全目的,这与真正的开源一样好,因此,当我在本文中引用“开源”时,我包括“可用来源”的代码。

什么是封闭的来源?

大多数软件都是由商业公司编写和开发的。可以理解的是,这些公司渴望没有其他人窃取他们的辛勤工作或商业秘密,因此他们将代码从使用加密的眼睛中隐藏起来,而任何尝试未经许可就使用或修改代码的任何尝试都会导致诉讼或更糟。

那是什么问题?

正如我所说,这都是可以理解的,但是在安全方面,它提出了一个主要问题。如果没有人能看到程序的细节,我们怎么知道它不是在做恶意的事情?基本上我们不能,所以我们只需要信任参与的公司,这是我们偏执的安全类型不愿意做的(与充分的理由)。

为什么开源是最好的解决方案?

如果代码是开源的,则可以由有资格这样做的任何人独立检查和审核,以检查是否没有后门,漏洞或其他安全问题。开源不是一个完美的解决方案(请参见下文),但这是必须验证软件只是在做应该做的事情的唯一方法。

即使尚未审核代码,也可以自由使用被审计提供了一个很大的迹象,表明它可以被信任,因为开发人员不太可能包括恶意代码,然后将其开放,以被任何关心的人发现。

不是一个完美的解决方案…

不幸的是,数量有限的个人具有审核开源软件的技能和时间(通常是免费的),这意味着尚未审核绝大多数开源计划。

许多开源程序非常复杂,包含数千条代码行,因此,即使审计,审计师也很可能错过了问题(尤其是在故意隐藏了恶意代码)。

但…

因此,开源不能保证程序是“干净”的,但是这是我们(或可以)最好的保证是这样。替代方案是封闭的来源,无法提供任何保证。

始终验证开源程序

因此,开源非常适合安全。耶!但是,您怎么能确定您刚刚下载的开源程序并未以某种方式被篡改呢?

这听起来像是whacko偏执的阴谋幻想思维,但是在2016年2月,这是Linux开源操作系统最受欢迎版本之一的网站,Linux薄荷, 曾是入侵,并为下载器提供了折衷的OS版本

黑客制作了一个修改后的Linux Mint ISO,其中有一个后门,并设法将我们的网站指向它。

感染的Linux ISO图像安装了Internet Relay Chat(IRC)后门的完整操作系统海啸,这使攻击者通过IRC服务器访问了用户系统。因此威胁是非常真实的。

在这种情况下,下载者不愿检查文件的MD5哈希会发现欺骗,但是这种哈希检查不是可靠的保护,因为如果首先可以将网站入侵,则用false验证核实文件来替换已发布的检查和验证文件是微不足道的。

很多更好的是要使开发人员在数字上签署其软件,以便用户可以验证文件的起源(在这方面,薄荷开发人员非常宽松,因为他们的软件没有数字签名,甚至已知使用的MD5 Hash功能也是如此破碎的

请参阅我的文章数字签名 - 为什么以及如何使用它们有关更多信息。不幸的是,验证数字签名是一个痛苦,但是如果您关心安全性,则是必要的。

我还应该注意,理想情况下,所有软件都应进行数字签名和验证,但是由于任何人都可以自由修改开源代码,因此比封闭的源代码更容易篡改。因此,验证开源程序尤其重要。

开源:结论

开源不是一个完美的解决方案,但它提供了最好的(并且唯一!)保证可以信任软件的可能性。替代方案是封闭的来源,它无法提供任何保证(除了对公司的盲目信仰,这是信仰科技公司不应该得到的)。