第 31 集:计算机安全
1. 保密性, 完整性, 可用性 Secrecy, Integrity, Availability
计算机为了安全,要实现三性
保密性:只有有权限的人,才能读取计算机系统和数据
完整性:只有有权限的人,才能使用和修改系统和数据
可用性:有权限的人,可以随时访问计算机系统和数据
2.Threat Model 威胁模型
为了实现这三个目标,安全专家会从 \N 抽象层面想象”敌人”可能是谁,这叫”威胁模型分析”,模型会对攻击者有个大致描述:\N 能力如何,目标可能是什么,可能用什么手段,攻击手段又叫”攻击矢量”,“威胁模型分析”让你能为特定情境做准备,不被可能的攻击手段数量所淹没。
很多安全问题可以总结成两个:
你是谁?你能访问什么?
3.身份验证 (Authentication) 的三种方式:
What you know, 你知道什么 ex、用户名和密码
What you have, 你有什么
What you are, 你是什么
4.访问控制 Access Control
Bell LaPadula model 不能向上读取,不能向下写入
5.安全内核
安全内核应该有一组尽可能少的操作系统软件,和尽量少的代码。
6.独立安全检查和质量验证
最有效的验证手段
7.隔离 Isolation, 沙盒 Sandbox
优秀的开发人员,应该计划当程序被攻破后,\N如何限制损害,控制损害的最大程度,并且不让它危害到计算机上其他东西,这叫”隔离”。要实现隔离,我们可以”沙盒”程序,这好比把生气的小孩放在沙箱里,他们只能摧毁自己的沙堡,不会影响到其他孩子,方法是给每个程序独有的内存块,其他程序不能动。一台计算机可以运行多个虚拟机,如果一个程序出错,最糟糕的情况是它自己崩溃,或者搞坏它处于的虚拟机。