文章目录
-
- 一、软件设计与软件安全设计
-
- 1、软件设计的主要工作
- 2、软件安全设计的主要工作
- 二、软件安全设计原则
-
- 1、经典的设计原则
- 2、通用安全设计原则介绍
- 三、软件安全功能设计
-
- 1、应用安全功能设计
- 2、基于安全模式的软件安全设计
- 四、威胁建模
-
- 1、威胁建模的概念
- 2、威胁建模的流程
一、软件设计与软件安全设计
1、软件设计的主要工作
1)总体设计和详细设计
- 总体设计:是指根据需求确定软件和数据的总体框架,包括系统设计过程和结构设计过程。
- 详细设计:是将总体设计的结果进一步详细的分化为软甲的算法标识和数据结构。
2)主要工作
从技术的角度来看软件设计阶段的主要工作包括:软件架构设计、界面接口设计、模块/子系统设计、数据模型设计、过程/算法设计及部署设计等。
2、软件安全设计的主要工作
1)软件安全设计的目的与作用
软件安全设计的目的在于将安全属性设计到软件架构中去,以实现软件产品本质的安全性。
软件安全设计对于软件安全有着举足轻重的作用,大多数软件安全问题都是由于软件设计上的安全性考虑不足或不完整导致的。
2)软件设计与软件安全设计的关系
简单的说,软件安全设计就是将软件的安全需求转化为软件的功能结构 的过程。软件设计通常包括架构设计、接口设计、算法设计等,这意味着软件安全设计也不仅要考虑系统架构及相关安全问题,同时还要考虑如何将安全需求嵌入到开发架构中去与软件融为一个整体,高效的提供安全服务。
3)软件架构的安全性设计
软件的架构通常分为以下三种:
- 逻辑架构:描述软件系统中组件的关系,如用户界面、数据库和外部接口等。
- 物理架构:描述软件组件在硬件上的部署模式。
- 系统架构:说明系统的功能性特征,若可拓展性、可靠性、灵活性等。
二、软件安全设计原则
1、经典的设计原则
1)saltzer和Schroeder提出的安全设计8条原则:
- 经济性
- 默认安全配置
- 完全控制
- 开放设计
- 权限分离
- 最小特权
- 最少共用机制
- 心理可接受
2)John viga 和 Gary Mcgraw总结的10条设计原则
- 保护最弱的一环
- 纵深防御
- 是小安全
- 最小特权
- 权限分离
- 保持简单
- 保护隐私
- 隐藏信息书困难的
- 不轻信
- 使用 区资源
…
2、通用安全设计原则介绍
- 减少攻击面原则
- 最小授权原则
- 权限分离原则
- 纵深防御原则
- 完全控制原则
- 默认安全配置原则
- 开放设计原则
- 保护最弱一环原则
- 最少共用机制原则
- 安全机制心理可接受原则
- 平衡安全设计原则
三、软件安全功能设计
1、应用安全功能设计
- 身份认证:一次性口令、动态口令认证,用户名加口令认证,证书认证
- 授权:限制用户对资源的访问、对未经授权的用户拒绝访问,同意的访问控制机制,设计后天管理控制方案等
- 配置管理:确保配置存储的安全,应使用最小特权进程和服务账户,确保管理界面的安全,避免调用系统低层资源,应单独分配管理特权。
- 会话管理:登录后建立新的会话,确保会话数据安全,确保会话数据传输安全,应及时终止会话,应设计合理的会话存货时间,避免跨站请求伪造。
- 参数操作:避免使用包含敏感词汇的查询参数,加密查询字符串参数,不信任任何HTTP头,确保用户没有绕过检查。
- 异常管理:使用结构化的异常处理机制,使用通用错误信息
2、基于安全模式的软件安全设计
安全模式展示:
安全模式名称 | 目的 | 关注点 |
---|---|---|
认证器 | 验证试图访问系统的主题是否是其所声称的身份 | 用户或系统鉴别 |
基于角色的访问控制 | 描述如何基于人的任务分配功能与权限 | 访问控制 |
安全的“模型-试图-控制器” | 利用配置了MVC模式的系统,为用户之间的交互增加交互安全 | 系统交互 |
传输层安全虚拟专用 | 应用隧道与加密技术建立安全通道,每个端点都需要鉴别与访问控制 | 安全通信 |
安全日志与审计 | 对用户行为进行记录,并对该日志进行分析 | 审计 |
基于安全模式的设计方法:
1)风险确定阶段:
该阶段主要有两个工作,识别风险与评估风险。通过对业务需求、用户需求及安全需求等的分析,利用历史威胁记录及经验没最终实现系统都是安全架构。
2)系统安全架构阶段:
该阶段对风险进行消解,并对解决方案进行评估。在此基础上构建系统的高层架构图。主要工作包括浏览模式库、选择安全模式、评估安全模式和建立系统高层架构。
3)系统设计细化阶段:
该阶段的主要工作包括构架业务类图、实例化安全模式,以及整合系统并适当重构。
四、威胁建模
1、威胁建模的概念
1)什么是威胁建模
通过抽象的概念模型对影响软件系统的威胁进行系统的评估与认识。
2)为什么要威胁建模
- 在早期发现安全风险
- 理解安全需求
- 设计和交付更安全的产品
- 解决其他技术无法解决的问题
2、威胁建模的流程
1)确立安全目标
确立安全目标包括确立软件系统设计的资产,以及围绕这些资产的业务目标和安全目标。
2)创建应用程序概况图
主要目的是分析应用程序的功能、体系结构、物理部署配置以及构成解决方案的技术 。
3)分解应用程序
主要目的是通过分解应用程序的结构来确认信任边界、数据流、数据入口点和数据出口点。
4)确定威胁
确定肯影响到应用程序和危及安全目标的威胁的最大难题是系统性和全面性,特别是对于一些不断变化的技术和发展中的攻击技术,没有一种方法能够识别复杂软件产品中的所有威胁。所以,在这一个步骤中,需要执行的是确定常见威胁,以及深入的分析其他可能威胁。
5)威胁评估
常见的评估方法由Delphi排序、平均排序、以及概率*影响因子排序
6)确定威胁缓解计划或策略
常见威胁的缓解措施:
威胁 | 缓解措施 |
---|---|
假冒 | 验证主体:windows身份认证、Kerberos身份验证、PKI系统、IPsec、数字签名等 |
篡改 | 数字签名、消息认证、完整性控制等 |
否认 | 强身份验证、安全日志审计、数字签名、时间戳等 |
信息泄露 | 加密、访问控制 |
拒绝服务 | 访问列表控制、授权、高可用性设计 |
权限提升 | 访问列表控制、权限、输入验证等 |
7)验证威胁
验证的内容包括威胁模型、列举的缓解措施等。其目的是说明列举出威胁如何进行攻击、攻击的内容和以及缓解措施。
8)威胁建档
威胁建档可以迭代使用,需要在整个生命周期中对威胁模型中已经识别的威胁实施适当的控制。威胁建模也需要更新。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!