【硕士论文】基于用户行为管理的可信软件开发方法的研究与应用_第1页
【硕士论文】基于用户行为管理的可信软件开发方法的研究与应用_第2页
【硕士论文】基于用户行为管理的可信软件开发方法的研究与应用_第3页
【硕士论文】基于用户行为管理的可信软件开发方法的研究与应用_第4页
【硕士论文】基于用户行为管理的可信软件开发方法的研究与应用_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

UDC004学校代码10005中文图书分类号TP311学号S201125056密级公开中国科学院大学工程硕士学位论文题目基于用户行为管理的可信软件开发方法的研究与应用英文题目THEBASICRESEARCHANDAPPLICATIONOFTRUSTEDSOFTWAREDESIGNINGBASEDONTRUSTEDUSERBEHAVIOR论文作者张佳临领域软件工程研究方向软件与网络工程申请学位工程硕士专业学位指导教师于学军教授所在单位软件学院答辩日期2016年3月授予学位单位中国科学院大学独创性声明本用户声明所呈交的论文是我个用户在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他用户已经发表或撰写过的研究成果,也不包含为获得中国科学院大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。签名日期2016年3月1日关于论文使用授权的说明本用户完全了解中国科学院大学有关保留、使用学位论文的规定,即学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。(保密的论文在解密后应遵守此规定)签名日期2016年3月1日导师签名日期2016年1月1日摘要什么是可信软件,如果一个软件系统的行为总是与预期相一致,则可称之为可信的,相应的这种软件就是可信软件。截止到目前为止,大部分的关于可信软件开发方法的研究主要是研究的理论,很少有研究在具体实践上应用的。除此之外,经过对50多篇国内外相关领域的文章进行总结后发现,大部分文章的研究内容是保证软件自身在运行的时候不出现错误,被误操作或者被攻击时,软件依然能够提供稳定可靠的服务,也就是保证软件自身行为的可信。可是他们对用户行为可信方面的研究比较少。在现实生活中,主要是软件系统的用户在操作软件,盗用软件信息、攻击和破坏软件的也是用户。因此研究用户的行为,并且将用户的行为限定在合理的范围内是很有必要的。对用户的行为进行研究,并且将用户的行为限定在合理的范围内,可以很好的增强软件的可信性。本文对用户的行为进行研究,并且提出一种基于用户行为管理的可信软件开发方法,而且把这种可信软件开发方法用到具体实践中,开发出一款真实可信软件。本文的研究内容主要有1研究用户行为管理的方法。包括研究用户行为的规律,创建评估用户行为可信性的模型,设计监控用户行为的方法,建立一个管理用户行为的系统2研究保证软件自身可信性的软件开发方法。3基于本文提出开发方法,开发出一款真实的可信软件。本文的主要研究内容是围绕用户行为管理及可信软件开发展开。本文将可信软件开发的思想应用到软件的全生命周期中,在软件生命周期的各个阶段,如需求分析、软件设计、软件编码及测试维护等阶段,都引入保证软件的可信方法。并且深入研究了基于用户行为管理的保证用户行为可信的方法,首次将用户行为管理与可信软件开发相结合,提出“基于用户行为管理的可信软件开发方法”,有效的增强了软件的可信性。本文最后还介绍了如何将此方法应用到具体的软件项目中去,在实际项目中提高软件的可信性。关键词用户行为管理;可信软件开发;可信软件设计;可信软件;可信ABSTRACTWHATISTRUSTEDSOFTWAREIFASOFTWARESYSTEMSBEHAVIORISALWAYSINLINEWITHEXPECTATIONS,ITCANBECALLEDTRUSTED,CORRESPONDINGLYTHESOFTWAREISATRUSTEDSOFTWARETHECURRENTRESEARCHOFTRUSTEDSOFTWAREISMAINLYABOUTTHATMAKETHESOFTWAREITSELFSTILLPROVIDERELIABLESERVICEWHENBEINGATTACKED,ANDENSURESOFTWAREITSELFTRUSTEDINTHEREALWORLD,USERISSOFTWAREOPERATOR,ANDATTACKERANDDAMAGERISALSOUSER,SOTHERESEARCHOFUSERBEHAVIORISVERYIMPORTTHEMAINRESEARCHCONTENTOFTHISARTICLEISABOUTTOMAKEUSERBEHAVIORTRUSTEDANDSOFTWARETRUSTEDINTHISPAPER,THEDEVELOPMENTMETHODSOFTRUSTEDSOFTWAREUSEDTOFULLLIFECYCLEOFSOFTWARE,ANDADDMETHODSTOMAKESURETHETRUSTOFSOFTWAREANDWEMAKEFURTHERSTUDYTOGUARANTEETHETRUSTOFUSERBEHAVIORS,ANDFORTHEFIRSTTIMETHETRUSTOFUSERBEHAVIORCOMBINEDWITHTHETRUSTOFSOFTWAREDEVELOPMENT,WERAISE“THEBASICRESEARCHANDAPPLICATIONOFTRUSTEDSOFTWAREDEVELOPMENTBASEDONMANAGEMENTOFUSERBEHAVIOR”,ANDMAKESOFTWAREMORETRUSTEDEFFICIENTLYTHEMAINRESEARCHCONTENTOFTHISARTICLEIS1RESEARCHONUSERBEHAVIORMANAGEMENTMETHODINCLUDE,PUTSFORWARDTHEDEMANDOFTHETRUSTEDUSERBEHAVIORANDTHEDEMANDOFTHETRUSTEDSOFTWARE,ANDMAKESADETAILEDSTATEMENTFORTHEDEMANDOFTHETRUSTEDUSERBEHAVIORTHEN,THISPAPERINTRODUCESTHEFOURMETHODSFOROBTAININGTRUSTEDTHESOFTWARESDEMAND2THERESEARCHOFSOFTWAREDEVELOPMENTMETHODTOMAKETHESOFTWAREITSELFTOBETRUSTED3BASEDONTHEPAPERPUTFORWARDDEVELOPMENTMETHOD,TODEVELOPAREALTRUSTEDSOFTWAREKEYWORDSUSERBEHAVIORMANAGEMENT,TRUSTEDSOFTWAREDEVELOPMENT,TRUSTEDSOFTWAREDESIGN,TRUSTEDSOFTWARE目录摘要IABSTRACTIII目录I第1章绪论111研究背景与意义112研究现状213论文研究内容和组织结构3第2章基于用户行为管理的可信软件需求分析521本文相关概念的介绍522用户行为管理方面需要考虑的可信因素623软件可信方面需要考虑的可信因素623软件漏洞造成的不可信因素724可信需求包含的内容1125搜集可信需求时可以使用的方法1226本章小结14第3章基于用户行为管理的可信软件设计1531用户行为管理的可信设计15311用户身份的可信设计16312用户行为声明的可信设计17315用户行为监控的可信设计21314评价用户行为是否可信的设计2132软件系统本身的可信设计24321设计阶段需要考虑避错、查错和纠错24322设计阶段需要的容错设计25323漏洞的处理以及其他方面的可信设计2843本章小结29第4章基于用户行为管理的可信软件编码及测试维护3041用户行为管理的可信编码30411保证用户身份可信的编码30412具体实现用户行为声明30413编码实现用户行为监控的功能33414编码实现评价用户行为是否可信的功能3742编码实现软件可信的功能40421编码实现软件容错功能模块41422编码实现其他可信功能模块4243基于用户行为管理的可信测试和维护4444本章小结45第5章在实际项目中的应用4751职能资格审查系统简介4752职能资格审查系统的可信需求4853职能资格审查系统的可信设计4954编码实现职能资格审查系统的5144本章小结53结论55参考文献56致谢58第1章绪论11研究背景与意义在日常生活中,信任是用户们交往和合作的基础。如果没有了相互间的信任,也就不会有交往和合作。在开放的互联网环境下,我们在进行相互通信时无法确定对方是否可信,这很可能造成很大的损失。因此,信任也是在互联网中交互的基础。随着可信性问题的日益凸显,国内外的一些组织相继提出了自己的研究计划。可信计算技术在近几年蓬勃发展,已经有了一些实质性的进展和相应的规范。在1983年可信计算机和TCBTRUSTEDCOMPUTINGBASE被提出后,可信计算1技术取得了快速发展。可信计算平台联盟TCPATRUSTEDCOMPUTINGPLATFORMALLIANCE在1999年成立,而且在2003年可信计算平台联盟改名为可信计算组织(TCG)。2004年,可信计算平台联盟为了将可信从单机扩展到整个网络,专门研究制定了可信网络连接TRUSTEDNETWORKCONNECTION的相关标准。可信网络连接TRUSTEDNETWORKCONNECTION,TNC2只是对有关主机的完整性和可靠性作了一系列的定义,并没有将行为因素纳入到终端可信性的验证范围之列。可信网络连接将网络连接为平台完整性认证层、平台身份认证层和身份认证层。这几个层的作用是从不同的角度验证了终端的可信性。但是,这些验证尚不全面,与终端相关的行为因素并没有定义,软件运行的效率和速度等非功能性因素也没有进行可信验证。随着计算机与网络技术的快速发展,我们已进入信息时代。信息技术,尤其是软件技术已经入到社会生活的方方面面。买衣服上淘宝网,点餐用点餐软件系统,预定旅店上艺龙,像旅游上去哪网看攻略等等。现在的软件技术已经涉及到了我们的衣食住行,离开了软件,我们的生活受到很大的约束。而且软件在其他方面还发挥着至关重要的作用。例如离开了软件,电子商务、网上银行和电子政务等应用都不会出现。而且,在国家的航空工业、航天工业,以及其他大型工业自动化生产控制等领域,软件都发挥着关键性的作用。随着用户们对软件普及,用户们越来越依赖软件,对软件服务质量的要求越来越高。但是,由于软件的规模日益庞大,软件的结构日益复杂,软件中就存在很多错误、漏洞,从而经常导致软件在运行过程中出现错误信息、出现故障或者失效。轻则给大家的生活或者办公造成一些不方便,重则对个用户、公司财产造成损失。尤其是在一些重大行业如航空航天和大型工业自动设施上,可能造成重大灾难和用户员伤亡。因此用户们对软件的可信性十分关注。因此研究软件的可信性,并且研究构造可信软件的方法就显得非常有意义。可信软件构造技术是当前软件技术面临的重大挑战。我们不但要对软件系统开发和运行等规律有更深一步的认识;我们还要提高信息基础设施的可信任度和可依赖度。因此研究如何构造可信软件具有重要的理论意义和应用价值。12研究现状本文把前用户的相关研究做一下简要分析(1)基于软件行为轨迹的可信性评价模型提出了基于软件行为轨迹的可信性评价模型CEMSBT该模型引入软件行为轨迹描述软件行为,软件行为轨迹由运行轨迹和功能轨迹构成,运行轨迹表示软件运行时的有序操作,表征为有序的检查点向量;功能轨迹则由能够表征软件功能的一系列场景来刻画为了减少可信性评价的时间和空间开销,给出了软件行为轨迹的化简规则模型应用检查点的标识评价规则和场景评价规则对实际的软件行为进行评价考虑到分支给程序带来的随机性很可能被入侵者利用,分支处的检查很必要模型通过场景确定分支的走向,从而降低了分支处异常情况的漏报率。这是一个切实可行的“检测软件自身行为可信性的”方法。(2)基于信任链的可信软件设计方法及可信性评价基于信任链的可信软件设计方法及可信性评价3在计算机系统中,提出了信任链4的概念。但是,信任链无法保证系统的动态可信(软件运行时,系统一直是实时可信的)。而“基于信任链的可信软件设计方法”对信任链进行了扩充,提出了由可信引擎驱动的信任链模型,在系统运行时,这种模型可以对系统进行动态的可信性检测。借用这个模型提出了可信软件设计方法及软件的可信性评价方法。这种方法提出了信任连、检查点、软件行为轨迹和可信性评价策略等内容,值得参考和借鉴。但是这种方法只考虑到软件自身可信性,但是没有考虑到用户行为的可信性。因为即使软件可信,由于用户行为不可信,用户能通过一些不正常的操作获取系统的保密信息;而且用户还可以恶意的增加系统的访问量,使系统因承载不了太大的负荷而崩溃。因此用户行为可信对整个软件系统的可信是一种不得不考虑的因素。(3)基于形式化监控的可信软件构造模型基于形式化监控的可信软件构造模型5提出了一种基于形式化监控的可信软件构造方法,将形式化方法和对软件运行时的监控方法相结合。其中形式化方法主要用于描述需要监控的指标,由监控模块在软件运行时为这些指标赋值,当指标操作一定阈值的时候,监控模块会限制软件的某些功能执行。对于运行时监控,这篇文章主要采用面向切面编程方法,将监控代码插入到系统的需要监控的代码中,从而构造出带监控能力的可信软件。面向切面编程(AOP)可以简单理解为,在现有的程序的基础上,添加一个像路障一样的东西,当执行到这个路障时就停下,先做路障这里的工作,然后再执行原来的程序的内容。在基于形式化监控的可信软件构造模型中,只考虑到软件自身可信性,但是没有考虑到用户行为的可信性。(4)可信网络中用户行为可信评价的研究可信网络中用户行为可信评价的研究6主要是从用户行为可信方面解决整个网络的可信问题。以前的研究主要集中在用户身份的可信方面,很少关注用户的行为,所以不能保证用户行为的可信。由此,这篇文章的主要研究内容是用户行为可信7,但是研究的深度不够。虽然研究了影响用户行为可信的因素,但是并不够全面和系统。在此基础上提出了“用户行为可信评价模型”,但是此模型中的度量因素和度量元都没有详细设计。所以,用此模型来评价用户行为是否可信,只是宏观上的描述一下。但是这篇文章为本文的研究提供了一个很好的研究思路通过并通过评价用户行为的可信性来控制用户行为,从而实现用户行为的可信。另外,此文章的不足还有这篇文章只考虑到用户行为的可信性,但是没有考虑到软件自身可信性。13论文研究内容和组织结构本文的研究内容主要有(1)基于用户行为管理的需求分析。首先,本文搜集开发可信软件需要考虑的因素。确定用户行为可信需要考虑的因素,以及这些因素的范围。其次,确定软件可信需要考虑的因素,并对这些因素进行了详细说明。最后,对现在软件的漏洞进行分析。在此基础上,本文提出用户行为可信的需求和软件可信的需求,并对用户行为可信的需求的内容、需求声明的方式进行详细说明。然后介绍获取可信软件需求的四种方法。(3)基于用户行为管理的软件设计。首先对用户的行为可信进行设计,具体包括用户身份设计、用户行为声明的设计、用户行为可信评价模型的设计、用户行为监控的设计。然后我们对软件可信进行设计,包括设计阶段的避错、查错、纠错、容错设计,以及其他方面的软件可信设计。(4)基于用户行为管理的软件编码实现及运行维护。我们首先对用户的行为可信进行编码实现。然后我们对软件可信进行编码实现。最后我们对可信软件的运行维护进行详细介绍。本文一共分为五章,其中第一章主要介绍研究背景、研究现状、研究意义和本文的组织结构。第二章到第四章具体讲述了在本文提出的“基于用户行为管理的可信软开发方法”在软件开发全生命周期中的具体内容。其中第三章是关于需求分析阶段的内容;第四章是关于设计阶段的内容,第五章是编码实现和运行维护阶段的应用。第五章是“基于用户行为管理的可信软开发方法”在实际中开发中应用,真正开发出一款可用的可信软件。第2章基于用户行为管理的可信软件需求分析21本文相关概念的介绍在本章中,本文将对软件可信性度量中存在的专业名词进行相关的概念介绍。给出可信的定义及可信计算的基本思想。通过给出软件行为的定义,阐述软件行为可信。如果一个软件的行为总是与预期相一致,则可称之为可信的,相应的这种软件就是可信软件8。软件系统的可信任度主要考察软件的安全性(SECURITY)、私密性(PRIVACY)、可靠性(RELIABILITY)和完整性(INTEGRITY)等4个特性;软件系统的可信赖性主要考察软件的可用性(AVAILABILITY)、可靠性、保全性(SAFETY)、完整性和维护性(MAINTAINABILITY)等5个特性9。本文只关注比较常见的五个特性可靠性、安全性、保密性、完整性、可维护性。另外用户行为可信也是软件可信的重要因素,所以本文还需要关注用户行为可信需要考虑的因素。另外在软件系统中一般会存在漏洞,这些漏洞给软件系统的可信造成了严重的威胁,所以软件漏洞也是本文考虑的因素。可信计算是信息安全领域中的热点问题,它包含了可信硬件、可信软件等多方面的内容。可信计算的关键是对于可信的定义,也就是回答什么是可信。目前对于可信的定义在整个学术界没有统一的定义,众多学者和权威机构对可信的定义都有自己的解释。主要包含以下几种对可信的定义。国际标准化组织与国际电子技术委员会在ISO/IEC15408标准中描述了可信的定义参与计算的组件、操作或过程在任意的条件下是可预测的,并能够抵御病毒和一定程度的物理干扰。可信计算机组织TCG认为,一个实体总是按照其设定的目标所期望的方式运行,则这个实体是可信的。TCG从软件行为的角度也对可信做出了定义一个实体的行为总是以预期的方式达到预期的目标,那么认为他是可信的,并提出可信平台至少要包含三个功能保护能力、完整性测量与完整性报告。文献中说明,可信计算的三大功能是可信度量、可信存储和可信报告,并且可信度量是可信计算的核心。王怀民等用户认为,如果软件系统的行为总是与用户们期待的愿望一致,那么该软件系统是可信的,并且进一步将可信性概括为身份可信和能力可信,其中,身份可信的核心是基于身份确认的访问授权与控制,能力可信的核心是软件系统的可靠性和可用性。根据以上这些定义,本文认为软件的可信性主要表现在其行为的可信上,软件在实际运行时的行为是否与用户需求预期的行为相一致,是行为可信关注的主要问题。对于软件行为的定义以及软件行为可信,在后面的小节中会有详细的解释。22用户行为管理方面需要考虑的可信因素在本文中,用户行为可信主要是指在软件系统中用户的身份是真实的,用户的行为是规范的,在用户权限范围之内的,不是他用户冒充的,不是恶意攻击的,不是盗取系统重要信息的。这部分因素主要包括用户身份可信和用户行为可信。在本文中,用户身份可信主要是指在软件系统中用户的身份是确定的真实的,不是被他用户冒充的。用户身份可信是用户行为可信的前提,也是用户可信的基础。我们得先确定用户身份,才能进一步研究用户行为,如果用户身份不确定,我们就无法研究用户行为。所以用户身份可信是必须考虑的因素。研究用户行为可信的目的是为了保证用户可信的行为能够方便的访问到系统的资源,同时禁止用户不可信的行为访问系统资源。由此既保证了用户行为的有效性,又避免了不可信的用户行为对系统重要信息的盗取,以及避免了不可信的用户行为对系统的攻击和破坏。因此,本文应该考虑的因素有用户身份、用户的角色和权限、规定的操作步骤和操作规范、用户的常用功能和操作习惯、用户的恶意攻击行为。23软件可信方面需要考虑的可信因素(1)软件可靠性“软件可靠性10SOFTWARERELIABILITY是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。规定的条件是指直接与软件运行相关的使用该软件的计算机系统的状态和软件的输入条件,或统称为软件运行时的外部输入条件;规定的时间区间是指软件的实际运行时间区间;规定功能是指为提供给定的服务,软件产品所必须具备的功能。软件可靠性不但与软件存在的缺陷和(或)差错有关,而且与系统输入和系统使用有关”。软件可靠性已经被公认为是系统可依赖性的关键因素,也是软件可信必须考虑的因素。下面介绍一些常见的提高软件可靠性方法,例如避错方法、查错方法、纠错方法和容错方法。避错方法主要以预防为主,通过控制软件的程序复杂度、提高数据传递和转换的准确性、改善信息传递方式、加强健壮性设计等方法展开。查错方法是为了查找出软件系统中的错误,避免软件错误发生的方法。纠错方法是为了纠正软件中的错误而设计的方法。可以设计单独的模块提醒软件用户手动纠正错误,或者让软件系统自动修复错误,使软件以后不再出错。软件系统的错误已经发生的情况下,就需要容错方法。这种方法,在系统反馈给用户错误信息之前,系统执行另外一些设计好的代码,来重新满足要求的功能。这样在用户看来好像错误重来没有发生过一样。(2)软件安全性软件安全性11SOFTWARESAFETY就是,软件被恶意攻击的情况下,软件依然能够正确运行等能力。软件的安全问题是来自多方面的,由于安全问题的存在,使得一些恶意行为可以对软件攻击、破坏,或者盗取软件系统的重要信息。这些问题对软件系统来说都是威胁;无论哪个问题出现了,都会对用户造成严重损失。(3)软件保密性现实中软件的开发者和使用者往往是不同的用户,而双方之间并不一定能够建立充分的信任关系,所以就会存在一些顾忌。例如开发者给一家银行开发了一个银行软件,由于这款银行软件包含了很多技术秘密,开发者不希望银行用户员知道其中具体的技术细节,开发者的源代码要保密。但是银行的很多数据对银行来说特别重要,而且银行不想让开发者知道太多的商业机密,所以就需要对数据进行加密,这就需要用到保密技术。(4)软件完整性软件完整性一般是指软件系统中数据的完整性。指在数据传输、存储的过程中,不被非法拦截,不被未授权的篡改,或数据被篡改后能够发现。本文在这里要加上软功能的完整性,在软件运行时,要保证软件能够提供稳定的功能。(5)软件可维护性软件可维护性一般是指对软件进行维护时,软件维护用户员工作的难易程度和复杂程度。具体工作内容包括阅读和理解软件的难易程度、修改软件的难易程度的难易程度等。决定软件可维护性的因素有软件系统的大小、软件结构的合理性、操作页面和操作方法的用户性化等。一般一个软件的可维护性有以下五个指标来衡量可理解性、可测试性、可修改性、可移植性、可使用性维护现有功能。23软件漏洞造成的不可信因素由于互联网技术、移动互联网技术和云计算技术的发展,以及大数据概念的提出,现在很多软件服务都移到了互联网上,而且很多软件服务都采用了在线服务的。这些技术的进步给用户提供了更方便更快捷的软件服务。例如用户不需要安装任何客户端,只需打开浏览器就可以很方便的使用到很多软件服务,像听音乐、看视频、网上购物、网络汇款、网上充话费、网上聊天等。但是与此同时,由于软件漏洞的存在,不仅给用户带了很大的困扰,而且给软件开发者带了灾难性的破坏,比如盗取用户信息、伪造用户身份诈骗、篡改用户信息使用户不能正常使用软件、以及破坏用户信息、伪造用户身份登陆软件破坏软件系统等。计算机紧急响应小组CERT统计了1995年到2007年软件安全漏斗的数量,从公布的数据来看,软件安全漏洞的数量越来越大。图21安全漏洞统计报告FIG21THESTATISTICSREPORTOFSECURITYVULNERABILITIES经计算机紧急响应小组深入分析,软件安全漏洞居高不下,而且持续增长主要是以下三个方面的原因(1)连通性由于网络的连通性,使得用户能够很方便的访问网络,同时访问到各个软件服务和软件系统,同时网络黑客和网络攻击者也能够很方便的访问软件系统,这个攻击者提供了方便攻击的通道。他们会充分利用网络和软件的连通性来攻击软件系统。(2)扩展性现在的很多软件和应用系统以及操作系统都有扩展性,如WINDOWS系统和CHROME浏览器。以CHROME浏览器为例,它提供了很多接口和规范,第三方开发者可以利用这些借口对CHROME浏览器进行扩展,比如提供一些具有特定功能的插件。由于软件的扩展性使会使得一些具有攻击型功能的插件进入到软件系统中,给软件系统造成了很大的威胁。(3)复杂性现在的操作系统、网络应用和软件系统很庞大,而且功能很多,占用几G空间,使用分布式计算,使用多种语言,联合开发等都是常见的事。由于软件系统的这种复杂性,很难做到各方面都完美,各个方面都没有漏洞,反而使得软件系统本身的漏洞到处都存在。研究了漏洞产生的原因之后,本文对漏洞进行分类。“常见缺陷列表计划COMMONWEAKNESSENUMERATION,CWE正在为软件安全漏洞构建一份清单和一种分类方案。“OWASPOPENWEBAPPLICATIONSECURITYPROJECT的ASDRAPPLICATIONSECURITYDESKREFERENCE项目使用基于共性的方法来定义安全原则、威肋、攻击、漏洞、以及对策的属于及其关系。在此,本文将软件安全漏洞分为7类,分别是未验证输入、API误用、安全特性、时间和状态、错误处理、代码质量、封装。(1)未验证输入由于对用户过度信任,没有验证用户的输入信息就直接进行下一步操作,从而导致系统出现一些比较危险的情况。常见的手段是用户在输入信息中加入一些特殊字符或者数字以及表达式等。由此引发的问题有缓冲区溢出等一些十分严重的安全问题。这种漏洞是常见的漏洞,也是攻击者经常利用的漏洞。下面本文列出了这类漏洞所包含的内容。缓冲区溢出BUFFEROVERFLOW对自身所属内存块外的内存进行写操作,导致程序崩溃。命令注入COMMANDINJECTION对来自非信任源或者非信任用户输入的信息进行执行,导致软件的风险。跨站脚本CROSSSITESCRIPTING像浏览器发送非法的数据使浏览器执行恶意的代码。SQL注入SQLINJECTION在用户的SQL信息中注入一些包含恶意信息的字段。HTTP应答SPLITTINGHTTPRESPONSESPLITTINGHTTP应带头上包含无效信息,这些信息中可能缓存恶意信息,可能会进行页面信息的劫持。整数溢出INTEGEROVERFLOW没有防范整数的溢出,导致程序崩溃。目录游离PATHTRAVERSAL允许用户通过输入来控制软件系统操作使用的路径,这样会使得攻击者有机会访问或修改系统的重要资源。远程控制PROCESSCONTROL受非信任用户的控制,导致心痛信息泄露。资源注入RESOURCEINJECTION允许用户输入资源的ID,这样攻击者就有机会访问或修改系统资源。未进行XML验证XMLVALIDATION解析XML数据时,没有对数据进行验证,导致非法数据进入系统。未检查返回值UNCHECKEDRETURNVALUE未检查返回值的范围,导致程序进入不可预料的状态。(2)API误用API通常是由被调用者提供的一些函数或服务,由使用者进行调用。而在调用的时候,调用者应该遵守API制定的格式和规范。API误用一般是由于调用者没有按照API制定的格式和规范进行使用。下面列出了该类别包括的安全漏洞危险函数存在安全隐患的函数。堆检查对中经常存储密码等敏感信息,因为没有及时移走而被黑客利用。应该少使用REALLOC函数重新分配带敏感信息的缓冲区。异常处理误用函数错误的抛出异常,可能会导致程序宕掉。认证误用攻击者经常伪造DNS进行攻击。权限误用未能坚持最小权限原则,增大了软件系统中潜在的危机(3)安全特性安全特性方面的漏洞主要是指由于软件的安全方面的功能做的不够完善而产生的漏洞。主要有缺少访问控制(MISSINGACCESSCONTROL)没有在软件所有可能运行的路径上设置访问控制,检查操作的安全隐患。口令管理(PASSWORDMANAGEMENT)传输的时候密码没有加密会导致密码泄露,或者密码为空容易引发安全问题。在重定向的时候如果携带密码信息,会导致密码泄露。隐私违规(PRIVACYVIOLATION)私有信息处理不恰当容易泄露用户信息。(4)时间和状态在编写程序时,大部分软件开发者认为程序是按照时间顺序一步一步进行的。由于在现实中,计算机大多是多核的,或者是分布式系统,这样的计算机经常切换任务,而且切换的速度非常快。各个任务不是按时间顺序一步一步进行的,而且由按照任务的状态进行相互切换运行的。这就导致系统在时间和状态方面引起很多漏洞。像魔兽世界这种大型网游类游戏,由于大量的用户同时在线同时进行操作,这种游戏就会存在时间和状态方面的漏洞。这方面常见的漏洞有死锁DEADLOCK由于相互争抢或相互等待资源而导致的每个用户物都无法完成的情况。固定会话SESSIONFIXATION两个任务使用同一个会话,第二个会话就能利用第一个会话中的很多信息,这样容易导致信息泄露。文件访问竞赛条件FILEACCESSRACECONDITION访问邮件的权限被验证之后,文件被访问之前,这段时间间隔中,容易引起恶意攻击者访问到文件。不安全临时文件INSECURETEMPORARYFILE如果临时文件不够安全,会泄露系统的相关信息。(5)错误处理由于错误处理不当引起的软件系统安全问题是十分常见的现象。这种处理可能是由于对错误处理不足,导致有些错误没有处理到;也有可能是处理错误的过程过于复杂,导致了错误处理代码包含了很多不安全的信息;也有可能是错误处理不当使系统逻辑混乱或者宕掉了。(6)代码质量软件代码质量不高会引发很多问题,轻的是软件某些小功能无法使用,重的会导致软件系统崩溃。从用户的角度考虑,软件代码质量不高会使得软件的可用性和利用率降低。对于攻击者来说,软件代码质量不高会导致系统出现一些不可预知的行为,他们可以利用这些行为向系统施加压力。例如存取指针信息或者进入程序的死循环结构。下面本文列出了该类别包括的安全漏洞。双重释放对同一块内存进行两次释放,会造成缓冲区溢出。内存泄露只分配内存却不释放,会占用太多的内存资源,导致资源紧张。空指针调用使用空指针会导致系统空指针异常。调用已废弃函数系统更新的时候会有问题。未初始化变量变量初始化之前就使用了。释放后使用内存释放之后继续使用会导致系统崩溃(7)封装为了在程序数据与配置之间建立清晰的边界,需要使用封装。例如,在WEB浏览器中需要确保,主机的硬盘分区是不能被移动代码直接访问的;而两个不同用户所拥有的数据是需要WEB服务器程序有效地区分的。本文列出了该类别包括的安全漏洞。信任边界模糊没有将可信的数据和不可信的数据分开处理,这些数据在同一个数据块中,这会导致系统错误的信任不可信的数据。用户间数据泄露通过会话可以套取用户的一些信息,尤其是共享池中的信息更容易泄露。24可信需求包含的内容本章前面几节,介绍了构造可信软件需要考虑的因素,从这本节开始,本文将基于用户行为管理的可信软件构造方法贯穿于整个软件工程生命周期中。软件工程生命周期包括需求分析阶段、软件设计阶段、编码实现、软件测试阶段和运行维护阶段,相应的,本文通过保证软件工程生命周期的每阶段都可信,即需求分析可信,软件设计可信,编码实现可信,软件测试可信,运行维护可信,从而保证最终的软件系统是可信的。下面本文从需求分析阶段开始研究,需求分析是软件工程的第一个阶段,在需求阶段本文应该考虑可信软件的需求内容、需求的获取方法等。如图31所示软件需求分析阶段软件设计阶段软件编码实现阶段软件测试维护阶段图22软件工程的各个生命周期FIG22ALLLIFECYCLEOFSOFTWAREENGINEERING定义可信需求是表示软件可信性的一种质量需求,它由可靠性、安全性、实时性、可用性、可生存性、可维护性等若干可以分解的可信属性组成刘克等,2008。由于可信是可信软件的一个重要属性,所以可信软件的需求应该包含功能需求和可信需求。本文重点考虑软件的可信性需求。基于用户行为管理的可信软件构造方法是在用户行为可信的基础上来构造可信软件,所以需求的首要内容应该是用户行为可信的需求。怎样判断用户行为是否可信呢由此本文引入用户行为声明。在本文中,作者认为用户行为声明就是软件系统对用户行为的预期。可信是指软件的行为与预期行为一致。只有有了预期行为,才能检验软件行为与预期是否一致,从而才能判断软件是否可信。同理,用户行为声明就是对用户行为的预期。有了用户行为声明,相当于有了用户预期行为,然后我们就能检验用户的真实行为与用户的预期行为是否一致,从而判断用户行为是否可信。关于用户行为可信的需求内容应该包含用户身份可信的准确度、用户行为声明的内容、用户行为可信的准确度、用户不可信行为拦截的效率等等。软件可信主要考察软件的可靠性(RELIABILITY)、安全性(SECURITY)、保密性(PRIVACY)、和完整性(INTEGRITY)和可维护性(MAINTAINABILITY)等5个特性。在本文中,可靠性是指系统要提供连续性的服务;安全性是指软件系统安全,重要数据资源安全;保密性是系统重要数据资源保密,不被权限范围外的用户访问;完整性是系统功能功能和系统数据资源完整;可维护性是系统易学易用、易读易改,以及功能可扩展。在本文中,软件可信性需求主要指用户对于软件可靠性的具体要求、软件安全性的具体要求、软件保密性的具体要求、软件完整性的具体要求、软件可维护性的具体要求,以及满足软件可信性的其他方面的具体要求。例如软件的容错能力及健壮性要求,软件的自动恢复能力要求,重要数据资源的安全保护能力要求,数据资源的保密要求,数据的完整性要求,系统维护时的难易程度和操作方法要求。25搜集可信需求时可以使用的方法下面介绍四种经典的需求获取方法基于情景的需求获取方法、基于原型的需求获取方法、基于观点的需求获取方法、基于知识的需求获取方法。我们在获取可信需求的时候,同样可以采用这四种方法。但是,以上四种方法各有优劣,在构造可信软件时,我们要根据实际情况选择一种适合的方法。(1)基于情景的需求获取方法这种方法是基于现实的应用场景,采集与用户需求相关的应用实例,让用户结合自己的目标和想法进行分析和评判,让用户自己说出他们的目标,也就是提出用户自己的需求。由于现实中的应用场景很直观,用户可以一目了然的进行分析、评判,然后说出自己的目标和要求,也就提出了自己的需求。由于这种方法的方便性使得这种方法的使用比较广泛,而且对于这种方法的研究也很普遍。这种方法的缺陷是无法建立所有的现实应用场景,会导致需求获取不够全面。所以,怎样获取尽可能多的现实场景,怎样弥补需求的片面性,是这种方法有待研究性的关键内容。(2)基于原型的需求获取方法现在的应用中,这种方法是最常用的需求获取方法。我们先构造软件原型,可能是用户需求中的一个很简单的功能模型,用于模拟系统的功能,然后我们给用户演示,并听取用户的意见,接着听取用户对系统所有功能的描述和要求。这样就能获取到所有的需求。对于这种方法开发方只需建立一个小模型就能获取到所有的需求,成本很低。而且在此模型的基础上,用户也看到了系统是怎么运行的,他们提出的需求不会再漫无边际,而是更合理更规范。(3)基于观点的需求获取方法一种常见的基于观点的需求获取方法是CORE受控的需求表达。这是一套需求获取分析,然后形成需求规格说明书的方法这种方法在上世纪70年代开始形成,并在上世纪80年代取得发展。这种方法用观点来描述系统的功能,系统需求就是把很多观点聚集到一起。观点的获取是通过大家的讨论。(4)基于知识的需求获取方法这种方法与情景法不同点是,情景法是开发者主导的,而基于知识的需求获取方法是由用户主导的。用户通过自己积累的业务经验、行业经验和使用经验等,以知识传递的方式传递给开发者,帮助用户获取需求。这种方法适用于在行业内有很多经验积累的用户,对于一般用户是不适用的。但是对于这种方法的科学研究有很多,比如,基于类比推理的领域模型重用,这是由SUTCLIFFE和MAIDEN在1998年主导的研究成果;基于本体的需求获取方法,这是由中国科学院数学研究所的金芝在2000年提出的。在具体的软件项目中,在需求阶段我们需要完成的工作如下详细说明软件的各个功能;确定软件运行环境、开发环境;恰当的说明软件的功能需求,恰当的描述软件的可信性需求;定义功能需求时必须包括各个功能的目的、输入、处理过程和输出;描述各种异常事件,以及这些异常事件的处理方法和措施;一般不描述设计或其它阶段的细节。软件工程生命周期中的第一步是需求分析,由于需求不明确而引入的错误将会贯穿到软件工程的所有阶段,即软件设计、编码实现、运行维护等阶段都会出错。修复这些错误所付出的代价非常大,给软件企业造成的损失也非常严重。因此保证软件需求的质量是非常重要的事情,而且意义重大。为了防止我么在需求阶段出现错误,我们需要考虑需求的以下特性(1)完整性需求的完整性是指,软件需求要包括系统的全部功能、性能、接口。(2)准确性各个需求的描述都要准则无误,而且语义清晰,不能造成误解。(3)一致性各个需求的描述中术语一致、名称统一标准,而且保证各项需求的描述不矛盾。(4)无冗余,一个需求不要出现两次或多次。(5)可验证性各个需求描述中尽量不使用模糊量词,如不使用“通常”、“一般”、“基本”等模糊性量词,应该使用非模糊性量词如数字和单位,或者“是非”。(6)易修改性需求要有条理,结构清晰,易于阅览、查看和修改文。(7)可追踪性需求要易于查找,可追踪。26本章小结本章首先介绍了构造可信软件需要考虑的因素,以及与构造可信软件相关的知识和概念。其中包括用户行为可信需要考虑的因素、用户行为可信的相关概念、软件可信需要考虑的因素,并对这些因素进行了详细说明。其次,对现在软件的漏洞进行了认真的分析,不仅从总体上对软件漏洞进行分析,而且对这些漏洞进行了分类,并且对每一类中的漏洞进行了详细说明。然后,对本文提出的“基于用户行为管理的可信软件构造方法”涉及的需求进行了认真研究,提出用户行为可信的需求和软件可信的需求,并对用户行为可信的需求的概念、需求声明的方式,以及需求的内容进行了详细说明。然后介绍了获取可信软件需求的四种方法,以及提出了需求阶段的一些注意事项。第3章基于用户行为管理的可信软件设计软件设计是软件工程的第二个阶段。设计阶段的工作主要是为了满足需求。本文重点关注的是可信性需求。由于可信性需求包含用户行为可信需求和软件可信需求。相应的,本章主要是进行用户行为可信设计和软件可信设计。基于用户行为管理的可信软件设计方法整体设计思路如下(1)用户行为可信的设计。在软件系统的功能模块设计完成之后,完成用户、角色和权限设计,这是整个可信软件设计的基础。在系统中设计用户身份验证模块,保证用户身份可信。设计权限代理模块控制用户行为,保证用户行为不超过用户权限。设计用户行为严重异常(不可信)拦截模块,拦截用户的这种很明显的不可信行为。在系统中设计用户行为可信评价模块,实时评价用户行为可信度。设计用户行为跟踪模块,跟踪并记录用户行为,实时向用户用行为可信评价模块传递数据。设计用户行为控制模块根据用户行为可信评价结果控制用户行为,保证可信的用户行为通过,并且阻止不可信的用户行为通过,这样就能减少不可信的用户行为对软件的攻击,而且提高了软件的可信性。(2)软件可信的设计。在系统中设计提高软件可信性的模块。本文的设计内容主要有避错模块、查错模块、纠错模块和容错模块。设计重要数据资源保护模块,设计数据传输保密和纠错模块,以及设计处理软件漏洞的模块。31用户行为管理的可信设计用户行为可信是软件系统可信的重要组成部分。进行保证用户行为可信设计,阻止不可信的用户行为通过,这样就能减少不可信的用户行为对软件的攻击,进而提高了软件的可信性。用户身份的可信设计用户行为跟踪的可信设计评价用户行为是否可信的设计控制用户行为的设计图31基于用户行为管理的可信软件设计方法FIG31THEMETHODOFTRUSTEDSOFTWAREDESIGNINGBASEDONTRUSTEDUSERBEHAVIOR311用户身份的可信设计用户身份可信是用户行为可信的前提12,也是用户行为可信的基础。运用传统的安全技术,通过一些验证方法就能保证用户身份的可信。但是总体上用户身份的重要级别要与用户身份的可信级别相一致,而且要与用户的安全级别和验证的复杂度相一致。比如用户身份级别很高,那么用户身份的可信级别也很高,用户的安全级别和验证的复杂度也很高。现有的关于用户身份的安全技术和验证方法有一下五种(1)静态密码。就是常见的用户名/密码的身份认证模式。这是非常简洁方便的身份认证模式,但是这种模式的安全级别很低。虽然能够实现用户身份的验证,但是用户身份的可信度很低,这是最低可信级别的用户身份认证。(2)动态口令。这种方法应用很广,在网上银行和电子商务等交易类网站经常能见到。原因是这种方法会动态的随机的生成一种有特殊规律的验证码,并且验证码有一定的复杂度,而且每次需要输入的验证码都不同,验证码的破解难度非常高,所以这种方法的安全级别较高,用户身份的可信级别较高。(3)智能卡IC卡。这种方法的核心思想是硬件不可复制,用每个用户都有一个唯一的硬件来保证用户身份的真实可信。这种卡是一种经过加工处理特殊的芯片,由专门的厂商制作,里面有一些来体现用户的身份数据用。虽然硬件不可复制,但是智能卡中的信息是静态的,当智能卡扫描之后,我们可以通过截取电脑中的内存来获取用户信息。所以这种方法有一些安全隐患,可信级别较低,而且有一些硬件成本。(4)USBKEY。这种方法采用硬件和软件相结合的方式保证用户身份的可信,而且每次的密码都是动态,集成了动态口令和智能卡的优点与一身,安全级别很高,用户身份可信级别很高。这种方法已经广泛应用于网上银行、电子政务和电子商务等领域(5)生物识别技术。如指纹识别,还有视网膜识别、声音识别等。这种方法是根据用户自身的特征来确定用户的身份,安全级别高,用户身份可信级别高。但是这种方法的成本很高,所以不常见。在实际应用中,为了提高用户身份的可信性,我们可以将不同的验证方式进行组合使用。例如动态口令牌和静态密码组合;USBKEY和静态密码组合;双重静态密码等。在本文设计软件时,本文采用的是动态口令牌静态密码方式。本文设计了高级别的用户身份可信验证模块,用于满足可信级别要求较高的用户。这个模块要求在动态口令牌静态密码方式之上,再加上用户行为的相关属性进行验证,例如用户常在哪里登录、经常使用软件的哪些功能、在什么时间段经常上网等。312用户行为声明的可信设计定义31可信行为声明(TRUSTEDBEHAVIORDECLARATION)指描述与软件可信性相关的软件行为的集合,仅包含描述软件的预期行为,这些描述被可信行为声明的提出者承认,作为可信软件的一部分。由上述定义我们可以看出,可信行为声明用来描述软件的预期行为,该集合描述与可信相关的软件行为。可信行为声明描述的内容都是软件的正常行为,所有该集合外的软件行为都是不可信的。它由软件开发者提出并承认,提交给软件可信性评估者,作为软件可信性度量的依据。用户行为声明的性质可信行为声明是描述与可信相关的软件行为集合,它包含以下几种性质完整性是指可信行为声明要完整地描述软件的预期行为。可信行为声明作为软件可信性度量的依据,如果不能完整地描述软件的预期行为,那么最终会影响软件可信性度量的结果。必要性是指可信行为声明中描述的行为与可信相关。如果对所有的软件行为进行行为声明,就会造成大量的资源消耗,包括行为声明的描述文件及检测模块的运行。可观测性是指可信行为声明中声明的软件行为是可以被监测系统监测到的。只有具备可观测性,软件的实际运行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论