长期使用计算机的人都应该注意到,主流的操作系统和应用程序都变得越来越易用,以前需要经验丰富的专业人员才能完成的事情,现在只需要很傻瓜地摁几个按钮就可完成。
易用性会不会影响安全性? 易用性产生的原因之一是因为开发者研究出了更加合理的开发流程和可用的对象,替你实现所有的复杂工作。举例来讲,以前,我使用汇编语言或C/C++时,我必须自己写特别多的代码,而现在,编程都是可视化的,成千上万行的代码早已经是现成的了。你所必须做的只是创建程序框架和开发环境,然后编译器会把其它复杂的东西加进来。那么这些额外的代码是谁写出来的呢?怎么确定这些代码是安全的?从根本上,不是很容易回答这个问题。
安全的环境与复杂性水火不容 表面上看起来比较容易,但软件背后的复杂性可能是难以置信的。安全的环境不能与复杂性和平共处,这也是为什么黑客、病毒、恶意软件可以有那么多的机会发起攻击的一个原因。为什么微软的操作系统中会有那么多的bug?实际上,有非常非常多的bug、漏洞、缺陷存在于主流系统和应用程序中。
复杂系统的可靠性和安全性如何? 我们来看一下空间项目的安全性。多年来,NASA的科学家都知道,航天飞机是世界上最复杂的一个系统。但航天飞机的安全性是处于第一位的,任何一个方面都非常好,惟一的不足就是成本太高。在一些环境中,即使最低级的组件发生变化,都会对结果有很大影响。整个系统中存在这么多的变量,那么为什么还能保证结果呢?这是因为NASA的科学家们知道,他们需要开发出尽量不复杂的系统。
在其它的软件开发和网络部署中,这条规则同样适用。
我可以写出没有安全隐患的文档吗? 几天前,我在想像微软的Word这么简单的东西。我总是在用Word,每天都在用。你知道这个系统功能有多强吗?它可以做各种各样的复杂工作,像数学、算法、画图、趋势分析、字体、图像效果、超链接等。
而我只用它来写文档,并不用其它的功能。你第一次安装或配置Word的时候,会有一个选项,问你是否只安全核心部分。你可以只选用核心功能,但所有共享的组件还是装了。我在做安全评估时所遇到的几乎所有的计算机都安装了微软的Word。我可以告诉你,有多少次我都是用word的功能去做各种复杂的工作来攻击系统的。
总而言之,系统越复杂,通常是以为了最终用户更方便使用的名义,那么就越有可能遭到攻击,感染病毒的几率也大大加大。可以做到易用、运行高效、功能多,同时降低复杂性、保持安全性。只是需要更长的开发时间,并在开发时更多地考虑安全。也许,你认为复杂而不安全的软件的主要责任应该由开发者来承担,但实际上,我们终端用户、消费者也应该承担一定的责任。我们想要大的、快的、功能全的软件,并且我们急于求成。我们不愿耐心等待安全的系统,难道不是这样吗?
网友评论