側信道(Side Channel)攻擊對加密Web應用造成的敏感信息泄露

1 背景簡介

隨着互聯網的迅速發展與普及,互聯網帶給網民的服務也越來越方便、快捷,尤其是Web2.0的產生與發展,使得用戶在Web應用使用過程中的交互體驗越來越完善。而在應用的範圍來看,不再僅僅是最初的看新聞、發郵件的簡單應用,Web的應用已經滲透到了現代人生活的方方面面:利用搜索引擎查找資料,建立在線健康檔案,在線財務諮詢管理等等。互聯網已經成爲大多數社會人存在的重要的空間之一,因此網絡安全的防護也變得越來越重要,尤其是使用最廣泛的Web應用安全,也越來越受到人們的重視。

2 安全威脅與傳統防護措施

在互聯網與人們生活緊密結合的同時,各類網絡攻擊事件也不斷地發生挑動着人們的神經。RFC2828將網絡攻擊分爲了主動攻擊與被動攻擊兩類,主動攻擊是指攻擊者對網絡活動造成一定影響進而也會影響系統的結果,而被動攻擊通常是一種隱祕的行爲,其目的不是影響網絡而是對敏感數據進行竊取。對於被動攻擊,最直接有效的手段就是加密,使得信息的隨機不定性增加,最常用的如3DES、AES、RSA等高級加密算法。通過這些算法的使用,攻擊者就很難再從捕獲的網絡數據中解讀到敏感的用戶信息。

在Web應用方面,超文本傳輸協議(Hypertext Transfer Protocol,HTTP)是最主要的應用層協議。但RFC2068對HTTP/1.1的規定是採用明文傳輸數據,雖然這個規定可以方便信息的傳輸,但是可以想象的到,明文傳輸數據造成的安全威脅:竊聽者很容易捕獲到其他用戶的信息。因此,超文本傳輸安全協議(Hypertext Transfer Protocol Secure,HTTPS)出現並彌補這個安全缺陷。HTTPS協議本身是HTTP協議和安全套階層(Secure Socket Layer,SSL)或者傳輸層安全(Transport Layer Secure,TLS)協議的組合體,其實現安全的本質就是對HTTP協議傳輸的數據進行了加密的處理。所以在Web應用方面防止被動攻擊的手段與一般的防止被動攻擊的方法是一致的。但是,採用了加密手段並且假設加密算法是安全不可破解的,是否就一定意味着完全阻斷了被動攻擊的可能性,攻擊者一定不能獲取到用戶的敏感信息?答案是否定的,但是一般的用戶很難意識到這一點,甚至在《OWASP Top 10 -2013》的“A6敏感信息泄露”說明中也只是強調了敏感信息泄露的原因通常都是由於沒有加密造成的,完全沒有提到下面將要介紹的側信道(Side Channel)攻擊,可以在不破解密碼的情況下從加密的數據中獲得敏感信息。

3 側信道(Side Channel)攻擊簡介

     信息論創始人香農(Shannon)對信息的定義是:“減少隨機不定性的東西。”加密的本質也是打破原有的確定性,使得明文數據變爲不可解讀密文亂碼。但是,側信道的出現,就是越過加密算法增加的隨機不定性,從其他的渠道獲取數據標籤,確定信息內容的。側信道最早的實踐是通過採集加密電子設備在運行過程中的時間消耗、功率消耗或者電磁輻射消耗等邊緣信息的差異性進行攻擊的手段。而隨着研究的深入,也逐漸從加密設備延伸到計算機內部CPU、內存等之間的信息傳遞等方面,並在Web應用交互信息傳遞越來越頻繁時,延伸到了網絡加密數據流的破解方面。

