◆何 旭任曉靜
(1.達(dá)州職業(yè)技術(shù)學(xué)院 信息中心 四川 635001;2.達(dá)州職業(yè)技術(shù)學(xué)院 圖書館 四川 635001)
基于瀏覽器代理審查機(jī)制的研究
◆何 旭1任曉靜2
(1.達(dá)州職業(yè)技術(shù)學(xué)院 信息中心 四川 635001;2.達(dá)州職業(yè)技術(shù)學(xué)院 圖書館 四川 635001)
本文分析了互聯(lián)網(wǎng)進(jìn)入某些網(wǎng)站被阻止或限制,以及審查區(qū)域外通過代理繞過審查與面臨的問題,也分析了代理審查機(jī)制所受速率、客戶端可控制與最小附帶損害的限制;提出了基于瀏覽器的Flash代理框架模型和代理審查機(jī)制的操作序列所遵從傳輸層插件,提出了使插件產(chǎn)生大量短暫代理,基于瀏覽器代理不間斷產(chǎn)生和消失以實現(xiàn)客戶端代理;通過三個代理實驗得出自然限制帶寬比人工限制更加嚴(yán)格,從而使傳輸所用時間達(dá)到近似線性,基于瀏覽器代理審查是穩(wěn)定。
瀏覽器;代理;審查;插件;模型
當(dāng)互聯(lián)網(wǎng)開始作為研究網(wǎng)絡(luò)并放開相關(guān)信息以來,許多國家就開始過濾互聯(lián)網(wǎng)上傳輸?shù)男畔?。OpenNet長期關(guān)注追蹤因特網(wǎng)過濾的報道,列出了大量進(jìn)行互聯(lián)網(wǎng)信息過濾的國家。像YouTube和FaceBook這樣的網(wǎng)站在有的國家就受到限制,有的國家限制進(jìn)入他們認(rèn)為令其反感的組織或機(jī)構(gòu)的網(wǎng)站。該名單中包含了分布在亞洲、中東以及部分歐洲國家,在這些國家中超過一半加強(qiáng)了網(wǎng)絡(luò)過濾的力度[1-2]。
一些用戶試圖通過代理方式繞過監(jiān)管來訪問網(wǎng)站,許多代理服務(wù)系統(tǒng)幫助用戶繞過監(jiān)管檢查,有些最初是用來提供匿名服務(wù)的,現(xiàn)在已經(jīng)廣泛應(yīng)用于逃避監(jiān)管。這些逃避欺騙系統(tǒng)的存在使得管理員的工作變得更加困難[3]。管理員必須阻止所有欺騙工具的訪問,同時還要附加更多的資源用于日常阻止工作[4]。
Bonjour協(xié)議讓用戶在監(jiān)管區(qū)域從逃避監(jiān)管系統(tǒng)發(fā)送與接收少量信息(比如幾個字節(jié))到外面監(jiān)管區(qū)域,從而引導(dǎo)用戶進(jìn)入代理的目的,然而試圖達(dá)到使阻止的目標(biāo)是困難的,開發(fā)Bonjour協(xié)議是為了分配路由的IP地址,路由這些地址不使阻止更加困難[5]。
規(guī)避系統(tǒng)依賴于過濾區(qū)域以外的代理來路由從客戶端到所需站點的傳輸。在隱藏偽裝中,檢查員可以偽裝成合法用戶來發(fā)現(xiàn)代理服務(wù)器地址,并及時阻止他們[6]。阻止這種攻擊的一個方法就是不斷建立過濾區(qū)域以外的新代理。當(dāng)代理被阻止,新的代理會代替它。
一旦客戶端有一個沒有阻止代理的地址,它需要偽裝與代理會話,這樣就無法通過傳輸分析來阻止會話。偽裝的目標(biāo)是讓對話看起來像可接受傳輸,例如電子商務(wù)事務(wù)、語音對話等[7]。
一個完整的規(guī)避系統(tǒng)必須解決安全客戶端軟件分發(fā),一方面是安裝系統(tǒng),另一方面是集成有安全功能的Web瀏覽器。
代理審查機(jī)制的客戶端在過濾區(qū)域擁有一臺計算機(jī)并試圖訪問過濾區(qū)域外的網(wǎng)站。同時假設(shè)客戶端可以完全控制計算機(jī),特別是能在該計算機(jī)上安裝任意軟件。目標(biāo)網(wǎng)站位于過濾區(qū)域以外,且不試圖阻止逃避行為。逃避工具試圖從客戶機(jī)到目標(biāo)主機(jī)進(jìn)行數(shù)據(jù)來回的傳輸,該工具包括客戶端軟件以及過濾區(qū)域內(nèi)部與外部的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,試圖過濾必須被允許可接受的Internet傳輸(例,銀行和電子商務(wù)等),但試圖阻止所有存在異議的傳輸。哪些是可通過的,哪些是受反對傳輸都是由審查來決定的。
審查來往于過濾器區(qū)域的網(wǎng)絡(luò)傳輸信息,以及阻止任何一個它想阻止的數(shù)據(jù)包。但是,要考察以下三方面限制條件。
(1)速率限制。必須在線速率下操作,并且不能明顯降低合法的信息傳輸。也就是說,它幾乎沒有時間來決定是否允許或阻止數(shù)據(jù)包和流量的通過。
(2)客戶端的可控制。如果審查沒有在客戶端計算機(jī)上安裝軟件,過濾發(fā)生在網(wǎng)絡(luò)上而不是主機(jī)上。一些規(guī)避工具是為了在公共信息環(huán)境使用而設(shè)計的,該環(huán)境中客戶端使用可能安裝了過濾軟件的公共終端瀏覽網(wǎng)絡(luò)。
(3)最小附帶損害。在可能的范圍內(nèi),審查試圖避免附帶損害,并試圖將接受信息流的影響最小化。審查不能簡單地關(guān)閉所有通過過濾器的信息,因為這樣會停止所有銀行和電子商務(wù)信息的傳輸。部署互聯(lián)網(wǎng)過濾必須盡量減少附帶損害,以免傷害商業(yè)。
提出一個Flash代理架構(gòu)可創(chuàng)建大量的臨時代理。該模型能用瀏覽器作為短暫代理瀏覽整個網(wǎng)絡(luò)。該模型由WebSocket技術(shù)的限制所決定,也就是說它只能向外發(fā)送TCP連接,不能像一般代理那樣接收連接。在該Flash代理模型中,代理連接是客戶端方式。
使用帶插件的傳輸層能夠使用不同的規(guī)避和隧道方案。模型有一個能夠運(yùn)行在客戶端的客戶端傳輸層插件,以及一個運(yùn)行于在服務(wù)器傳輸層插件,如圖1所示。
圖1 Flash代理框架模型圖
客戶端希望服務(wù)時,它使用代理服務(wù)注冊并等待。當(dāng)Flash代理出現(xiàn)并且用客戶地址登錄到代理服務(wù)。一旦代理獲得客戶端地址,它會接到客戶端和服務(wù)器,并且代理會為客戶端提供來回傳輸。
3.1 Flash代理
代理本身是一個運(yùn)行在Web瀏覽器上的小型應(yīng)用程序,可以托管到其它計算機(jī)上,使用標(biāo)記代理。每當(dāng)有人訪問頁面,標(biāo)記開始在瀏覽器上運(yùn)行。當(dāng)瀏覽離開后標(biāo)記不留任何痕跡的。標(biāo)記可以連接到代理服務(wù)(ProServ)以查找客戶端需要連接的地址。一旦它找到客戶端地址,便會連接到客戶端傳輸層插件,然后連接到服務(wù)器傳輸層插件,最后開始代理發(fā)送的數(shù)據(jù)。標(biāo)記本身在后臺運(yùn)行,不影響網(wǎng)站的交互,用戶不需要看到標(biāo)記[9]。
3.2 代理服務(wù)器
服務(wù)器一直跟蹤客戶的注冊,當(dāng)頁面被請求時將其傳給代理。當(dāng)客戶端運(yùn)輸層插件開始啟動,它使用Bonjour協(xié)議與服務(wù)器注冊。服務(wù)器可能會審查阻止;Bonjour協(xié)定的目的是允許客戶端將其IP地址發(fā)送到服務(wù)器以求忽略阻止。與代理服務(wù)通信的Flash代理不必經(jīng)過審查的允許,因此通過阻塞代理服務(wù)也不會對其產(chǎn)生影響。注冊完畢后,當(dāng)一個基于瀏覽器的Flash代理可以提供服務(wù)時,該代理服務(wù)指定它為審查客戶服務(wù)。
3.3 傳輸層插件
客戶端和服務(wù)器都通過運(yùn)行在其上的傳輸層插件對Flash代理隧道進(jìn)行讀寫。在WebSocket的情況下,傳輸層插件響應(yīng)HTTP握手,并把數(shù)據(jù)轉(zhuǎn)換成的WebSocket幀。在客戶端使用TCP連接接收數(shù)據(jù),在另一個端口使用WebSocket連接接收來自Flash代理,以維護(hù)每個類型的連接池。兩個連接池中一旦有至少一個連接,傳輸層插件便會將它們連接起來,開始進(jìn)行數(shù)據(jù)來回傳輸。當(dāng)一個Flash代理消失,傳輸層插件開始使用連接池里的另一個代理連接。而代理幾乎不知道一個新的Flash代理已經(jīng)取代了原有的位置。
3.4 服務(wù)器
運(yùn)行服務(wù)器傳輸層插件,任何服務(wù)器都可以用作通向外部網(wǎng)絡(luò)的入口。
運(yùn)行在Web瀏覽器上的程序,無論使用WebSocket還是Flash都有一個共同的限制條件,不能打開監(jiān)聽Socket,只能被動地等待連接,他們只能創(chuàng)建新的出站連接。另一個限制是Web瀏覽器的安全性策略通常阻止程序連接到任意的目的站點。瀏覽器需要服務(wù)器、客戶端傳輸層插件與服務(wù)器傳輸層插件相互合作。這就意味著WebSocket服務(wù)器必須通過發(fā)送Access-Control-Allow-Origin header字段允許交叉區(qū)域資源共享(CORS)[10],客戶端和服務(wù)器必須能夠響應(yīng)WebSocket握手和到服務(wù)器隧道數(shù)據(jù)的代理。對于Flash意味著終端必須服務(wù)跨域策略,具體說明哪一個連接是被允許的XML程序段。
Flash代理可以是后臺網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)或不允許新進(jìn)入連接的防火墻,這不會影響體系結(jié)構(gòu)[11]。代理建立過程按如下序列操作:
(1)客戶端啟動會話和客戶端傳輸層插件,并通過安全Bonjour協(xié)議機(jī)制給服務(wù)器發(fā)送注冊信息。傳輸層插件開始偵聽遠(yuǎn)程連接。
(2)一個Flash代理上線,并對服務(wù)器進(jìn)行調(diào)查。
(3)服務(wù)器返回客戶登記信息,報告Flash代理可以連接的位置。
(4)代理產(chǎn)生客戶端的出站連接,同時該連接會被客戶端傳輸層插件所接收。
(5)代理在服務(wù)器上產(chǎn)生運(yùn)輸層插件的外向連接,并開始在客戶端和服務(wù)器之間傳送和接收信息。
(6)Flash代理遲早會消失,并且打破客戶端和服務(wù)器之間的連接。然后客戶端運(yùn)輸層插件會立即切換到另一個可用的代理上。在萬一沒有可用的情況下,傳輸層插件會一直等到一個新的代理出現(xiàn)。
客戶端傳輸層插件在連接池中一直保持5個代理的活躍連接,以便使它們快速的切換。在同一時間只有一個代理會被使用,但是當(dāng)這個正在使用的一旦消失,該Socket使用其中的儲備完成,用于低層建立新連接。
服務(wù)器的目標(biāo)是給客戶端平均分配代理,并試圖為用戶提供良好的服務(wù)。服務(wù)商器還試圖讓每個有空閑的代理負(fù)載更多。服務(wù)商會跟蹤分給每個代理客戶端的數(shù)量。當(dāng)出現(xiàn)一個新客戶時,它分配較少的負(fù)載給該代理,這樣以防止出現(xiàn)隨機(jī)斷裂。
該體系結(jié)構(gòu)的特征是,使用代理的客戶端預(yù)先不知道它連接到哪個代理的。事實上,客戶機(jī)傳輸層插件接收的偽目的地址只遵從可插入的傳輸層協(xié)議。
實驗研究服務(wù)器與客戶端傳輸層插件、代理服務(wù)器都運(yùn)行在本地主機(jī)上,測試代理的最大吞吐量、獨(dú)立性及其存在的瓶頸。通過WebSocket代理和基于Flash代理直接繞過TCP,開始進(jìn)行1~50個50MB文件同時進(jìn)行HTTP下載。代理運(yùn)行在Flash Player為16.0.0.235版本的IE9瀏覽器上。測試中代理的帶寬和連接限制被禁用。圖2展示了每個客戶端下載文件的時間。每列包含多個點,但是Flash Socket和直接下載大概是一致的。
圖2 通過不同數(shù)量客戶端與不同方式下載50MB文件所需要時間
兩個代理都比直接下載慢。WebSocket測試顯示下載時間與客戶端的數(shù)量大體上成比例。
Flash Socket上多達(dá)16個客戶端中每個客戶端下載所用的時間幾乎都是常數(shù)。這是由于Flash Player內(nèi)部限制使得每個單獨(dú)的連接不會超過設(shè)定的最大值。正是由于這種限制,在少量客戶端時WebSocket的速度會比Flash sockets快。最終自然限制帶寬變得比人工限制更加嚴(yán)格,從而使下載所用時間變?yōu)榻凭€性的。
從Socket讀取數(shù)據(jù)WebSocket API不會暴露出“讀取”的過程,但是注冊一個“消息”并調(diào)用返回函數(shù)時該數(shù)據(jù)就會被讀取。接收到的數(shù)據(jù)包沒有被帶有緩存的應(yīng)用程序立即處理。在高數(shù)據(jù)率下,該緩存可以無約束地增長,其后果是這樣代理可能最終崩潰,這個問題不是特定于Flash代理,它留下代理并暴露給具有惡意客戶端或入侵者。Websocket提供一種方法用以控制寫緩沖區(qū)的大小,讀緩存的互補(bǔ)機(jī)制足以解決該問題。由于Flash Socket在操作系統(tǒng)內(nèi)核緩存數(shù)據(jù),它就不存在這樣的問題,所以TCP滑動窗口可以防止一次性接受過多數(shù)據(jù)。
結(jié)果顯示一旦連接,F(xiàn)lash代理可以提供更多的帶寬。對于少數(shù)客戶端,基于瀏覽器的代理審查是很穩(wěn)定的也是可預(yù)測性的。
[1]The OpenNet Initiative:OpenNet Initiative Internet ce nsorship data.http://opennet.net/research/data,2011.
[2]Kadianakis,G.,Mathewson,N.:Obfsproxy architectur-e.htt p://www.torproject.org/projects/obfsproxy,2011.
[3]Wustrow,E.,Wolchok,S.,Goldberg,I.,Halderman,J.A.:Telex:Anticensorship in the network infrastructure.In:Proc.2 0th USENIX Security Symposium.2011.
[4]Tor Metrics Portal:Users.https://metrics.torproject.org /users.html 2011.
[5]王愛杰.Bonjour網(wǎng)關(guān)mDNS響應(yīng)報文處理模塊的設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué)軟件學(xué)院,2015.
[6]曹自剛.隱蔽式網(wǎng)絡(luò)攻擊檢測關(guān)鍵問題研究[D].北京:北京郵電大學(xué),2015.
[7]Wilde,T.:Knock knock knockin on bridges doors., http s://blog.torproject.org/blog/knock-knock-knockin-bridges-do ors,2012.
[8]郭伏,操雅琴,丁一,屈慶星.基于多模式測量的電子商務(wù)網(wǎng)站情感體驗研究[J].信息系統(tǒng)學(xué)報,2013.
[9]龔平,馮在文.基于標(biāo)注的業(yè)務(wù)過程合規(guī)性驗證方法[J].計算機(jī)應(yīng)用,2014.
[10]W3C:Cross-origin resource sharing.http://www.w3.or g/TR/cors/,2012.
[11]Muller,A.,Evans,N.,Grothoff,C.:Autonomous NAT tra versal.10th IEEE International Conference on Peer-to- Peer Computing(P2P),2010.
四川省教育廳理工科重點項目基金(14ZA0330)。