第 3 章:MAC 和完整性保护¶
多层安全 Multi-Level Security¶
用户、角色和主体有自己的安全许可证(security clearances),客体有安全等级(security classifications)。一种安全等级的划分如下:
- Top Secret
- Secret
- Confidential
- Unclassified
用户、主体和客体都拥有自己的等级。高等级的客体不会被低等级的东西碰到。
强制访问控制 Mandatory Access Control¶
DAC:自主访问控制。主体可以将资源、操作的权限授予其他主体。DAC 的数据存取权限由用户控制,系统无法控制;MAC 安全等级由系统控制,用户不能直接进行控制。
强制访问控制:主体和对象各自具有一组安全属性。每当主体尝试访问对象时,都会由操作系统内核强制施行授权规则——检查安全属性并决定是否可进行访问。
任何主体对任何对象的任何操作都将根据一组授权规则(也称策略)进行测试,决定是否允许操作。
安全模型¶
- 系统模型
- 安全政策:对于某个系统的安全需求
系统模型 + 安全政策 = 安全模型
机密性模型:BLP 模型(上读下写政策)¶
- 一般情况:S 可以读 O 当且仅当 L_m(S) >= L(O)。
- 对于一个没有被信任的 S,
- S 可以读 O 当且仅当 L_c(S) >= L(O);
- S 可以写 O 当且仅当 L_c(S) <= L(O),也就是高不能往低写,因为这样的话高机密性的人写出来的高机密性的东西就会流到低机密性的地方,这不能确保机密性。
完整性模型:Biba 模型¶
相对于机密性,我们有时候需要关注数据的完整性。数据完整性(数据可靠性)的意思是数据不能有未被监测的修改。
数据完整性:数据未被未授权篡改或损坏。
系统完整性:系统未被非授权操控,按既定的程序运行。
- Tier 1:不能被修改。
- Tier 2:只能通过一点点接口进行修改,比如 sudoers 文件。
- Tier 3:可以被一些有权限的程序修改。
- Tier 4:可以被已经登录的用户修改。
严格完整性政策¶
感觉就是 BLP 模型反过来。
- S 可以读 O 当且仅当 L_c(S) <= L(O),阻止受污染数据的间接破坏;
- S 可以写 O 当且仅当 L_c(S) >= L(O)。
低水位三政策¶
主体低水位政策(Subject Low-Water Mark Policy)修改用户的权限。
- 如果某个 S 读了个 O,那么之后 i(S) = min(i(S), i(O))。
- S 可以写 O 当且仅当 i(S) >= i(O)。
客体低水位标记政策(Object Low-Water Mark Policy)修改文件的权限。
- S 可以读 O 当且仅当 i(S) <= i(O)。
- 如果某个 S 写了 O,那么 i(O) = min(i(O), i(S))。
低水位标记完整性审计政策(Low-Water Mark Integrity Audit Policy)是上面两者的合并。
- 如果某个 S 读了个 O,那么 i(S) = min(i(S), i(O))。
- 如果某个 S 写了 O,那么 i(O) = min(i(O), i(S))。
无论主体或客体,只要被低等级信息所污染,就会自动降低其完整性级别。它可以追踪污染,但不防止污染。
环政策¶
- 所有文件都可读。
- S 可以读 O 当且仅当 i(S) >= i(O)。
它对完整性的保证度不高,但提高了系统灵活性。
客体完整性等级¶
客体完整性的等级可能和这些因素相关:
- 信息的质量:是“值得信赖”程度的衡量。不要污染。
- 信息的重要程度:是“信任”程度的衡量。不要无权限写。
“信任”和“信赖”¶
一个组成部分是“信任”的,是指:
- 系统的安全受它所保护。
- 如果其中的组成部分挂掉,可能会毁掉安全政策。
- 按照它在系统中的职责来判断。
一个组成部分是“信赖”的,是指:
- 它应该被信任。
- 按照它的内在属性来判断。
机密性和完整性¶
机密性 | 完整性 |
---|---|
限制读操作 | 限制写操作 |
机密性如果未读取机密信息,则保留 | 完整性如果未更改重要信息,则保留 |
机密性不需要信任,你读完了控制你的写就可以让把秘密控制住 | 完整性需要信任,因为没法控制你写什么 |
机密性控制读写权限就够了 | 完整性控制读写权限依然不够 |
Windows 的完整性保护措施¶
(从 Vista 开始)
- 有四种完整性等级:Low、Medium、High 和 System。
- 每个进程有一个完整性等级,限制了它可以取的资源。
- 一般用户的进程是 Medium 等级,提升后的权限是 High。
- 某些代码,比如保护模式下的 IE,是 Low 等级。
- 采用环政策:读写都不会改变等级。
两个高级的保证数据完整性的机制¶
- 格式良好的交互:用户不能任意地管理数据。
- 职责分离(SOD)。
为了实现这两个机制,需要做到:
- 控制对数据和程序的访问。
- 程序的证书。
- 管制型行政。