作業系統虛擬化之訪問控制機制
一、主訪問控制機制:
DAC:Discretionary Access Control
DAC概念:
檔案的擁有者可以按照自己的意願精確指定系統中的其他使用者對其檔案的訪問權。
定義:自主訪問控制是基於客體所屬使用者/組身份,以及需知原則來約束對客體的訪問的一種手段。這種控制是自主的意義在於:具有特定訪問許可權的一個主體能夠將該許可權(直接或間接地)傳遞給另一個主體。
一個使用者可以自主地說明他所擁有的資源允許系統中哪些使用者以何種許可權進行共享。從這種意義上講,是“自主”的。
“自主”也指對其他具有授予某種訪問權力的使用者能夠自主地(可能是間接地)將訪問權或訪問權的某個子集授予另外的使用者。
**DAC分類:
基於行的訪問控制矩陣資訊:連線可訪問客體到指定使用者。
基於列的訪問控制矩陣資訊:連線使用者列表到指定的客體。
1)基於行的自主存取控制機制:在每個主體上都附加一個該主體可訪問的客體的明細表,根據表中資訊的不同可分成三種形式: 能力表、字首表和口令。
① 能力表(capability list)
對於每個使用者,系統有一個能力表。要 採用硬體、軟體或加密技術對系統的能力表進行保護,防止非法修改 。能力的兩個基本屬性是: 它們可以從一個訪問主體傳遞給另一個主體,且
未經作業系統TCB的允許,擁有 某些能力 的 訪問主體 不能 修改 或者 偽造 任何能力。
②字首表(profiles)
對每個主體賦予的字首表,包括 受保護客體名 和 主體對它的訪問許可權。當主體要訪問某客體時,自主存取控制機制將檢查主體的字首是否具有它所請求的訪問權。
不足: (1)訪問權的撤消 和 客體的刪除一般都是比較困難的,因為系統必須能夠檢測每個主體的字首;(2)對於一個可訪問許多客體的主體,它的字首量將非常大,很難管理;(3)如果不採用全路徑,客體命名必須惟一,否則難以管理。
③口令: password-based access control mechanisms
如果對每個客體,每個主體都擁有它自己獨有的口令(類似能力表)
每個客體 都相應地有一個讀/寫口令 ,主體在對客體進行訪問前,必須向作業系統提供該客體的口令。正確,才可以訪問該客體。
(2)基於列的自主存取控制機制:在每個客體上都附加一個主體明細表,表示存取控制矩陣。表中的每一項都包括主體的身份和主體對該客體的訪問許可權。可明確指定特定的使用者允許或不允許訪問一個特定受保護的客體。
① 擁有者/同組使用者/其他使用者” 模式:
在UNIX/Linux系統中,實現了一種十分簡單、常用而又有效的自主存取控制模式,即在每個檔案上附加一段有關存取控制資訊的二進位制位,比如:Linux系統某個目錄的訪問模式為:r w _ r _ x r_ _ 或 654,這些二進位制位(稱為9bit位)反映了不同類別使用者的存取權:
Owner(前三位) 此客體的擁有者對它的訪問許可權;
Group(中間三位) owner同組使用者對此客體的訪問許可權;
Other(最後三位) 其他使用者對此客體的訪問許可權;
缺點: 客體的擁有者不能精確控制某個使用者對其個客體的訪問權。比如:”不能指定與owner同組的使用者A對該客體具有讀、寫許可權,而同組使用者B對該客體卻沒有任何許可權。
②ACL和“擁有者/同組使用者/其他使用者”相結合模式:
方法:僅對“擁有者/同組/其他使用者”無法分組的使用者使用ACL
優點:保持與原系統的相容性,且控制粒度細化到單個使用者
實現示例:UNIX SVR4.1ES在檔案系統中,針對檔案的索引結構開發ACL項及相關資訊項,使每個檔案對應一個ACL。在 IPC 的索引結構中開發ACL項及相關資訊項,使每個訊息佇列、訊號量集合、共享存貯區對應一個 ACL
ACL 語義,一個ACL是對應於一個客體的三元組集合,每個三元組稱為 ACL的一項,比如:
二、客體重用機制:
資料殘留:
又稱殘留資訊,是指資料在被以某種形式擦除以後所殘留的物理表現,儲存介質被擦除後可能留有一些殘留物特性使資料能夠被重建。檔案的刪除和建立,可能會在重新分配物理盤塊空間時,洩露這些盤塊上以前存放的資訊,因為刪除檔案只是簡單的將該檔案對應的目錄索引項(比如結點號、檔名)清楚,而對應該檔案的物理盤塊上的記憶體內容依然存在。
客體重用:
包含一個或多個客體的儲存介質(例如,頁面,磁碟扇區,磁帶)的主體的重新分配。通過標準系統機制,為新的主體重新分配時不應含有任何可用的殘留資料。
客體重用的使用:
TESEC的四等七級中,從C2到A1都使用了客體重用機制
我國GB17859中第二級到第五級都使用了客體重用機制
補充:GB1785五個等級
第一級:使用者自主保護級
第二級:系統審計保護級
第三極:安全標記保護級
第四級:結構化保護級
第五級: 訪問驗證保護級
TESTC和GB17859對客體重用的要求:
在計算機資訊系統可信計算基的空閒儲存客體空間中,對客體初始指定、分配、或者再分配一個主體之前,應撤銷該客體所含資訊的所有授權,當主體得到一個已被釋放的客體的訪問權時,當前主體不能獲得原主體活動所產生的任何資訊
三、安全標記機制:
計算機資訊系統可信計算基維護與可被外部主體直接或間接訪問到的計算機資訊系統資源如主體、儲存客體、只讀儲存器相關的敏感標記,這些標記是實施強制訪問控制的基礎,為了輸入未加安全標記的資料,計算機信心繫統可信計算基向授權使用者要求並接受這些資料的安全級別,且由計算機資訊系統的可信計算基審計。
四、強制訪問控制機制:
MAC,:Mandatory Access Control
在DAC控制下,以某個使用者身份執行的程式可以任意地修改該使用者所擁有檔案的訪問控制資訊,而作業系統無法區分修改資訊的是一個合法使用者還是一個木馬。儘管系統可以對擁有特權的特定程式修改訪問控制資訊的能力進行限制,但同時會失去靈活性。實際上,在DAC控制下並沒有辦法防止木馬通過共享客體(shared objects)-比如檔案、訊息和共享記憶體等,把訊息從一個程序傳給另一個程序。MAC可以阻止一些Trojan horses攻擊,主要體現在:為每個主體(subjects)和客體(objects)賦予安全屬性(security attributes),這些屬性不像自主訪問控制屬性那樣可以隨意改變。系統通過比較主體和客體的安全屬性來決定該主體能否以期望的方式訪問該客體。反之,如果系統判定擁有某一安全屬性的主體不能訪問某個客體,那麼任何人(包括客體的擁有者)也不能使它訪問該客體。從這種意義上講,是“強制”的。
兩個安全級之間存在的支配關係:
①A支配B,即A的密級不小於B的密級,A的範疇集包含B的範疇集。
②A支配於B,或B支配A,即B的密級不小於A的密級,B的範疇集包含A的範疇集。
③A等於B,即A的密級等於B的密級,A的範疇集等於B的範疇集。
④A、B無關,即A的範疇集不包含B的範疇集,B的範疇集也不包含A的範疇集
File: {secret: NATO,NUCLEAR},
User1: {top secret: NATO,NUCLEAR,CRYPTO}
User2: {top secret: NATO,CRYTPO}
User3: {confidential: : NATO,NUCLEAR,CRYPTO}
安全級的標識和賦值:
① 主體的安全級:
“主體的安全級 = 以使用者身份執行的程序的安全級”
使用者安全級範圍的初始設定 由系統管理員在建立使用者時完成,並儲存到一個使用者安全文件(例如:修改useradd和usermod命令,增加ia_userinfo命令來檢視)在使用者登入時,可以指定本次登入shell程序的安全級或預設安全級,但都必須在使用者所指定的安全級範圍之內。
② 客體的安全級:
根據客體的型別、按以下規則標識:
“檔案、有名管道”的安全級 = 建立程序的安全級,且必須等於其父目錄的安全級,儲存在相應的磁碟inode結點和記憶體inode結點中。
“程序、訊息佇列、訊號量集合和共享儲存區”的安全級 = 建立程序的安全級,儲存在記憶體相應的資料索引結構中。
“目錄”的安全級 = 建立程序的安全級,且必須大於或等於其父目錄的安全級,儲存在相應的磁碟inode結點和記憶體inode結點中。
設定客體安全級的命令為setlevel
③ 裝置的安全級:
系統須在裝置安全檔案檔中說明系統中每個裝置的安全屬性,如裝置的最高安全級、最低安全級等。裝置工作時還具有一個當前安全級,為呼叫該裝置的使用者程序、系統程序或系統服務程序的安全級,而且必須在裝置允許的最高安全級和最低安全級範圍之內。
裝置分為單級裝置和多級裝置。
- 單級裝置在某個時刻只能處理單一安全級的資料。這類裝置包括終端和用於某個相應狀態的磁帶機和軟盤驅動器。如果一個裝置用作一個公用資源,那麼它必須是單級裝置。
- 多級裝置可以包含多個安全級資料。這個裝置只能由具有適當特權的程序開啟,這些程序包括核心和系統程序、具有適當特權的管理員程序。磁碟和儲存器裝置就是多級裝置。
通常一個使用者在登入時訪問一個終端裝置,這個使用者將以某個安全級在該終端上進入系統。如果這個安全級不在這個終端所定義的安全級範圍之內,這個登入就會失敗。如果登入成功,這個裝置的安全級就被設定成使用者登入時所使用的安全級。
要使用磁帶或軟盤裝置,或者不是在登入時訪問終端裝置,使用者必須要求管理員分配(allocate)裝置,管理員以某個安全級將此裝置分配給這個使用者。
如果這個安全級不在裝置的安全級範圍之內,這個分配將失敗。
如果成功,使用者就成為這個裝置的所有者(owner),裝置檔案的DAC設定為600,裝置安全級為分配時給定的安全級,並且管理員通知使用者分配成功。如果使用者當前的安全級等於分配的裝置安全級,使用者就可以任意地使用該裝置了。