搜索

2009年8月23日星期日

所谓安全,如此而已

--------------------------
-------------------------
Windows比我们想象的安全得多……
---------------------------------------------------

我认为Linux系统或者Freebsd,甚至UNIX系统,当然比Windows安全得多,从骨子里,微软公司打一开始就没有把安全作为操作系统设计的目标——或者没有作为主要目标,这和Windows(包括前身DOS)当时的市场定位有关。在微软崛起的岁月里,企业市场一直是SUM和IBM的领域,流行的操作系统是UNIX或者IBM OS,后者后来在于Windows NT系列的竞争中败下阵来,惨遭淘汰,但是UNIX,这个有着最坚实基因的系统,一直在大型的关键性应用中显得无可替代。

Windows传统的市场定位是个人消费者领域,在这个领域里,易用性,一直是重中之重,安全性似乎可以靠边站——所以我们看到了传统上不设权限级别的Windows文件系统。虽然后来,从Windows 95开始,微软极力推动分账户权限的系统设计,但是直到Windows XP我们得到的收获微乎其微——有谁在"受限用户"级别使用Windows?如果你确实试过,你会发现这个所谓"受限用户"的账户充满了兼容性问题、安全警报、无权限提示……在微软能彻底改变Windows平台的软件设计模式并成功影响上下游软件商和用户习惯以前,这个局面是无解的。相对于UNIX用户习惯于在受限账号工作,只在必要的时候才使用超级账号的情况,大多数Windows用户甚至根本不知道这两者有什么区别!

我个人认为,你也没办法教会他们——我老爹能开机、发邮件就不错了,权限?见鬼!

一句话,微软的传统和对传统兼容性的不可放弃,决定了Windows只能背负着历史的包袱,从而在安全性问题是心有余而力不足。

【但是,Windows依然比我们想象的安全得多……】

------------------------------------
我们的系统为什么不安全?
------------------------------------

原因很简单:因为系统里面有个程序在记录我们的键盘、鼠标操作,并按其设计要求将这些信息外发至某个地方。

就是这样。

一台裸机,没有任何程序,是不会存在这种程序的,但是我们需要操作系统,通常——Windows,我们需要各种应用软件,通常——Word、QQ、MSN、魔兽世界、ZIP、暴风影音……这个名单会很长很长。

任何一个程序,只要设计者愿意,都可以实现"记录我们的键盘、鼠标操作,并按其设计要求将这些信息外发至某个地方"——只要你上网。

当然,如果没有网络,一切都无所谓,反正信息发不出去。

通常,我们认为Windows是安全的,通常我们认为Microsoft Office是安全的,通常我们认为Windows Media Player也是安全的,进而,或者说这些安全保障的信心来源于微软是安全的——至少它不会"故意"去制造这样的附加功能。

通常一个正常在使用电脑的用户,其"认为"是安全的名单可以列很长:腾讯、暴雪、苹果、招商银行、罗技……如果你谁都不信,那么你自己去编软件好了,从操作系统到应用软件。

但是这种纯粹基于信用,而使用计算机的方法是危险的,没有经验的用户会不知道该信任谁,而不同的人对信用的理解也不一样,以身试毒的方式代价也太大,所以计算机工业形成了安全软件产品来解决这个问题:

通常人们更愿意信任专家,所以一些这个领域的专家聚集在一起(当然基于利润),讨论并测试出尽可能多的不安全程序,给出名单,设计出一个包含尽可能多的,可以收集到的恶意程序的合集的数据库,配上搜索引擎,然后卖给用户。

当我们的电脑拥有这样的数据库的时候,我们载入一个未知程序的时候,系统会自动跟这个数据库比对,如果发现该程序榜上有名,那么就阻止其运行,并进一步提示用户删除它(当然,近来很多数据库也不提示用户,直接删除——所谓"静默运行"嘛)。

嗯,我们知道,这个数据库被称之为杀毒软件,或者严谨的说,我更愿意称之为安全软件。

你们有谁认为"恶意程序"是可以靠有限列举的方式穷尽的?不管安全厂商收集了多少样本,只要漏掉一个,用户的系统就是不安全的——道理再明白不过,要杀死一个人,一种病就够了。

何况:

安全软件并不能阻止泄密!

