操作系统安全

  1. 操作系统为什么必须具备安全性?
  2. 安全目标如何被转化为可执行的系统机制?
  3. 安全为何永远是一种动态博弈,而非静态状态?

一、安全的本质:操作系统的信任问题

1. 操作系统在系统中的地位

操作系统是:

因此:一旦操作系统失守,上层所有安全假设都会失效。

安全并非“附加功能”,而是操作系统存在的前提条件之一


二、安全目标层:系统必须守住的三条底线(CIA)

安全目标本质含义系统视角解释
机密性(Confidentiality)数据不被未授权获取谁能读?
完整性(Integrity)数据不被未授权修改谁能改?
可用性(Availability)系统不被恶意阻断谁能让系统停?

这三者并非功能需求,而是:

对操作系统行为的约束条件


三、威胁模型层:安全从“假设攻击者”开始

1. 攻击者能力假设

操作系统安全设计必须首先回答:

没有威胁模型的安全设计是空谈。

2. 攻击类型抽象

分类本质目标
被动攻击获取不应获得的信息
主动攻击改变系统的预期行为

四、可信计算基础:为什么“绝对安全”不存在

1. 可信系统的现实约束

现代操作系统具备:

因此:

不存在“全系统可信”,只能存在“最小可信子集”。

2. 可信计算基(TCB)

TCB 是:

实施安全策略所必需、且必须被完全信任的硬件与软件集合

典型 TCB 组件包括:

设计原则


五、安全模型层:策略如何被形式化

1. 强制访问控制(MAC)的思想

核心思想:

安全策略不属于用户,而属于系统本身。

2. 经典形式化模型

Bell-LaPadula(机密性模型)

解决问题:

Biba(完整性模型)

解决问题:

3. 工程现实

形式化模型:


六、安全机制层:操作系统提供的控制手段

1. 保护域(Protection Domain)

保护域是:

一组(对象 × 权限)的集合

进程运行在某一域中:

核心原则:

最小权限原则(Least Privilege)


2. 访问控制的两种核心实现

访问控制列表(ACL)

权能字(Capability)

这是一个管理性 vs 性能的经典权衡。


七、工程实现层:安全如何落地

1. 内存安全防护

威胁防御机制
缓冲区溢出栈金丝雀
任意代码执行DEP / NX
地址预测ASLR

本质:限制“数据被当作指令执行”的可能性


2. 代码重用与对抗升级

体现:

红皇后效应:不进则退


八、认证与身份体系

认证解决的问题:

你是谁?

授权解决的问题:

你能做什么?

操作系统支持的认证形态:


九、恶意软件:对系统信任链的持续侵蚀

1. 恶意软件的本质分类

类型关键特征
病毒依附宿主传播
蠕虫网络自传播
木马社会工程
Rootkit隐匿自身

2. Rootkit 的危险性

Rootkit 的目标不是破坏系统:

而是成为系统的一部分


十、防御体系:纵深防御而非单点安全

1. 多层安全模型

层级防御手段
网络层防火墙
系统层权限控制
执行层沙盒
行为层IDS

2. 检测与对抗


十一、安全的工程哲学

  1. 安全是系统属性,不是功能
  2. 安全建立在最坏假设之上
  3. 安全机制必须可组合
  4. 安全永远是博弈而非终态
  5. 复杂性本身就是安全风险

十二、总结:操作系统安全的长期视角

操作系统安全不是"防漏洞集合",而是:在资源共享前提下,对信任进行最小化、对权限进行精确定义的系统工程。

它追求的不是绝对安全,而是:

关联内容(自动生成)