162.保護和安全

保護和安全程序員

     

12.1  安 全 環 境

 

  因爲社會的複雜性和某些事物的不可預知性,使得計算機系統的環境每每是不安全的。爲此,必須對咱們的工做環境採起「保護」措施,使之變成爲一個「安全」環境。「保護」和「安全」是有不一樣含意的兩個術語。能夠把「保護」定義爲:對攻擊、入侵和損害系統等的行爲進行防護或監視。「安全」是對系統完整性和數據安全性的可信度的衡量。算法

12.1.1 實現「安全環境」的主要目標和麪臨的威脅

  1. 數據機密性(data secrecy)shell

  數據機密性是指將機密的數據置於保密狀態,僅容許被受權用戶訪問系統中的信息,以免數據暴露。更確切地說,系統必須保證用戶的數據,僅供被受權用戶閱讀,而不容許未經受權的用戶閱讀,以保證數據的保密性。數據庫

  2. 數據完整性(data integrity)數組

  完整性是指對數據或資源的可信賴程度,包括數據的完整性(信息內容)和來源的完整性(數據來源),一般用於表述防止不當或未經受權的修改。信息的來源可能會涉及信息的準確性和可信性,以及人們對此信息的信任程度,所以這種可信性也是系統正確運行的關鍵。此外,還必須能保持系統中數據的一致性。安全

  3. 系統可用性(system availability)服務器

  可用性是指能保證計算機中的資源供受權用戶隨時訪問,系統不會拒絕服務。更明確地說,受權用戶的正常請求能及時、正確、安全地獲得服務或響應。而攻擊者爲了達到使系統拒絕的目的,可能經過「修改」合法用戶名字的方法,將他變爲非法用戶,使系統拒絕向該合法用戶提供服務。此外,拒絕服務還可能由硬件故障引發,如磁盤故障、電源掉電等,也可能由軟件故障引發。網絡

12.1.2  系統安全的特徵

  1. 多面性數據結構

  在大型系統中一般存在着多個風險點,在這些風險點應從三方面採起措施加以防範:併發

  (1) 物理安全

  (2) 邏輯安全

  (3) 安全管理

  2. 動態性

  因爲信息技術不斷髮展和攻擊手段層出不窮,使系統的安全問題呈現出如下的動態性:

  (1) 信息的時效性。 

  (2) 攻擊手段的不斷翻新。

  3. 層次性

  大型系統的安全問題是一個至關複雜的問題,所以必需採用系統工程的方法解決。爲了簡化系統安全的複雜性,系統安全一般採用層次-模塊化結構方法:

  首先將系統安全問題劃分爲若干個安全主題(功能模塊),做爲最高層;而後再將其中每個安全主題功能模塊分紅若干個安全子功能模塊,做爲次高層;此後再進一步將一個安全子功能模塊分爲若干安全孫功能模塊,做爲第三層;其最低一層是一組最小可選擇的安全功能模塊,用多個層次的安全功能模塊來覆蓋整個系統安全的各個方面。

  4. 適度性

  當前幾乎全部的單位在實現系統安全工程時,都遵循了適度安全準則,即根據實際須要提供適度的安全目標加以實現。這是由於:

  (1) 因爲系統安全的多面性,使對安全問題的全面覆蓋基本上不可能實現;

  (2) 實現全覆蓋所需的成本也是難以使人接受的;

  (3) 因爲系統安全的動態性,即便當時實現了安全問題的全覆蓋,隨着計算機技術的迅速發展,企業規模的不斷擴大,必然很快就會出現新的問題。

12.1.3  計算機安全的分類

  1.  CC的由來

  對一個安全產品(系統)進行評估,是件十分複雜的事,須要有一個能被普遍接受的評估標準。

  2. 計算機安全的分類

  在「可信任計算機系統評價標準」中將計算機系統的安全程度劃分爲:D、C、B、A四類。共分爲D、C一、C二、B一、B二、B3和A1七個等級。

  (1)  類,

  (2)  1級。

  (3)  2級。

  (4)  1級。

  (5)  2級。

  (6)  3級。

  (7)  1級。

       

12.2  數據加密技術

 