泄密是这样的一个行为,正如上文所述:系统里面有个程序在记录我们的键盘、鼠标操作,并按其设计要求将这些信息外发至某个地方。

任何程序都需要记录我们的键盘鼠标操作,否则它就无法响应我们的操作了。
任何网络程序都会外发数据,否则我们就无法上网了。

安全软件不能阻止这两个功能,而且安全软件无法识别哪些信息是你的密码/账户——对它来说数据都是一样的。

我记得诺顿的某个版本以前曾经设计过,让用户自行预先把隐私数据填写在安全软件中,然后一旦它会过滤外发的数据包,一旦发现匹配的数据,就会提示用户,但是这带来两个问题:

1、预先储存的用户隐私数据保存在硬盘上,窃取程序只需要了解了这个机制,这个储存地反而是泄密的最好来源;
2、外发的信息稍加变换,例如"原始数据+1",然后外发,"接收数据-1=原始数据",就可以绕过这个过滤机制。

所以,诺顿自己在新版里面也把它取消了。

在我看来,现代安全软件工业所产生的真正成就只有一个:那种不经用户许可而自动安装程序的情况,几乎不存在了——做到这一点很容易,反正检测到要安装软件就弹个提示框出来嘛,至于说用户怎么选择,那就责任自负了。

所以阻止不安全的程序进入系统,只能靠用户自己。

------------------------------------------------------------
我还是要说Windows比我们想象的安全得多。
------------------------------------------------------------

通常情况,一个商誉良好的软件公司的产品是可以信赖的——正如前文所述,至少它不会故意添加这样的附加功能(如果它愿意,技术上是在很简单),因为,它的商业利益决定了,这么干的好处比不这么干的好处大得多。

通常情况,一个信誉良好的开源软件的原始版也是可以信赖的(各种衍生版就说不清楚了)——正如前文所述,至少它不会故意……因为它的源代码是任何人都可以查看的,有没有问题,技术人员一目了然。

所以如果我们在一个系统上,添加一个没有被安全软件列入黑名单的知名软件,通常是安全的。

那么,"系统里面那个记录我们键盘、鼠标操作,并按其设计要求将这些信息外发至某个地方"的程序是如何进驻我们的系统的呢?答案很简单:

那些白痴自己安装的!

在我们这个神奇的国家,绝大多数人在盗版Windows下面,安装着各种各样的盗版软件,并采纳某些白痴专家的意见购买一个正版的杀毒软件(通常还是国产的——否则外国的安全软件可能判断这些盗版软件为病毒,并删除之,而中国的杀毒软件做了"国内软件环境兼容性测试"),企图掩耳盗铃以自欺欺人。

盗版软件是如何产生的呢?绝非一般白痴所想象的"一份正版软件的副本",不,现代软件都有其加密机制,聊胜于无吧,大约所有软件商都是这样想的。

一个简单的加密机制简单说:在软件代码中嵌入一段特征码,然后在启动代码中加入一段检测这些特征码的代码,就成了。在软件启动的时候,执行检测代码,通过则启动,不通过则执行其它指令。

盗版的时候,破解者需要用自己的代码替换原来的检测码,骗过检测程序。

所以盗版软件几乎必然嵌入一段破解者的代码。

在现代破解/盗版产业链中,破解者有充分的动机在这段代码中添加一些"附加功能",这就是为什么我们,尤其是中国人的电脑,总是被盗号。

-------------------------------------------
一个廉价的安全系统的解决之道
-------------------------------------------

尽量使用开源的软件,能看懂源代码的,请尽量查看一下源代码,看不懂的,只要找知名的就行了——相信其他专家的判断。

在实在没有开源软件的时候,在考虑商业软件。

这样你会发现,除了Windows和安全软件,其实今天的开源软件几乎已经覆盖了全部的软件链,而操作系统级别,Linux的成功只是时间问题而已。

想想看,所谓安全,如此而已。

-------------
魔兽世界
-------------

也真是难为了暴雪和九城的设计师,在典型的情况下,他们要考虑在一台盗版软件充斥、木马驻留的系统里面,实现所谓安全性,设计处了密保卡、安全锁、手机锁……

呵呵,枝节而已,一艘船,船身都是破洞连连,在甲板上涂抹防水漆有什么用处呢?

---------------------------------------------------------

所谓安全,如此而已。

没有评论:

发表评论