软件安全设计基本原则软件安全设计原则 (来源:《CISP 培训教材》第 10.2.3 节) 软件的安全设计应该尽量遵循一些安全设计原则,这些原则是软件开发和软件测试中有 关安全经验的高度总结,用于指导安全开发人员(特别是软件架构师和设计师)开发更为安 全的软件。下面是一些基本的安全设计原则。 1)最小特权原则 对于请求存储资源的主体,只应该分配最少的必要权限,而且应该保证赋予权限分配的 必要时间最短。如果授予一个用户或进程、组件超过其行为必要的权限范围的许可,该用户 或进程、组件就有可能获得或修改其没有权限处理的信息。 2)权限分离原则 尽量把软件划分为不同独立的组件,把权限分离成不同的权限许可和认证条件,把用户 分离成不同的权限角色。不要将权限一次性授予给一个用户,而是根据需要提供多重的认证 与检查机制再进行授予。 3)最少共享机制原则 避免多个主体共享同一个资源,因为敏感的信息可能通过相同的机制在这些主体之间共 享导致被其他用户获取。每个主体应该有不同的机制或不同的机制实例,在保证多用户存取 访间的灵活性的同时,防止由单一的共享机制导致潜在违背安全性的行为。 4)完全中立原则 每次主体对资源的请求,系统都应该实行认证和执行检查,特别是和安全相关的内容。 以避免错误的赋予主体过高的权限或者在第一次授予权限之后,主体被攻击之后攻击者 滥用相关权限。为了提高性能,一些系统会缓存主体的权限,这种做法易使系统具有较高的 安全风险。 5)心理可接受度原则 安全机制应该尽可能对用户透明,只引入少量的资源使用障碍,对用户友好,才能在使 用时方便用户的理解和使用,真正起到安全防护的作用。如果安全机制妨碍了资源的可用性 或使得资源难以获取,那么用户很可能会选择关闭这些安全机制或功能。 6)默认故障处理保护原则 当系统失效或产生故障时,必须是以安全的方式来处理系统信息,系统故障处理默认应 该是安全的设置。例如:即使丧失了可用性,也应该保障系统的机密性和完整性;故障发生 时必须阻止未授权的用户获得访问权限;发生故障后,应该不向远程未授权的用户暴露敏感 信息,如错误号和错误信息,服务器信息之类。 7)经济机制原则 复杂性是评估一个系统安全性的重要因素之。如果设计、实现的功能是非常复杂的,那 么系统存在安全漏洞的可能性则大大增加,一些问题在复杂的系统中很难被及时发现。系统 1 的设计和实现应该尽量简单,以降低因复杂性带来的安全问题。 8)不信任原则 开发者应该假定系统环境是不安全的。减少对用户,外部系统,其他组件的信任,对外 部实体所有的输入都需要进行检查,即使对于可信的外部用户输入。另外也不应该信任每次 对函数或系统的调用操作都必然会成功,如内存的分配,因此必须对每次函数或系统的调用 的返回值进行检查,并进行正确的处理。 9)纵深防御原则 软件应该设置多重安全措施,并充分利用操作系统提供的安全防护机制,形成纵深防御 体系,以降低攻击者成功攻击的机率和危害。结合多重安全措施使攻击者要绕过每一个机制 才能达到目的,提高了攻击者的攻击成本和要求,降低了安全危害。 10)保障最弱环节原则 攻击者一般从系统最薄弱的环节发起攻击,而不是针对已经加固的组件。相对于破解一 个数学上已经证明了比较安全的算法,攻击者更喜欢利用软件的安全漏洞。因此软件开发者 必须了解自己软件的薄弱点,针对这些弱点实施更强的安全保护措施。 11)公开设计原则 应该假定政击者有能力获取系统足够的信息来发起攻击,而不是依赖于攻击者不可能知 道来保护系统的安全。如果设计的加密算法存在弱密钥,或者系统设有万能口令,等等,攻 击者通过反汇编分析能够获取这些信息,攻击者还可能是内部被辞退的员工,因此,依赖于 攻击者无法掌握某些特定信息来保护自己的安全是不可靠的。 12)隐私保护原则 系统收集到的用户信息都必须实施妥善和安全的保护。攻击者获得了用户的隐私数据之 后,可以发起进一步针对用户的各种攻击,如:欺骗等,不应该向其他用户泄露用户的隐私 信息。 13)攻击面最小化原则 攻击面(Attack Surface),通常也称受攻击面,是指对一个软件系统可以采取的攻击方 法集合。因为攻击者对软件的攻击是从其暴露在外部的接口、功能、服务和协议等资源来实 施的,通过对每种资源计算其被攻击成功的可能性,并将这些可能性综合归纳,即可以衡量 软件的攻击面大小。可以看出,一个软件的攻击面越大,其安全风险也就越大。 减少攻击面是安全设计中的一个重要步骤,软件设计人员需要仔细评估软件中所有的功 能模块和接口的特性,分析其可能存在的安全风险,并设定相应的限制措施。如果一个功能 /数据接口不是必要的,则应该取消或禁止,或者默认不开启的。如果一个功能/数据接口的 配置没有特殊的理由,默认则应该按安全的方式进行设置。 2

pdf文档 软件安全设计基本原则

安全文档 > 软件开发安全 > > 文档预览
2 页 0 下载 2 浏览 0 评论 0 收藏 3.0分
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
软件安全设计基本原则 第 1 页 软件安全设计基本原则 第 2 页
本文档由 路人甲2022-05-14 19:58:50上传分享
给文档打分
您好可以输入 255 个字符
github5文库的中文名是什么?( 答案:github5 )
评论列表
  • 暂时还没有评论,期待您的金玉良言