一种集成安全测试的软件设计方法.doc
一种集成安全测试的软件设计方法
作者:于晗
来源:《信息安全与技术》2013年第05期
【 摘 要 】 文章提出了一种集成安全测试的软件设计方法以及如何在设计阶段增强软件的安全性。使用DFD 可以把软件内部实现划分可信模块和非可信模块,构造新的安全构造型标识非可信模块,设计安全关键类,分解安全测试用例,加入关键类的安全单元测试,并验证安全模式的有效性。
【 关键词 】 安全测试;软件设计;统一建模语言;安全模式
1 引言
随着信息技术的快速发展,计算机网络及信息系统广泛地应用于政府机关、军事部门、商业企业等各个领域,极大地改善了人们的生产条件和生活水平,深刻改变并持续地影响着人们对未来的认识。与此同时,非法访问、恶意攻击、信息窃取、木马病毒等各种针对计算机网络和信息系统的攻击手段层出不穷,给各行各业造成了巨大的损失。其中,由于软件脆弱性原因而导致的重大安全事件屡见不鲜。软件脆弱性是指在软件的需求分析、设计、编码和运行期间存在的漏洞,利用该漏洞可能危害系统的安全。经验证明,防止软件脆弱性的最佳实践就是在软件的设计阶段引入安全设计,将安全特性应用在软件的每一个方面,而不是在事后作为补救措施来添加安全特性。
传统意义上的软件开发更关注软件设计上是否满足功能、性能和操作等业务需求,忽略甚至无视软件的安全需求,从而导致软件存在可以被攻击者非法利用的安全隐患。因此,本文提出一种以安全模式为基础,通过扩展统一建模语言支持安全测试的软件设计方法。 2 相关概念
2.1 UML的扩展机制
统一建模语言(Unified Modeling Language, UML)是一种通用的可视化建模语言,适用于软件生命周期的各个阶段。尽管UML 已经提供了丰富的建模元素和符号,可满足大多数情况下对软件的建模需要,但缺少必要的对软件进行安全建模的要素。使用UML 的profile 应用扩展机制自定义安全特性要素可实现软件安全特定领域建模。
2.2 安全模式
在信息安全领域公认原则是,使用标准的、经过长期时间检验的解决方案来保证软件在其生命周期内安全、有效和稳定地运行。安全模式描述了在特定场景下重复发生的问题,并为这些问题提供了经过实践被证明是安全的通用解决方案。
3 集成安全测试的软件开发方法
开发人员在软件设计阶段就要时刻有安全观念,考虑软件安全需求,定义软件安全目标,了解网络常用攻击技术、方法及应对措施,对软件面临的安全威胁进行建模,编写满足安全目标的测试用例,引入安全模式进行软件架构设计并评审,及早发现安全问题。
3.1 需求分析
一般情况下,在软件需求分析阶段,软件设计人员最常见的一种错误就是只注重软件的业务需求,往往忽略了软件的安全需求。“安全的软件开发生命周期(SDL )”描绘了一种结构化的方法,用以贯彻和实现软件的安全开发。遵守SDL ,安全问题可以在软件生命周期的早期得以评估和解决。
在软件需求分析阶段,除了功能、性能、操作等需求外,设计者还要考虑几个问题。
1) 安全需求和原则
在需求分析阶段,设计者就必须考虑安全原则及规则,创建一份系统范围的规范,编写系统涉及到的安全需求。安全需求可能是明确的(包含在业务需求内),也可能是模糊的、含混的甚至是没有说明的。OWASP (开放式Web 应用程序安全计划组织)制定了一些安全标准和指南用以指导软件设计者遵循安全设计原则来开发软件。据此,设计者可以对软件的安全性做出概要说明,阐述软件在所设计的运行环境中面临的安全威胁有哪些。
2) 安全目标
安全目标是指为使软件在所设计的运行环境中能够有效运行,防止、缓解外部攻击对系统可能造成的危害而采取的措施和必须达到的要求。安全目标的制定可以减少软件的“特性蔓延”,防止添加不必要的特性而导致软件脆弱性的出现。安全目标与需求相关。对于明确的安全需求,
3) 威胁模型
威胁模型的基本观点是,如果不对系统所面临的威胁进行评估,以及采取措施降低威胁风险,那么就无法建立起安全的系统。威胁模型有助于设计者更好地理解所开发的系统,发现较高层次的设计问题,判断出系统最具风险的“安全关键点”,确定系统的风险区域和采取的技术手段。
4) 安全策略
为了防止、缓解威胁模型所描述的系统威胁,必须制定系统的安全策略,采用必要的安全技术和手段。安全模式描述了在特定场景下重复发生的问题,并为这些问题提供了经过实践被