4側信道攻擊對加密Web應用的威脅

  4.1基本原理

     雖然像3中所介紹的一樣,側信道攻擊對數據加密甚至加密Web流量的威脅早就被納入了信息安全研究的範疇之中了,但是直到2010年,美國印第安納大學王曉峯教授等人的研究發現側信道攻擊對Web應用的威脅是與生俱來的問題。

     首先思考一下Web應用的特點,一個Web服務通常在一個客戶端(Client)和一個服務器端(Server)之間進行,他們之前的請求與應答信息一般是通過互聯網進行的,這就會把他們之間的交互數據暴漏給了攻擊者。而通過這些數據,攻擊者就能夠推斷出他們的狀態轉變以及觸發這些轉換的用戶數據。更糟糕的是,在1中提到的Web2.0的發展使得Web應用的交互性能越來越好,尤其像Ajax這類編程技術的出現,能夠讓用戶甚至在文本框中輸入一個字母或者從一個選項列表中選擇一個選項之後,就從服務器查詢做出一個應答,而這些應答信息的熵一般很低,因此很容易通過枚舉與對比猜測出用戶的輸入請求。

  4.2具體實例:一個真實的在線醫療系統

     在線醫療是一個很私人的信息服務系統,它由信譽最好的企業研發,並且在數據傳輸的過程中採用了HTTPS協議對用戶的信息進行了加密傳輸。一旦登陸,用戶可以建立自己的健康檔案,包括症狀、用藥、療程等內容,甚至還可以尋找醫生。在王曉峯教授等人的研究中發現,入侵者可以完全可以推斷出一個用戶服用的藥物,療程以及他尋找的醫生的類型。

 

     如上圖所示,是該醫療系統的添加病例的頁面。此時用戶所選擇的是症狀標籤,用戶可以在這個界面中鍵入自己的症狀,在鍵入的過程中,系統會幫助用戶彈出一個小的提示窗口。對於其他的用藥、療程等標籤,輸入的狀態也是一樣的。

     而這標籤欄的設計,就已經會泄露用戶當前填寫記錄的類型信息了,因爲點擊每個標籤,就會產生一個Web數據流向量:(1515±1 ->, 266±1 ->, <- 583±1, <- x),這裏x的值分別是4855,30154, 20567, 1773, 2757和2299,代表着症狀(Conditions),用藥(Medications),過敏(Allergies),療程(Procedures),測試結果(Test Result)和免疫接種(Immunizations)(其中±代表着不同用戶操作時產生的流量大小的差異)。

     當用戶鍵入信息時,提示列表就會在輸入框的下面出現。這個輸入框大約有十條記錄,會對鍵入的內容及時的更新。如上圖所示的提示列表是鍵入“ac”後的結果。可怕的是,這個自動提示會引發對用戶信息的災難性的泄露,因爲攻擊者可以通過匹配提示信息響應包的大小推斷出用戶輸入的內容。更明確的,每個擊鍵都會產生如下的Web數據流向量:(253±1 ->,<- 581,<- x),x能夠精確地指示出提示列表的大小,並且對於所有的用戶來說都是一樣的。

     王曉峯教授等隨後收集了在症狀記錄填寫時,英文中的所有26個字母在作爲第一個字母之後的x值,在[273,519]之間。除了字母“h”和“m”對應的x值相同外,其他的均不相同。但是隨後他們證實了,當輸入的字母增加時,就可以消除類似上面“h”和“m”的歧義,進而推測出用戶的輸入,也就獲得到用戶十分敏感的醫療隱私數據了。

 4.3 問題的普遍性

     除了4.2中介紹的在線醫療系統之外,王曉峯教授等的研究還證實了美國的幾家知名的在線稅務系統、投資系統以及Google、Yahoo、Bing等知名的搜索引擎系統也都存在着同樣的問題。而且除了根據數據包的大小標籤外,還可以採用時間等標籤作爲信息識別的屬性。

5. 防範方法

     針對4.2樣例中根據數據包大小不同的攻擊手段,最簡單有效地手段就是對應答的數據包進行填充處理,可以參考兩種填充的思想。一種是將數據包填充到最接近的Det大小的整數倍,另一種方法是填充增加(0,Det)大小。但是這樣的填充,還是可以根據接收到的數據包的大小推斷出輸入內容的集合,當差異度增大時或許依舊可以推斷出用戶輸入的內容。更加有效安全的做法,就是根據具體的Web應用的特點分析可能造成的側信道攻擊的潛在威脅加以防範了。

6. 參考文獻

(1)吳家順,俞研,2013 “Website指紋識別攻擊與防護技術研究”.

(2)S. Chen, R. Wang, X. Wang and K. Zhang,2010 “Side-Channel Leaks in Web Applications: a Reality Today, a ChallengeTomorrow”.

(3)K. Zhang, Z. Li, R. Wang, X. Wang and S.Chen, 2010 “Sidebuster: Automated Detection and Quantification of Side-ChannelLeaks in Web Application Development”. 

(4)OWASP,“OWASP Top10 -2013,The Ten Most Critical Web Application SecurityRisks”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章