隱通道
隱通道
5151 51
目錄
隱通道的定義
安全??和安全機構從不同角度給出了關於隱通道的多種定義方式,但其實質含義是相同的,列出其中最主要的幾種定義方式:
B.W.Lampson給出的
定義一:隱通道是指違背設計者的原意和初衷,被用來通信的通道。
TCSEC的定義
定義二:隱通道是一個通信通道,它使得一個進程能以違反系統安全策略的方式違背信息。
NCSCC(美國國家計算機安全中心)的定義
定義三:給定一個非自主安全策略模型M和它在一個操作系統中的實現I(M),I(M)中的兩個主體I(si)和I(sj)之間的通信是隱蔽的,當且僅當模型M中相應的兩個主體si和sj之間的通信是非法的。
以上這些定義說明:
1. 隱通道是一個可以進行信息傳送的通道,但它不是系統設計者設計用業傳送信息的通道。
2. 由於它並非設計者用來傳送信息的通道,因此系統安全策略(主要指非自主性的安全策略),沒有對這種通道實施控制。
3. 由於沒有安全控制,因此使得進程之間可以利用這些通道以違反安全策略的方式傳遞信息。
如果一個系統未實施強制訪問控制,那麼任意兩個用戶(只要他們願意)都可以合法地傳送信息,不需要通過隱蔽通道來秘密地進行傳送,因此存在隱通道的系統實際上是採取了一定安全措施,特別是強制訪問控制的系統。當用戶傳送信息的行為或傳送的信息不能公開是,隱通道才有意義。
總之,隱通道是一種通信通道,但它不是系統設計者設計的打算用來通信的通道,因而它能繞過系統強制安全機制的檢查,使得進程能以違反系統安全策略的方式傳遞信息,從而對計算機系統的安全造成很大的威脅。
因此對於一個給定的系統判斷隱通道對系統安全的危害,採取一些相應的措施減少隱通道所帶來的危害,這是對計算機系統負有安全責任的管理者或開發者必不可少的工作。
隱通道的研究中首先遇到一個問題是隱通道的識別,如何搜索系統中存在的隱通道。
①最簡單的隱通道的識別法是比照其它系統(例如其它操作系統)已有的典型的隱通道來分析目標操作系統的隱通道。但是,這種分析方法不能發現所有可能的隱通道,也不能發現目標系統特有的隱通道。
②要全面分析隱通道,必須分析系統的形式化的說明書和源代碼。但分析源代碼的工作量很大,國外已經開發了一些自動化工具,對形式化的說明書或源代碼進行分析以識別隱通道。但我們目前無法拿到。
隱通道舉例
例1:最早被發現的也是最經典的一個隱通道是磁碟移臂隱通道,這個隱通道是1977年在KVM/370系統中發現的。
假定系統中有H和L兩個進程,H的安全級高於L的安全級。H中隱藏有特洛依木馬試圖泄露信息給窺探者L,但是按照強制訪問控制的策略,L無法訪問到H的信息,因此H不敢直接傳送信息給L,並且也擔心審計的監督,於是H和L尋求利用系統的安全漏洞,採用表面上合法的手段泄露信息。
L開闢一個屬於自己的文件目錄,H合法地具有了讀這個目錄的權力,假定磁碟上從51磁軌到第59磁軌屬於這個目錄,H和L按以下約定進行操作:
1. L請求讀磁軌55(此請求完成後,釋放CPU);
2. H請求讀磁軌53(送“0”)或讀磁軌57(送“1”)(請求完成後,立即釋放CPU);
3. L同時請求讀磁軌51和磁軌59,並觀察這兩個請求完成的先後次序,以確定H發出的信息,若訪問磁軌51先完成,則L確認收到“0”,反之,L確認收到“1”。
重複以上操作,就可以在H和L之間傳送連續的比特流。(當然還要採取一定的同步措施)
H讀磁軌57,
則L讀磁軌59先完成
51
(53)
555
57
599
傳1
51
53
555
(57)
599
傳0
H讀磁軌53,
則L讀磁軌51先完成
造成這個隱通道的原因是系統支持不同安全級的用戶共享資源(在本例中是共享磁碟空間)。造成這個隱通道的直接原因是KVM/370系統採用的讀寫優化策略——蒸發演演算法(電梯演演算法)。該演演算法保證優先讀/寫磁臂移動方向前方的磁軌。
然而這個策略滿足了一個條件,即提供了一個可以用來臨時存放信息的變數——磁臂的移動方向(磁臂向低端磁軌移動代表0,反之則代表1),且這個變數的狀態可以被高安全級的發方改變,並被低安全級的收方觀察到。
幾乎所有的操作系統都帶有控制磁臂移動的磁碟讀寫優化策略,這些策略往往都會產生一些可被隱通道利用的狀態變數。
1. 利用共享的系統資源的狀態可產生隱通道??
例2.CPU是一種可以利用的系統資源,可由多個用戶共享,假設有H和L兩個進程,H的安全級高於L,H里含有特洛依木馬S,企圖將信息傳遞給L。它們約定一系列間隔均勻的時間點t1,t1,t1,…(間隔時間至少允許兩次CPU調度)。
L在每個時間點都請求使用CPU,而H在每個時間點,若要發送0,則不請求使用CPU;若要發送1,則請求使用CPU(假設H的優先順序高於L)。於是,在每個時間點,L若能立即獲得CPU的使用權,則確認收到0,若要等待,則確認收到1,這個隱通道被稱為“時間 S(H)發送者
L發送者
××
××
××
××
××
××
1
1
t1
t2
t3
t4
t5
……
……
……
片間隔時間隱通道”,其過程如下圖所示:
例3 印表機聯接隱通道
設s和r分別是特洛依木馬和窺視者,s的安全級高於r。
每當s要傳送“0”時,檢查自己是否已聯接到印表機,不聯接印表機,釋放聯接。
每當s要傳送“1”時,也檢查自己是否已聯接印表機,聯接印表機。
於是,r每當試圖聯接印表機,若他能聯接,則確認收到“0”;否則,確認收到“1”。
當然,s和r要經過適當的同步處理(如r接收到“1”后,要立即釋放印表機),便可以在s和r之間傳送連續的比特流。
例2和例3的共同特點是利用了系統中可被共享但在某一時刻只能被獨佔的系統資源的使用狀態進行信息的傳送。正像有些定義所指出的:
定義四 隱通道是指把描述資源的狀態存儲在變數里,並通過這些變數來傳送信息的通道。
2. 通過判斷客體是否存在也可產生隱通道
例4 目錄結構隱通道
在Red Hat linux系統中,系統對文件的許可權控制分為三類:讀、寫、執行權,目錄也是文件。對目錄來說,讀意味著用戶能夠讀目錄列表,寫意味著用戶能夠在這個目錄下建立或刪除文件,執行則意味著允許用戶從該目錄的父目錄切換到該目錄下。只有當一個目錄下的內容為空時,才可以將其刪除。
假設系統中當前有用戶H、L,H用戶安全高於L,H用戶建了一個目錄D,L被授權對D有寫和執行權。
L已通過某種手段將特洛伊木馬程序S植入用戶H的程序中,該特洛依木馬企圖將從目錄D下獲得的敏感數據泄露給L,其操作過程如下:
⑴發送方S若要傳0,則在目錄D下建一目錄D1;若要傳1,則刪除目錄D1。
⑵接收方L試圖建立目錄D1,若成功,則確認接收到1(R須立即刪除D1);若失敗,則確認接收到0。
D1
D
發送“0”,建立D1失敗
D
發送“0”,建立D1失敗
⑶經過適當的同步處理,轉入⑴,傳送下一個比特。
3.利用系統的管理機制產生隱通道
例5 進程號隱通道
進程號(PID)是系統中標誌進程的唯一符號,在許多操作系統(如
3.利用系統的管理機制產生隱通道
例5 進程號隱通道
進程號(PID)是系統中標誌進程的唯一符號,在許多操作系統(如Red HatLinux)中採用連續遞增的方法來管理進程號,即新建的進程的進程號在上一個進程的進程號的基礎上加1,利用系統的這一管理機制也可產生隱通道,其操作過程如下:
①接收方建立一個子進程並立即結束它,記錄下它的進程號;
②發送方若發“0”,則什麼也不做,若發“1”則建一個子進程並立即結束它;
③接收方再建一個子進程並立即結束它,記錄下它的進程號,如果新的進程號與上一次得到的進程號相差1,則確認接收到“0”,如果新的進程號與上一次得的進程號相差2,則確認接收到“1”;
④做好同步工作,轉入2,傳送下一比特。
傳送過程見下一流程圖。
收 發 收 發 收 發 收 發 收
p1 p2 p3 p4 p5 p6 p7
傳送信息 1 0 1 0
例如:
其傳送過程用以下流程圖表示:
創建一個子進程p-1
發方擬發送信息
確認收到“0”
無操作
創建一個子進程pj
將pi與p1比較或
將當前pi與前一個pi-1比較
創建一個子進程pi
確認收到“1”
發送“0”
發送“1”
進程號相差1
進程號相差2
收方
發方
收方
例4、例5體現了隱通道如下的含義:
定義五 隱通道是指利用資源分配策略和資源管理方法的通道。對於隱通道應有如下幾點認識:
①隱通道的存在並不意味著系統的安全性一定很低,在一個沒有強制訪問控制的系統中,用戶之間沒有安全級的區別,任意兩個用戶之間都可以合法地傳送信息,任何信息都可以通過明的通道來實現。因此,存在隱通道的系統實際上是採取了一定安全措施的系統。
②隱通道的形成往往要依賴於系統中某些資源分配策略和資源管理方法的副作用,但這並不意味這些策略和方法是錯誤的,系統的性能和效率是系統設計者必須追求的重要目標。安全和效率以及性能之間的矛盾是客觀存在的,在它們之間要找到適當的平衡點,盡量在不影響效率和性能(至少少影響)的情形下,堵塞所有的安全漏洞。
③儘管隱通道的收、發方目的是非法的,但操作本身是合法的。
④隱通道存在的一個最主要的原因是不同安全級的用戶之間共享系統資源,因而系統中存在可被高安全級用戶修改並被低安全級用戶觀察到的狀態變數。
三、隱通道的分類
隱通道通常被分為存儲隱通道和時間隱通道。
存儲隱通道是指隱通道的兩通信進程,一個進程直接或間接地寫存儲單元,而另一個進程則直接或間接地讀此存儲單元觀察到寫的結果。
時間隱通道是指一個進程對系統性能產生的影響可以被另一個進程觀察到並且可以利用一個時間基準進行測量,或者說指利用事件的發生順序傳遞信息的通道。
例如,磁碟移臂隱通道可以看作是存儲隱通道,因為發送進程修改磁臂的方向,接收程序能夠觀察到其修改的結果。
印表機聯接隱通道也可以看作是存儲隱通道,發送進程使印表機處於“忙”或“空閑”狀態可以讓接收進程觀察到。
目錄結構隱通道也可看作存儲隱通道,發送進程創建或刪除目錄,接收進程能間接觀察到該目錄是否存在。
進程號隱通道也可看作是存儲隱通道,發送進程是否佔用了當前進程號,接收進程可間接觀察到。
以上這些例中都可以看作是一個狀態變數,發送進程對其進行寫,接收進程對其讀以觀察到前者寫的結果。
又例如,例2中關於CPU使用的隱通道可以看作是一個時間隱通道。因為發送進程H對CPU的使用情況可以被L觀察到,並且可以利用時鐘每隔一定的時間片進行測量。
時間隱通道強調需要有一個實時時鐘或間隔計時器或其它能測試時間的計時基準,它們使得接收進程能夠計算兩個相繼事件之間的相對時間量,而存儲隱通道卻不需要時鐘或計時器。
消除時間隱通道的一種最直接的方法是撤銷進程對時鐘的訪問權,在沒有時間參考基準時,時間隱通道就無法工作。但是,這並不能完全消除時間隱通道。即使接收進程不能直接訪問時鐘,它還是有辦法能夠判斷出時間間隔來。例如,如果一個用戶(入侵者)在終端上以每秒十個字元的速度輸入字元串,那進程就可以得到以0.1秒為單位的時間計數器,每收到一個字元就說明過去了0.1秒。在多處理器系統中,一個進程可以利用循環程序的循環次數來為另一個進程確定時間間隔。
對於隱通道的這種分類方法,國外和國內均有文章提出了異議,其主要看法是認為有些隱通道既然可以是存儲隱通道,也可以是時間隱通道,因此建議將對存儲變數的讀/寫和按時間進行測量看作是隱通道的屬性。一個隱通道可以同時具有這兩種屬性。事實上,從前面的定義四可以看出,描述資源狀態的存儲變數是隱通道的組成要素,不論是存儲隱通道還是時間隱通道都要利用資源狀態變數來編碼信息。
在此基礎上,各自提出了一些分類方法,如:國外有人提出“直接”隱通道與“進程”隱通道。“直接”——指隱通道泄露的信息,直接表現在輸出設備上;“進程”——信息的接收者是進程。
如,國內有人提出“操作請求拒絕型”與“操作請求延遲性”。前者——接收進程的請求被拒絕(兩種狀態:拒絕、執行),後者——接收進程的請求被延遲(根據延遲的時間,具有時間隱通道的特徵)。
對此不再作詳細討論,下面舉例說明存儲隱通道也具有時間隱通道的特性。
例如,對於前面的磁碟移臂隱通道對其實現過程稍作改進:
1.L請求讀55磁軌;
2.H請求讀51磁軌(傳0)或請求讀59磁軌(傳1);
3.L請求讀52磁軌,並測定其完成時間t,若等待時間小於某個值(該值是事先測定),則確認收到0,否則確認收到1。
51 52 55 59
如圖所示:
顯然磁臂從59 磁軌移動到52磁軌比從51磁軌移動到52磁軌所花的時間要多幾倍。
上述例子仍是根據磁臂移動的方向是由低向變,還是由高向低來確認接收到0或1,但它必須要依靠一個時鐘或某上計時基準,而這正是時間隱通道的最重要的特徵。
又例如,對於前述磁碟移臂隱通道,其操作過程不作任何修改,僅通過??
例如,將目錄結構隱通道修改如下:
S(發送者)
R(接收者)
失敗
D1
D1
失敗
1
1
……
……
……
t1 t1+?t
t2 t2+?t
t3 t3+?t
t4 t4+?t
t5
D1
D1
則它也成為了一個時間隱通道,因為接收方必須靠一個時鐘來測量事件的結果。
以上舉例說明一般存儲隱通道可以轉化為時間隱通道,那麼時間隱通道能否轉化為存儲隱通道呢?如果能互相轉化,則我們只要對一種類型進行研究和分析,簡化了我們的研究。
從目前來看,人們認為對時間隱通道的搜索、分析和限制更困難,若兩者能相互轉化,則可以將時間隱通道的研究轉化對存儲隱通道的研究。
四、隱通道的帶寬
是指信息通過隱通道傳輸的速度,用比特/秒來衡量,隱通道帶寬的計算是隱通道分析工作的主要內容之一。因為對付隱通帶的方法,首先是消除隱通道,當無法完全消除隱通道時,則必須限制隱通道的帶寬,因為帶寬越高,單位時間內泄露的信息量就越多,對系統的安全性威脅就越大。一般地,通過計算隱通道的最大寬度來最大限度地衡量隱通道的威脅。
根據TESEC的建議,隱通道的帶寬達到1比特/秒就要引起注意;帶寬達到100比特/秒以上,就必須採取相應的處理措施。
影響隱通道的帶寬有以下幾種因素:
①噪音
噪音是指在一個多用戶系統中,除了隱通道的收/發進程之外,還有許多其它進程在運行,因為它們與收/發進程競爭各種系統資源,因此可顯著地降低隱通道的效率,因而降低隱通道的帶寬。
噪音依賴於多用戶系統的調度策略和系統當時的負載,因此這種影響是隨機的,無法確定的。有文獻指出,有時候這些干擾進程可能降低隱通道帶寬的75%(這種影響的差別是很大的)。
基於以上這一點,我們可能通過在系統中增加噪間進程將隱通道的帶寬降低到某一個安全閾值之內。
②編碼
收/發雙方在傳輸信息時採用什麼方法編碼,往往可以改變隱通道的帶寬。
例如,當傳0和傳1所花的時間不同時,如,假設傳1花的時間比傳0花的時間長得多,那麼若用0010來代替111,可以減少信息中1 的個數,從而提高信息的傳輸率(具體編碼方法,要使得收方能識別,並還原成原來的信息,對此不作詳細討論),以獲得最大帶寬。
若傳0和傳1的時間很接近時,則編碼技術對帶寬無甚影響。
我們在分析隱通道的最大帶寬時,要分析該隱通道的特點,以估計敵手可能採取的編碼方法,以獲得其最大帶寬。
③隱通道實現過程中的諸多因素
一個系統中,可利用多個原語來實現同一隱通道,但這些原語的耗時可能大不相同,從而影響帶寬。
又如,在隱通道中每傳送一個比特都要在發送進程和接收進程之間切換一次系統控制權,切換所花去的時間長短對隱通帶的帶寬是有影響的。若當兩個進程試圖在它們之間轉換控制權時,控制權有可能被轉給了系統中等待運行的其它進程,因而造成了時間的延遲。
又如,發送者和接收者之間的同步也可能造成延遲而降低帶寬。
為了計算隱通道的最大帶寬,我們往往假設系統中只有收/發兩個進程。
④系統配置的影響
如:
.系統中硬體設備的速度(如硬碟、內存和CPU)
.系統中設備的容量(如內存大小、緩衝區大小等)
五、隱通道的防治
①搜索隱通道
對系統中是否存在,存在哪些隱通道應該清楚(國內做此工作較為困難)。
②消除隱通道
隱通道使用系統提供的正常功能,通過合法的操作來達到非法傳遞信息的目的,因此要清除隱通道有一定的難度。
如前所述,隱通道存在的一個重要原因是不同安全級的用戶之間共享系統資源(如磁碟、CPU、內存、印表機、進程號等),這使得高安全級用戶對系統資源的使用能被低安全級用戶觀察到。因此,消除隱通道的一個可能的方法是限制進程間的資源共享,特別是只在安全級相同的實體間共享資源,但這可能帶來某些資源閑置而大大降低使用效率的問題,需要尋求兩全齊美的方法或適當的折衷點
③限制帶寬
如果不能完全消除隱通道,則要想辦法限制其帶寬,將帶寬限制在允許的範圍內使其滿足安全的要求。
限制帶寬的方法如有意引入噪音,有意引入外部進程干擾收/發進程的工作,使之延時。
④審計
審計是阻止和嚇唬一切非法操作的有效手段。但對於未被發現的隱通道,審計是毫無作用的,因為隱通道的原語和操作本身都是合法的,並不違反安全規則,只有在確認了某個隱通道之後,才有可能有針對性地進行審計。
審計應記錄的信息:①被使用的隱通道;②發送者和接收者的身份;③傳送的信息。