当前桌面系统主要安全问题就是不能有效地隔离各种程序,所以说基于目前这种非安全的系统架构很难实现真正的安全操作系统。而通过Qubes系统我们最大可能的重用现有的系统构造块,特别是XEN虚拟监视器,并且在硬件虚拟化的支持下大大简化了虚拟监视器的代码,便于创建更robust的系统配置,例如使用驱动域(也就是说把硬件相关的如networking代码完全隔离出去)。

      Qubes 采取隔离的办法实现系统安全。

      Qubes安全模型:虚拟机(VMS,也叫域)是Qubes系统安全模型主要的构造块,Qubes系统主要的工作就是隔离不同的VMs。从一个用户的角度日常使用中可能会需要分配以下几个域:

  Random域,用来日常使用,例如安装非可信应用程序,由于该域没有敏感数据,所以不会有潜在的安全隐患。

  Socila域:邮件,blog,twitter,facebook,

  Shopping域:在线购物等

  Bank域:这个就不用我说了吧

  Corporate域:×××

  (注:各种不同的域可以分级NonRestricted ,Restricted,Confidential,Top Secret

  另外还有一些专用的安全域,如网络虚拟域(由于网络世界充满未知,所以把所有网络相关代码放到一个非特权的域中,对于保证系统安全有很重要的影响)。

  另外为了管理和定义这些虚拟机,Qubes提供了一个安全的GUI子系统,可以显示不同的应用程序,即使他们不在同一个VM中,但并未降低系统的隔离性,用户可以在不同域间拷贝复制和交换文件。在桌面应用环境中安全的GUI起着非常重要的角色,例如用户可能在邮件(Socila)中收到一个不明的网络连接,他如果不了解该连接的真实可靠性就可以从这个VM中复制到Random域中,这样不管这个网站是否安全都不会破坏系统的安全性。

  系统架构:

  Qubes架构优化了硬盘(未来还要优化内存)的使用,所以不需要同时在系统中运行N多的VMs(太浪费硬盘空间)。文件系统共享机制允许域间重用大多数文件系统,不必考虑安全隔离的属性。IntelVT-dTXT技术允许创建安全的驱动域,所以能最小化系统attacksurface.同样存储设备可以放到存储域中,包括硬盘,USBDVD等,并且借助文件系统加密、签名和可信启动技术,对于存储域的威胁不会影响到系统其他部分。

  从整体上可以把域分为AppVMsSystemVMs(或者叫ServicesVms)

  Qubes系统主要的功能就是提供对于不同域间的不同应用程序的无缝整合,便于用户透明的使用所有的应用程序,不用去管到底哪个应用跑在哪个VM中。还一个关键的功能就是提供near-native的性能,让用户使用是感觉不到AppVMs对应用程序的影响(但我在实际使用中碰到过内存不够的问题,相信以后的发布版中应该会解决这个问题)。

  Qubes第一版假设所有的AppVMs都是跑在Linux系统中,但并不是说Qubes系统不支持在其他OS,如Windows中使用AppVMs

  Qubes主要是为使用虚拟机节省硬盘空间,所以所有的AppVMs都是基于同一个系统(目前是Linux),共享同一个只读文件系统,并且只需要为用户和每个域的设置分配一些磁盘空间,每一个VM不必使用整个OS镜像。为了解决这个问题,Qubes架构引入了dedicatedstorage domain,把所有的磁盘和文件系统存储相关的代码放到这个“沙盒”中,这样即使这些部分受到攻击也不会影响系统其他部分。

  在通常的系统上(如windowsLinux),核心的网络代码,包括网卡驱动和不同的协议栈都是运行在内核中,所以潜在的网络代码bug会导致整个系统受到威胁。在Qubes架构中会尽量减少这种问题带来的威胁,所以整个网络代码(包括驱动和协议栈)都被移到一个非特权域(Network域)中。 Network域直接访问网络设备,这是由intelVTd技术提供的,这样一来所有对于Network域的攻击不会对其他域造成威胁。另外所有的安全敏感的应用可以使用加密保护的网络协议,如SSL×××SSH

  复杂的文件共享机制(copy-on-write文件系统)需要后台的代码支持,为了减轻这个问题,文件系统共享代码,后台代码,以及磁盘驱动和栈,都移除到专用的非特权域,storage域中。同样storage域可以直接访问磁盘控制器,也是由intelVT-d技术提供支持的。

  另外,存储域可以访问USBCDDVDcontrollers,允许处理所有的可移动设备。所以对于移动设备的安全问题同样也被限制在VM中。

  存储域最大的难题在于如何保证它安全性,Qubes架构是利用加密文件系统解决的,所以存储域不能读其他域的敏感信息,更不能够修改共享的根文件系统。另外通过使用intelTXT技术保护系统启动代码,使得即使存储域被挟持,最坏也就使系统或该VMs不能启动,但不至于威胁到整个系统(如安装后门,rootkit,或者偷取数据)。

  GUI域(Dom0)是唯一直接访问图形设备的,包括输入设备,运行XserverWindowManager(管理应用程序启动和关闭并操作他们的windows)。GUI域一个最常用的应用就是ApplicationViewera little stubapplicationXEN术语),他用来启动和显示某个AppVM中实际的应用程序。AppViewer为用户提供一个系统中执行的应用程序的视图,而实际上他们是隔离在各个AppVM中。

  由于GUI域是安全敏感的,所以目前还不确定是否要把他放到Dom0外的一个GUI子系统中。Qubes系统第一版中把GUI域作为管理域(Dom0),将来或许会从Dom0移除出去。