張俊賢 汪 麗 安曉江
(北京海泰方圓科技股份有限公司 北京 100094) (junxian.zhang@haitaichina.com)
國(guó)家信息化建設(shè)依賴國(guó)外核心技術(shù)是極其危險(xiǎn)的.在我國(guó)大力提倡自主可控發(fā)展的大環(huán)境下,信息系統(tǒng)的自主可控進(jìn)程已經(jīng)納入國(guó)家戰(zhàn)略性發(fā)展部署.強(qiáng)力推進(jìn)關(guān)鍵信息系統(tǒng)的國(guó)產(chǎn)自主化建設(shè),是國(guó)家和軍隊(duì)信息化發(fā)展戰(zhàn)略的大勢(shì)所趨,更是改革強(qiáng)軍的潮流所向.國(guó)產(chǎn)信息技術(shù)只有以自主可控[1-3]為前提,將自主研發(fā)的科技創(chuàng)新最新成果快速應(yīng)用于政府、企業(yè)和軍隊(duì)信息化,才能有效保障國(guó)家信息安全.
在國(guó)家需求的不斷推動(dòng)下,從核心處理器到操作系統(tǒng)再到整機(jī)系統(tǒng)等核心關(guān)鍵領(lǐng)域的國(guó)產(chǎn)化替代進(jìn)程正在加速.瀏覽器作為現(xiàn)代計(jì)算機(jī)系統(tǒng)的重要組成部分,承載著大量業(yè)務(wù)應(yīng)用,屬于核心軟件系統(tǒng).研發(fā)新的、技術(shù)上自主可控的國(guó)產(chǎn)化瀏覽器,以支持國(guó)產(chǎn)CPU處理器微體系結(jié)構(gòu)和國(guó)產(chǎn)操作系統(tǒng),是整體國(guó)產(chǎn)化替代進(jìn)程中的重要環(huán)節(jié),有著重大現(xiàn)實(shí)意義.國(guó)產(chǎn)化瀏覽器必須保證瀏覽器內(nèi)核代碼在國(guó)產(chǎn)CPU指令系統(tǒng)上完整編譯通過(guò),編譯結(jié)果在國(guó)產(chǎn)操作系統(tǒng)之上正確運(yùn)行,瀏覽器軟件功能完備,瀏覽器軟件運(yùn)行過(guò)程穩(wěn)定.
目前,絕大多數(shù)信息系統(tǒng)如信息管理系統(tǒng)、辦公系統(tǒng)等,皆采用BS架構(gòu).為保衛(wèi)我國(guó)網(wǎng)絡(luò)空間主權(quán),保證關(guān)鍵信息系統(tǒng)自主可信、安全可控,實(shí)現(xiàn)國(guó)產(chǎn)化替代是當(dāng)務(wù)之急,作為BS技術(shù)架構(gòu)的客戶端軟件,研究并開(kāi)發(fā)面向國(guó)產(chǎn)平臺(tái)的瀏覽器軟件是對(duì)國(guó)產(chǎn)化進(jìn)程的強(qiáng)有力支持.
瀏覽器是一種可以顯示網(wǎng)頁(yè)服務(wù)器或者文件系統(tǒng)的HTML文件內(nèi)容,并讓用戶與這些文件交互的軟件,該軟件主要通過(guò)HTTP協(xié)議與網(wǎng)頁(yè)服務(wù)器交互并獲取網(wǎng)頁(yè),這些網(wǎng)頁(yè)由URL指定,文件格式通常為HTML,并由MIME在HTTP協(xié)議中指明.
渲染引擎是瀏覽器的核心部件,一般也稱為瀏覽器內(nèi)核,主要負(fù)責(zé)對(duì)網(wǎng)頁(yè)語(yǔ)法進(jìn)行解釋并渲染.渲染引擎決定了瀏覽器如何顯示網(wǎng)頁(yè)的內(nèi)容以及頁(yè)面的格式信息.主要渲染引擎包括Trident,Gecko,Presto,Webkit,Blink等.常見(jiàn)的國(guó)外瀏覽器有Internet Explorer,F(xiàn)irefox,Chrome,Opera,Safari等.主要廠商包括微軟、Mozilla、谷歌、歐朋、蘋果等.國(guó)內(nèi)有360瀏覽器、獵豹瀏覽器、搜狗瀏覽器和UC瀏覽器等.主要廠商包括奇虎、 金山、搜狐和阿里等.瀏覽器是接入互聯(lián)網(wǎng)的入口,因此各瀏覽器廠商主要是互聯(lián)網(wǎng)廠商.這一客觀現(xiàn)實(shí)決定了大部分瀏覽器的市場(chǎng)定位主要面向一般互聯(lián)網(wǎng)用戶,對(duì)軍隊(duì)、政府、企事業(yè)單位的需求考慮較少,對(duì)以上各類單位的特殊業(yè)務(wù)場(chǎng)景考慮較少.現(xiàn)實(shí)條件下,各瀏覽器在實(shí)際業(yè)務(wù)應(yīng)用場(chǎng)景中往往存在較多問(wèn)題亟待解決.
瀏覽器是基礎(chǔ)核心軟件,是互聯(lián)網(wǎng)系統(tǒng)生態(tài)環(huán)境的重要一環(huán),是用戶訪問(wèn)互聯(lián)網(wǎng)服務(wù)的主要手段和主要入口,是承載各種網(wǎng)絡(luò)應(yīng)用的主要平臺(tái),也是最常使用的客戶端軟件.目前我國(guó)信息環(huán)境中使用的瀏覽器主要來(lái)自國(guó)外,由此產(chǎn)生了一系列重大安全問(wèn)題.這些安全問(wèn)題主要包括以下2個(gè)方面:
1) 瀏覽器使用國(guó)外的密碼算法;不兼容國(guó)產(chǎn)密碼算法;不支持我國(guó)網(wǎng)絡(luò)信任體系;不符合我國(guó)關(guān)于密碼的相關(guān)標(biāo)準(zhǔn)規(guī)范;不能對(duì)我國(guó)的金融、政務(wù)等基礎(chǔ)性應(yīng)用提供必要的安全支撐.
2) 瀏覽器缺乏對(duì)國(guó)產(chǎn)化平臺(tái)的支持.國(guó)產(chǎn)CPU、國(guó)產(chǎn)操作系統(tǒng)平臺(tái)、國(guó)產(chǎn)文字處理軟件、數(shù)據(jù)庫(kù)軟件和計(jì)算環(huán)境等構(gòu)成了我國(guó)的國(guó)產(chǎn)化體系.目前,絕大部分瀏覽器需運(yùn)行于國(guó)外操作系統(tǒng),并不支持國(guó)產(chǎn)CPU指令系統(tǒng)和國(guó)產(chǎn)操作系統(tǒng)平臺(tái),基本不支持我國(guó)的國(guó)產(chǎn)化體系.
瀏覽器技術(shù)多年來(lái)保持高速發(fā)展,新生技術(shù)與標(biāo)準(zhǔn)層出不窮,不同廠商的瀏覽器對(duì)這些技術(shù)與標(biāo)準(zhǔn)的支持程度存在較大差異,瀏覽器兼容性問(wèn)題十分突出.在處理一個(gè)相同的頁(yè)面時(shí),不同瀏覽器的表現(xiàn)行為存在一定差異,某些情況下,程度較為嚴(yán)重,影響正常業(yè)務(wù)運(yùn)行.主要原因在于各瀏覽器使用了不同的內(nèi)核,對(duì)HTML標(biāo)準(zhǔn)規(guī)范的支持和實(shí)現(xiàn)程度并不一致.國(guó)產(chǎn)化瀏覽器應(yīng)提供較好的兼容性,有效支持多種在線辦公和數(shù)據(jù)展示插件和HTML5等最新技術(shù),只有如此才能有效確保將現(xiàn)有應(yīng)用系統(tǒng)順利移植到國(guó)產(chǎn)系統(tǒng)平臺(tái)之上.
HTML5是最新一代的HTML標(biāo)準(zhǔn),它不僅擁有HTML中所有的特性,而且增加了許多實(shí)用的特性,如視頻、音頻、畫布(canvas)等.HTML5可以更好地促進(jìn)用戶于網(wǎng)站間的互動(dòng)情況,多媒體網(wǎng)站可以獲得更多的改進(jìn).目前多數(shù)瀏覽器對(duì)HTML5支持并不全面,導(dǎo)致基于該技術(shù)開(kāi)發(fā)的應(yīng)用存在較大兼容性問(wèn)題.
國(guó)產(chǎn)化安全瀏覽器的研發(fā)應(yīng)立足于我國(guó)國(guó)產(chǎn)化戰(zhàn)略需求,針對(duì)國(guó)產(chǎn)信息化支撐中存在的Web應(yīng)用安全、瀏覽器軟件系統(tǒng)安全、交互服務(wù)實(shí)時(shí)可靠性等挑戰(zhàn)性問(wèn)題進(jìn)行研究.在此基礎(chǔ)上,應(yīng)結(jié)合瀏覽器前沿技術(shù),研究適合我國(guó)國(guó)產(chǎn)密碼算法的自主信任體系及相關(guān)關(guān)鍵技術(shù),突破虛擬國(guó)產(chǎn)密碼技術(shù)、信任鏈技術(shù)、虛擬計(jì)算技術(shù)、安全沙箱技術(shù)等關(guān)鍵技術(shù)難題,研發(fā)基于國(guó)產(chǎn)密碼算法的自主信任服務(wù)體系與自主可控平臺(tái)核心軟件,形成示范應(yīng)用.為我國(guó)國(guó)產(chǎn)信息化領(lǐng)域提高自主創(chuàng)新水平、提升產(chǎn)業(yè)能力,為國(guó)產(chǎn)密碼關(guān)鍵領(lǐng)域提供技術(shù)支撐.
如圖1所示,國(guó)產(chǎn)化自主可控安全瀏覽器以國(guó)產(chǎn)密碼算法[4]和虛擬技術(shù)等多項(xiàng)技術(shù)研發(fā)為主攻目標(biāo),重點(diǎn)對(duì)以下4個(gè)方面的研究?jī)?nèi)容開(kāi)展工作:證書鏈技術(shù)、國(guó)產(chǎn)平臺(tái)適配技術(shù)、虛擬計(jì)算技術(shù)、安全沙箱技術(shù)和瀏覽器兼容的技術(shù)方案.其中涉及密碼算法的證書鏈技術(shù)和虛擬技術(shù)中使用國(guó)產(chǎn)密碼算法,并支持國(guó)產(chǎn)算法的相關(guān)證書標(biāo)準(zhǔn).除非特別說(shuō)明,在本文中提及的數(shù)字證書均為支持國(guó)產(chǎn)密碼算法的SM2簽名證書或SM2加密證書.
圖1 基于國(guó)產(chǎn)密碼算法的海泰安全瀏覽器關(guān)鍵技術(shù)體系
網(wǎng)絡(luò)信任體系就是在網(wǎng)絡(luò)上建立的信任關(guān)系,它將所有活動(dòng)的實(shí)體通過(guò)信任關(guān)系連接起來(lái),記錄各實(shí)體的歷史表現(xiàn),并維護(hù)這種信任關(guān)系.在網(wǎng)絡(luò)中進(jìn)行信息交流時(shí),首先要了解對(duì)方的相關(guān)情況,這是一個(gè)建立初始信任的過(guò)程.在這個(gè)過(guò)程中可能會(huì)用到第三方提供的信息,如身份證件等.在建立初始信任以后還需要查閱對(duì)方所在單位、職務(wù)、權(quán)限和資信等情況,建立起可靠的信任關(guān)系,在這個(gè)過(guò)程中會(huì)再次用到第三方提供的信息,如權(quán)限證明等.最后是在這種信任關(guān)系之上進(jìn)行信息交流,同時(shí)解決交流過(guò)程中出現(xiàn)的糾紛及安全事件.
在瀏覽器中建設(shè)支撐信任體系,應(yīng)以國(guó)產(chǎn)密碼算法支持為前提,具體地,應(yīng)在瀏覽器中預(yù)植我國(guó)權(quán)威信任機(jī)構(gòu)的根證書,同時(shí)支持對(duì)合規(guī)數(shù)字證書的解析,支持國(guó)產(chǎn)密碼算法的TLS協(xié)議標(biāo)準(zhǔn).通過(guò)上述機(jī)制建設(shè),瀏覽器用戶可以有能力甄別服務(wù)端的身份屬性,同服務(wù)端建立安全的通信信道,保證通信的安全,最終建立對(duì)Web應(yīng)用服務(wù)端的數(shù)字身份信任.
瀏覽器為建立信息安全和信任體系必須全面支持國(guó)產(chǎn)密碼算法,進(jìn)而才能支持?jǐn)?shù)字證書和SSL通信.主要包括:
1) 支持SM2算法[5],實(shí)現(xiàn)的功能包括SM2加密、SM2解密、SM2簽名、SM2簽名驗(yàn)證、SM2密鑰交互、SM2算法Z值計(jì)算等.
2) 支持SM3算法[6],實(shí)現(xiàn)的功能包括SM3散列算法、基于SM3算法的HMAC功能等.
3) 支持SM4分組算法[7],實(shí)現(xiàn)的功能包括SM4加密、SM4解密、基于SM4算法的MAC計(jì)算等.
瀏覽器為了原生支持我國(guó)權(quán)威機(jī)構(gòu)的根證書,需要實(shí)現(xiàn)的相關(guān)技術(shù)包括:
1) 支持內(nèi)置我國(guó)權(quán)威機(jī)構(gòu)數(shù)字證書的預(yù)加載和檢查機(jī)制;
2) 支持合規(guī)的國(guó)產(chǎn)算法數(shù)字證書的導(dǎo)入;
3) 支持基于國(guó)產(chǎn)算法的可信時(shí)間權(quán)威TSA的數(shù)字證書;
4) 支持基于信任鏈的網(wǎng)上數(shù)字身份判定機(jī)制;
5) 支持基于合規(guī)SSL協(xié)議的信道安全;
6) 支持基于國(guó)產(chǎn)算法的數(shù)字證書的解析技術(shù).
證書鏈本質(zhì)上是一組安裝順序排列的數(shù)字證書,又稱認(rèn)證鏈或證書路徑.證書鏈證明證書的合法性.若證書鏈合法,則可以相信證書中所宣稱的某個(gè)主體擁有某個(gè)可以表明身份的密鑰.
在瀏覽器中內(nèi)置證書容器,每個(gè)容器作為一條證書鏈的載體.瀏覽器系統(tǒng)提供對(duì)于單個(gè)容器的完整性檢查機(jī)制,并對(duì)容器總體同樣建立核查機(jī)制.通過(guò)對(duì)證書鏈的安全防護(hù)建立瀏覽器網(wǎng)上數(shù)字身份信任的基礎(chǔ).
在建立SSL鏈接以進(jìn)行基于瀏覽器的安全交易時(shí),在使用內(nèi)置數(shù)字證書之前必須完成對(duì)容器整體和對(duì)應(yīng)證書鏈的安全檢查.安全檢查涉及到2個(gè)方面:一方面是容器和容器總體的安全報(bào)文檢查,該檢查使用SM3散列算法并安裝HMAC協(xié)議進(jìn)行;另一方面為證書鏈環(huán)節(jié)檢查.
證書鏈由2個(gè)環(huán)節(jié)組成:信任錨(CA證書)環(huán)節(jié)和已簽名證書環(huán)節(jié).自我簽名的證書僅有一個(gè)環(huán)節(jié)的長(zhǎng)度,信任錨環(huán)節(jié)就是已簽名證書本身.
證書鏈可以有任意環(huán)節(jié)的長(zhǎng)度,所以在證書鏈中信任錨證書CA環(huán)節(jié)可以對(duì)中間證書簽名,中間證書的所有者可以用自己的私鑰對(duì)另一個(gè)證書簽名.CertPath API 可以用來(lái)遍歷證書鏈以驗(yàn)證有效性,也可以用來(lái)構(gòu)造這些信任鏈.
Web瀏覽器已預(yù)先配置了一組瀏覽器自動(dòng)信任的根CA證書.來(lái)自其他證書授權(quán)機(jī)構(gòu)的所有證書都必須附帶證書鏈,以檢驗(yàn)這些證書的有效性.證書鏈?zhǔn)怯梢幌盗蠧A證書發(fā)出的證書序列,最終以根CA證書結(jié)束.
證書最初生成時(shí)是一個(gè)自簽名證書.自簽名證書是其簽發(fā)者(簽名者)與主題(其公共密鑰由該證書進(jìn)行驗(yàn)證的實(shí)體)相同的證書.如果擁有者向CA發(fā)送證書簽名請(qǐng)求CSR,然后輸入響應(yīng),自簽名證書將被證書鏈替換.鏈的底部是由CA發(fā)布的、用于驗(yàn)證主題的公共密鑰的證書(回復(fù)).鏈中的下一個(gè)證書是驗(yàn)證CA的公共密鑰的證書.通常,這是一個(gè)自簽名證書并且是鏈中的最后一個(gè)證書.其中的自簽名證書是來(lái)自CA的用于驗(yàn)證其自身的公共密鑰的證書.
其他情況下,CA會(huì)返回一個(gè)證書鏈.鏈的底部證書是由相同CA簽發(fā)的證書,用于驗(yàn)證密鑰條目的公共密鑰.鏈中的第2個(gè)證書是由其他CA簽發(fā)的證書,用于驗(yàn)證向其發(fā)送了CSR的CA的公共密鑰.鏈中的下一個(gè)證書是用于驗(yàn)證第2個(gè)CA密鑰的證書,依此類推,直至到達(dá)自簽名的根證書.因此,鏈中除了第一證書之外,每個(gè)證書都需要驗(yàn)證鏈中前一個(gè)證書的簽名者的公共密鑰.
龍芯CPU和中標(biāo)麒麟操作系統(tǒng)是我國(guó)信息系統(tǒng)國(guó)產(chǎn)平臺(tái)的重要成果.目前只有少數(shù)瀏覽器能較好支持國(guó)產(chǎn)平臺(tái).本文以龍芯3號(hào)CPU[8-9]和中標(biāo)麒麟操作系統(tǒng)[10]作為目標(biāo)國(guó)產(chǎn)平臺(tái),介紹海泰安全瀏覽器的國(guó)產(chǎn)平臺(tái)適配編譯技術(shù)研究,包括本地編譯和交叉編譯技術(shù).主要工作包括:通過(guò)對(duì)面向國(guó)產(chǎn)CPU處理器微體系結(jié)構(gòu)的瀏覽器內(nèi)核代碼適配技術(shù)進(jìn)行研究,實(shí)現(xiàn)瀏覽器內(nèi)核代碼在國(guó)產(chǎn)CPU指令系統(tǒng)上成功編譯,編譯結(jié)果在國(guó)產(chǎn)操作系統(tǒng)之上能夠正確運(yùn)行,并通過(guò)充分測(cè)試,確保瀏覽器軟件功能完整且運(yùn)行過(guò)程穩(wěn)定.
如圖2所示,基于龍芯處理器的中標(biāo)麒麟操作系統(tǒng)對(duì)Linux內(nèi)核經(jīng)過(guò)了大規(guī)模剪裁,這為本地編譯環(huán)境的建立增加了困難程度.為了面向國(guó)產(chǎn)平臺(tái)的瀏覽器源代碼成功編譯,首先需要獲取安裝軟件包所必須的工具和文件,最終完成編譯環(huán)境的搭建.
圖2 基礎(chǔ)支撐軟件平臺(tái)模塊結(jié)構(gòu)圖
瀏覽器是大型軟件系統(tǒng),源代碼規(guī)模龐大,并且國(guó)產(chǎn)CPU與X86架構(gòu)CPU的性能存在一定差距.編譯速度是影響開(kāi)發(fā)和調(diào)試新功能的關(guān)鍵短板,如何有效提高瀏覽器源代碼在龍芯CPU上的編譯速度,有重要現(xiàn)實(shí)意義.本文采用 GCC for MIPS來(lái)建立本地編譯環(huán)境,基于高性能X86計(jì)算機(jī)系統(tǒng)搭建交叉編譯環(huán)境,有效提高編譯速度.
作為L(zhǎng)inux平臺(tái)下最常用的編譯器,GCC 提供了強(qiáng)大的編譯能力和良好的平臺(tái)通用性,GCC 可以根據(jù)處理器的結(jié)構(gòu)特性在編譯中對(duì)代碼進(jìn)行有針對(duì)性的編排組合,以更加高效地運(yùn)行于目標(biāo)平臺(tái).到目前為止,龍芯平臺(tái)上 GCC編譯環(huán)境只能選擇與龍芯平臺(tái)兼容的 GCC for MIPS來(lái)實(shí)現(xiàn).
圖3 創(chuàng)建本地環(huán)境流程圖
如圖3所示,龍芯3號(hào)CPU采用MIPS指令系統(tǒng),因此需要特定的編譯器后端支持,以實(shí)現(xiàn)產(chǎn)生的二進(jìn)制指令可在龍芯CPU上正確運(yùn)行.本文采用 GCC for MIPS來(lái)建立本地編譯環(huán)境.通過(guò)實(shí)踐發(fā)現(xiàn),系統(tǒng)附帶的交叉編譯工具本身存在一定問(wèn)題,無(wú)法通過(guò)利用交叉編譯工具編譯源碼的方式來(lái)添加 GCC for MIPS到系統(tǒng)中.只有采取直接安裝 GCC for MIPS二進(jìn)制軟件包的方式來(lái)建立本地編譯環(huán)境.
本地編譯環(huán)境的建立也有2種方式:一種是直接在Linux內(nèi)核基礎(chǔ)上通過(guò)系統(tǒng)命令安裝已經(jīng)編譯好的二進(jìn)制 GCC 工具軟件包;另外一種則是通過(guò)交叉編譯器從源碼開(kāi)始編譯GCC 工具鏈.相比而言,前者的效率更高,但是需要相關(guān)支持工具.由于Linux內(nèi)核中的一些系統(tǒng)命令程序是不完整的,必須要先在一個(gè)與龍芯平臺(tái)兼容的平臺(tái)上安裝一個(gè)Linux操作系統(tǒng),然后獲取相關(guān)系統(tǒng)工具添加到開(kāi)發(fā)環(huán)境中,才能夠完成本地編譯環(huán)境的安裝.這個(gè)兼容平臺(tái)可以通過(guò)2種方式實(shí)現(xiàn):一種是硬件平臺(tái),由于Linux系統(tǒng)支持MIPS架構(gòu),而龍芯平臺(tái)與MIPS架構(gòu)兼容,因此在1臺(tái)MIPS架構(gòu)的計(jì)算機(jī)系統(tǒng)中可以直接安裝已經(jīng)開(kāi)發(fā)好的Linux操作系統(tǒng),然后獲取相關(guān)系統(tǒng)工具并添加到龍芯平臺(tái)開(kāi)發(fā)環(huán)境中;另外一種是通過(guò)模擬器軟件模擬1臺(tái)MIPS架構(gòu)的計(jì)算機(jī)系統(tǒng),然后同樣在系統(tǒng)中安裝Linux操作系統(tǒng),獲取并添加相關(guān)系統(tǒng)工具到龍芯平臺(tái)開(kāi)發(fā)環(huán)境中.
交叉編譯器是整個(gè)交叉開(kāi)發(fā)環(huán)境的核心模塊,在由該模塊負(fù)責(zé)完成應(yīng)用程序的編譯后,應(yīng)用程序才能在特定的硬件平臺(tái)上運(yùn)行.交叉編譯器工具鏈由一套用于編譯、匯編和連接內(nèi)核及應(yīng)用程序的組件組成.龍芯公司增強(qiáng)、移植了GNU開(kāi)發(fā)環(huán)境,為用戶提供了2套交叉編譯工具鏈:一套是基于GNU GCCBinutils的工具鏈,供用戶開(kāi)發(fā)擴(kuò)展操作系統(tǒng)功能以及應(yīng)用程序使用;另一套是 SDE-MIPS工具鏈,主要是提供給進(jìn)行系統(tǒng)軟件開(kāi)發(fā)的用戶開(kāi)發(fā)專用 Firmware使用.
需要注意的是,在交叉編譯環(huán)境建立過(guò)程中,應(yīng)用程序二進(jìn)制接口(ABI)存在兼容性問(wèn)題.一方面,為了編譯64 b內(nèi)核,交叉編譯環(huán)境所包含的庫(kù)文件應(yīng)該是64 b的,而開(kāi)發(fā)環(huán)境附帶的交叉編譯環(huán)境所提供的庫(kù)文件是32 b的;另一方面,要使交叉編譯環(huán)境中對(duì)目標(biāo)文件進(jìn)行操作的應(yīng)用程序能夠正常運(yùn)行,宿主機(jī)中也必須提供相應(yīng)的應(yīng)用程序運(yùn)行支撐庫(kù)以及其他庫(kù)文件.為了能夠編譯生成64 b內(nèi)核,需要將交叉編譯環(huán)境中的32 b庫(kù)文件重新編譯生成新的64 b庫(kù)文件.
虛擬桌面[11]是典型的云計(jì)算應(yīng)用,它能夠?yàn)橛脩籼峁┻h(yuǎn)程的計(jì)算機(jī)桌面服務(wù).服務(wù)提供者在云端運(yùn)行用戶所需的操作系統(tǒng)和應(yīng)用軟件,然后用桌面顯示協(xié)議將操作系統(tǒng)桌面視圖以圖像的方式傳送到用戶端設(shè)備上.同時(shí),服務(wù)器對(duì)用戶端的輸入進(jìn)行處理,并隨時(shí)更新桌面視圖的內(nèi)容.
虛擬桌面技術(shù)具有多方面優(yōu)勢(shì),能夠提供隨時(shí)訪問(wèn)能力,支持多樣化接入設(shè)備選擇,可以有效降低軟硬件的管理維護(hù)成本,提高用戶的數(shù)據(jù)安全保護(hù)水平,這使得虛擬桌面具有廣闊的應(yīng)用前景.
VDI架構(gòu)是虛擬桌面技術(shù)采用的主流架構(gòu).在該架構(gòu)中,用戶的客戶端請(qǐng)求信息被虛擬桌面交付控制器接收,并通過(guò)它連接到資源池,資源池對(duì)多個(gè)虛擬桌面實(shí)例進(jìn)行統(tǒng)一管理.虛擬桌面最終通過(guò)ICA協(xié)議傳輸?shù)接脩舻目蛻舳擞枰燥@示,供用戶使用.安全虛擬桌面管理系統(tǒng)部署圖如圖4所示:
圖4 安全虛擬桌面管理系統(tǒng)部署圖
以Web瀏覽器作為客戶端實(shí)現(xiàn)基于VDI架構(gòu)的安全虛擬桌面是一種可行方案,如海泰安全瀏覽器,以Websocket協(xié)議為基礎(chǔ)設(shè)計(jì)底層通道,既保持了瀏覽器跨平臺(tái)和易支持移動(dòng)客戶端的優(yōu)點(diǎn),又降低了虛擬桌面?zhèn)鬏斶^(guò)程中的傳輸流量和時(shí)延.
用戶可以通過(guò)PC、平板、手機(jī)等多種終端接入.安全網(wǎng)關(guān)在用戶接入時(shí)提供加密服務(wù),屏蔽內(nèi)部設(shè)備的IP地址.虛擬桌面管理系統(tǒng)接收用戶請(qǐng)求信息,并將請(qǐng)求發(fā)送到連接服務(wù)器.連接服務(wù)器向虛擬桌面用戶管理中心發(fā)送請(qǐng)求,對(duì)用戶提供的登錄信息進(jìn)行校驗(yàn),以確認(rèn)是否提供連接到虛擬桌面管理中心的服務(wù).用戶選擇需要連接的桌面之后,連接服務(wù)器控制虛擬機(jī)管理中心創(chuàng)建或連接到該虛擬桌面所在的桌面池,最后由桌面池將用戶要連接的桌面信息返回到用戶的客戶端上顯示.
虛擬桌面系統(tǒng)采用瘦客戶端,系統(tǒng)中所有的計(jì)算處理均在虛擬機(jī)服務(wù)器上完成.以不影響用戶對(duì)虛擬桌面的使用體驗(yàn)為前提,虛擬桌面管理系統(tǒng)對(duì)每個(gè)虛擬桌面運(yùn)行的程序和性能狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控.對(duì)虛擬桌面系統(tǒng)采用統(tǒng)一的監(jiān)控能夠更好地為虛擬桌面系統(tǒng)提供升級(jí)維護(hù)服務(wù),由于虛擬桌面系統(tǒng)的管理是不間斷的,而且虛擬桌面運(yùn)行時(shí)的負(fù)載情況也相對(duì)不固定,隨著不同的時(shí)間段、不同的地點(diǎn)、不同的使用者都會(huì)發(fā)生變化,所以對(duì)支撐虛擬桌面系統(tǒng)的底層硬件設(shè)施系統(tǒng)要求相對(duì)較高.考慮到這些因素,對(duì)虛擬桌面系統(tǒng)的管理模塊必須盡可能簡(jiǎn)化,以減輕對(duì)硬件設(shè)施造成的壓力,但是又必須能夠保證具有基本的管理功能.對(duì)企業(yè)來(lái)說(shuō),一旦虛擬桌面出現(xiàn)故障,維護(hù)人員必須第一時(shí)間就能夠清楚知道問(wèn)題所在,更好地為用戶解決問(wèn)題.
管理系統(tǒng)運(yùn)行于虛擬桌面管理系統(tǒng)上,與安全網(wǎng)關(guān)、連接服務(wù)器以及桌面池相連.用戶通過(guò)網(wǎng)關(guān)鑒權(quán)登錄,管理系統(tǒng)處理請(qǐng)求,向連接服務(wù)器發(fā)出信息,最后由桌面向管理系統(tǒng)發(fā)出響應(yīng)動(dòng)作,管理系統(tǒng)共包括5個(gè)功能模塊,分別是桌面管理、配置管理、系統(tǒng)監(jiān)控、性能統(tǒng)計(jì)、告警管理.
伴隨著互聯(lián)網(wǎng)的飛速發(fā)展,網(wǎng)絡(luò)攻擊事件與日俱增,攻擊手段繁雜多樣,這使得瀏覽器用戶極易遭受安全威脅.為瀏覽器引入安全沙箱機(jī)制能夠有效緩解這一問(wèn)題.
沙箱技術(shù)是一種常用的安全機(jī)制.安全沙箱為來(lái)源不可信、具備破壞力或無(wú)法判定其意圖的程序提供了隔離化的執(zhí)行環(huán)境[12],以確保運(yùn)行于沙盒中的進(jìn)程不會(huì)對(duì)主機(jī)造成破壞.為實(shí)現(xiàn)這一目的,沙箱以虛擬化磁盤、虛擬的內(nèi)存空間,以及虛擬化網(wǎng)絡(luò)資源組成虛擬執(zhí)行環(huán)境,并將不可信程序置于其間運(yùn)行.虛擬執(zhí)行環(huán)境對(duì)被隔離的程序而言是完全透明的,這種隔離機(jī)制使得沙箱技術(shù)具備良好的易控制、易恢復(fù)、高安全性,因此經(jīng)常用于安全軟件、瀏覽器等應(yīng)用中.目前,國(guó)內(nèi)主流安全瀏覽器廠商,如海泰方圓等均在其瀏覽器產(chǎn)品中實(shí)現(xiàn)了沙箱機(jī)制.
沙箱技術(shù)一般通過(guò)過(guò)濾和重定技術(shù)實(shí)現(xiàn),主要利用Hook技術(shù).在不同層面實(shí)現(xiàn)Hook,能夠得到不同層面的沙箱,盡管原理相似,但實(shí)現(xiàn)方式和安全性能卻有著較大的差異.以海泰安全瀏覽器為例,瀏覽器沙箱利用重定向技術(shù),將程序生成和修改的文件定向到自身文件夾中.當(dāng)程序試圖發(fā)揮作用時(shí),安全軟件可以強(qiáng)制其在沙箱中運(yùn)行,如果含有惡意行為,則禁止程序的進(jìn)一步運(yùn)行,以防止其對(duì)系統(tǒng)造成任何危害.
圖5 沙箱系統(tǒng)的總體架構(gòu)
圖5為沙箱系統(tǒng)的總體架構(gòu).首先選擇關(guān)鍵數(shù)據(jù)(data)放進(jìn)沙箱內(nèi)進(jìn)行保護(hù),然后采用相關(guān)的技術(shù)將這些關(guān)鍵數(shù)據(jù)虛擬到沙箱外,使得沙箱內(nèi)的數(shù)據(jù)與此虛擬數(shù)據(jù)形成映射關(guān)系.當(dāng)網(wǎng)頁(yè)腳本訪問(wèn)相關(guān)數(shù)據(jù)時(shí),腳本能夠讀取到沙箱內(nèi)的數(shù)據(jù),若腳本為不可靠程序時(shí),可以采用干預(yù)系統(tǒng)調(diào)用的方式,將該系統(tǒng)調(diào)用的默認(rèn)訪問(wèn)方式以及訪問(wèn)路徑更改為其他方式與路徑,將對(duì)關(guān)鍵數(shù)據(jù)的操作映射到這些數(shù)據(jù)對(duì)應(yīng)的虛擬數(shù)據(jù)上,系統(tǒng)調(diào)用的操作結(jié)果會(huì)作用到虛擬數(shù)據(jù)上,網(wǎng)頁(yè)腳本對(duì)關(guān)鍵數(shù)據(jù)的操作最終被重定向到虛擬數(shù)據(jù)上,即圖5內(nèi)在沙箱外數(shù)據(jù)內(nèi)的方形部分.
當(dāng)系統(tǒng)需要運(yùn)行未知程序時(shí),為了保護(hù)系統(tǒng)資源完整性不受未知程序破壞,可以采用沙箱技術(shù)來(lái)執(zhí)行這些未知程序.沙箱用到一些干涉技術(shù)或者是限制技術(shù),如果程序運(yùn)行時(shí)出現(xiàn)了非法訪問(wèn)行為,沙箱系統(tǒng)可以阻止這些訪問(wèn),進(jìn)而保證系統(tǒng)資源的安全.
Web瀏覽器安全沙箱可用來(lái)保護(hù)瀏覽網(wǎng)頁(yè)時(shí)真實(shí)系統(tǒng)的安全,也可以用來(lái)清除上網(wǎng)、運(yùn)行程序的痕跡.在沙箱進(jìn)程中下載的文件可以隨著沙箱的清空而刪除.在Web瀏覽器內(nèi)構(gòu)造這樣一個(gè)獨(dú)立的虛擬空間,所有網(wǎng)頁(yè)程序都將密閉在此空間內(nèi)運(yùn)行,這有效保證了網(wǎng)頁(yè)上任何木馬、病毒、惡意程序的攻擊均被限制于沙箱中,而無(wú)法對(duì)物理主機(jī)系統(tǒng)產(chǎn)生破壞.
為瀏覽器引入沙箱技術(shù),目的在于降低瀏覽器通過(guò)腳本訪問(wèn)服務(wù)端資源時(shí)給主機(jī)系統(tǒng)帶來(lái)的傷害.當(dāng)瀏覽器沙箱運(yùn)行時(shí)運(yùn)行的線程有嚴(yán)格的運(yùn)行權(quán)限,因此可以阻止惡意腳本的非法訪問(wèn).當(dāng)腳本超出所允許的權(quán)限時(shí)沙箱將阻止進(jìn)程的運(yùn)行,以有效保護(hù)主機(jī)資源.
通過(guò)沙箱系統(tǒng)來(lái)分析一些未知網(wǎng)頁(yè)腳本的行為特性,檢測(cè)網(wǎng)頁(yè)腳本是否具有惡意行為特征,這樣在執(zhí)行這些惡意網(wǎng)頁(yè)腳本時(shí),可有效抵御惡意腳本對(duì)系統(tǒng)的影響.
通過(guò)對(duì)惡意行為的分析與分類,提取惡意行為特征碼,將這些特征碼應(yīng)用到沙箱保護(hù)策略中,可以有效地阻止和預(yù)防惡意網(wǎng)頁(yè)腳本的破壞行為.當(dāng)在沙箱中加入惡意行為特征碼后,可以以此為標(biāo)志,網(wǎng)頁(yè)腳本在沙箱中執(zhí)行時(shí),可以通過(guò)對(duì)應(yīng)用程序的監(jiān)視判斷其是否含有特征碼特征,以判斷繼續(xù)運(yùn)行程序還是終止程序,達(dá)到保護(hù)系統(tǒng)的目的.
海泰安全瀏覽器通過(guò)對(duì)HTML5[13]標(biāo)準(zhǔn)支持技術(shù)和NPAPI[14]等瀏覽器插件兼容技術(shù)進(jìn)行研究,以提供對(duì)多種在線辦公和數(shù)據(jù)展示插件,包括流式辦公插件、版式辦公插件、SVG矢量圖插件和三維VRML插件等的支持.
通過(guò)對(duì)HTML5標(biāo)準(zhǔn)規(guī)范深入研究,海泰瀏覽器充分掌握了HTML5標(biāo)準(zhǔn)規(guī)范的詳細(xì)細(xì)節(jié).通過(guò)對(duì)瀏覽器的源代碼深入分析,解析其內(nèi)部結(jié)構(gòu),確定其對(duì)HTML5標(biāo)準(zhǔn)規(guī)范的具體支持方式,并對(duì)源代碼進(jìn)行優(yōu)化,使其充分支持HTML5標(biāo)準(zhǔn)規(guī)范.
插件技術(shù)是大量現(xiàn)有應(yīng)用系統(tǒng)的技術(shù)基礎(chǔ),對(duì)插件技術(shù)的有效支持是Web應(yīng)用系統(tǒng)正確運(yùn)行的必要前提.現(xiàn)實(shí)情況下,由于國(guó)產(chǎn)平臺(tái)瀏覽器對(duì)插件支持不夠完善,導(dǎo)致大量歷史應(yīng)用系統(tǒng)無(wú)法正常運(yùn)行.海天瀏覽器研發(fā)團(tuán)隊(duì)針對(duì)典型流式辦公插件、版式辦公插件、SVG矢量圖插件和三維VRML插件進(jìn)行分析,通過(guò)實(shí)際調(diào)試,確定導(dǎo)致插件不能正常運(yùn)行的原因.具體為瀏覽器插件機(jī)制對(duì)一部分接口的實(shí)現(xiàn)不完備,通過(guò)補(bǔ)足未實(shí)現(xiàn)的接口,為其提供具體實(shí)現(xiàn)功能代碼,確保對(duì)以上插件的完整支持.
插件接口使用NPAPI接口標(biāo)準(zhǔn).NPAPI提供2類接口:一類以NPP開(kāi)頭,接口由插件來(lái)實(shí)現(xiàn),被瀏覽器調(diào)用,主要功能包括插件創(chuàng)建、初始化、關(guān)閉、銷毀、信息查詢及事件處理、數(shù)據(jù)流、窗口設(shè)置和訪問(wèn)URL等.另一類接口以NPN開(kāi)頭,由瀏覽器來(lái)實(shí)現(xiàn),并被插件所調(diào)用,主要包括圖形繪制、數(shù)據(jù)流處理、瀏覽器信息查詢、內(nèi)存分配和釋放、瀏覽器的插件設(shè)置和訪問(wèn)URL等.
插件模塊采用安全模型設(shè)計(jì),每一種類型的plugin只有一個(gè)進(jìn)程,如果有2個(gè)或者多個(gè)網(wǎng)頁(yè)進(jìn)程同時(shí)使用同一個(gè)插件,那么該插件會(huì)共享同一個(gè)進(jìn)程.
插件解析過(guò)程如下:
瀏覽器打開(kāi)一個(gè)包括embed標(biāo)簽的網(wǎng)頁(yè)時(shí),瀏覽器會(huì)響應(yīng)以下行為:
1) 檢測(cè)帶有MIME類型的插件;
2) 加載插件代碼到內(nèi)存中;
3) 初始化插件;
4) 創(chuàng)建插件的實(shí)例.
瀏覽器引擎可以加載同一插件的多個(gè)實(shí)例在一個(gè)網(wǎng)頁(yè)上,或者同時(shí)在幾個(gè)打開(kāi)的窗口.當(dāng)網(wǎng)頁(yè)或?yàn)g覽器關(guān)閉窗口,插件實(shí)例被刪除.當(dāng)最后一個(gè)實(shí)例被刪除,插件代碼從內(nèi)存中卸載.
隨著Web網(wǎng)站的普及和互動(dòng)性的增強(qiáng),統(tǒng)計(jì)顯示W(wǎng)eb網(wǎng)頁(yè)上加載的惡意腳本已成為互聯(lián)網(wǎng)的最大安全隱患,傳統(tǒng)的惡意腳本包括:病毒、蠕蟲(chóng)、特洛伊木馬和攻擊性腳本,Javas攻擊小程序和危險(xiǎn)的ActiveX控件.在未來(lái)的工作中,本文擬采用基于機(jī)器學(xué)習(xí)的方法實(shí)現(xiàn) Web瀏覽器惡意腳本檢測(cè),主要是在靜態(tài)分析和利用安全沙箱動(dòng)態(tài)分析腳本的基礎(chǔ)上,提取腳本的代碼特征,利用樸素貝葉斯(Native Bayes)、支持向量機(jī)(SVM)、K-最近鄰(KNN)、決策樹(shù)、線性回歸等分類算法及劃分聚類算法、層次聚類算法、密度聚類算法等聚類算法,通過(guò)對(duì)檢測(cè)樣本的學(xué)習(xí)和訓(xùn)練,自動(dòng)化地識(shí)別出惡意腳本,一旦檢測(cè)出惡意腳本,就會(huì)給用戶發(fā)出提示并自動(dòng)阻斷惡意腳本的加載和運(yùn)行,體現(xiàn)出Web安全瀏覽器在惡意腳本檢測(cè)方面的智能化和腳本加載運(yùn)行方面的可控可管.另一方面,根據(jù)不同的應(yīng)用場(chǎng)景,采用高效的機(jī)器學(xué)習(xí)算法,可提高惡意腳本檢測(cè)的效率和準(zhǔn)確率,體現(xiàn)了Web安全瀏覽器的人工智能化.
本文在下一步工作中,擬采用基于緩存的Web瀏覽器網(wǎng)頁(yè)加速和基于GPU硬件的Web瀏覽器網(wǎng)頁(yè)加速技術(shù),通過(guò)采用緩存的方式壓縮網(wǎng)頁(yè)數(shù)據(jù),并采用運(yùn)算能力強(qiáng)大的GPU硬件加速的方式快速加載網(wǎng)頁(yè)數(shù)據(jù).
瀏覽器是基礎(chǔ)核心軟件,作為信息系統(tǒng)生態(tài)環(huán)境的重要環(huán)節(jié),瀏覽器是用戶訪問(wèn)網(wǎng)絡(luò)服務(wù)的重要手段和主要入口,承載著大量網(wǎng)絡(luò)應(yīng)用及信息系統(tǒng),也是最常使用的客戶端軟件.目前我國(guó)信息環(huán)境中使用的瀏覽器主要來(lái)自國(guó)外,存在一系列重大安全問(wèn)題.
近幾年來(lái),為發(fā)展自主可控軟硬件系統(tǒng)國(guó)產(chǎn)化進(jìn)程,國(guó)內(nèi)一些企業(yè)進(jìn)行了積級(jí)的探索,典型地,如以“龍芯”為代表的自主CPU芯片以及以中標(biāo)軟件為代表的“中標(biāo)麒麟”國(guó)產(chǎn)操作系統(tǒng)企業(yè),國(guó)產(chǎn)化信息平臺(tái)建設(shè)取得了長(zhǎng)足的發(fā)展,國(guó)產(chǎn)化替代有著巨大的發(fā)展空間.
伴隨著整個(gè)國(guó)家信息化建設(shè)進(jìn)程中國(guó)產(chǎn)化替代的速度逐步提升,自主可控成為國(guó)產(chǎn)化過(guò)程中的重要目標(biāo).自主就意味著必須要擁有完整知識(shí)產(chǎn)權(quán),依靠國(guó)內(nèi)力量自身的研發(fā)設(shè)計(jì),全面掌握產(chǎn)品核心技術(shù),實(shí)現(xiàn)信息系統(tǒng)從硬件到軟件的自主研發(fā)、生產(chǎn)、升級(jí)、維護(hù)的全程自主可控.
國(guó)產(chǎn)平臺(tái)瀏覽器是對(duì)國(guó)產(chǎn)化進(jìn)程的有力支持,可以廣泛應(yīng)用于基于國(guó)產(chǎn)化軟硬件平臺(tái)的信息管理系統(tǒng)、辦公系統(tǒng)等使用BS架構(gòu)的應(yīng)用系統(tǒng).
[1]倪光南. 采用自主可控軟件是保障信息安全的前提[J]. 中國(guó)信息安全, 2010 (9): 1-2
[2]鐘博. 自主可控戰(zhàn)略下信息安全產(chǎn)業(yè)發(fā)展壯大的思考[J]. 信息安全與通信保密, 2015 (1): 36-37
[3]劉權(quán). 我國(guó)自主可控信息產(chǎn)業(yè)發(fā)展對(duì)策[J]. 信息安全與通信保密, 2014 (9): 42-42
[4]趙宇亮, 胡威, 張冰, 等. 國(guó)家商用密碼算法綜述[C] //2016電力行業(yè)信息化年會(huì)論文集. 天津: 大眾用電, 2016: 132-134
[5]汪朝暉, 張振峰. SM2橢圓曲線公鑰密碼算法綜述[J]. 信息安全研究, 2016, 2(11): 972-982
[6]王小云, 于紅波. SM3密碼雜湊算法[J]. 信息安全研究, 2016, 2(11): 983-994
[7]呂述望, 蘇波展, 王鵬, 等. SM4分組密碼算法綜述[J]. 信息安全研究, 2016, 2(11): 995-1007
[8]袁勝. “芯”安體健,從根本做起——龍芯打造自主可控“中國(guó)芯”[J]. 中國(guó)信息安全, 2011 (6): 38-40
[9]胡偉武, 高燕萍, 陳天石. The godson processors: Its research, development, and contributions [J]. Journal of Computer Science and Technology, 2011, 26(3): 363-372
[10]吳慶波, 戴華東, 吳泉源. 麒麟操作系統(tǒng)層次式內(nèi)核設(shè)計(jì)技術(shù)[J]. 國(guó)防科技大學(xué)學(xué)報(bào), 2009, 31(2): 76-80
[11]孟強(qiáng). 虛擬桌面基礎(chǔ)架構(gòu)的設(shè)計(jì)與開(kāi)發(fā)[D]. 上海: 復(fù)旦大學(xué), 2014
[12]趙長(zhǎng)林. 面向?yàn)g覽器的沙盒系統(tǒng)的分析與設(shè)計(jì)[D]. 北京: 北京郵電大學(xué), 2012
[13]Pilgrim M. HTML5: Up and Running[M]. Sebastopol, CA: O’Reilly Media, Inc, 2010
[14]鄒強(qiáng). 基于NPAPI的移動(dòng)應(yīng)用瀏覽器插件的設(shè)計(jì)與實(shí)現(xiàn)[D]. 西安: 西安電子科技大學(xué), 2011