計算機科學基礎_10 - 計算機安全

計算機安全

  • Secrecy, Integrity, Availability 保密性,完整性,可用性。
  • Threat Model 威脅模型
  • 身份驗證三種方式:
    What you know 你知道什麼
    What you hava 你有什麼
    What you are 你是什麼
  • 訪問控制 Access Control
  • Bell LaPadula Model 不能向上讀取,不能向下寫入
  • 隔離Isolation,沙盒Sandbox

不是每個使用網絡的人都會規規矩矩,不損害他人利益。就像現實世界中用鎖和柵欄保證物理安全。
需要網絡安全減少虛擬世界中的犯罪,計算機沒有道德觀念,只要給計算機寫清具體問題,它們很樂意的閃電般算出答案。
破壞醫院計算機系統的代碼和保持病人心跳的代碼對計算機來說沒有區別。
就像“原力”一樣,計算機可以被拉到“光明面”或“黑暗面”。網絡安全就像絕地武士團給網絡世界帶來和平與正義。

計算機安全的範圍,和計算能力的發展速度一樣快,可以把計算機安全,看成是保護系統和數據的:保密性,完整性和可用性。

“保密性”是隻有有權限的人才能讀取計算機系統和數據。
“完整性”是隻有有權限的人才能使用和修改系統和數據。
“可用性”是有權限的人應該隨時可以訪問系統和數據(拒絕服務攻擊DDOS,發大量的假請求到服務器,讓網站很慢或掛掉)。

威脅模型

實現這“保密性”,“完整性”,“可用性”的目標,安全專家從抽象層想象“敵人”可能是誰,這叫“威脅模型分析”。

模型會對攻擊者大致描述:能力如何,目標可能是什麼,可能用什麼手段,攻擊手段又叫“攻擊矢量”。

“威脅模型分析”能爲特定情境做準備,不被可能的攻擊手段熟練鎖淹沒,因爲手段是在有太多種了。

假設想確保筆記本計算機的“物理安全”,威脅模型是“好管閒事的室友”。爲了保證保密性,完整性和可用性可以藏在髒兮兮的洗衣籃裏。換句話說,要怎麼保護,具體看對抗誰

通常威脅模型分析裏,會以能力水平區分,比如“某人可以物理接觸到筆記本計算機,而且時間無限”在給定的威脅模型下,安全架構師要提供解決方案,保持系統安全,只要某些假設不被推翻,比如沒人會告訴攻擊者密碼,保護計算機系統,網絡和數據的方法有很多。

身份驗證

很多安全問題可以總結成2個問題:

  1. 你是誰?
  2. 你能訪問什麼?

權限應該給合適的人,拒絕錯誤的人。所以,爲了區分誰是誰,用“身份認證(authentication)”,讓計算機得知使用者是誰。

身份認證有三種,各有利弊:

  1. 你知道什麼。 基於某個祕密,只有用戶和計算機知道。比如用戶名和密碼。這是如今使用最廣泛的,因爲最容易實現。但如果黑客通過猜測或其他方式,知道了你的密碼。可以通過“暴力攻擊”,因爲只是試遍一切可能。如果錯誤嘗試3詞,有些系統會阻止你繼續嘗試,或讓你等一會兒。
  2. 你有什麼。是基於用戶有特定物體,比如鑰匙和鎖,這避免了被人“猜中”的問題,而且通常需要人在現場,所以遠程攻擊就更難了。但如果攻擊者距離比較近,那麼也不安全,鑰匙可以被複制,手機可能被偷,鎖可以撬開。所以需要“你是什麼”這種驗證。
  3. 你是什麼。是基於你把特徵展示給計算機進行驗證,生物是被驗證器,比如指紋識別器和虹膜掃描儀就是典型但例子。這些非常安全,但最好的識別技術仍然很貴,而且,來自傳感器的數據每次會不同。