12.2.1 數據加密原理

  加密是一種密寫科學,用於把系統中的數據(稱爲明文)轉換爲密文。使攻擊者即便截獲到被加密的數據,也沒法瞭解數據的內容,從而有效地保護了系統中信息的安全性。數據加密技術包括:數據加密、數據解密、數字簽名、簽名識別以及數字證實等。

  1. 數據加密模型

  早在幾千年前,人類就已經有了通訊保密的思想,並前後出現了易位法和置換法等加密方法。但直至進入20世紀60年代,因爲科學技術的發展,才使密碼學的研究進入了一個新的發展時期。計算機網絡的發展,尤爲是Internet普遍深刻的應用,又推進了數據加密技術的迅速發展。

 

圖12-1 數據加密模型

  2. 基本加密方法

  1) 易位法

  易位法是按照必定的規則,從新安排明文中的比特或字符的順序來造成密文,而字符自己保持不變。按易位單位的不一樣,又可分紅比特易位和字符易位兩種。

 

圖12-2 按字符易位加密算法

  2) 置換法

  置換法是按照必定的規則,用一個字符去置換(替代)另外一個字符來造成密文。最先由朱葉斯·凱撒(Julius caeser)提出的算法很是簡單,它是將字母a、b、c、…、x、y、z循環右移三位後,即利用d置換a,用e置換b等。凱撒算法的推廣是移動K位。單純移動K位的置換算法很容易被破譯,比較好的置換算法是進行映像。

 

圖12-3 26個字母的映像

12.2.2  對稱加密算法與非對稱加密算法

  1. 對稱加密算法

  在對稱加密算法中,在加密算法和解密算法之間存在着必定的相依關係,即加密和解密算法每每使用相同的密鑰;或者在知道了加密密鑰Ke後,就很容易推導出解密密鑰Kd。最有表明性的對稱加密算法是數據加密標準DES(Data Eneryption Standard)。ISO如今已將DES做爲數據加密標準。

  2. 非對稱加密算法

  非對稱加密算法的加密密鑰Ke和解密密鑰Kd不一樣,並且難以從Ke推導出Kd來,故而可將其中的一個密鑰公開而成爲公開密鑰,故該算法也可稱爲公開密鑰算法。每一個用戶保存一對密鑰,每一個人的公開密鑰都對外公開。假如某用戶要與另外一用戶通訊,他可用公開密鑰對數據進行加密,而收信者則用本身的私用密鑰進行解密。這樣就能夠保證信息不會外泄。

12.2.3 數字簽名和數字證實書

  1. 數字簽名

  在金融和商業等系統中,許多業務都要求在單據上簽名或加蓋印章,以證明其真實性,備往後查驗。在利用計算機網絡傳送報文時,可將公開密鑰法用於電子(數字)簽名,來代替傳統的簽名。而爲使數字簽名能代替傳統的簽名,必須知足下述三個條件:

  (1) 接收者可以覈實發送者對報文的簽名。

  (2) 發送者過後不能抵賴其對報文的簽名。

  (3) 接收者沒法僞造對報文的簽名。

  1) 簡單數字簽名

  在這種數字簽名方式中,發送者A可以使用私用密鑰Kda對明文P進行加密,造成DKda(P)後傳送給接收者B。B可利用A的公開密鑰Kea對DKda(P)進行解密,獲得EKea(DKda(P))=P,如圖12-4(a)所示。

 

圖12-4 數字簽名示意圖

  2) 保密數字簽名

  爲了實如今發送者A和接收者B之間的保密數字簽名,要求A和B都具備密鑰,再按照圖12-4(b)所示的方法進行加密和解密:

  (1) 發送者A可用本身的私用密鑰Kda對明文P加密,獲得密文DKda(P)。

  (2)  再用B的公開密鑰Keb對DKda(P)進行加密,獲得EKeb(DKda(P))後送B。

  (3)  收到後,先用私用密鑰Kdb進行解密,即DKdb(EKeb(DKda(P)))=DKda(P)。

(4)  再用A的公開密鑰Kea對DKda(P)進行解密,獲得EKea(DKda(P))  。

  2. 數字證實書(Certificate)

  雖然能夠利用公開密鑰方法進行數字簽名,但事實上又沒法證實公開密鑰的持有者是合法的持有者。爲此,必須有一個你們都信得過的認證機構CA(Certification Authority),由該機構爲公開密鑰發放一份公開密鑰證實書,該公開密鑰證實書又稱爲數字證實書,用於證實通訊請求者的身份。

     

