软件安全开发技术研究和实施

时间:2022-07-22 04:35:40

软件安全开发技术研究和实施

一、引言

随着信息社会的飞速发展,人们对软件的依赖已不可小视,尤其是软件不仅为人们带来了许多便利的同时,也对人们的生活方式带来了巨大改变。在我们生活中,数字视频、音乐、电子游戏等娱乐方式已经得到普及,而其和交通、通讯和医疗保健的联系也是非常普遍。因为软件在当前和人类有着不同以往的关系,因此,软件的安全问题更加应该引起重视,因此,下文本文将从软件安全开发的关键技术等方面展开探讨。

二、当前软件所面临的威胁

通过对软件产品所面临的安全威胁研究所知,当前严重威胁着软件安全威胁因素主要有两个方面:一方面是对软件产品的破解、非法传播和使用,而另一方面则来自于攻击者针对软件产品自身的安全漏洞进行的攻击。这两者中,无论是来自哪一方面的威胁,都将给企业带来巨大的损失。

(一)版权保护

通俗来说,版权保护问题也即是软件盗版的问题,它涉及到软件的非授权使用和非授权复制等两个主要方面。我们都知道,软件经常会带来很大的经济、社会效益,因此,它的价值就不言而喻,而这种高价值、低成本、易复制的特性,使得其非常容易受到攻击,当前,这种问题显得愈发突出了。

(二)安全漏洞

互联网的普及,使得网络服务越来越便利,尤其是随着云计算的概念的提出,用户更是享受到了前所未有的便捷,对于用户来说,也许仅仅需要安装一个浏览器,就可以享受到诸如娱乐和购物等多方面服务。但是在这种便利的背后,软件服务的漏洞却也存在着,对于数据的篡改、窃取等现象时有发生,甚至给用户或服务商带来巨大损失。

三、软件安全开发的关键技术分析

针对软件安全开发存在的问题,本文首先对其中涉及的关键技术进行分析:

(一)软件安全开发流程技术

当前,许多软件开发商都没有具备在软件构建中就采取足够的安全意识,他们往往将重心放在后期对软件的安全修复上,这是不可取的。由于软件的其他业务更容易获取利润,因此他们的重心有所偏离。本文经过笔者分析,要改变这种状态,使软件的安全性达到较高的水平,就应该将安全性纳入整个软件开发生命周期中来进行考虑。本文所采用的软件开发流程如下图1所示,在这个流程中,大致有五个阶段:(1)设计阶段;(2)编码阶段;(3)测试阶段;(4)阶段;(5)维护阶段。容易看出,在这个流程中,随着项目的进展,所有工作的核心都是以安全为主线,并且也可以和螺旋模型、瀑布模型等许多软件开发模型得到很好结合。因此,在软件生命周期中,几乎每一个阶段都会有不同的行为来提高软件系统的安全性能。图1基于改进的软件安全开发流程

(二)动态软件水印技术

当前,软件的知识产权保护成为人们原来越关注的一个焦点问题,尤其是随着互联网技术的迅猛发展,带宽的提高和各种资源分享技术的成熟,软件的传播也得到了极大便利,其带来的非授权现象也变成了非常常见的现象。传统对软件知识产权保护的方法主要加密狗保护、加密、加壳等方法,这些方法虽然也可以有效地防止软件被破解,但是实践证明,这些方法对软件的保护并不是长期有效的,在各种利益的驱使下,黑客等人员对软件的破解只是时间而已。因此,随着软件技术的发展,另一种方法被提了出来,这就是动态水印技术。动态水印技术并不直接对软件进行保护,它的工作原理是将开发商的诸如版权保护信息、身份认证信息等隐藏到软件产品中,这种信息是不容易被察觉到的,而这种信息又可以标识作者、所有者、发行者等信息,当提取出来以后,可以有效地对产品进行鉴定。实践证明,这种动态软件水印技术可以有效地达到保护软件产品的目的。

(三)软件静态源代码分析技术

