思维导图:
1.6 基本安全设计准则笔记
目标:理解和遵循一套广泛认可的安全设计准则,以指导保护机制的开发。
主要准则:
- 机制的经济性:安全机制应设计得简单、短小,便于测试和验证,减少漏洞和降低维护难度。
- 故障安全默认:默认应该是无访问权限,只有在核实条件满足时才允许访问。出现错误时更容易发现。
- 完整的监察:每个访问都要检查,不依赖缓存决策。例如,每次访问文件或数据库时,都需要执行访问控制。
- 开放的设计:安全机制的设计应公开,密钥保密,加密算法公开,增加用户对算法的信任。
- 权限分离:访问受限资源时需要多个权限属性。例如,多因素用户认证。
- 最小权限:执行任务所需的最小权限集。例如,基于角色的访问控制。
讨论点:
- 设计的简化性是关键,但在现实中可能是最难实现的,因为系统不断演进和添加新特性。
- 故障安全默认值在多数文件访问系统和客户端/服务器系统中得到实现。
- 在完整的监察准则中,资源密集型的监察方法很少使用。
- 加密算法的开放性是建立其可靠性和信任的关键。
- 权限分离和最小权限可以有效地减少潜在的损害和风险。
我的理解:
-
机制的经济性:这个准则强调的是“简洁是美”。一个简单而直接的设计更容易被测试、验证和理解。复杂的设计提供了更多的缝隙和可能性供攻击者寻找和利用弱点。
-
故障安全默认:这个概念建议采取一种“宁可错杀一千,不可放过一个”的策略。默认情况下,应拒绝所有访问请求,除非它们经过明确的验证和授权。
-
完整的监察:这意味着安全系统不应偷懒。每次资源访问请求都应该经过验证,而不是仅依赖于之前的决策或缓存结果。
-
开放的设计:安全不应该依赖于秘密的设计或实现,而是应该依赖于秘密的数据,如密钥。通过公开设计,可以让整个社区参与到评估和改进的过程中。
-
权限分离:这是一个多重验证的概念。要访问某些特定的资源或执行某些操作,可能需要满足多个条件或具有多个授权。
-
最小权限:这是“给予必要、拒绝多余”的概念。用户或程序只应该获得完成其任务所需的最小权限,这样即使出现安全问题,破坏也会最小化。
主要概念:
-
最低权限原则:
- 为角色分配仅完成其功能所需的最低权限。
- 只有在显式获得权限后才能访问资源。
- 权限应根据时间限制进行调整。例如,系统管理员在执行普通任务时应收回特殊权限。
-
最小共同机制准则:
- 尽量减少不同用户之间共享的功能。
- 目标是减少非预期的通信路径和所有用户依赖的硬件和软件数量。
-
心理接受度准则:
- 安全机制应尽量对用户透明。
- 如果安全机制过于复杂或妨碍资源的使用,用户可能关闭它。
-
隔离准则:
- 公共访问系统应与关键资源隔离。
- 用户的进程和文件也应被隔离。
- 安全机制自身也应隔离,以防止未经授权的访问。
-
密封准则:
- 类似面向对象编程的封装,集合数据和过程来提供保护。
-
模块化准则:
- 安全功能应作为独立的模块开发。
- 公共的安全函数与服务应当作公共模块提供。
-
分层准则:
- 使用多层叠加的保护方法。
- 即使其中一层失败,整个系统依然受到保护。
-
最小意外准则:
- 接口应使意外事故的处理响应最小化。
- 安全机制应对用户透明,让用户能理解其工作方式。