12.3 用 戶 驗 證

 

  驗證又稱爲識別或認證。當用戶要登陸一臺多用戶計算機時,操做系統將對該用戶進行驗證(Authentication),這一過程稱爲用戶驗證。用戶驗證的目的在於肯定被驗證的對象(包括人和事)是否真實,即確認「你是不是你所聲稱的你」,以防止入侵者進行假冒、篡改等。一般利用驗證技術做爲保障網絡安全的第一道防線。

12.3.1 使用口令驗證  

  1. 口令

  用戶要上機時系統首先要求用戶輸入用戶名。登陸程序利用該名字去查找一張用戶註冊表,若從中找到匹配的用戶名後,再要求用戶輸入口令,若是輸入的口令也與註冊表中的口令一致,系統便認爲該用戶是合法用戶,容許該用戶進入系統;不然將拒絕該用戶登陸。

  2. 提升口令安全性的方法

  攻擊者可經過多種方式來獲取用戶登陸名和口令,其中最經常使用的方式是直接猜出用戶所使用的口令。爲提升口令的安全性,必須能防止攻擊者猜出口令。爲此,口令機制一般應知足如下幾點要求:

  (1) 口令應適當長。

  (2) 應採用多種字符。

  (3) 自動斷開鏈接。

  (4) 回送顯示的安全性。

  (5) 記錄和報告。

  3. 一次性口令(One time Password)

  爲了防止口令外泄,用戶應當常常改變口令,一種極端的狀況是採用一次性口令機制,即口令被使用一次後就換另外一個口令。在採用該機制時,用戶必須給系統提供一張口令表,其中記錄有其使用的口令序列。系統爲該表設置一指針,用於指示下次用戶登陸時所應使用的口令。

  4. 口令文件

  一般在口令機制中都配置有一份口令文件,用於保存合法用戶的口令和與用戶的特權。該文件的安全性相當重要,一旦攻擊者訪問了該文件,將使整個計算機系統無安全性可言。保證口令文件安全性最有效的方法是利用加密技術,其中一個行之有效的方法是選擇一個函數來對口令進行加密。該函數f(x)具備這樣的特性:在給定了x值後,很容易算出f(x);然而,若是給定了f(x)值,卻不能算出x的值。利用f(x)函數去加密全部的口令,再將加密後的口令存入口令文件中。

 

圖12-5 對加密口令的驗證方法

  5. 挑戰—響應驗證

  在該方法中,由用戶本身選擇一個算法,算法能夠很簡單也可較複雜,如X2,並將該算法告知服務器。每當用戶登陸時,服務器就給用戶發來一個隨機數,如12,用戶收到後,按所選算法對該數據進行平方運算,獲得144,並用它做爲口令。服務器再將所收到的口令與本身計算(利用X2算法)的結果進行比較,如相同便容許用戶上機,不然拒絕用戶登陸。因爲該方法所使用的口令不是一個固定數據,而是基於服務器隨機產生的數再通過計算獲得的,所以令攻擊難於猜想。若是再頻繁地改變算法就更爲安全。

12.3.2 基於物理標誌的驗證技術  

  1. 基於磁卡的驗證技術

  目前普遍使用的銀行現金卡、公交卡等,都廣泛採用磁卡。這是一塊其大小和名片相仿的塑料卡,在其上貼有含若干條磁道的磁條。通常在磁條上有三條磁道,每條磁道可用來記錄不一樣數量的數據。若是在磁條上記錄了用戶名、用戶密碼、帳號和金額,這就是銀行卡;而若是在磁條上記錄的是有關用戶的信息,該卡即可做爲識別用戶身份的物理標誌。

  2. 基於IC卡的驗證技術

  在外觀上IC卡與磁卡並沒有明顯差別,但在IC卡中可裝入CPU和存儲器芯片,使該卡具備必定的智能,故又稱智能卡。IC卡中的CPU用於對內部數據的訪問和與外部數據進行交換,還可用加密算法對數據進行處理,這使IC卡比磁卡具備更強的防僞性和保密性,於是IC卡正在逐步取代磁卡。根據卡中裝入芯片的不一樣,可把IC卡分爲如下三種類型:

  (1) 存儲器卡。

  (2) 微處理器卡。

  (3) 密碼卡。

