论文部分内容阅读
安全性作为软件系统的重要属性,越来越受到人们的重视。经验表明,在软件开发周期中,问题发现得越早,解决问题的花销往往越小。因此,需要尽可能早地对安全性进行评估,发现潜在的安全漏洞,并进行有效的防御和处理。
目前业界的安全性评估,主要是通过一些公认的安全性评估标准,对软件产品进行安全性评级。这些安全性标准一般由政府安全部门或权威安全机构颁布,主要服务的对象是政府和军队的项目,以及通信、金融等大型项目,往往不适合中小型企业的一般软件产品。此外,这些评估标准的评估对象是信息产品。因此,这类评估一般是在产品完成后才会进行,而无法在软件开发生命周期的早期进行。
研究表明,软件系统中的安全性问题约有一半是因为设计上的缺陷所导致的。因此软件设计的安全性评估对于建立一个安全可靠的软件系统有着重要意义。当前主流的针对软件设计的安全性评估方法是进行专家评审,这类方法往往耗时长,代价高。同时,由于依靠专家判断,结果的客观性及准确性常常受到专家主观意见的影响。此外,相对于不断增长的安全性问题,经验丰富的专家成为了稀缺资源。这也为评估增加了难度和成本。
相对于稀缺的专家资源,通用知识将历史数据和专家经验进行了封装和传播,更易获取和利用,近年来越来越多地被使用在安全性评估领域。此外,在安全性评估过程中,可以通过对通用知识的使用来进行自动化地对比和判断,减少对专家判断的需求,从而减少评估结果中的主观性,提高评估结果的准确性。
在前期工作中,我们提出了以攻击模式的通用知识作为评估依据的安全性评估方法。此方法使用自然语言处理技术对软件设计和攻击模式进行建模,通过模型的对比分析获得软件设计中潜在的安全性漏洞。不过,该方法只支持自然语言描述的软件设计文档,在应用上受到了限制。此外,该方法每个模型中只表示一次交互行为,因此会将一条设计或攻击建模成多个模型,忽略了同一条设计或攻击中多次行为之间的关系,从面对准确性造成了一定影响。
通过对前期工作中评估方法的扩展和改进,本文提出了一种针对软件设计的UML顺序图的安全性评估方法。此方法通过对UML顺序图进行建模分析,最终获得软件设计中潜在的安全性漏洞,从而提高了原评估方法的可应用性。同时,通过模型的重新定义和算法的改进,提高了准确性。最后,为了实现评估方法的自动化,我们开发了相应的辅助工具,并通过在一个实际项目上的应用分析,证明了本方法的有效性。