“你知道什麼”和“你有什麼”。這倆中驗證是“確定性”的,要麼正確,要麼錯誤。如果知道密碼或有鑰匙,那麼100%能獲得訪問權限;如果沒有,就絕對進不去。但“生物識別”是概率性的,系統有可能認不出你,因爲環境外音,光線不好等,更糟糕是把別人錯認成對的人,比如雙胞胎,在現實世界中的機率很低,但不是零。
生物認證的另外一個問題是無法重設,你只有這麼多手指,如果攻擊者拿到你指紋數據怎麼辦,還有拍個照都有可能僞造虹膜,所以也不靠譜。所有認證方法都有優缺點。它們都可以被攻破,所以,對於重要賬戶,建議用倆種或倆種以上的認證方式。這叫“多因素”或“雙因素”認證,攻擊者可能猜出你的密碼,或偷走你的手機:但倆個都做到,會比較難。

訪問控制

“身份驗證”後,就是“訪問控制”。一旦系統知道你是誰,它需要知道你能訪問什麼。
因此應該有個規範,說明誰能訪問什麼,修改什麼,使用什麼。這可以通過“權限”或“訪問控制列表”(ACL)來實現。其中描述了用戶對每個文件,文件夾和程序對訪問權限。
“讀”權限允許用戶查看文件內容;“寫”權限允許用戶修改內容;“執行”權限允許用戶運行文件
,比如程序。

有些組織需要不同層級對權限,比如間諜機構,“訪問控制列表”的正確配置非常重要,以確保保密性,完整性和可用性。

不能向上讀取,不能向下寫入

假設三個訪問級別:公開,機密,頂級機密。

  • 第一個普遍的好做法是,用戶不能“讀上”,不能讀等級更高的信息,如果用戶能讀“機密”文件,那麼不應該有權限讀“頂級機密”文件。但能訪問“機密”和“公開”文件。
  • 第二個法則是用戶不能“寫下”,如果用戶等級是“頂級機密”,那麼能寫入或修改”頂級機密“文件,但不能修改”機密“或”公共“文件。

有最高等級也不能改等級更低但文件,但這樣確保了”頂級機密“不會意外泄漏到”機密“文件或”公共“文件裏。
這個”不能向上讀,不能向下寫“的方法,叫Bell-LaPadula模型,他是爲了美國國防部“多層安全政策”制定的,還有許多其他訪問控制模型,比如“中國牆”模型和“比伯”模型。哪個模型最好,取決於具體情況。

“身份驗證”和“訪問控制”幫助計算機知道“你是誰”,以及“你可以訪問什麼”。但做這些事情的軟硬件必須是可信的,這個依賴很重要。

如果攻擊者給計算機裝了惡意軟件,控制了計算機的操作系統,怎麼確認安全程序沒有給攻擊者6留後面?短回答是,無法確定。
仍然無法保證程序或計算機系統的安全,因爲安全軟件在理論上可能是”安全的“,實現時可能會不小心留下漏洞,但有辦法減少漏洞出現的可能性,比如已找到就馬上修復,以及當程序被攻破時儘可能減少損害,大部分漏洞都是具體實現的時候出錯了,爲了減少執行錯誤,減少執行。

系統級安全的聖盃是”安全內核“,或”可信計算基礎“:一組儘可能少的操作系統軟件,安全性都是接近可驗證的,構建安全內核的挑戰在與決定內容應該有什麼,代碼越少越好。

在最小化代碼數量之後,要是能”保證“代碼是安全的,會非常棒,正式驗證代碼的安全性,是一個活躍的研究領域,現在最好的手段,叫”獨立安全檢查和質量驗證“,讓一羣安全行業內的軟件開發者來審計代碼。這就是爲什麼安全型代碼基於都是開源的,寫原始代碼的人通常很難找到錯誤,但外部開發人員有新鮮的眼光和不同領域的專業知識,可以發現問題。

隔離Isolation,沙盒Sandbox

即便儘可能減少代碼,並進行了安全審計,聰明的攻擊者還是會找到方法入侵,優秀的開發人員,應該計劃當程序被攻破後,如何限制損害,控制損害的最大程度,並且不讓它危害到計算機上其他東西。這叫”隔離“。要實現隔離,可以用”沙盒“程序。只能損毀自己的沙堡,不會影響到其他。
操作系統會把程序放到沙盒裏,方法是給每個程序獨有的內存塊,其他程序不能動。一臺計算機可以運行多個虛擬機,虛擬機模擬計算機,每個虛擬機都在自己的沙箱裏,如果一個程序出錯,最糟糕的情況是它自己奔潰或者搞壞它處於的虛擬機,計算機上其他虛擬機是隔離的,不受影響。

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