12.3.3 生物識別驗證技術

  1. 經常使用於身份識別的生理標誌

  被選用的生理標誌應具備這樣三個條件:① 足夠的可變性,系統可根據它來區別成千上萬的不一樣用戶;② 應保持穩定,不會常常發生變化;③ 不易被假裝。

  下面介紹幾種經常使用的生理標誌。

  (1) 指紋。

  (2) 眼紋。

  (3) 聲音。

  (4) 人臉。

  2. 生物識別系統的組成

  1) 對生物識別系統的要求

  要設計出一個很是實用的生物識別系統必須知足三方面的要求:

  (1) 性能需求。

  (2) 易於被用戶接受。

  (3) 成本合理。

  2) 生物識別系統的組成

  生物識別系統一般是由以下三部分組成的:

  (1) 生物特徵採集器。

  (2) 註冊部分。

  (3) 識別部分。

  3. 指紋識別系統

  20世紀80年代指紋自動識別系統雖已在許多國家使用,但體積較大。直至90年代中期,隨着VLSI的迅速發展,才使指紋識別系統小型化,使該技術進入了普遍應用的階段。

  (1) 指紋採集傳感器。

  (2) 指紋識別系統。

    

12.4  來自系統內部的攻擊 

 

  攻擊者對計算機系統進行攻擊的方法有多種,可將之分爲兩大類:內部攻擊和外部攻擊。內部攻擊通常是指攻擊來自系統內部。它又可進一步分爲兩類:

  (1) 以合法用戶身份直接進行攻擊。

  (2) 經過代理功能進行間接攻擊。

12.4.1  早期常採用的攻擊方式

  咱們先介紹經常使用的內部攻擊方式。在設計操做系統時必須瞭解這些攻擊方式,並採起必要的防範措施。

  (1) 竊取還沒有清除的有用信息。

  (2) 經過非法的系統調用攪亂系統。

  (3) 使系統本身封殺校驗口令程序。

  (4) 嘗試許多在明文規定中不容許作的操做。

  (5) 在OS中增添陷阱門。

  (6) 騙取口令。

12.4.2  邏輯炸彈和陷阱門  

  近年來更流行利用惡意軟件進行攻擊的攻擊方式。所謂惡意軟件(malware),是指攻擊者專門編制的一種程序,用來形成破壞。它們一般假裝成合法軟件,或隱藏在合法軟件中,令人們難以發現。有些惡意軟件還能夠經過各類方式傳播到其它計算機中。依據惡意軟件是否能獨立運行可將它分爲兩類:

  (1) 獨立運行類

  (2) 寄生類

  1. 邏輯炸彈(logic bomb)

  1) 邏輯炸彈實例

  邏輯炸彈是較早出現的一種惡意軟件,它最初出自於某公司的程序員,是爲了應對他可能被忽然解僱,而預先祕密放入OS中的一個破壞程序(邏輯炸彈)。只要程序員天天輸入口令,該程序就不會發做。但若是程序員在事前未被警告,就忽然被解僱時,在次日(或第二週)因爲得不到口令,邏輯炸彈就會引爆——執行一段帶破壞性的程序,這段程序一般會使正常運行的程序中斷,隨機刪除文件,或破壞硬盤上的全部文件,甚至於引起系統崩潰。

  2) 邏輯炸彈爆炸的條件

  每當所寄生的應用程序運行時,就會運行邏輯炸彈程序,它會檢查所設置的爆炸條件是否知足,如知足就引起爆炸;不然繼續等待。觸發邏輯炸彈爆炸的條件有不少,較經常使用的有:

  (1) 時間觸發

  (2) 事件觸發

  (3) 計數器觸發

  2. 陷阱門(trap door)

  1) 陷阱門的基本概念

  一般,當程序員在開發一個程序時,都要經過一個驗證過程。爲了方便對程序的調試,程序員但願得到特殊的權限,以免必需的驗證。陷阱門其實就是一段代碼,是進入一個程序的隱蔽入口點。有此陷阱門,程序員能夠不通過安全檢查便可對程序進行訪問,也就是說,程序員經過陷阱門可跳過正常的驗證過程。長期以來,程序員一直利用陷阱門來調試程序並未出現什麼問題。但若是被懷有惡意的人用於未受權的訪問,陷阱門便構成了對系統安全的嚴重威脅。

  2) 陷阱門實例

  咱們經過一個簡單的例子來講明陷阱門。正常的登陸程序代碼如圖12-6(a)所示,該程序最後兩句的含意是,僅當輸入的用戶名和口令都正確時,纔算用戶登陸成功。但若是咱們將該程序的最後一條語句稍做修改,獲得如圖12-6(b)所示的登陸程序代碼,此時最後兩句的含意已改變爲:當輸入的用戶名和口令都正確時,或者使用登陸名爲「zzzzz」時,不管用什麼口令,都能成功登陸上機。

 

