软件开发过程的信息安全管理

2019-06-19 09:02:45 9

随着互联网和大数据的不断发展,信息化在社会各行业逐渐崭露头角,信息安全日渐引起人们的重视。而作为信息化实现的中坚力——软件开发,如何做好软件开发过程中的信息安全管理,从而使得开发出的信息化产品更有安全保障,也是信息安全管理中非常重要的一个环节。

软件安全问题的产生

软件安全问题产生的原因是什么?有的是因为开发者缺乏安全开发的动机,有的则是因为开发者缺乏相关知识,还有的是因为缺乏与安全开发的相关工具。软件开发的信息安全管理实现思路是通过在软件开发生命周期各阶段采取必要的、相适应的安全措施来避免绝大多数的安全漏洞。

安全的软件开发模型

随着软件安全开发的日益受到关注,多种模型被各大软件公司和软件专家提出和研究,例如微软提出可信计算安全开发生命周期,GaryMcGraw博士等提出的BSI系列模型,以及OWASPOpenWebApplicationSecurityProject,开放式Web应用程序安全项目)组织提出的CLASP综合的轻量应用安全过程和SAMM软件保证成熟度模型等。其中微软提出的SDLSecurityDevelopmentLifecycle,安全开发生命周期)相对认可度较高,适合大型企业,大型软件的开发。该模型将软件生命周期划分为5+2个阶段,每个阶段有相应必需的安全活动.

安全软件开发过程

首先,在开始软件开发过程之初,开发团队的所有成员都必须接受适当的安全培训,了解相关的安全知识,培训对象包括开发人员、测试人员、项目经理、产品经理等。

(一)软件安全需求分析

在软件需求分析阶段,不仅要考虑系统的功能需求.还要考虑系统的安全,比如不应该做什么。功能需求、安全需求、安全目标要达到平衡,从安全的角度以风险管理为基础,建立“威胁”的分析计划,不仅要从用户的角度出发考虑系统的功能,还应从攻击者的角度出发考虑系统的漏洞。所以,在软件需求分析阶段,需要加入以下的安全方面的考虑:软件提供的安全功能、软件如何安全地与用户交互、安全方面的考虑对软件开发计划的影响、软件的风险评估和威胁模、软件的默认功能配置等等。

(二)软件安全设计

软件系统的每一项需求,都应该在软件安全设计阶段认真考虑,根据安全需求方案确定的安全目标,对初步风险评估确定的控制措施的具体技术实现而进行安全设计。安全概要设计阶段,包括但不限于:安全体系结构设计、各功能块间的处理流程、与其他功能的关系、安全协议设计、安全接口设计等。安全详细设计阶段,作为安全功能的程序设计阶段,应当直接指导安全功能的编码工作。包括但不限于:模块设计、内部处理流程、数据结构、输入/输出项、算法、逻辑流程图等。软件安全设计的核心原则参考如下:如攻击面最小化、基本隐私、权限最小化、默认安全、纵深防御、威胁建模等等。其中威胁建模,微软使用的是STRIDE威胁建模方法,威胁建模建议越早越好,一般在设计阶段进行,流程是,用程序建模(Diagram)、枚举威胁(Identify)、缓解威胁(Mitigate)、验证缓解措施(Validate)

(三)安全编码原则

代码安全编译、代码安全审核、对所有输入数据进行检查、验证及过滤。

软件开发过程中的信息安全管理

那所有软件的开发是不是都必须完整地遵循软件“安全开发”过程呢?答案并不是。软件同其他产品不同,软件产品具有明显的特殊性,软件产品在开发过程中的信息安全管理也更具复杂性。首先,考虑完成该软件开发的整个过程是否达到了一定要求。我们在实践中不断总结,以基于ISO9001标淮,同时吸收CMMI的原则,制定的软件安全开发程序文件和指导书,拟制记录这些流程操作的记录表格模板。软件安全开发过程包含合同评审、采购、项目管理、软件开发、变更控制、设计评审、文档控制、测试控制、不合格品控制、现场安装、售后服务、技术支持、培训管理等等,保证软件开发过程体系有效性的管理评审、内审、文件/记录控制、纠正/预防措施控制等程序文件,从而为安全开发过程的各项操作提供科学合理的指导,以此构成完整严密的安全开发过程保证体系。总之,软件的安全开发,应具体问题具体分析,结合相应的场景,实际的情况,对软件安全开发的过程进行定制裁剪,如可以选择:代码审核+体系结构风险评估,基于风险的安全测试+渗透测试,安全需求分析+滥用案例开发,代码审核+渗透测试,体系结构风险分析+基于风险的测试等等组合方式,有的放矢,综合平衡考虑各影响因子,按需选用。


电话咨询
邮件咨询
在线地图
QQ客服