跳转至

第 1 周

软件安全的攻击与防御

攻击演化:

  • 攻击难度指数级增加:复杂性上升,隐蔽性上升
  • 控制能力缩小

防护演化:

  • 软件到硬件上的
  • 学术界原型到产业界实用的
  • 相比攻击肯定有滞后性

安保(Security)和安全(Safety)

安保(Security)是对于有意的打击的防御力;安全(Safety)是对于随机发生的事故的防御力。

在这里,我们关注前面一个。之后说到安全的话,也会是 Security 的意思。

什么是安全(Security)

  • 保密性:攻击者无法拿到要保密的数据。
  • 完整性:攻击者无法修改要保护的数据。
  • 可用性:攻击者无法打断或者阻碍别人对这个数据的合理访问。

对手 Adversary

对手是个(假想的或者实际存在的)尝试攻击系统的实体。

信任模型 Trust Model

你信任你的编译器吗?

可信计算基础 Trusted Computing Base,TCB

指为实现计算机系统安全保护的所有安全保护机制的集合。

英特尔的 x86 上有一种叫做权限 rings 的东西:Ring 0 是内核,Ring 1 和 Ring 2 是驱动,而 Ring 3 是应用程序。这是用来进行访问控制的;一般用户常见的是 Ring 0(内核态)和 Ring 3(用户态)。

威胁模型 Threat Model

威胁模型可以识别和枚举潜在的威胁。

安全政策(CIA 模型)

  • 保密性:只有有权限的人才能访问数据。
  • 完整性:存储在系统的数据是正确的。
  • 可用性:“用户说要有服务,于是就有了服务。”

AAA

不是天青刺客联盟。

  • 验证 Authentication:你是谁?
  • 授权 Authorization:你能干什么?
  • 审计 Audit / Provenance:我要怎么限制你?

验证

有三种主流的思想:

  • 你知道的东西——用户名和密码
  • 你到底是谁——生物特征
  • 你有什么——二次验证、密钥卡、……

授权

自主访问控制 Discretionary Access Control,DAC

foo bar baz
user rwx rw rw
group rx r r
other rx r