2021-2022-1學期 20212422《網路空間安全導論》第十一週學習總結
第四章 系統安全基礎
4.1 系統安全概述
4.1.1 系統安全的演變
網路空間是人類活動的第五大疆域,人類所觸及的空間已經不侷限於海、路、空、天四個領域,隨著計算機、網路、人工智慧的技術發展,在今天,提起系統安全聯想到作業系統安全是合情合理的。
21世紀以來,新的數字化裝置不斷催生出新的應用,自網際網路普及以來,網路的滲透不斷增加,網路空間生態系統的影響越來越明顯,網路空間種的系統,從大型主機到網路化系統,再到網路空間生態系統,其形態不斷演變,其內涵不斷豐富,其影響不斷深入。與此同時,系統所面臨的挑戰更加嚴峻,系統安全的探索全景廣闊,意義深遠
4.1.2 系統與系統安全
一個系統是由相互作用或相互以來的元素或成分構成的的某種型別的一個統一的整體,其中的元素完整的關聯在一起,它們之間的這種關聯關係有別於他們與系統外其他元素之間可能存在的關係。
系統的邊界有時候是明顯的,有時候是模糊的,人的生命系統就有明顯的血肉邊界,一個手機能看得見外殼,能觸碰到螢幕,但是一個作業系統,既看不見也摸不到,作業系統的邊界很難劃分。系統的邊界也不是唯一的、一成不變的,隨著觀察角度的不同,可能會發生變化。但是不管怎麼樣,系統存在著邊界。
4.2 系統安全原理
4.2.1 基本原則
①最小特權原則: 系統中執行任務的實體(程式或使用者)應該只擁有完成該項任務所需特權的最小集合;如果只要擁有n項特權就足以完成所承擔的任務,就不應該擁有n+1項或更多的特權。
②失敗-保險預設原則:安全機制對訪問請求的決定應採取預設拒絕方案,不要採取預設允許方案;也就是說,只要沒有明確的授權資訊,就不允許訪問,而不是,只要沒有明確的否定資訊,就允許訪問。
③完全仲裁原則:安全機制實施的授權檢查必須能夠覆蓋系統中的任何一.個訪問操作,避免出現能逃過檢查的訪問操作。該原則強調訪問控制的系統全域性觀,它除了涉及常規的控制操作之外,還涉及初始化、恢復、關停和維護等操作,它的全面落實是安全機制發揮作用的基礎。
④特權分離原則(Separation of Privilege): 對資源訪問請求進行授權或執行其他安全相關行動,不要僅憑單一條件做決定,應該增加分離的條件因素;例如,為一把鎖設兩套不同的鑰匙,分開由兩人保管,必須兩人同時拿出鑰匙才可以開鎖。
⑤信任最小化原則:系統應該建立在儘量少的信任假設的基礎上,減少對不明物件的信任;對於與安全相關的所有行為,其涉及的所有輸人和產生的結果,都應該進行檢查,而不是假設它們是可信任的。
簡單性原則包括機制經濟性原則、公共機制最小化原則和最小驚訝原則。
①機制經濟性原則:應該把安全機制設計得儘可能簡單和短小,因為,任何系統設計與實現都不可能保證完全沒有缺陷;為了排查此類缺陷,檢測安全漏洞,很有必要對系統程式碼進行檢查;簡單、短小的機制比較容易處理,複雜、龐大的機制比較難處理。
②公共機制最小化原則 :如果系統中存在可以由兩個以上的使用者共用的機制,應該把它們的數量減到最少;每個可共用的機制,特別是涉及共享變數的機制,都代表著一-條資訊傳遞的潛在通道,設計這樣的機制要格外小心,以防它們在不經意間破壞系統的安全性,例如資訊露。
③最小驚訝原則(Least Astonishment):系統的安全特性和安全機制的設計應該儘可能符合邏輯並簡單,與使用者的經驗、預期和想象相吻合,儘可能少給使用者帶來意外或驚訝,目的是提升它們傳遞給使用者的易接受程度,以便使用者會自覺自願、習以為常地接受和正確使用它們,並且在使用中少出差錯。
方法性原則包括公開設計原則、層次化原則、抽象化原則、模組化原則、完全關聯原則和設計迭代原則。
①公開設計原則:不要把系統安全性的希望寄託在保守安全機制設計祕密的基礎之上,應該在公開安全機制設計方案的前提下,藉助容易保護的特定元素,如金鑰、口令或其他特徵資訊等,增強系統的安全性;公開設計思想有助於使安全機制接受廣泛的審查,進而提高安全機制的魯棒性。
②層次化原則:應該採用分層的方法設計和實現系統,以便某層的模組只與其緊鄰的上層和下層模組進行互動,這樣,可以通過自頂向下或自底向上的技術對系統進行測試,每次可以只測試一層。
③抽象化原則:在分層的基礎上,遮蔽每一層的內部細節,只公佈該層的對外介面,這樣,每一層內部執行任務的具體方法可以靈活確定,在必要的時候,可以自由地對這些方法進行變更,而不會對其他層次的系統元件產生影響。
④模組化原則:把系統設計成相互協作的元件的集合,用模組實現元件,用相互協作的模組的集合實現系統;每個模組的介面就是一種抽象。
⑤完全關聯原則: 把系統的安全設計與實現與該系統的安全規格說明緊密聯絡起來。
⑥設計迭代原則:對設計進行規劃的時候,要考慮到必要時可以改變設計;因系統的規格說明與系統的使用環境不匹配而需要改變設計時,要使這種改變對安全性的影響降到最低。
為了使全生命週期的整體安全保障思想落到實處,系統的設計者和開發者在設計和實現系統的過程中,應該深人理解、正確把握、自覺遵守以上原則。
4.3 系統安全結構
4.3.1硬體系統安全
網路空間是個計算環境,它主要由各式各樣的計算機通過網路連線起來構成。這裡所說的計算機並非只是常見的膝上型電腦、桌上型電腦、伺服器、平板計算機、手機等,還有很多藏在嵌人式裝置或物聯網裝置等之中不易被看到的東西,它們的關鍵特徵是都有處理器。
計算機由硬體和軟體組成,儘管有些軟體因為固化在硬體上而被稱為韌體。計算機提供的豐富多彩的功能,不管是拍照,還是播放音樂,或是別的,都是通過計算實現的。硬體負責計算,軟體負責釋出計算命令。硬體是軟體的載體,軟體在硬體之上工作。
在系統安全的背景下觀察硬體安全,主要是觀察它能給軟體提供什麼樣的安全支援,如何幫助軟體實現想要實現的安全功能。同時,也觀察它自身可能存在什麼安全隱患,會給系統安全帶來什麼樣的影響。
在硬體為軟體提供的安全支援功能中,最平凡的一-項是用於保護作業系統的功能。之所以說平凡,是因為這項功能太常用了,以致很多人甚至想不起來能把它和安全掛上鉤,那就是使用者態/核心態功能。
處理器硬體定義了使用者態和核心態兩種狀態,核心態給作業系統用,使用者態給其他程式用,規定使用者態的程式不能干擾核心態的程式。這樣,在免受其他程式破壞的意義上,作業系統受到了硬體的保護。
以通俗的方式說得更具體一點,硬體把指令和記憶體地址空間都分成了兩大部分,核心態程式可以看到所有的指令和地址空間,使用者態程式只能看到其中一個部分的指令和地址空間。
使用者態程式看不到的那部分指令稱為特權指令,看不到的那部分地址空間稱為核心地址空間。
·看不到的意思就是不能使用,就是說,使用者態程式不能執行特權指令,不能訪問核心地址空間。因為作業系統程式存放在核心地址空間,使用者態程式不能往核心地址空間寫東西,因此,就無法篡改或破壞作業系統程式.作業系統由此得到保護。
對於使用者程式破壞作業系統程式這樣的威脅模型,使用者態/核心態策略是有效的。可是,實踐證明,黑客有辦法把惡意程式插到核心地址空間中,讓它在核心態執行。這樣一來,惡意程式就有了篡改作業系統程式的能力,情況變得糟糕很多。能篡改作業系統程式意味著篡改應用程式就更不在話下,換言之,所有程式都有被篡改的風險。。
4.3.2 作業系統安全
作業系統是直接控制硬體工作的基礎軟體系統,它緊貼在硬體之上,介於硬體與應用軟體之間,這樣的特殊地位決定了它在系統安全中具有不可替代的作用。沒有作業系統提供的安全支援,應用系統的安全性無法得到保障。不妨以常用的加密功能為例考察這個問題。
假設某應用程式需要利用加密技術對資料進行加密保護.系統配備了硬體加密裝置。硬體加密裝置能夠正確實現所需的加密功能,加密所需的金鑰可以在硬體加密裝置中安全地生成。在硬體的保護下,加密演算法和金鑰既不會洩露也不會被破壞,這方面可以完全擺脫對作業系統的依賴。在這樣強有力的假設前提下,如果沒有作業系統提供相應的功能,應用程式完成加密任務依然存在薄弱之處:
①第一個弱點是無法保證硬體裝置的加密機制能夠順利啟動。攻擊者可以利用惡意程式干擾該應用程式啟動加密機制的操作。由於都在使用者地址空間,惡意程式比較容易篡改該應用程式。具體地說,惡意程式可以篡改該應用程式中啟動加密機制的程式碼,使該程式碼根本不發出啟動加密機制的命令,然後,冒充加密機制與該應用程式互動。雖然該應用程式並沒有啟動加密機制,但它以為加密機制已經啟動了,在後續的工作中,當它把待加密資料傳給加密機制時,實際上資料都由惡意程式代收了。
·該弱點之所以存在,主要是因為應用程式與硬體加密機制之間缺乏一條可信的互動路徑,這樣的可信互動路徑只能由作業系統幫助建立,應用程式自身無法把它建立起來。
②第二個弱點是無法保證硬體裝置的加密機制不被濫用。濫用硬體加密機制的意思是當合法應用程式啟動了該加密機制之後,其他應用程式有可能使用該加密機制,包括使用其中的演算法和金鑰。當合法應用程式A啟動了硬體加密機制H之後,就建立起了一個A 與H之間的會話s,就好比接通了一個電話-一樣。 此後,A是在會話S中使用H的功能的。由於硬體加密機制本身無法區分不同的應用,如果期間有惡意程式B利用會話S使用H的功能,那是有可能的,正如你正在打電話,有人跑到你身邊向對方喊話一樣。
4.3.3 資料庫系統安全
資料庫系統是提供資料管理功能的軟體系統,它由資料庫管理系統和資料庫應用構成。對於資料庫系統安全,我們要從DBMS角度增強資料庫應具有的安全功能,還要從資料庫應用的角度緩解資料庫系統無法迴避的安全風險。
4.3.4 應用系統安全
基於Web的應用(簡稱Web應用)是典型的常見應用之一,本小節以該類應用為例,考察應用系統的安全現象。
Web應用的一大特點是藉助瀏覽器的形式,打破了異構裝置之間的差異屏障,使得多種多樣的裝置都可以用來連線同一個應用系統,擴大了應用系統的適應性,提升了使用者選擇的靈活性。瀏覽器是Web應用系統的前端,是使用者進人應用系統的介面,使用者只需要使用瀏覽器就可以使用Web應用系統提供的功能。使用者通過瀏覽器訪問Web應用系統,但是,Web應用系統的主要功能並不是瀏覽器提供的,而是藏在幕後的伺服器提供。通常,使用者無法知道伺服器在哪裡,不過不要緊,只 要知道伺服器的網址(術語是URL)就可以了。伺服器那一端稱為服務端,使用者這一端 稱為客戶端。客戶端的瀏覽器使用一一種稱為HTML的語言按照HTTP與服務端的伺服器進行互動,把服務端提供的Web應用功能展現在使用者面前。Web應用展現在使用者面前的是各種網頁。過去的網頁大多是靜態的,現在的網頁嵌人了很多動態的元素,增強了使用者體驗的喜悅感,提升了Web應用與使用者互動的能力。Web應用與使用者互動的功能通過在HTML中嵌入各種指令碼來實現,稱為JavaScript的 指令碼就是其中一種非常常用的型別。常言道:魚與熊掌不可兼得。在網頁中嵌人JavaScript指令碼讓使用者獲得了與Web應用互動的強大功能,同時,也帶來了不可忽視的安全隱患。一種稱為跨站指令碼(Cross-site scripting, XSS)攻擊的安全威脅就是其中格外引人矚目的一種,它在Web應用安全中佔有最大比重,遠遠超過其他安全威脅。
Web應用與使用者的互動通過輸人輸出功能實現,使用者通過輸人嚮應用系統發服務請求,應用系統以輸出的形式給使用者提供響應結果。例如,使用者在搜尋頁面的輸入框中輸人搜尋關鍵詞,系統給使用者輸出查詢結果頁面。在XSS攻擊中,攻擊者想辦法把惡意指令碼藏在Web應用的輸人和輸出之中,實現攻擊目的。
附:本章節知識思維導圖: