[摘要] 本文分別從靜態和動態兩個方面深層次剖析了控制策略,主要從動態控制方法主要從執行和編譯兩個方面分析,尤其深層次研究了基于執行機制的隱式信息流問題,提出利用棧和隊列把隱式轉換為顯式信息流策略,提出了鏈隊列的思想。
[關鍵詞] 訪問控制 靜態策略 動態策略 隱式信息流
一、靜態的訪問控制策略
1.訪問控制矩陣
最經典的描述保護系統的方法是訪問控制矩陣,它也是計算機安全中的最基本的抽象表示方法。如下圖
2.訪問控制表
將訪問控制矩陣中所有客體所代表的列存儲下來就構成了訪問控制表。這樣每一個客體就與一個序對的集合相關聯,而每一序對包含一個主體和一個權限的集合,指定的主體就可以使用這些權限來訪問相關聯的客體。則圖對應的訪問控制表為:
acl(file1)={(process1,rwo),(process2 ,a)}
acl(file2)={(process1,r),(process2,ro)}
acl(process1)={(process1,rweo),(process2,r)}
acl(process2)={(process1,w),(process2,rweo)}
3.能力表
概念上能力表就像訪問控制矩陣的行。每一個主體都與一個序對集合關聯,每一序對都包含一個客體一個權限集合。與此表關聯的主體能夠根據序對中指示的權限訪問序對中的客體。如圖1中對應的能力表為:
cap(process1)={(file1,rwo),(file2,r),(process1,rweo),(process2,w)}
cap(process2)={(file1,a),(file2,ro),(process1,r),(process2,rweo)}
靜態訪問控制策略還有鎖與鑰匙和基于環的訪問控制兩種方法。
二、動態訪問控制策略中的信息流控制
1.基于編譯器的機制
基于編譯器的機制目的是檢驗程序中的信息流是否經過授權。
2.基于執行的機制
基于執行的機制的目標是防止信息流違反安全策略。假設賦值語句If x=1theny:=a 的顯式安全驗證條件是x≤y,則當x≠1時,而x=high而y=low的情況下就會導致信息從x流向了y,造成了隱式安全信息流的發生即沒有判斷出x≠1是不符合信息流策略的。解決的方法是引入程序計數器(pc)。
3.基于棧和隊列的機制——隱式信息流解決方法
定義五種指令含義:
(1)x:=x+1 等價于if pc ≤x then x:=x+1;else skip
(2)條件語句
if x=0 then goto n else x:=x-1等價于
if x=0 then {push(pc,pc),pc:=lub(pc,x);pc:=n;}
else{if pc≤x then {x:=x-1;} else skip}
(3)return 語句相當于pop(pc,pc)返回給最后一個if語句之后的那個語句。
(4)分支語句
if’x=0 then goto n else x:=x-1等價于
if x=0 then { if x≤pcthen {pc:=n;} else skip }
else{ if pc≤x then {x:=x-1;} else skip }
①棧與程序
push(x,x)表示將變量x及安全類型 x壓入棧中,而pop(x,x)表示從程序棧中彈出棧頂數據及安全類型。
根據以上的規則下列程序假設x=1,y=0,z=0在下列程序中用棧的形式來表示出來如下表,以達到把隱式信息流轉變成顯式信息流的目的。
②鏈隊列與程序
同樣可以用鏈隊列的形式表示出來。把每一個元素分為三部分:變量和安全級別以及指針。同樣假設x=1,y=0,z=0。初始隊列由x、y、z、pc組成,隨著程序的運行把元素和安全類別插入隊列中,pc的變化只跟程序分支有關系,即程序的分支對pc賦值。每當隊列中插入或者刪除元素時都要判定pc的安全級別。刪除的元素變量參與運算。
參考文獻:
[1](美)S.巴斯朱洪譯:計算機算法:設計和分析引論.上海:復旦大學出版社,1985
[2]嚴蔚敏吳偉民:數據結構.北京:清華大學出版社,2002,2
[3](美)MattBishop:計算機安全學—安全的藝術與科學.王立斌譯.北京:電子工業出版社,2005