通过模糊性实现的安全性比开源软件安全吗?

Linux用户通常将安全优势作为偏爱开源软件的原因之一。由于该代码开放给所有人查看,因此更多的眼睛在寻找潜在的错误。他们指的是相反的方法,即代码仅对开发人员可见,因为通过模糊性可以保证安全性。只有少数人可以看到代码,而想要利用bug的人不在该列表中。

尽管这种语言在开源世界中很常见,但它不是Linux。特定的问题。实际上,这场辩论比计算机要古老。那么问题解决了吗? 一种方法实际上比另一种方法更安全,还是两种方法都有道理?

通过隐蔽性实现安全性是什么?

通过模糊处理获得的安全性是对保密性的依赖,以此作为保护系统组件的一种手段。当今最成功的商业操作系统背后的公司(Microsoft,Apple和较小的Google)都采用了这种方法。这样的想法是,如果不良行为者不知道存在缺陷,那么他们如何利用它们?

您和我都无法在使Windows运行的代码上达到顶峰(除非您碰巧拥有与Microsoft的关系)。 macOS也是如此。 Google开放了Android的核心组件。

缺点是什么?

由于我们看不到代码中发生了什么,因此我们必须信任公司,说他们的软件是安全。实际上,它们可能具有业内最强大的安全性(就像Google的在线服务一样),或者它们可能存在令人毛骨悚然的漏洞,令人尴尬地流连忘返。

本身,不为系统提供安全性。这被认为是密码学领域中的常识。 Kerckhoff的原则认为,即使机制落入敌人手中,加密系统也应保持安全。这一原则可以追溯到1800年代末。

香农的格言在20世纪遵循。它说人们应该在假设对手会立即熟悉它们的前提下设计系统。

早在1850年代,美国锁匠阿尔弗雷德·霍布斯(Alfred Hobbs)演示了如何挑选制造商生产的最先进的锁。他们声称保密使他们的设计更安全。 (可以说)以他们为生的人通常会擅长于摘锁。仅仅是因为他们可能以前从未看过它,就无法使其变得坚不可摧。

这可以在Windows,macOS和其他专有操作系统上提供的常规安全更新中看到。如果保持代码私密足以隐藏漏洞,则无需修补漏洞。

通过隐蔽性实现的安全性不是唯一的解决方案

幸运的是,这种方法是这些公司只采取防御计划的 part 。 Google奖励发现Chrome安全漏洞的人,而且它并不是唯一使用这种策略的唯一技术巨头。

专有技术公司花费数十亿美元来确保其软件的安全性。他们并不是完全依靠烟雾和镜子来阻止坏人。相反,他们仅将保密作为第一层防御,通过使攻击者更难在他们希望渗透的系统上获取信息来减慢攻击者的速度。

问题是,有时是威胁并非来自操作系统之外。 Windows 10的发布向许多用户表明,该软件本身可能会导致不良行为。微软加大了收集Windows用户信息的力度,以便进一步通过其产品获利。我们不知道这些数据有什么作用。我们看不到要查看的代码。甚至在Microsoft确实开放时,它仍然会含糊其词。

开放源代码安全性更好吗?

当源代码公开时,就会有更多的人发现漏洞。如果代码中有错误,那么想法就会消失,然后有人会发现它们。而且不要想将后门潜入您的软件中。有人会注意到,他们会叫你出来。

很少有人期望最终用户能够查看并理解源代码。这是其他开发人员和安全专家要做的。我们很容易得知他们代表我们进行这项工作。

还是可以吗?我们可以与政府划清界限。当新的立法或行政命令通过时,有时记者和法律专业人士会仔细检查材料。

像Heartbleed这样的漏洞已向我们表明,不能保证安全。有时,错误是如此的晦涩,即使有数以百万计的人使用该软件,错误也能消失数十年(更不用说Windows上也不会发生)。可能需要花一些时间才能发现一些怪癖,例如,敲击Backspace键28次以绕过锁定屏幕。仅仅因为许多人可以看代码并不意味着他们就看。再次,正如我们在政府中有时看到的那样,公共资料可以仅仅因为它很无聊而被忽略。

所以为什么Linux被广泛认为是一种安全的操作系统。相比之下,Windows和macOS仅限于直接来自Microsoft和Apple的改进。

此外,Windows在台式机上可能占主导地位,而Linux在服务器和其他关键任务硬件上得到了广泛使用。许多公司喜欢在风险很高时选择自行修复。而且,如果您真的很偏执,或者需要确保没有人监视PC上发生的事情,那么只有在您可以验证计算机上的代码正在执行什么操作时,您才能这样做。

哪种安全模型

人们普遍同意,只要密钥是私有的,加密算法就必须开放。但是,没有共识认为,如果代码开放,所有软件都会更安全。这甚至可能不是一个正确的问题。其他因素会影响系统的脆弱性,例如发现漏洞利用的频率以及修复漏洞的速度。

尽管如此,Windows或macOS的封闭源代码性质会让您感觉如何不舒服吗您是否仍在使用它们?您认为这是一种福利,而不是有害吗?进来吧!

标签: 计算机安全性 加密 Linux 开放源代码