它是由著名的波蘭美女黑客Joanna Rutkowska最近剛發布了一個基於Xen和Linux的開源作業系統。Qubes充分利用了虛擬化技術(基於安全虛擬機Xen),所有用戶應用程式都運行在AppVM(基於Linux的輕量級虛擬機)中,彼此隔離。而聯網代碼使用 IOMMU/VT-d放在一個非特權虛擬機中,在特權域 (dom0) 中沒有任何聯網代碼。許多系統級組件放在沙盒中,以避免互相影響。
Qubes允許用戶自己定義許多安全域(用輕量級虛擬機實現),比如“個人”、“工作”、 “購物”、“銀行”等,彼此隔離。另外,也支持各安全域之間複製-貼上和檔案共享。
每個AppVM都是由TemplateVM創建的,他們以唯讀模式和模板共享根檔案系統,所以每個AppVM僅需要存儲自己的私有數據的磁碟空間,同時還可以通過運行TemplateVM中的升級進程升級所有AppVMs的軟體,當然必須先停止所有的AppVMs。
該系統的主要是由VMs構成的,Qubes架構最佳化了硬碟(將來也會考慮記憶體)的使用,所以可以同時允許運行許多虛擬機(應用程式有很多的緣故)而不浪費磁碟空間,因為檔案共享機制允許VM間重用絕大多數檔案系統而不降低安全隔離屬性。
一般可以把系統使用的VM按照兩個策略分類:
AppVMs,用於不同的套用,如郵件客戶端,web瀏覽器,等;
SystemVMs (或稱為ServiceVMs)主要用來提供 system-wide services, 如: networking 和disk storage。
該項目通過利用裸虛擬監視器(XEN)的隔離能力和硬體虛擬化技術(Inetl VT-d和TXT)構建一個供桌面和筆記本使用的安全作業系統。
當前桌面系統主要安全問題就是不能有效地隔離各種程式,由於目前的作業系統架構設計問題(包括過於複雜的OS API,非安全的GUI設計,還有最關鍵問題:monolithic kernel architecture)所以說基於目前這種非安全的系統架構很難實現真正的安全作業系統。而通過Qubes系統我們最大可能的重用現有的系統構造塊,特別是XEN虛擬監視器,並且在硬體虛擬化的支持下大大簡化了虛擬監視器的代碼,便於創建更robust的系統配置,例如使用驅動域( 也就是說把硬體相關的如networking 代碼完全隔離出去)。
Qubes安全模型:虛擬機(VMS,也叫域)是Qubes系統安全模型主要的構造塊,Qubes系統主要的工作就是隔離不同的VMs。從一個用戶的角度日常使用中可能會需要分配以下幾個域:
Random域,用來日常使用,例如安裝非可信應用程式,由於該域沒有敏感數據,所以不會有潛在的安全隱患。
Socila域:郵件,blog,twitter,facebook,等
Shopping域:線上購物等
Bank域:這個就不用我說了吧
Corporate域 :VPN等
(註:各種不同的域可以分級Non Restricted ,Restricted,Confidential,Top Secret)
另外還有一些專用的安全域,如網路虛擬域(由於網路世界充滿未知,所以把所有網路相關代碼放到一個非特權的域中,對於保證系統安全有很重要的影響)。
另外為了管理和定義這些虛擬機,Qubes提供了一個安全的GUI子系統,可以顯示不同的應用程式,即使他們不在同一個VM中,但並未降低系統的隔離性,用戶可以在不同域間拷貝複製和交換檔案。在桌面套用環境中安全的GUI起著非常重要的角色,例如用戶可能在郵件(Socila域)中收到一個不明的網路連線,他如果不了解該連線的真實可靠性就可以從這個VM中複製到Random域中,這樣不管這個網站是否安全都不會破壞系統的安全性。
系統架構:
Qubes架構最佳化了硬碟(未來還要最佳化記憶體)的使用,所以不需要同時在系統中運行N多的VMs(太浪費硬碟空間)。檔案系統共享機制允許域間重用大多數檔案系統,不必考慮安全隔離的屬性。IntelVT-d和TXT技術允許創建安全的驅動域,所以能最小化系統attack surface.同樣存儲設備可以放到存儲域中,包括硬碟,USB,DVD等,並且藉助檔案系統加密、簽名和可信啟動技術,對於存儲域的威脅不會影響到系統其他部分。
從整體上可以把域分為AppVMs和SystemVMs(或者叫Services Vms)。
Qubes系統主要的功能就是提供對於不同域間的不同應用程式的無縫整合,便於用戶透明的使用所有的應用程式,不用去管到底哪個套用跑在哪個VM中。還一個關鍵的功能就是提供 near-native的性能,讓用戶使用是感覺不到AppVMs對應用程式的影響(但我在實際使用中碰到過記憶體不夠的問題,相信以後的發布版中應該會解決這個問題)。
Qubes第一版假設所有的AppVMs都是跑在Linux系統中,但並不是說Qubes系統不支持在其他OS,如Windows中使用AppVMs。
Qubes主要是為使用虛擬機節省硬碟空間,所以所有的AppVMs都是基於同一個系統(目前是Linux),共享同一個唯讀檔案系統,並且只需要為用戶和每個域的設定分配一些磁碟空間, 每一個VM不必使用整個OS鏡像。為了解決這個問題,Qubes架構引入了dedicated storage domain,把所有的磁碟和檔案系統存儲相關的代碼放到這個“沙盒”中,這樣即使這些部分受到攻擊也不會影響系統其他部分。
在通常的系統上(如windows和Linux),核心的網路代碼,包括網卡驅動和不同的協定棧都是運行在核心中,所以潛在的網路代碼bug會導致整個系統受到威脅。在Qubes架構中會儘量減少這種問題帶來的威脅,所以整個網路代碼(包括驅動和協定棧)都被移到一個非特權域(Network 域)中。 Network 域直接訪問網路設備,這是由intel VT-d技術提供的,這樣一來所有對於 Network 域的攻擊不會對其他域造成威脅。另外所有的安全敏感的套用可以使用加密保護的網路協定,如SSL、VPN、SSH。
複雜的檔案共享機制(如 copy-on-write檔案系統)需要後台的代碼支持,為了減輕這個問題,檔案系統共享代碼,後台代碼,以及磁碟驅動和棧,都移除到 專用的非特權域,storage域中。同樣storage域可以直接訪問磁碟控制器,也是由intel VT-d技術提供支持的。
另外,存儲域可以訪問USB和CD/DVD controllers,允許處理所有的可移動設備。所以對於移動設備的安全問題同樣也被限制在VM中。
存儲域最大的難題在於如何保證它安全性,Qubes架構是利用加密檔案系統解決的,所以存儲域不能讀其他域的敏感信息,更不能夠修改共享的根檔案系統。另外通過使用intel TXT技術保護系統啟動代碼,使得即使存儲域被挾持,最壞也就使系統或該VMs不能啟動,但不至於威脅到整個系統(如安裝後門,rootkit,或者偷取數據)。
GUI域(Dom0)是唯一直接訪問圖形設備的,包括輸入設備,運行X server和Window Manager(管理應用程式啟動和關閉並操作他們的windows)。GUI域一個最常用的套用就是Application Viewer(a little stub application :XEN術語),他用來啟動和顯示某個AppVM中實際的應用程式。AppViewer為用戶提供一個系統中執行的應用程式的視圖,而實際上他們是隔離在各個AppVM中。
由於GUI域是安全敏感的,所以目前還不確定是否要把他放到Dom0外的一個GUI子系統中。Qubes系統第一版中把GUI域作為管理域(Dom0),將來或許會從Dom0移除出去。