圖12-6  陷阱門實例

12.4.3  特洛伊木馬和登陸欺騙 

  1. 特洛伊木馬(trojan horses)的基本概念

  特洛伊木馬是指一種惡意軟件,它是一個嵌入到有用程序中的、隱蔽的、危害安全的程序。當該程序執行時會引起隱蔽代碼執行,產生難以預期的後果。

  2. 特洛伊木馬實例

  編寫特洛伊木馬程序的人,將其隱藏在一個新遊戲程序中,並將該遊戲程序送給某計算機系統的系統操做員。操做員在玩新遊戲程序時,前臺確實是在玩遊戲,但隱藏在後臺運行的特洛伊木馬程序卻將系統中的口令文件複製到該駭客的文件中。雖然口令文件是系統中很是保密的文件,但操做員在遊戲時是在高特權模式下運行的,特洛伊木馬就繼承了系統操做員的高特權,所以它就可以訪問口令文件。

  3. 登陸欺騙(login spoofing)

  咱們以UNIX系統爲例來講明登陸欺騙。攻擊者爲了進行登陸欺騙,寫了一個欺騙登陸程序,該程序一樣會在屏幕顯示Login: ,用於欺騙其餘用戶進行登陸。當有一用戶輸入登陸名後,欺騙登陸程序也要求它輸入口令。而後卻把剛輸入的登陸名和口令寫入一份事先準備好的文件中,併發出信號以請求結束shell程序,因而欺騙登陸程序退出登陸,同時也去觸發真正的登陸程序。在屏幕上又顯示出「Login: ,此時真正的登陸程序開始工做。對用戶而言,他天然覺得是本身輸入發生了錯誤,系統要求從新輸入。

12.4.4  緩衝區溢出  

  因爲C語言編譯器存在着某些漏洞,如它對數組不進行邊界檢查。例以下面的代碼是不合法的,數組範圍是1024,而所包含的數字卻有12 00個。然而在編譯時卻未對此檢查,攻擊者能夠利用此漏洞來進行攻擊。

    int i;

    char C[1024];

    i=12000;

    c[i]=0;

 

圖12-7  緩衝區溢出先後的狀況

     

12.5  來自系統外部的攻擊

 

12.5.1  病毒、蠕蟲和移動代碼 

  當前最嚴重的外來威脅是病毒、蠕蟲和移動代碼等。其中尤爲是病毒和蠕蟲,每天都在威脅着系統的安全,以至在廣播、電視中,都不得不常常發佈病毒和蠕蟲的警告消息。

  1. 病毒(viruses)

  計算機病毒是一段程序,它能把本身附加在其它程序之中,並不斷地自我複製,而後去感染其它程序,它能由被感染的程序和系統傳播出去。通常的病毒程序並不長,用C語言編寫的病毒程序一般不超過一頁。稱這段程序爲病毒,是由於它很是像生物學上的病毒:它能自我生成成千上萬的與原始病毒相同的複製品,並將它們傳播到各處。計算機病毒也可在系統中複製出千千萬萬個與它自身同樣的病毒,並把它傳播到各個系統中去。

  2. 蠕蟲(worms)

  蠕蟲與病毒類似,也能進行自我複製,並可傳染給其它程序,給系統帶來有害的影響,都屬於惡意軟件。但它與病毒有所區別,其一是:蠕蟲自己是一個完整的程序,能做爲一個獨立的進程運行,於是它不須要寄生在其它程序上。再者,蠕蟲的傳播性沒有病毒的強。由於蠕蟲必須先找到OS或其它軟件的缺陷,做爲「易於攻破的薄弱環節」,而後才能藉助於它們進行傳播,若是該缺陷已被修復,蠕蟲天然會因「無從下手」而沒法傳播。

  3. 移動代碼  

  1) 移動代碼簡述

  在因特網上,若是能在遠程計算機上執行代碼,便認爲系統具備遠程執行功能。若是一個程序在運行時,能在不一樣機器之間來回遷移,那麼該程序就被稱爲移動代碼。

  2) 移動代碼的安全運行

  若是在一個用戶程序中包含了移動代碼,當爲該用戶程序創建進程後,該移動代碼將佔用該進程的內存空間,並做爲合法用戶的一部分運行,擁有用戶的訪問權限。

  3) 防範移動代碼的方法——沙盒法

  沙盒法的基本思想是採用隔離方法。具體作法是把虛擬地址空間,分爲若干個相同大小的區域,每一個區域稱爲一個沙盒。

  4) 防範移動代碼的方法——解釋法

  解釋法是對移動代碼的運行採起解釋執行方式。解釋執行的好處是,每一條語句在執行前都經解釋器檢查,特別是對移動代碼所發出的系統調用進行檢查。若移動代碼是可信的(來自本地硬盤),就按正常狀況進行處理;不然(如來自因特網),就將它放入沙盒中來限制它的運行。