随着网络技术的发展,随之而来的是越来越多的软件安全漏洞问题,对于广大用户和开发商来说,软件漏洞的发现实属不易,那么有没有什么方法可以有效查找到软件的漏洞呢?在这种情况下,就出现了软件静态源代码分析技术。所谓软件静态源代码分析技术,其在当前也是一个比较成熟的安全漏洞检测技术。其工作原理为待检测软件产品不必运行,而只需要对软件的源代码进行检查和分析,这包括源代码的结构、文法、接口等,最后生成软件的安全性检测报告的过程。软件静态源代码分析技术由于其一系列优点被广泛应用:(1)对源码分析的速度比较快;(2)有着比较高的自动化程度;(3)同时也可以对无穷状态系统进行检测。当然,传统的静态源代码分析技术也存在着诸如要耗费大量精力对大量的检测结果进行分析、对发现的漏洞的问题进行修复等不足。基于此,笔者提出了一种基于对类进行度量来对静态分析工具的扫描结果进行优先级排序的算法,可以有效地解决这个问题。

四、软件安全开发管理平台的设计和实现

当前软件的开发商中中小企业占有相当的比例,因此,本文基于中小企业的软件开发提出一种有效的安全开发流程,并对其实现进行了相关探讨,其总体架构如图2所示,在以下整体架构中结合了上文提出的各种技术等。下文将对这些模块进行详细介绍:

1.软件安全开发管理平台:为了能够使简化后的软件安全开发流程被更好的应用到企业软件项目开发的过程中去,本文针对该模型设计并实现了一个软件安全开发管理平台用于辅助软件安全开发流程的实施。该平台可以有效达到在资源较为有限的情况下,在软件开发过程中尽早发现安全问题并进行修复,降低安全成本,提高软件产品安全性的目的。

2.项目管理:在这个模块中所涉及的人员主要是项目的管理人员等,其主要包括项目经理等。其可以对软件项目的信息进行维护,对项目的阶段进行控制,并能够对软件项目的安全状况进行整体把握。

3.安全开发管理:这一部分是核心部分。在这一模块中会按照软件开发项目所处的阶段,按照软件安全开发流程提供各种安全措施,其中有能够自动完成的措施也有需要人工完成的部分,这一模块所面向的使用人员和软件开发项目所处的阶段有关。它主要包括以下阶段:设计阶段:设计阶段是项目的最初状态,需要在这一阶段完成对软件项目的风险评估等内容。编码阶段:在这一阶段中,就用到了上文中提出的静态源代码分析技术,它将对软件项目的源代码进行扫描,以发现其中的漏洞。在这一阶段中,开发人员要随时在安全知识库中查看相关的安全编码策略文档,使其尽可能的减少代码中存在的安全问题。当软件功能己经全部实现,代码全部完成,静态源代码分析出的安全漏洞解决完毕后,可以由项目经理把项目推进到测试阶段,开始进行软件的测试。测试阶段:在这一阶段中,安全开发管理模块提供的功能包括定期自动部署测试系统、动态分析测试以及其他安全测试工具的结果导入,面向的使用人员主要是测试人员。阶段:当项目进入阶段时,安全开发管理模块提供对软件代码进行混淆、加入软件水印、启用动态软件保护以及对软件产品进行前的安全评审功能。主要面向的使用人员是项目经理和安全管理员。

4.安全知识库管理和问卷管理:这两个模块面向的人员主要是安全管理员。由安全管理员对安全知识库中的安全文档以及在安全评审中需要使用的问卷进行管理。

5.系统管理:这一模块主要对软件安全开发管理平台本身进行一些配置和管理工作。本文提出的这种改进的软件安全开发流程,其中优点就在于不仅结合了各种先进的安全技术,而且设计了一个软件安全开发管理平台,它将软件开发中的各个阶段都统一管理了起来,集成了更高的自动化程度,可以更有效地提高了软件的安全性能。

五、结语

当前,计算机网络安全问题不容小觑,各种攻击、病毒、垃圾信息,甚至一些网络犯罪等,无时无刻不在考验着网络的安全性能,因此,软件安全问题也引起了大家的重视。因此,为了使软件能够应对目前的安全威胁,就必须在软件开发过程中提高安全意识,在软件的整个生命周期内对软件的安全性进行关注,提高软件产品的安全性。