Skip to content

安全设计原则

时间:2023年3月28日 星期二

作者:小王

一、对象和主体

一个终端访问一个web服务,此时会有两个小过程:用户→web→数据库

1.终端访问web服务,请求相关数据;(终端是主体、web服务是对象)

2.web服务访问数据库,并将数据返回给终端。(web服务是主体、数据库是对象)

终端是没有权利直接访问数据库的,但是通过web服务可以获取到数据库数据,这就是信任传递(transitive trust),需要关注这类风险。

二、封闭和开放系统

1.封闭系统

标准是专有的,不易集成其他系统,但是相对安全,例如AppStore。

2.开放系统

标准是公开的,易集成其他系统,但更容易遭受攻击,例如API。

3.开源系统

指代码公开,大家可以白嫖并不断改善系统,如开源项目社区,大家群策群力,例如github项目。

4.闭源系统

指代码隐藏,开发商可以卖钱获得商业价值,需要依靠开发商进行维护。COTSD(商用成品)

三、安全缺省(Secure Defaults)

通常产品的默认配置都是不安全的,但这样方便产品的快速部署。现在许多产品也支持默认配置是安全的,但一些人会认为安全缺省是阻碍,因此需要平衡默认配置的可用性和安全性。

四、故障安全(Fail Securely)

系统运行中会出现故障,系统或环境如何处理故障非常重要,最理想的结果是故障安全(Fail Securely),如编程中的异常处理。还有一些易混概念需要注意:

1.故障弱化(fail-soft)

指允许系统在组件发生故障后继续运行,如操作系统一个APP挂了,其他APP都正常运行。

2.故障安全(fail-secure

区分英文单词

故障安全系统优先考虑资产的物理安全,而不是任何其他因素,如有人物理入侵银行金库,则门禁需要自带关闭并锁定。

3.故障安全(fail-safe

safe向人靠

当系统故障能够影响物理世界时,则需要考虑人类生命安全的优先级,这种人类保护优先顺序被称为故障安全,如火灾时门禁自动打开。

4.故障开放(fail-open)

当系统故障需要保障可用性时称为故障开放,如防火墙的bypass功能。

5.故障关闭(fail-closed)

当系统故障需要保障机密性时称为故障关闭,如防火墙不再转发流量。

物理世界的上下文中,术语fail-open是fail-safe的同义词,fail-closed是fail-secure的同义词。在数字世界的上下文中,fail-safe、fail-secure、fail-closed是同义词。

五、保持简单(Keep it simple)

也被称为KISS原则,鼓励避免环境、组织或产品设计过于复杂。系统越复杂,安全就越困难。还有许多其他具有类似或相关重点的概念,例如:

1.不要重复自己(DRY)

通过不在多个地方重复相同的代码来消除软件中的冗余。

2.计算简化(Computing Minimalism)

精心设计代码,以便尽可能少地使用必要的硬件和软件资源。

3.最小能力规则(Rule of Least Power)

使用适合所需解决方案的能力最小的编程语言。

4.越差越好(Worse Is Better)

软件功能越少,安全性越高。

5.你不需要他(YAGNI)

程序员不应该在实际需要之前添加功能和函数。

六、零信任(Zero Trust)

通常认为内部网络是安全的,外部网络是不安全的,更多地关注边界安全。但新技术的发展(如云计算、物联网等),安全边界变得越来越模糊。因此,零信任概念被提出,组织内部的任何内容都不会自动受到信任,即绝不信任、始终验证

零信任通过微隔离(microsegmentation)和加强最小特权原则来实现。微隔离是将内部网络划分为多个子区域。每个区域通过内部分段防火墙(ISFW)、子网或VLAN与其他区域分开。区域可以小到单个设备,例如高价值服务器,甚至客户端或端点设备。区域之间的任何和所有通信都经过过滤,可能需要进行身份验证,通常需要会话加密,并且可能受到允许列表和阻止列表控制。

零信任解决方案通常是非常大的,包括但不限于内部分段防火墙(ISFW)、多因素身份验证(MFA)、身份和访问管理(IAM)以及下一代终端安全。只有实现了持续验证和监视用户活动的方法,安全管理的零信任方法才能成功。

七、设计隐私(Privacy by Design,PbD)

在早期设计阶段将隐私保护集成到产品中,而不是试图在开发结束时将其附加到产品中的指导原则。

PbD七项原则:

安全左移,尽早开始

1.主动而非被动;预防而非补救(Proactive not reactive; preventive not remedia)

2.默认隐私(Privacy as the default)

3.隐私融入设计(Privacy embedded into design)

4.全功能–正和而非零和(Full functionality – positive-sum, not zero-sum)

5.端对端安全—全生命周期保护(End-to-end security – full lifecycle protection)

6.可见性和透明性(Visibility and transparency)

7.尊重用户隐私(Respect for user privacy)

八、信任但验证(Trust but Verify)

信任但验证指的是经过一次验证后就对其信任,如内网通常都被认为是安全的。该方法使组织容易受到内部攻击,并使入侵者能够轻松地在内部系统之间执行横向移动。该模型已被认为是过时的,大多数安全专家现在建议围绕零信任模型设计组织安全。

九、确保CIA的技术

以下概念不仅可用于数字世界,也可用于物理世界。

1.限制(confinement)

约束进程的手段,进程只能访问分配给自己的内存空间(偏动词)。

2.界限(bound)

限制访问的内存边界即是界限(偏名词)。

3.隔离(isolation)

限制进程只能在某内存空间活动的状态称为隔离(一种状态)。

4.访问控制

高频知识点,详见域5。

5.信任和保证

信任是安全机制、功能或能力的存在。保证是对满足安全需求的信心程度