12.5.2  計算機病毒特徵和類型

  1. 計算機病毒的特徵  

  計算機病毒與通常的程序相比,顯現出如下四個明顯的特徵:

  (1) 寄生性。

  (2) 傳染性。

  (3) 隱蔽性。

  (4) 破壞性。

  2. 計算機病毒的類型 

  (1) 文件型病毒。

  (2) 內存駐留病毒。

  (3) 引導扇區病毒。

  (4) 宏病毒。

  (5) 電子郵件病毒。

 

圖12-8  病毒附加在文件中的狀況

12.5.3  病毒的隱藏方式 

  1. 假裝

  當病毒附加到正常文件後會使被感染文件發生變化,爲了逃避檢測,病毒將把本身假裝起來,使被感染過的文件與原有文件同樣。常見的假裝方式有兩種:

  (1) 經過壓縮法假裝。

  (2) 經過修改日期或時間來假裝。

 

圖12-9  病毒假裝示意圖

  2. 隱藏

  爲了逃避反病毒軟件的檢測,病毒天然應隱藏在一個不易檢查到的地方。當前常採用的隱藏方法有如下幾種:

  (1) 隱藏於目錄和註冊表空間。

  (2) 隱藏於程序的頁內零頭裏。

  (3) 更改用於磁盤分配的數據結構。

  (4) 更改壞扇區列表。

  3. 多形態

  多形態病毒在進行病毒複製時採用了較爲複雜的技術,使所產生的病毒在功能上是相同的,但形態萬千,病毒的形態少者數十種,多則成千上萬,而後將這些病毒附加到其它還沒有感染的文件上。經常使用的產生多態病毒的方法有:

  (1) 插入多餘的指令。

  (2) 對病毒程序進行加密。 

12.5.4  病毒的預防和檢測

  1. 病毒的預防

  用戶可用哪些方法來預防病毒呢? 下面列出若干方法和建議供參考。

  (1) 對於重要的軟件和數據,應當按期備份到外部存儲介質上,這是確保數據不丟失的最佳方法,當發現病毒後可用該備份來取代被感染的文件。

  (2) 使用具備高安全性的OS,這樣的OS具備許多安全保護措施來保障系統的安全,使病毒不能感染到系統代碼。

  (3) 使用正版軟件,應當知道,從網上Web站點下載軟件的作法是十分冒險的,即便是必須下載的,也要使用最新的防病毒軟件,防範病毒的入侵。

  (4) 購買性能優良的反病毒軟件,按照規定要求使用,並按期升級。

  (5) 對於來歷不明的電子郵件不要輕易打開。

  (6) 要按期檢查硬盤及U盤,用反病毒軟件來清除其中的病毒。

  2. 基於病毒數據庫的病毒檢測方法

  經過被感染文件的長度或者日期和時間的改變來發現病毒的方法在早期還可奏效,而如今這種檢測方法雖然很難再有效,但假裝病毒仍是難於逃避基於病毒數據庫的病毒檢測方法的檢查,該方法描述以下:

  (1) 創建病毒數據庫。

  (2) 掃描硬盤上的可執行文件。

  3. 完整性檢測方法

  完整性檢測程序首先掃描硬盤,檢查是否有病毒,當確信硬盤「乾淨」時,才正式工做。這種方法首先計算每一個文件的檢查和,而後再計算目錄中全部相關文件的檢查和,將全部檢查和寫入一個檢查和文件中。在檢測病毒時,完整性檢測程序將從新計算全部文件的檢查和,並分別與原來文件的檢查和進行比較,若不匹配,就代表該文件已被感染上病毒。當病毒製造者瞭解該方法後,它也能夠計算已感染病毒文件的檢查和,用它來代替檢查和文件中的正常值。

   

