网络安全的哲学思考

作者:devway (from xfocus bbs)

网络安全作为一个现实存在,有产生、发展、消亡三个阶段。当然这是从万物有开始必有结束这个哲学的高度来说的。我们在技术的低层看到的是代码,我们从哲学的高度看到的是人性的弱点。

从最基本的原理来说,安全是计算机这个物理层次和人这个精神层次的不一致造成的。两者之间的鸿沟(Gap)虽然可以通过良好的人机界面来弥补,但是人类也许永远也达不到和机器完全相通的境界。如果把肉体也看作物理世界的一部分的话,我们对自己的身体尚不能做到完全理解和控制,更何况诞生还不到一个世纪的电脑呢。所以,精神世界和物理世界之间的鸿沟是一切安全问题的发祥地。现今和未来的安全问题,莫不是从这个源头,杂合各种环境变迁而生成。

一个软件,具体来说一个程序,也是有诞生和终结的。其制造者和使用者往往不会是同一个人。作者和使用者如果不是同一个人,那么他们各自对程序的理解也不一样,这又是一个鸿沟。有鸿沟的地方就会存在安全问题。由此我们可以回忆起“通天塔”的故事。人群,甚至个人与个人之间的精神世界,都存在着隔阂,互不理解,甚至排斥,甚至敌对。精神世界的不能和谐,造成我们实际上需要庞杂而繁缛的社会规条来确保这么多的精神世界能够和平相处。从某种意义上来说,我们生存的目的就是和平相处,其他的一切都是表象。

相对精神世界来说,程序稍微好一点,因为它可以做到精确复制。甚至可以做到在相同硬件的电脑上运行。但是这仅仅是表象。世界上没有完全相同的两片叶子,当让也没有两台完全相同的电脑。同一厂家、同一批次、同一时间生产的电脑,能够一样吗?不能。他们的时钟设定永远会相差一点。精确复制的程序,在两台电脑上,也因为硬件的差异产生变化,从而影响程序的运行结果。这种不同会有生么样的意义呢?最起码来说,我们希望程序的表现处处一样,是一个多么奢侈的愿望啊。

人来从有历史记载到现在,经过了数千年,才稍微安全了一点。是的,稍微。想想上个世纪的世界大战,还有去年的印度洋大海啸。当然,人类现在比茹毛饮血的阶段,起码从个体感受来说,是更安全了,但是,人类所盼望的终极目标,还远未实现。相比之下,电脑这个种族(这么称呼是简单起见),发展了也不过60年而已,用中国人的计算方法,就是一个甲子。而网络的兴起、发展还有更短,数十年而已。而更多目前网络世界的重大角色,往往只只是十几年前、甚至几年前才出现的。

每当历史发生重大变化的时候,最感到痛苦的还是人类自己。因为旧的鸿沟尚未填平,新的而且是更大的鸿沟已经出现了。一群激进分子冲锋在前,而追随其后的奔跑者却越来越少。人类就像是溪流,流得太长了,势头开始减弱了,流量也开始减少了。如果一个可怕的情况出现,比如说激进分子开始把目标错选在沙漠,人类这股激流的末日也就不远了。(希望我们将要进入的新领域可以为自己带来新的绿洲,那里有甘泉和丛林。)

所以说,一切安全问题开始于隔阂(Gap)。比如说,如果从现在开始来设计编译器和CPU,还会有缓冲区溢出吗?这里体现的就是历史的隔阂。人无法超越他所处的时代,时代的变化产生人所无法预料的新隔阂。同一个时代,人和人之间也有隔阂啊。程序员A的程序调用程序员B的程序,A和B所认为的接口是什么样子不会完全一样。这里就是一个潜在的安全问题。程序员的程序和用户的程序,也许相差会更大:我们听说过太多这样的故事了。

我不能继续谈这么空洞的理论了,读者分出宝贵的时间来上网,总是想得到一点有价值的东西。那么,就计算机安全这个问题,在GAP理论的指引下,我能能够得到一些什么样的建议呢?

1,我们现在的某些网络精英们试图让人们忽略最根本的安全问题。防火墙就是最大的罪魁祸首,因为它试图掩盖自身严重的安全问题。庞大的医疗产业永远无法代替健康生活方式的价值。从根本上来说,网络安全的最终目标就是不需要任何防火墙,如同人最好的健康就是不生病、不需要看医生、吃药一样。我们希望未来计算机系统能够足够的强壮,让人们不要防火墙就能达到安全运行。

2,代码的漏洞比我们所看到的多多了。每天都有大量的漏洞披露,就像我们发现海上有浮冰一样,更多的漏洞还没有发现。软硬件发展太快,以至于GAP越来越多。写代码的人不太可能写出超时空(可以运行在任何时代的任何硬件上)的安全代码。前人遗留下来的大量代码,后人不太可能去全部改写,因为他们都在写新代码,所以解决方案只能是能运行就运行,出了问题再修正。

3,开源运动试图使人类重返“修建通天塔”之前的时代。开源的好处就是我们可以从单一的源代码层次来消除开发者和开发者之间、开发者和使用者之间、前人和后人之间的隔阂,因为大家看到的是同一个东西。仅从这一点来说,开源比不开源要高尚的多了。

4,如果智力层次不够,开源和不开源没啥差别。开源试图使用单一的语言(源码)来消除三大隔阂,但是需要记住,所有的这些人,必须用同样的方式来理解代码,他们之间的隔阂才能够降到最低。如果任何一方读不懂、或者理解不了源码,开源的良苦用心就白费了,鸿沟没有缩小,估计还更大。

5,系统越复杂,组件越多,GAP越多。这一点显而易见:一个复杂的灌溉系统漏水的机会比一个杯子大多了。漏洞发现者可以跟踪一段数据在复杂系统中的流向而发现新漏洞。当然,设计复杂系统的人和任何试图理解复杂系统的人之间也存在一个很大的GAP。

6,我们在工具的时代越走越远。稍加分析我们可以发现,这么多年以来人们的大脑并未发生大的进步,绝顶聪明的人总是那么凤毛麟角。我们之所以能够驾驭越来越复杂的东西,在于我们的工具越来越复杂。我们只有把一代又一代的聪明才智浓缩封装在一个又一个工具中,让后来者能够在工具的帮助下走得稍远些。所以,同样作为漏洞分析者,大家的智慧水平也差不多,就看谁的工具更先进了,呵呵。

7,下一代安全工具将会是dtrace这类的东西。dtrace是Sun在Solaris 10中引进的新工具,可以动态跟踪一个程序的运行。debug是旧世界的主宰,而trace是新世界的王者。以后的安全分析员都会有这样一个工具,可以勾画出一个程序、或者一段数据,和运行平台之间的分界线,以及在分界线上都发生了什么事。

8,以后,安全控制将会细致到每一寸的分界线(在7号建议里面说提到的)。彻底的运行时控制将是下一代安全产品的核心功能。运行时控制不仅要控制数据在计算机系统中的流动,还要控制人机交互。整个人和机器的系统将会统一处理,安全的问题将会延伸到人们生活的每一个地方。

9,以后,任何从事安全研究的人,都要以本文总结的GAP理论作为基本指引。从此以后安全产业将重新洗牌,代码安全将会从消除GAP和控制GAP的战略高度来考虑。安全的精髓就是把GAP引发的危险控制在可接受的范围内。

10,本文将激发大家对理论研究的热情,这是好事,从实践上升到理论,再由理论指导更多的实践,这本来就是事物发展的基本规律嘛,哈哈哈。。
阅读更多
换一批

没有更多推荐了,返回首页