Date post: | 01-Jan-2016 |
Category: |
Documents |
Upload: | baker-harmon |
View: | 71 times |
Download: | 4 times |
Operating System Concepts作業系統原理
CHAPTER 15 系統安全性 (System
Security)
1
CHAPTER 15 系統安全性15.1 安全性問題15.2 程式威脅15.3 系統和網路威脅15.4 以密碼學為安全性工具15.5 使用者認證15.6 安全性防禦的製作15.7 保護系統和網路的防火牆15.8 電腦保密等級
2
1.安全性問題 (The Security Problem)
1. 機密的缺口 (breach of confidentiality) 。違反未授權資料的讀取類型 ( 或資料的 竊取 ) 。通常,機密的缺口是入侵者的目標。截取系統或資料串流機密的資料, ( 像是信用卡資料或身份竊盜者所需的身份資料 ) ,能對入侵者直接地產生財富。
2. 完整的缺口 (breach of integrity) 。牽涉違反未授權資料的修正。這樣的攻擊傾向純真第三者的通過或重要商業應用程式原始碼的修正。
3. 可用的缺口 (breach of availability) 。牽涉違反末授權資料的破壞。有些破壞者大肆破壞並且獲得狀態或跨躍權利,超過財務上的獲得。網站外表傷毀是保密 裂口這類型的常見例子。
4. 服務的竊盜 (theft of service) 。牽涉違反未授權資源的使用。舉例來說,一個侵入者 ( 或侵入程式 ) 可能在檔案伺服器的系統上安裝一個daemon 。
5. 拒絕服務 (denial of service) 。牽涉違反避免系統合法的使用。拒絕服務 ( 或 DOS) ,有時是意外的攻擊。當一個臭蟲失敗延遲它迅速傳佈的時候,最初的網際網路蠕蟲將變成 DOS 攻擊。
3
Intruders (crackers) attempt to breach security. Threat (威脅 ) is potential security violation. Attack (攻擊 ) is attempt to breach security. Attack can be accidental or malicious. Easier to protect against accidental than malicious misuse.
4
MethodsMasquerading ( 偽裝身份 breach authentication)Replay attack Message modificationMan-in-the-middle attackSession hijacking( 連線劫持 )
Security Measure Levels Security must occur at four levels to be effective:
Physical Human
Avoid social engineering, phishing, dumpster diving Social Engineering(社交工程陷阱 ) :通常利用大衆的疏於
防範的小詭計,讓受害者掉入陷阱。該技巧通常以交談、欺騙、假冒或口語用字等方式,從合法用戶中套取用戶系統的秘密,例如:用戶名單、用戶密碼。
Phishing ( 網路釣魚 ) Dumpster Diving ( 垃圾搜尋 ) :基本上就是一個攻擊者把垃圾搜尋一遍以找出可能含有密碼的廢棄文檔。
Operating System Network
2.程式威脅 (Program Threats)2.1 木馬 (Trojan horse)
許多系統有允許使用者所寫程式被其它使用者使用的方法。如果這些程式在提供正在執行的使用者存取權利的定義域中,它們可能誤用這些權利。
例子,在一個內在的文字編緝程式中可能要去被編輯的程式中尋找某關鍵字 (keyword),如果有任何發現,則整個檔案可能拷貝到一個可被文字編輯器的產生器存取的特別區域。一個程式碼分段誤用它的環境稱為木馬 (Trojan horse)。
木馬的另一種變化是間諜軟體 (spyware),間諜軟體有時伴隨在使用者已選擇安裝的程式。最常見的是它以免費軟體或共享軟體程式在一起,但是有時它和商業的軟體包含在一起。
間諜軟體的目標是下載廣告到使用者的系統上顯示以及拜訪特定網站的時候,自動產生跳出瀏覽器器視窗 (Pop-up browser windows)或由使用者系統截取訊息並且將訊息歸還中心網站。後者的模式是一般種類攻擊的一個例子稱為隱密通道 (covert channels) 。
6
2.2 陷阱之門 (Trap Door) 程式或系統設計者可能會在軟體內留下一個僅供自己使用之陷阱。 程式碼可能檢查某一特定使用者或密碼以迴避正常的安全檢查程序。曾經有程式人員藉著在他們的程式碼中加入錯誤的四捨五入,讓偶爾出現的半分錢進入到他們的帳號,以盜取銀行的例子。這個帳號的金額可能累加到一筆很大的金額。
聰明的陷阱之門可以將它放在編譯器之內。該編譯器可產生標準的目的碼和陷阱之門,而不論其原始程式為何。這是一項非常惡劣的行為,因為就算檢查原始程式亦無法發現任何安全性問題。只有在編譯器中才包含該項資訊。
2.3 邏輯炸彈 (logic bomb) 一個程式只在某些情況之下發起安全事件。因為在正常運作之下,
它會是困難查出,可能沒有安全漏洞。但是,當符合預先定義設定的參數,則產生安全漏洞。
7
2.4 堆疊和緩衝區的溢位 (Stack/Buffer overflow) 堆疊或緩衝區的攻擊是系統外面、網路上或是撥接連線攻擊者獲
得目標系統非授權存取的最常見方法。系統的授權使用者也可以使用這種方法增加權限 (privilege escalation),獲得超出該使用者的特權。
8
緩衝區溢位的成因:緩衝區溢位攻擊之所以能成功,是因為程式設計者在設計讀取輸入值時忽略了檢查輸入值的長度。在一般的程式設計下這些輸入的緩衝區是一個固定長度的資料,如果程式設計者不小心允許使用者輸入大於緩衝區長度的資料時,就會產生所謂的緩衝區溢位。 例如:我們在登入系統時需要輸入一個使用者名稱 ( 大部分的系統預設的值是 32 Bytes),如果我們輸入一個長度是 100 的字串,而程式設計者並沒有檢查字串長度時,便有可能發生緩衝區溢位的攻擊。
9
2.5 2.5 病毒病毒 (virus)(virus) 病毒是一種程式威脅。病毒是自身複製並且設計成「感染」其它程
式。可能在系統中造成大破壞,包含了修改或破壞檔案、造成系統損毀和程式不正常動作。
病毒是在合法程式中嵌入程式碼的片段。在大部份侵入攻擊中,病毒對電腦架構、作業系統和應用程式是非常特殊的。
病毒是個人電腦使用者的一項特別問題。通常 UNIX和其它多使用者電腦不容易受到病毒困擾,因為可執行程式受到作業系統保護而無法寫入。即使病毒感染到一個程式,它的效能仍然受限,因為系統其它方面受到保護。
病毒通常經由電子郵件誕生,大部份以垃圾郵件當做帶菌者。當使用者由網路共用檔案服務交換下載病毒的程式或交換感染磁碟以散播病毒。
10
病毒傳播的其它常用型式使用 Microsoft Office檔案,如Microsoft word文件。這些檔案包含巨集 ( 或 Visual Basic程式 ) ,巨集是一套 Office (Word, PowerPoint和 Excel)中會自動執行的程式。
這些程式在使用者自己的帳戶中執行,巨集可以大規模自動地執行 ( 例如,任意刪除使用者檔案 ) 。
病毒也將電子郵件傳送自己給使用者其它連絡人。 這裏有一個程式碼範例顯示出寫 visual Basic巨集的簡單性,當檔案含有的巨集開啟,病毒使用 Visual Basic巨集格式化 Windows電腦的硬碟 :
SubAutoOpen()
Dim oFS
Set oFS=CreatObject(''Scripting.FileSystemObject'')
vs=Shell(''C:
command.com /k format c:'', vbHide)
End Sub
11
12
3.系統和網路威脅 (System and Network Threats)3.1 蟲 (worm)
蟲是使用複製 (Spawn)功能來癱瘓系統性能的行程。蟲產生本身的複製品,佔據系統資源並可能不讓其它所有行程使用系統。
13
3.2 連接埠掃描 (port scanning) 連接埠掃描不是一個攻堅而是一個破壞者偵測系統的攻堅弱點。連
接埠掃描通常是自動的、企圖產生 TCP/IP連接到特定連接埠或連接埠範圍內的工具。
3.3 拒絕服務 (denial of service) 大部份拒絕服務的攻擊都是攻擊者不曾侵入的系統。事實上,發動阻止合法使用的攻擊通常比入侵一台機器或設備容易。
這些攻擊通常是以網路為基礎。它們分成兩種類型。 第一種情況的攻擊是用掉許多設備資源,造成實際上沒有任何
工作可以執行。 第二種情況牽涉到混亂設備的網路。曾經有一些對主要網站造
成無法服務的成功攻擊。它們是因為對於一些 TCP/IP 基本功能的濫用所造成。
14
4.以密碼學為安全性工具 (Cryptography as a Security Tool)
由方法學到技術學全面性執行時,有許多防禦電腦攻擊的方法。系統設計師和使用者最常使用的工具就是密碼學 (cryptography)。
4.1 編碼 編碼技術時常被用於許多現代電腦的外觀。編碼是限制訊息可能
接收者的一種方法。編碼演算法讓訊息傳送者達成,只有擁有某一種鑰匙的電腦才能讀取訊息。
編碼演算法是由以下元件組成:
15
16
對稱編碼 (Symmetric Encryption) 在對稱編碼演算法 (symmetric encryption algorithm)中,
使用相同的鑰匙來編碼和解碼。也就是 E(k)可以由 D(k)導出來,反之亦然。因此 E(k)的機密必須和 D(k)一樣受到保護。
非對稱編碼 (Asymmetric Encryption) 在一個非對稱編碼演算法 (asymmetric encryption
algorithm)編碼與解碼有不同的鑰匙。
17
18
認證 (authentication) 編碼是提供限制訊息可能接收者集合的方法,限制訊息可能傳送者的集合就稱為認證。因此認證與編碼是互補的。
演算法是由以下的元件所組成︰
19
為什麼需要個別認證演算法呢?這裏有三個主要理由。 ‧ 通常認證演算法需要較少的計算 ( 值得注意的例外是 RSA數位簽
名 ) 。在大量的明文時,這種效率能使資源的使用和認證訊息所需的時間上有很大的差別。
‧ 訊息的認證部份總是幾乎比訊息和它的密碼更短,這改善了空間的使用和傳輸時間的效率。
‧ 有時,想要認證但不想要機密。
鑰匙分配 (Key Distribution) 證明誰 ( 或什麼 ) 擁有公開鑰匙。有一個方法可以解決就是使用數位憑證。
數位憑證 (digital certificate)是一個由信任的第三者數位簽署的公開鑰匙。信賴的團體由一些實體接收識別的證明和保證該實體擁有此公開鑰匙。
如何知道可以信任憑證者呢?這些憑證管理中心 (certificate authorities)在網頁瀏覽器內包含他們的公開鑰匙 ( 和其它用戶的憑證 ) ,在分配鑰匙前。則這些憑證管理中心可以擔保其它管理中心 ( 數位簽署這些憑證管理中心的公開鑰匙 ) 等等,產生信任的網頁。
20
21
4.2 密碼學的製作 (Implementation of Cryptography) 網路協定以階層 (layers)的方式組織,每一階層對它的下面階層有
如用戶端。密碼學幾乎可以插入到 ISO模式中任何階層。 SSL(15.4.3 節 ) 在輸送階層 (transport layer)提供安全性。網
路階層安全性在 IPSec上已經標準化, IPSec定義 IP封包格式,此格式允許插入認識碼和封包內容的編碼。它使用對稱編碼和使用 IKE協定交換鑰匙。 IPSec在虛擬私人網路 (virtual private networks,簡稱 VPNs)的基礎下變得廣泛使用,二個 IPSec端點間所有資訊都被編碼來產生私人網路,如果不這樣做就只能公開。許多協定也已經被發展在應用程式的使用,但應用程式本身也必須編碼來實現安全。
22
5. 使用者認證 (User Authentication) 密碼 (Passwords)
最通常的方法去認證使用者身份是使用者的密碼 (passwords) 。當使用者證明自己,必須給一密碼。如果使用者提供的密碼與存在系統內的密碼相符,則假設他是個合法的使用者。
密碼的弱點 (Password Vulnerabilities) 很不幸地,密碼會由於被猜出、意外的暴露或非法地從一個授權者轉移給一個非授權者而被破壞。
編碼密碼 (Encrypted Passwords) 一個有關所有這些方法的共同問題是很難對密碼保密。系統如何安全
地儲存密碼,並且在使用者呈現出它的密碼時允許做認證的使用。 UNIX 系統使用編碼 (encryption) 密碼以避免保持它的密碼機密的必
要。每個使用者有一個密碼。系統包含有一個非常困難 逆轉的函數,但卻易於計算。也就是說,給一個旁值,則很容易去算出人 F(x)值。然而給一函數值 F(x) ,則不可能算出 x 。這函數用來對所有的密碼做編碼。
23
單次密碼 (One-Time Passwords) 為了避免密碼有被發覺和背後偷窺的困擾,系統可以使用一個配對
密碼 (pair passwords) 的集合。在一個對話層開始的時候,系統隨機地選擇並且顯示密碼對的一部份,使用者必須供給另一部份。在這個系統之中,使用者接受盤問 (challenged) ,並且須回應 (respond)出盤問的正確答案。
在這一個單次密碼 (one-time password) 系統之中,每一個時刻的密碼都不相同。任何一個從一個對話層攔截的密碼,嘗試在另一個對話層再次使用時都會失敗。單次密碼是以上唯一可以預防由於密碼顯露產生不妥當證明的方法。
生物統計 (Biometrics) 密碼認證的另一種變化是生物統計的使用。 掌上型或是手持型的讀入機器對於安全之硬體存取十分普遍,例如
對於資料中心的存取。這些讀入機器將儲存的參數和從手持式讀入機讀入的資料做比對。參數可能包括溫度圖,以及手指長度、手指寬度和線條形狀。目前這些設備使用在一般電腦驗證上太大,而且太貴。
24
6.安全性防禦的製作 (Implementing Security Defenses)
安全性策略 (security policy) 任何增進電腦外觀安全性的第一步是要有安全性策咯。策略變化
範圍廣泛,但通常包含要保密什麼的敘述。 沒有策略存在,使用者和管理員不可能知道什麼是可允許的、什麼是需要的以及什麼不被允許的。
策略是一個安全性道路地圖,如果網站嘗試由低安全移到較高安全,則需要地圖才知道如何到達。
弱點評估 (Vulnerability Assessment) 如何決定安全性策略是否已經正確地製作呢 ? 最好的力法是執行弱點評估。
大部份弱點評估的核心動作是侵入測試 (penetration test),掃描實體尋找已知的弱點。
25
侵入偵測 (Intrusion Detection) 安全的系統和設備緊密地連結到侵入偵測。侵入偵測 (intrusion
detection)就如其名所示,它試圖偵測出任何意圖或成功侵入電腦系統者,並且對侵入行為發出適當的反應。
26
病毒保護 (Virus Protection) 病毒能在系統上進行大肆破壞。因此安全性最關心的是免於病毒
的保護,通常防毒程式提供這種保護。 有些防毒程式能有效對抗特定的已知病毒,防毒軟體在系統中藉由搜尋組成已知病毒指令的特定式樣。當防毒軟體發現一個已知式樣,進行程式消毒 (disinfecting)(移去指令 ) 。防毒程式可能有防毒程式搜尋的成千病毒目錄。
稽核、帳戶和登入 (Auditing, Accounting, Logging) 稽核、計數和登入會減少系統效能,但是在幾個領域中非常有用,包括安全性。
登入可以是一般或特定。所有系統呼叫可以對程式表現 ( 不當表現 ) 的分析登入。
27
7.保護系統和網路的防火牆(Firewalling to Protect Systems and Networks)
28
8.電腦保密等級 (Computer Security Classifications) 美國國防部的電腦系統信任評估標準在系統中指定四個保密的等級 :A 、B 、 C 和 D 。最低位準等級是 D 等級。
等級 D 只由一個層次組成,並且用來對系統評估,但是它無法滿足任何一個其它保密等級的需求。
等級 C ( 保密的下一個層級 ) 提供無條件的保護和使用者的責任,以及他們透過使用審核能力的行為。等級 C 分為兩個層次 :C1 和C2 。 C1層次的系統混入一些控制的型式,以便允許使用者保護私人的資訊,以及防衛其它使用者的意外讀取或破壞他們的資料。 C2層次系統透過個人層次的存取控制增加 Cl系統的需求。
等級 B 是強制性的保護系統,它有 C2層次系統的所有特性,加上它們在每一個物件加入敏感度分類表。 Bl層次的 TCB在系統之中保有每一個物件的保密分類表,這個分類表是用來判斷關於強制性的存取控制。 B2層次系統擴大敏感度標籤到每一個系統資料。 B3層次系統允許存取控制列表的產生,這個列表代表使用者或群,對一個已知名稱的物件做存取是不被允許的。
最高的層次是等級 A 。 A1層次系統在功能上是相似於 B3的系統架構,但是 Al使用正規設計敘述和修正技術,這個方式允許高等級的保證,因為已經正確地製作它的 TCB。一個系統要越過 A1層次可能需要藉由信任的人使用信任的機器來設計和發展才行。
29