12.6  可信系統(Trusted System)

 

12.6.1  訪問矩陣模型和信息流控制模型  

  創建可信系統的最佳途徑是保持系統的簡單性。然而系統設計者認爲,用戶老是但願系統具備強大的功能和優良的性能。這樣,導致所設計出的OS存在許多安全隱患。有些組織特別是軍事部門,他們由於更重視系統的安全性,決心要創建一個可信系統,爲此應在OS核心中構建一個安全模型,模型要很是簡單以確保模型的安全性。

  1. 安全策略

  對系統安全而言,安全策略是根據系統對安全的需求所定義的一組規則及相應的描述。該規則決定了對系統中數據進行保護的規則和規定每個用戶權限的規則,如哪些數據只容許系統管理員閱讀和修改;又如哪些數據只容許財務部門人員訪問等。安全機制是指用於執行安全策略時所必須遵循的規定和方法。 

  2. 安全模型

  安全模型用於精確描述系統的安全需求和策略。所以安全模型首先應當是精確的、同時也應當是簡單和容易理解的,並且不涉及安全功能的具體實現細節。安全模型能精確地描述系統功能,這樣就能幫助人們儘量地堵住全部的安全漏洞。一般在OS設計時,系統的功能描述用於指導系統功能的實現,而安全模型則指導與系統安全有關的功能實現。如今已有幾種安全模型,其中比較實用的是訪問矩陣模型和信息流控制模型。

  3. 訪問矩陣模型

  訪問矩陣模型也稱爲保護矩陣,系統中的每個主體(用戶)都擁有矩陣中的一行,每個客體都擁有矩陣中的一列。客體能夠是程序、文件或設備。矩陣中的交叉項用於表示某主體對某客體的存取權限集。保護矩陣決定在任何域中的進程能夠執行的操做,它是由系統強制執行的,而不是被管理者受權的操做。

  4. 信息流控制(information flow control)模型

  許多信息的泄密並不是源於訪問控制自身的問題,而是由於未對系統中的信息流動進行限制。爲此在一個完善的保護系統中,還增長了一個信息流控制模型。它是對訪問矩陣模型的補充,用於監管信息在系統中流通的有效路徑,控制信息流從一個實體沿着安全途徑流向另外一實體。

  在該模型中對信息的流動作出以下兩項規定:

  (1) 不能上讀。

  (2) 不能下寫。

 

圖12-10  Bell-La Padula 模型

12.6.2  可信計算基TCB(Trusted Computing Base)

  1. 可信計算基的功能

  一個典型的可信計算基在硬件方面與通常計算機系統類似,只是少了些不影響安全性的I/O設備;在TCB中應配置OS最核心的功能,如進程建立、進程切換、內存映射以及部分文件管理和設備管理功能。

 

圖12-11  可信任計算基TCB

   2. 安全核心數據庫

  爲了對用戶的訪問進行安全控制,在TCB中配置了一個安全核心數據庫。在數據庫內放入許多與安全有關的信息。其中最主要的是以下兩個控制模型:

  (1) 訪問控制模型,用於實現對用戶訪問文件的控制,其中列出了每一個主體的訪問權限和每一個對象的保護屬性。

  (2) 信息流控制模型,用於控制信息流從一個實體沿着安全的途經流向另外一個實體。 

  3. 訪問監視器

  訪問監視器是TCB中的一個重要組成部分,它基於主體和被訪問對象的安全參數來控制主體對該對象的訪問,實現有效的安全接入控制。訪問監視器與安全核心數據庫相鏈接,如圖12-11所示。訪問監視器具備如下特性:

  (1) 徹底仲裁。

  (2) 隔離。

  (3) 可證明性。

