关于未来操作系统方向的初步设想
作者:zlq163
我很久以前就想写本篇文章了,只是一直没有付诸于行动,最近终于下定决心写出来。本文只讨论计算机安全,不涉及网络安全的讨论。
随着计算机的日益普及和网络的发展,人们越来越多的依赖于计算机,同样对信息安全的要求也越来越高。例如银行密码帐号,邮件密码,个人日记,照片,公司文档等等,都是需要保护的。
然而,目前的操作系统却是非常不安全的,病毒,或者木马程序横行,只要有心,就能轻易获取个人保存在计算机里的文件。也能轻松窃取个人上网时银行帐号密码之类的,虽然有些银行采取了很好的保护措施,例如不用键盘输入密码,而是用图形化的数字按钮,并且随机变换次序,甚至包含干扰图形,这在一定程度上提高的窃取密码的难度,然而,只要有心,还是能够通过一定的算法(如神经网络,支持向量机等等)可以分析出客户所按的数字号码,也可以通过内存扫描技术来分析。
也许,各位会说赶紧装个杀毒软件啊,众所周之,杀毒软件只有对已经报告出现的病毒才有效,总是慢半拍,跟在病毒后面跑,所以总有一些不幸的用户先做了牺牲品。而且杀毒软件一般只针对流行的具有明显破坏作用的程序有效,对于那些有用途单一的,小范围应用的,无明显破坏力的,则无能为力,如一些商业间谍软件。虽然有些杀毒软件也加入了未知病毒查杀技术,这是对各种病毒行为的特征(如是否挂钩敏感API函数,是否程序本身已经保存了其他程序的敏感信息等等)进行分析统计,是基于数理统计理论上的分析技术,来判断它是否为可能为病毒,缺点也是显而易见的。总之由于Windows操作系统的先天缺陷,要周到保护信息安全,是非常困难的。
因此,我觉得未来的操作系统应该在安全功能上非常稳健,没有什么病毒之类的,像目前流行的杀毒软件,都不应该存在地如此红火。未来的操作系统至少应该在文件系统的安全和可执行程序的安全这两方面得到改进。
第一,在磁盘系统方面:目前较好的文件系统是NTFS,它加入了用户角色的安全访问权限,同时也具有加密功能,但是它对同一用户ID下运行的所有的可执行程序的访问则没有限制,都是一视同仁,这就为混在期中的木马程序创造了窃取信息的机会,因此访问文件夹权限之中应该加入应用程序访问控制,并不是所有的程序都可以访问。如果一个应用程序在向系统申请一块私有空间时,其它程序就无法访问,只有本程序自身或者程序自己指定的特定程序才能访问,或者进入安全模式(定义见后面的程序安全说明)时,才能通过资源管理器执行查看、拷贝、删除、重命名等一些基本操作。像杀毒软件之类的都无法访问。当然,如果应用程序申请空间时指定的是不受保护的,则大家都可以共享访问。
这样,导致的问题是,文件访问变得困难了,例如,用户用编辑软件(如office)写了一个商业解决方案,存在编辑软件的私有空间里,而要发送给客户时,邮件发送程序(如outlook),邮件发送程序,无权访问该文件,需要进入安全模式拷贝到共享区域在发送给客户,经常这样将是一件非常麻烦的事。解决办法之一是,应用程序在发布前,默认应该编写外部程序向它请求文件的接口(当然也包括浏览接口),这样,邮件发送程序无法直接获得文件。必须通过系统请求,在找到资源所属程序,再向应用程序请求,这样保证了应用程序的知情权,事件也方便写入系统日志。
第二,在可执行程序方面:系统应该保护各自程序的键盘输入、屏幕内容和鼠标单击事件。每个应用程序运行时有两种模式,一种是开放模式,允许其他程序,获取其内容,另一种则是私有模式,不允许其他程序访问,这是程序发布时的默认方式。应用程序应该无法通过设定系统钩子,或者截屏操作来窃取其它程序敏感信息,程序自己的地址空间在没有得到允许的情况下,也不允许其他应用程序访问。这样就避免了一些木马程序获取信息,或者启动自己注入的程序,伪装成合法程序,将信息轻易透过防火墙软件,安全地将资料外传。
但是,这样也带来很多的麻烦,如教学用的屏幕截图,只能截到各程序的外框,内容则是一片空白。同样远程监控也变得非常困难,这样为远程解决问题,制造了很多障碍,解决这个问题,应该由系统来解决,即通过系统设置,进入低安全模式,此时允许应用程序访问显示、键盘等资源试。还有一个问题就是程序的调试变得不像目前这么容易,这也有好处,防止程序代码被动态调试分析,进行破解,对于软件版权保护起到一定促进作用。
关于安全模式的定义,有点类似目前的Windows操作系统下的安全模式,但这个安全模式可以由正常模式立即进入,而不需要重新启动系统,同时进入安全模式后,可以快速切换回普通模式,普通模式原有的状态不会改变(有点类似softice的切换)。在安全模式时,系统一般不能运行其它程序,只可以执行查看、拷贝、删除之类的基本操作,类似于只有一个资源管理器运行,但它具有最高的权限。切换进入安全模式后,是否需要停止其他各用户的运行的应用程序?还是继续让它在它自己的用户级别下运行(类似于目前的XP系统的用户切换)?如果是为了彻底地安全,选择了暂停所有正在运行的程序,但这样就导致另外两个问题,就是时间差和网络通讯程序断线问题,所以,在切换回到普通模式时,它应该马上提示是否将系统时间从切换前那一刻开始还是按当前实际时间?如果选择切换前那一刻,则系统应该在关闭时,重新调整时间。
以上是我关于未来操作系统走向的一些个人想法,考虑也不是很周全,毫无疑问存在着这样那样的问题甚至笑话,希望大家指出,一起沟通讨论,我的email是:zhanglvquan@163.com