三、可信赖计算
Windows XP要比9x系列的操作系统安全和稳定得多,但是一连串的漏洞、修补漏洞的补丁、利用漏洞发起攻击的蠕虫又显示出微软还有很长一段路要走。改进安全性不仅仅是一个修补Bug和补救设计疏忽的问题,它还意味着提供这样一个平台,这个平台内含的功能使得设计者和用户能够执行安全的、可信赖的计算。
微软的战略是继续评估其代码中存在问题的领域并发布补丁,同时开始将更多的开发工作转移到使用.NET框架的托管代码,以避免可能影响安全性的常见错误。就长期目标而言,微软正在开发一个野心勃勃的新式基础结构――以前叫做Palladium,现在则改成了一个笨拙的缩写词NGSCB(读作“ing-scub”),全称是Next-Generation Secure Computing Base。
尽管有人嘲笑NGSCB只不过是一种强制许可限制和实现严格DRM(数字版权管理)技术的升级版,但其设计目标是提供这样一种功能,这种功能确保应用程序确实就是它们所宣称的那样,它们的角色和权限受到适当的限制,可以可靠地采用高强度加密技术建立起可信赖的平台,为信息交换和交易提供安全的服务。
要使用NGSCB功能,主板必须带有SSC/TPM(Secure Support Component/Trusted Platform Module,即安全支持组件/可信赖平台模块),还要有支持NGSCB的处理器和芯片组、经过改装的外围设备。在处理器方面,Intel已在讨论有关LaGrande技术的计划,这种技术将提供诸如保护安全内存(即使是对于DMA访问)引擎之类功能。从即将出现的Prescott CPU及其支持芯片组开始,Intel将在它的芯片组中提供LaGrande技术。
NGSCB提供了一种额外的运行模式,软件可以在需要执行敏感任务时随时切换进入这种模式。想象一个三层的蛋糕模型,底层是硬件,中间是内核模式的软件(例如操作系统核心),顶层是用户模式的软件,例如应用程序。在概念上,NGSCB将把每一层分成两个部分。
左边的部分就是现在的硬件/软件运行情况,它仍象以前一样工作;右边的一部分则属于安全区域。应用程序通常在左边的一部分运行,直到需要某种安全服务时,它们才临时地切换到右边的部分。
在右边这一部分中,系统提供四种关键性的功能:安全IO,密封存储,进程高度隔离,以及签证(Attestation)――数字签名的程序标识。
安全IO意味着流经输入/输出设备和系统的每一比特信息不仅已经加密(因而很难嗅探),而且经过密码签名(因而不可能在传递途中被修改)。在NGSCB的最初版本中,安全IO路径具体包括USB设备(包括键盘和鼠标)、CPU和芯片组、图形控制器,以及连接这些设备的通道。由于这些位置的信息都得到了保护,这样,恶意软件就很难得逞,例如很难监视键盘动作,也很难扫描视频内存窃取输出到屏幕的信息。
密封存储是经过密码加密的安全磁盘存储,只能通过特定的密钥加密/解密――这样,除非取得明确的授权,否则一个应用程序就不能偷窥另一程序的密封存储空间中的内容。进程高度隔离的意义也相似,它意味着一个程序不能分析或操作另一个程序使用的内存空间。
签证则提供了这样一种机制,这种机制保证每一个应用程序就是它所声明的那个程序,具体是记录一个加密的校验和,如果应用程序被修改,校验和就变成非法。其基本思路是保证特定的数据只能由获得明确授权的应用程序访问――同时确保应用程序不会被诸如特洛伊木马之类的恶意程序非法修改。这种层次的安全机制不仅能在独立的系统上发挥作用,在联网的机器上也同样有效。
管理这些功能并为应用程序提供API的是nexus,这是一个运行在右边内核层的组件。微软打算在Longhorn中提供一个基本的nexus――但是,如果你不信任Microsoft,又该怎么办?
首先,是否使用nexus和NGSCB功能完全由用户自己决定。其次,微软计划向研究机构和有限的用户开放其nexus源代码。另外,作为一种可选的方案,第三方也可以创建可替换使用的nexus,这种第三方的nexus不必局限于Windows设备,因此可以想象的是,具有NGSCB功能的Windows客户程序能够与支持NGSCB的Linux或Solaris服务器建立安全的联系――只要这些环境能够提供相应的支持。
在用户感受方面,NGSCB的实际效果在很大程度上还不能确定,不过微软已经认识到一个高效的UI是至关紧要的。系统的整体安全性由整个链条上最薄弱的环节决定,而这个最薄弱的环节往往是用户以及用户作出的判断。例如,今天的恶意软件之所以扩散得如此之快,很大一部分原因在于用户浏览网站时,一遇到是否信任某个程序的对话框总是习惯性地点击“是”。令人感兴趣的是,NGSCB允许第三方信任代理担保应用程序,这就使得企业可以将判断/决策委托给可信赖的外部实体。
NGSCB不是万能的魔法,但它承诺让硬件、操作系统和应用程序开发者一起协作,在应用程序之间提供更坚固的隔离墙,堵塞大量可能泄漏敏感信息的机会,这一切应该能够让系统管理员睡得更安稳一些了。
四、存储系统
在过去的20年中,DOS和Windows的文件存储系统不断发展。16位的文件分配表(FAT 16)在大于2 GB的磁盘上遇到了困难,它的32位的继承者FAT32虽然解决了容量问题,但仍显得弱不禁风,只要一个字节出错就可能导致整个文件不能访问。NTFS(New Technology File System),自Windows NT 3.5开始引入,使用了一个数据库风格的主文件表(Master File Table),提高了访问文件的可靠性和速度。
直到现在,无论底层的操作系统是FAT还是NTFS,用户的感觉不外乎层次型的文件夹树形结构,访问某个文件可能需要在层次结构中跋涉10层甚至20层――这里还有一个前提,那就是你知道文件的保存位置。如果你不知道文件的保存位置,那就要向Windows的搜索功能求助。问题是,为什么我们必须记住文件的保存位置?我们关心的是文件的内容,而不是它的保存位置。
这个问题不是第一次提出。早在1992年,微软有关Cairo(Windows 2000的代码名称)的早期描述中就提到了一个根据文件内容而不是位置来访问文件的文件系统。这个项目后来被搁置,但现在微软告诉我们,它终于要在Longhorn的Windows Future Storage(WinFS)中成为现实了。
WinFS在NTFS的基础上增加了一个数据库层,这个数据库层以即将出现的SQL Server的Yukon版为基础。在WinFS文件系统中,文件除了我们熟悉的属性,诸如文件名称、大小、日期,还将通过诸如作者名称、图像大小之类的元数据建立索引。底层的文件夹分层结构仍将存在,但现在用户使用的将是相似文件构成的库(Library)。
每个库由一组通过查询WinFS数据库获得的文件构成。对于泄露出来的Longhorn Alpha版,报告称它内建的库包括:Documents、Games、Music、My Contacts(替代地址簿)、Picture以及Video。可以设想,Longhorn将允许用户根据自己的条件创建库。库里面的文件不会移出其所在的文件夹,实际上,一个文件可以出现在多个库中。用户可以配置库,使其显示方式匹配文件的内容;当用户创建符合条件的新文件时,文件会自动出现在库中。
基于XML的文件格式具有自我描述的特点,它们的元数据很容易被WinFS访问,从而促进这类文件格式的应用。我们现在还不知道WinFS是否会被移植到其他的Windows版本,也不知道WinFS是否是Longhorn的默认文件系统。当前Longhorn的Alpha版中,WinFS还不能实际运作。但是,当WinFS正式到来时,我们查找文件的依据将是它是什么,而不是它在哪里。
(完)