在讨论国家机密定义太模糊时,经常会有哥们冒出来,认为模糊的定义对国家安全是有好处的。似乎,国家机密越多,国家就越安全。
无意间翻到Bruce Schneier博客的一篇旧文,原文是批评美国国土安全部扩大保密范围的做法,不过论证过程其实可以推广到国家机密和国家安全的范畴上,题目就是The Non-security of Secrecy。里面其实就问了三个问题,保密真的有用吗?公开是不是更好?保密符合谁的利益?
下面就是翻译,有兴趣的读原文去吧。
保密,却不安全
Bruce Schneier
ACM通讯,2004年10月
在保密和安全这两个不同的概念之间有很多混淆,其结果是糟糕的安全性和令人吃惊的政治争论。保密通常只是给人一个虚假的安全感。
2004年6月,美国国土安全部要求监管机构对网络中断的信息保密。美国联邦通信委员会要求电话公司报告大规模的电话中断现象,并希望将此政策扩展到高速数据线路和无线网络。美国国土安全部担心,这些资料会被网络恐怖分子当作“虚拟世界的地图”,打击关键基础设施。
那么,发布计算机和网络的安全弱点有没有好处?还是说,这只不过是在给黑客帮忙?自从恶意软件能迅速利用最新公布的漏洞以来,这个问题就变得很常见。
认为保密对安全性有好处的观点,很天真,永远值得反驳。保密只在有限的情况下有利于安全,而这里的“有限情况”肯定不包括安全漏洞和安全评估方面的信息。秘密是脆弱的,一旦泄密了,就永远地泄露了。依赖保密的安全性也一样脆弱,一旦泄密,就再也没办法恢复了。想把安全建立在保密上纯粹是糟糕的设计。
密码学是基于秘密——秘密的密钥,但看看密码学家做了多少工作让密钥更加有效率。密钥很短,而且易于传输。它们容易更新更换。而且,密钥是密码系统中唯一需要保密的。但如果想把密码算法也保密,那就太蠢了。这也是为什么密码学的基本原则之一就是假设算法是公开的。
支持保密的论点中有一个谬误,就是假定保密真的有用。难道我们真的认为坏蛋没办法发现网络的物理弱点吗?
支持保密的人忽视了公开对安全的价值:公众的监督是提高安全性唯一可靠的方法。在从前安全漏洞还不是经常公布的时候,软件公司否认漏洞的存在,也不会去打补丁。因为他们相信,只要漏洞是保密的,那就是安全的。而且因为客户没办法全面了解这些信息,他们买了这些系统,仍然相信它们是安全的。如果我们保密软件漏洞,那么在安全社区中不会有多少人知道,但却有很多黑客知道。
保密让人没法评估自己的风险。公开网络中断事故,能迫使电话公司改善他们的服务。消费者可以比较不同公司的可靠性,并挑选最能满足他们需求的。如果不公开披露,这些公司就可以隐藏自己的弱点。
谁支持保密?软件厂商(比如微软)想要保密漏洞信息。国土安全部的建议受到电话公司的热烈回应。保密符合这些公司的利益,而不是消费者,公民或社会。
911之后,我们不断地看到保密和公开的冲突。美国政府正试图保密许多反恐对策的细节,甚至政府日常运作。比如,工厂和政府建筑的基础设施信息,用于标识特定航空乘客的分析数据,国土安全部设立的恐怖主义威胁颜色分级标准,甚至是和恐怖主义毫无联系的政府工作信息。
这样可以把恐怖分子蒙在鼓里,尤其是没办法自己找出这些弱点的“笨蛋”恐怖分子。但与此同时,政府最终负责的对象——公民,也无法评价安全对策,评论其有效性。没有公开辩论或公众教育,安全是不能提高的。
最近的研究表明,大多数水、电、煤气、电话、数据、运输和分配系统都是无标度网络:他们总是有高度相连的枢纽节点。攻击者自然也知道这件事情,直接想办法攻击枢纽节点。安全人员从而开始学习如何加固枢纽节点,提高冗余。想要隐藏网络中的枢纽只会是徒劳无功的。我们不如主动标出枢纽,并更好地保护他们。
如果我们有足够的信息来向厂商施压,让他们提高安全性,那我们大家都会更加安全。但如果软件厂商都不公开软件漏洞,电话公司不公开网络终端,恐怕我们其实都不太安全。政府当然不想解释自己的行动,因为这让他们自己更安全,但这不是人民的安全利益。