ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:38.65KB ,
资源ID:8482108      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8482108.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件安全开发模型的研究精.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件安全开发模型的研究精.docx

1、软件安全开发模型的研究精 一、软件开发存在的安全问题随着Internet的普及以及软件和系统的日益复杂,人们对应用程序开发的安全性已经越来越重视了。在软件开发过程中常见的安全问题如下:(1没有明确用户对安全性方面的需求;(2设计上没有安全性的考虑;(3程序设计中的安全漏洞;(4代码中存在漏洞,如缓冲区溢出、对入口参数没有有效性检查等;(5为了测试方便,开发人员在程序中开的后门;(6开发人员在程序中植入恶意代码;(7引用别人的代码或公共源码,但没有经过安全性测试;(8开发人员使用的库函数,存在安全漏洞;(9代码存放不安全;(10代码的非授权访问;(11开发文档不安全;(12开发人员在外部邮件或不

2、正确的邮件组中,泄漏开发项目信息;(13未经许可,采用没有通过合法渠道获得的代码;(14开发人员泄漏软件的加密方法;(15开发人员泄漏软件的关键设计、代码和项目进展情况;(16在不安全的地方(家中、客户机器上修改、维护、讨论代码;(17开发的网络环境不安全。如何保证开发出来软件的安全性呢?对此,我们提出了软件开发的安全模型。二、软件安全开发模型框架软件开发安全模型首先应该了解软件开发中可能出现的安全问题,明确开发中的安全需求;然后保证程序设计、编码的安全性,并对开发出的软件进行安全性检测和评估。在整个开发过程中,应当对开发人员进行安全培训和开发过程的安全监理。图1为软件开发安全模型的框架示意图

3、。图1软件开发安全模型的框架1、安全需求在用户需求和软件需求阶段,了解用户对安全性的要求,明确软件需要达到的安全性是非常重要的一点。在设计阶段,根据用户的需求采取符合安全性要求的设计方案,才能保证软件的整体安全性。(1安全需求定义我们认为开发的安全需求,通常包括如下方面:1开发成果的完整性;2开发过程、开发成果的保密性;3软件中没有安全隐患,包括设计的安全漏洞、编码引入的安全隐患等;4 开发的软件不会引起法律纠纷;5开发出来的软件产品,需要进行安全性检测和评估;6软件开发和支持环境应当被严格控制。(2确保开发成果(包括中间成果完整性的措施软件安全开发模型的研究国电自动化研究院信息所余勇林为民摘

4、要本文提出了软件安全开发的模型,包括安全需求、安全设计、安全编码、安全检测、对开发人员的安全培训和开发过程的安全监理。关键词安全需求保密性安全监理 为了保证开发成果的完整性、防止代码丢失,通常需要进行如下控制:1进行备份,最好形成固定的备份制度。如:做到每天的增量备份,每周的完全备份,并有灾难恢复机制;2进行软件配置管理、避免混乱,其中需要强调的是版本控制;3对阶段成果进行评审、检查。(3开发过程、开发成果保密性的措施系统安全的一个重要属性就是信息的保密性,为了做到这点,通常需要进行如下安全控制:1将开发的文档和代码存放在安全的地方,没有授权的用户不能访问;2开发人员不得在外部邮件组、或不正确

5、的邮件组讨论项目的进度、软件的设计、软件的代码;3项目的关键文档,必须与项目的普通文档相区别,限制可以获得这些资料的人员。如:整体设计文档、关键设计文档、核心源代码、软件的加密方法、license的实现等,禁止非核心人员获得此类文档;4开发人员不得以技术交流的原因,把整个代码或文档的拷贝,和非项目组成员分享;5不能在家(或其他非公司所在地开发和项目相关的内容,禁止以明文的方式通过网络传输项目内容;6维护个人开发环境,避免个人开发环境被病毒感染、被攻击,从而泄漏项目开发的机密;7项目文档需具有密级,严格控制代码访问,明确项目文档访问的权限,防止员工具有越权访问资源的权力。(4软件开发和支持环境应

6、当被严格控制负责开发系统的管理人员应当对软件项目和支持环境的安全负责。他们应该确保所有被提议的系统改动都进行了复审,使这些改动既不损害系统安全也不损害操作环境的安全。2、安全设计软件的设计分为概要设计和详细设计。(1概要设计的安全考虑概要设计中应考虑如下的安全性因素:1系统输入的安全性,对错误输入、恶意输入的处理;2系统内部数据传输的安全性;3系统输出的安全性;4系统内各模块的出错处理;5运行中可能出现的各种异常情况,是否都有合适、安全的处理方法;6软件的防盗版设计;7如果是分布式系统,还要考虑网络传输的安全性(是否需要加密、加密的强度等,各分布模块的安全性,抗网络攻击的能力。(2详细设计中的

7、安全考虑详细设计中应考虑如下的安全性因素:1接口安全性(入口安全性检验;2算法安全性;3程序异常处理。3、安全编码经过良好设计的、具有良好习惯的编程风格的代码,相对来说,也具有较好的安全性。通常良好的编码风格有:使用安全的函数;对输入的参数进行校验;开发完成后,进行完备的单元测试,包括边界测试、语句覆盖测试;开发完成后,确认错误和异常情况被正确地处理;修改代码的同时,确保注释和文档进行了相应的修改;在代码集成和引用方面还应注意不使用没有许可证权限的代码。(1使用安全的函数在调用某些函数时有一些常见问题。尽管某种函数调用可能与安全性无关,但如果使用不当,仍会导致不易发觉的安全隐患。如C o p

8、y M e m o r y、C r e a t e P r o c e s s、CreateProcessAsUser、CreateProcessWithLogonW、memcpy、sprintf、swprintf等函数在安全性方面尤为值得注意。(2控制程序改动的步骤为最小化信息系统的错误,执行改动时要进行严格控制。应当实行正规的改动控制步骤,确保安全和控制步骤不被损害。负责支持的程序员应只对那些与工作必要的部分系统享有访问权,并且确保改动已获得正式批准和同意。该过程应包括:1保留一份已达成协议的授权级别的记录;2确保改动由经过授权的用户提出;3对控制和步骤的完整性进行复审,确保不会因为改动而

9、受到损害;4检查所有需要修改的计算机软件、信息、数据库实体和硬件;5在改动前,应获得对详细建议的批准;6确保在任何改动实施前,被授权的用户接受这些改动;7确保实施改动是为了减少业务中断;8确保系统文档组在每一个改动完成后都做了更新,旧文档被存入档案或被处理;9为所有软件更新保留一个版本控制;10对所有的改动请求保留一份以备审查;11确保在正确的时间进行改动,不能扰乱所涉及的业务过程。(3对操作系统改动的技术复审定期的改动操作系统是有必要的,如为了安装一个新的软件版本或补丁。在改动后,应当对应用系统进行复审和测试,确保改动对操作或安全没有负面影响。这个过程应当包括:1对应用程序控制和步骤完整性的

10、复审,确保它们不因操作系统的改动而受到损害;2确保年度的支持计划和财政预算中包括了对这些操作系统改动的复审和系统测试;3确保及时通知对操作系统的改动,使得在改动实施前能够进行适当的复审;4确保业务连续性计划做了恰当的改动。(4对软件包改动的限制在使用中应当尽量不要修改厂商提供的软件包。如果实在要修改,应当考虑以下几方面:1软件内置的控制和完整性步骤被损害的风险;2是否应当得到厂商的同意;3从厂商那里得到所需改动的程序更新的可能性;4将原来的软件保留,对该软件的副本实进行改动。(5隐蔽通道和特洛伊程序 隐蔽通道可以通过一些间接的、隐藏的手段来暴露信息,它可以通过改变一个参数来被激活,而这些参数无

11、论对于安全的还是不安全的计算系统都是可访问的,也可以通过在数据流中嵌入信息来激活隐蔽通道。特洛伊程序被设计成以一种非法的、不易被注意的、不是程序用户和接收人所必需的形式来侵入系统。应考虑从以下方面进行控制:1只从声誉好的程序提供者处购买程序;2以源代码的形式购买程序,使得程序可以被检验;3使用经过安全评估的产品;4在操作使用前审查所有源码;5程序安装好后,对它的访问和修改要进行控制;6聘用经过安全考核的员工进行关键系统的管理。(6外包软件的开发软件开发的工作由外部的人员或单位承担时,应当从以下几方面进行安全考虑:1许可证问题,程序的所有权和知识产权问题;2对所进行工作的质量和准确度的保证问题;

12、3对软件开发的质量和准确度审查的权利;4关于程序质量的合约要求;5在安装软件前进行测试,以防止特洛伊程序的植入。(7程序中的出错和异常处理正确输入的数据可能会由于处理错误或故意行为而出错,因此,程序的设计应当采取措施,以将导致完整性损失的风险降至最低。需要考虑的因素包括:1程序中用来执行对数据改动的加入与删除函数的使用情况和位置;2防止程序在错误指令下运行;3使用正确的程序进行处理失效的恢复,以保证程序正确地处理数据。(8代码安全性的维护如果对代码进行修改,填写修改记录能帮助我们在代码安全性维护上起很大的作用。入口参数、数据结构、引用代码、代码改动的注释应该是清楚、完备的。4、安全检测软件的安

13、全检测方法通常包括:静态检测、动态检测、文档检查、接口安全性检测、出错处理检测、异常情况检测。(1静态检测方法和工具静态检测指在程序没有运行的情况下,检查程序的正确性。静态检测工具不需要执行所测试的程序,它扫描所测试程序的上下文,对程序的数据流和控制流进行分析,然后给出测试报告。静态检测方法包括:1“重读”代码,“重读”的时候要注意检查以下几项:是否检查了入口参数的类型;是否检查了入口参数的值域;是否有无用的代码和变量;分配的空间是否都“干净”地释放了;释放的指针是否都指向了NULL;条件循环是否出现无限循环的情况。2使用各种编译工具,检查程序。3使用专门的静态检测工具,如检测C程序的lint

14、、splint等。(2动态检测方法和工具动态测试通过选择适当的测试用例,实际运行所测程序,比较实际运行结果和预期结果,以找出错误。动态检测需要在动态检测程序运行的情况下,执行所测试的程序,通过对程序运行时的内存、变量、内部寄存器等中间结果进行记录,来检测程序运行态的正确性,单步跟踪、设置断点是其基本的方法。动态检测工具方法包括:1基于符号表的DEBUG工具,如gdb。2跟踪程序,如strace/ltrace。(3文档检查文档检查主要包括:1规格说明书中是否有安全性的需求定义;2概要设计说明书、详细设计说明书、技术白皮书中是否有对安全性的设计和描述;3概要设计说明书、详细设计说明书、技术白皮书中

15、对安全性的描述是否和需求一致;4用户文档中是否提示了用户安全性相关事项。(4接口安全性检测入口检测主要包括:1命令行输入的参数是任意的,尤其是setuid/setgid程序,一定要检查参数的有效性和合法性;2文件描述符的安全性:如文件权限读、写函数的安全性,标准输入、输出、出错的安全性;3文件内容的安全性:直接读取的文件,如果不被信任的用户能访问该文件或任何它的父目录,都是不可信任的;4所有的Web输入都是不被信任的,都需要进行严格的有效性验证;5字符集问题:如果是新写代码,使用ISO10646/Unicode,如果需要处理旧字符集,确保非法用户不能修改此字符集;6是否过滤可能被重复解释的ht

16、ml/url;7基于Web的应用程序,应该禁止http的“get”和“HEAD”,除非能限定它们只用于查询;8设置输入数据的超时和加载级别限制,特别是对于网络数据更应如此。出口检测主要包括:1最小化反馈信息,使得黑客不能获得详细信息;2反馈不要包含注释信息,特别是产生html 文件的Web程序;3是否处理了阻塞或响应缓慢的输出情况;4是否控制了输出的数据格式(pringf系列函数问题;5控制输出的字符编码;6基于WEB的应用程序,不要运行用户访问Include和配置文件。(5出错处理检测主要包括:1各种出错情况都被处理;2给用户的出错信息,不会泄漏程序信息的细节。(6异常情况检测主要包括:1软

17、件的各种异常情况都被处理;2软件的异常情况不会导致程序进入不可知情况。5、安全培训 在软件开发整个过程中,都要对开发人员进行安全培训。(1对环境、网络、代码、文档等方面的管理培训主要培养员工维护开发环境、网络、代码的安全意识,了解开发规范的安全要求。(2对配置管理的培训使员工熟悉项目的配置管理工具、版本管理方法、变更管理方法等,对负责备份的人员进行备份方法、灾难恢复方法的培训,保证项目的正常进行。(3对安全编程的培训包括系统设计中的安全要素和可能出现的安全漏洞、编程中的常见安全问题、良好的编程习惯、进程的安全性、文件的安全性、动态链接库的安全性、指针的安全性、Socket和网络通讯的安全性、避

18、免缓冲区溢出、验证所有的输入、避免随意的输出信息、界面安全性、调用函数库的安全性。(4对安全性测试的培训包括在单元测试中测试代码的安全性、系统安全性测试的内容和方法、网络程序的安全性测试内容和方法、容错性和可靠性测试方法。(5对知识产权意识的培训培养员工使用第三方资源的知识产权意识,避免在设计和开发中引入法律纠纷的隐患。6、安全监理安全监理的主要作用是:检查和控制开发流程,确保开发流程中各项安全措施的遵守。安全监理应该由第三方担任,可以外包,也可以由公司的其他部门承担,不应由开发者担任这个角色。安全监理的内容主要包括如下5部分。(1开发环境的安全性主要检查内容包括:项目文档、代码存放是否安全;

19、是否有完善的备份制度;是否有灾难恢复机制;项目文档和代码的访问是否受控;是否有代码和文档的版本管理;开发的网络环境是否安全;开发人员使用的邮件组是否安全。(2开发流程的安全性检查和评估主要检查内容包括:程序员是否使用了“危险”的代码;程序员的函数是否都检查了入口参数的合法性;是否使用了XX的代码;是否对第三方代码,没有进行安全性评估、测试,就直接使用;测试用的“后门”,是否在发布版中去除;程序员是否在代码中隐藏“恶意”的代码;代码中是否有无用的代码。(3开发各个环节的安全性措施是否被实施主要检查内容包括:是否对开发人员的邮件进行检查;是否检查了代码和文档的访问权限。(4开发各个环节的安全性要求

20、是否被遵守主要检查内容包括:需求分析阶段,是否确认用户的安全性需求;设计阶段,是否做了安全性的设计;编码阶段是否采用良好的风格进行编程;测试阶段,安全性测试是否执行;安全性测试是否充分。 (5对出现的安全问题提出响应策略主要检查内容包括:是否有应对泄密的安全策略;是否有发现软件中的安全漏洞的响应策略;是否有软件完整性损坏的响应策略。在软件开发过程中,遵循安全开发模型,开发人员将养成良好的编码风格和文档习惯,从而开发出安全可靠的软参考文献1.InformationSecurityManagementBS7799:1999.伟世盾安推出自主硬件平台的抗拒绝服务设备近日,北京伟世盾安信息技术有限公司

21、推出了基于全新硬件平台的抗DoS/DDoS攻击系统产品。此次更新的硬件平台是在国内完全自主研发和制造的,拥有自主版权,向芯片级别的安全又迈出了一步。全新的硬件平台是基于集成电路设计技术在FPGA芯片上实现专用服务器这一概念,将TCP/IP协议栈以及代理服务器系统集成在单颗芯片上实现的。FPGA是现场可编程门阵列(FieldProgrammableGateArray的简称。FPGA是融合了ASIC和网络处理器两种芯片优点的一种芯片。利用FPGA芯片实现数据密集应用,有着得天独厚的优势,其原因在于:FPGA芯片在内部通过逻辑电路完成计算功能,而不是像CPU依靠取指,分解成微指令代码,执行。利用集成电路设计技术在FPGA上开发获得的处理能力功能远高于传统计算机体系结构服务器,在此基础上实现的天目抗DoS/DDoS攻击系统具有如下优点:1线速级别的网络流量处理能力;2高性能的攻击流量识别和过滤;3极小的网络延迟;4整个网络设备功耗非常低;5散热量极小,无需专用风扇进行散热。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1