12.6.3  設計安全操做系統的原則  

  1. 微內核原則

  咱們這裏所說的微內核(一般將它們稱爲安全內核),與前面所說的微內核有着某些類似之處,主要表現爲:首先它們都很是小,易於保證它們的正確性;其次它們都採用了策略與機制分離原則,即僅將機制部分放入安全內核中,而將策略部分放在內核的外面。

  2. 策略與機制分離原則

  前面提到了策略與機制的分離原則。在設計安全內核時一樣應當採用策略與機制分離原則,以減少安全內核的大小和增長系統的靈活性。安全策略規定系統要達到的特定安全目標是由設計者或管理員來肯定的,應將它放在安全內核外部。機制是完成特定安全策略的方法,由一組具體實現保護功能的軟件或硬件實現,應將它放入安全內核中。

  3. 安全入口原則

  在一般的微內核中,都採用了C/S模式,微內核與全部的服務器之間都存在着接口,所以能夠經過多種途徑進入微內核,這也就爲保障OS的安全增長了困難。而在安全系統中爲確保安全內核的安全,在安全內核與其它部分之間,如與其它的硬件、系統和用戶軟件等之間,只提供惟一的安全接口,凡是要進入安全內核進行訪問者,都必須接受嚴格的安全檢查,任何逃避檢查的企圖都是不能得逞的。

  4. 分離原則

  可用多種方法來將一個用戶進程與其餘用戶進程進行隔離,主要分離方法有:

  (1) 物理分離。

  (2) 時間分離。

  (3) 密碼分離。

  (4) 邏輯分離。

  5. 部分硬件實現原則

  在安全內核中有一部分須用硬件實現,其緣由可歸結以下:

  (1) 提升處理速度。

  (2) 確保系統的安全性。

  6. 分層設計原則

  如上所述,一個安全的計算機系統至少由四層組成:最低層是硬件,次低層是安全內核,第三層是OS,最高層是用戶。其中每一層又均可分爲若干個層次。安全保護機制在知足要求的狀況下,應力求簡單一致,並將它的一部分放入到系統的安全內核中,把整個安全內核做爲OS的底層,使其最接近硬件。

      

 

 

習    題 8:

 

  1. 系統安全性的主要目標是什麼?

  2. 系統安全性的複雜性表如今哪幾個方面?

  3. 對系統安全性的威脅有哪幾種類型?

  4. 可信任計算機系統評價標準將計算機系統的安全度分爲哪幾個等級?

  5. 何謂對稱加密算法和非對稱加密算法?

  6. 什麼是易位法和置換算法? 試舉例說明置換算法。

  7. 試說明非對稱加密算法的主要特色。

  8. 試說明保密數據簽名的加密和解密方式。

  9. 數字證實書的做用是什麼? 用一例來講明數字證實書的申請、發放和使用過程。

  10. 可利用哪幾種方式來肯定用戶身份的真實性?

  11. 在基於口令機制的認證技術中,一般應知足哪些要求?

  12. 試說明一種對加密口令進行驗證的方法。

  13. 基於物理標誌的認證技術又可細分爲哪幾種?

  14. 智能卡可分爲哪幾種類型? 這些是否均可用於基於用戶持有物的認證技術中?

  15. 被選用的生理標誌應具備哪幾個條件? 請列舉幾種經常使用的生理標誌。

  16. 對生物識別系統的要求有哪些? 一個生物識別系統一般是由哪兒部分組成?

  17. 早期常採用的內部攻擊方式有哪幾種?

  18. 何謂邏輯炸彈? 較經常使用的引爆條件有哪些?

  19. 何謂陷阱門和特洛伊木馬? 試舉例說明之。

  20. 何謂緩衝區溢出? 攻擊者如何利用緩衝區溢出進行攻擊?

  21. 什麼是病毒和蠕蟲? 它們之間有何異同處?

  22. 什麼是移動代碼? 爲何說在應用程序中包含了移動代碼就可能不安全?

  23. 計算機病毒的特徵是什麼? 它與通常的程序有何區別?

  24. 計算機病毒有哪幾種類型? 試簡單說明之。

  25. 什麼是文件型病毒? 試說明文件型病毒對文件的感染方式。

  26. 病毒設計者採起了哪幾種隱藏方式來讓病毒逃避檢測?

  27. 用戶可採用哪些方法來預防病毒?

  28. 試說明基於病毒數據庫的病毒檢測方法。

 

 

 

相關文章
相關標籤/搜索