软件体系架构安全性战术
刘柏
(石家庄铁道大学 河北省石家庄市 050000;)
摘 要:随着软件体系结构在软件工程中的研究与应用越来越广泛,以及学术界和产业界对软件安全性认识的不断深入,提高软件结构安全性成为保障软件安全的重要组成部分。本文对软件体系结构的安全性方面进行了介绍描述。
关键字:软件体系结构;质量属性;安全性战术;
Software Architecture Security Tactics
Liu Bai
(Shijiazhuang Tiedao University;Shijiazhuang City, Hebei Province,;050000;)
Abstract: With the research and application of software architecture in software engineering becoming more and more extensive, as well as the deepening understanding of software security in academia and industry, improving software structure security has become an important part of ensuring software security. This paper introduces the security aspect of software architecture.
Keywords: software architecture; quality attributes; security tactics;
0.引言
软件体系结构开始于软件的早期设计。人们希望通过对软件体系结构进行系统、深入地研究,以提高软件生产率、保障软件的质量、改善软件维护等不断涌现的问题。质量属性是软件体系结构设计中需要考虑的重要概念。它对软件体系结构的设计起到了评估、修正、补充等重要作用,用以提高软件体系结构设计的质量。
现今,软件安全性已成为一个越来越不容忽视的问题,提起它,人们往往会想起一连串专业性名词:“系统安全性参数”、“软件事故率”、“软件安全可靠度”、“软件安全性指标”等等,它们可能出现在强制的规范性文档中的频率比较多,但却不一定能在开发过程中吸引开发者的眼球。几乎每一个程序员都或多或少的在项目维护时遭遇过自己软件的安全性bug,这种经历使我们有幸在一个设计严谨而又性能良好的系统平台上工作时, 都会对其大为感叹: “真是一段很棒的代码!”这是因为,专业的软件设计开发人员会重视软件的安全性,而不仅仅把它当做是书面字眼。
1.安全性概述
安全性指软件同时兼顾向合法用户提供服务,以及阻止非授权使用软件及资源的能力。它既属于技术问题又属于管理问题。一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、风险等多种因素)高于得到的好处,那么这样的系统就可以认为是安全的。
在林·巴斯等人著作的《软件构架实践》第二版中,安全性与可用性、可修改性、性能、可测试性、易用性这五个质量属性一同成为软件架构设计时的六个重点考虑方面。
安全性是衡量系统在向合法用户提供服务的同时,阻止非授权使用的能力。试图突破安全防线的行为被称为攻击(一些安全专家使用“威胁”),可以有很多形式。它可以是未经授权试图访问数据或服务,或试图修改数据,也可能是试图使系统拒绝向合法用户提供对很多介质来说,攻击经常发生,其范围从进行电子转账时盗取资金到修改敏感数据:从窃信用卡号到破坏计算机系统上的文件,以及由病毒执行的拒绝服务攻击等。
2.如何实现安全性
在《软件构架实践》中,作者将实现安全性的战术分为:与抵抗攻击有关的战术、与检测攻击有关的战术以及与从攻击中恢复有关的战术。这3种战术都非常重要。书中举了一个简单的例子:给门装锁就是在抵抗攻击,在房子中放一个运动传感器就是在检测攻击,给房子上保险就是从攻击中恢复过来。
与抵抗攻击有关的战术涉及到以下几方面:对用户进行身份验证、对用户进行授权、维护数据的机密性、维护完整性、限制暴露的信息、限制访问。检测攻击检测通常通过“入侵检测”系统进行。此类系统的工作方式是比较网络通信模式与数据库系统。在误检测的情况下,将通信模式与已知攻击的历史模式进行比较。在异常检测的情况下,将通信模式与其本身的历史基线进行比较。从攻击中恢复则分为与恢复状态相关的战术和与基于预防或惩罚目的的识别攻击者相关战术两部分。软件的安全性通常包括服务器安全,数据库安全,数据传输安全,交易安全,通常对这些网络的安全进行加密保护后,软件的安全性才得以保障。
基于以上安全性战术的设计思想,软件架构设计的安全性主要考虑安全威胁、安全机制、安全设计、访问控制和安全通道这几方面。
2.1安全威胁
安全威胁主要包括机密性威胁、可用性威胁、完整性威胁和真实性威胁。其中,机密性威胁指的是未经授权的用户获得了对一项服务或者数据的访问权;可用性威胁是指可能导致服务或者数据难以获得、不能使用;完整性威胁是指在未经授权的情况下篡改数据和服务;真实性威胁是指通过伪造等方法,产生不存在的数据和服务。
在安全威胁中,机密性威胁、完整性威胁和真实性威胁这三方面均涉及到了与抵抗攻击有关的战术,而可用性威胁虽然算是可用性战术需要考虑到的方面,但实际上由于合法用户的服务可能不能使用,所以将其划分到安全战术方面也是很合理的。
2.2安全机制
安全机制是指在软件设计中确保安全的机制和方法,包括加密、身份验证、授权和审计。其中,加密是指将数据转换或攻击者不能理解的形式;身份验证用于验证客户、用户、服务器等所申明的身份;授权是给予访问资源所需的适当(最小)权限;审计指的是追踪访问内容和形式。安全策略定义了系统对资源的控制和保证,以及应该给当事人赋予的表示,以确定对系统中的每种资源(或者每种类型的资源)有什么样的访问。典型的安全策略会根据系统内不同类型的当事人,各种类型的信息,以及每组当事人所需要的访问类型来定义信息访问策略。安全性策略还需要定义如何控制特定敏感系统操作的执行。策略也应该定义必须执行的信息完整性约束以及保护信息不会收到授权变更。
2.3安全设计
安全设计需要考虑以下三个问题:控制焦点、安全机制分层和简洁性。控制焦点关注对应用程序相关数据的保护,访问特定数据或资源时,通过指定可以调用的操作以及操作由谁完成来实施保护措施,限定特定用户或角色访问该应用程序。安全机制分层解决安全机制应该在哪一层实现的问题。简洁性强调设计的实现必须简洁明了。
2.4安全控制
访问控制主要是主体对客体的访问权限,主要技术包括访问控制矩阵、黑白名单等方法。软件系统通过安全策略定义安全性需要。
2.5安全通道
安全通道主要对通信各方面进行身份验证,并保证消息的完整性和机密性。
3.总结
进行软件安全性方面的架构,意味着要采用更全面也要更细致的思维方式,考虑的东西要更为战略化,需要更为抽象地考虑问题,并使用沟通工具和技术来全面描述希望团队实现的目标。除此之外,还需要从更高的角度考虑安全性,而不能只从战术的角度考虑。如今,攻击的次数和频率都在增加,攻击者的主要动机是获得可观的经济收益、政治议程以及企业和国际间谍活动。过去只有少数人知道的专有黑客技术现在被公开记录,并且被许多人了解。更糟糕的是,即使是业余爱好者也可以使用现成的工具和脚本来弥补技能的不足。此外,自动攻击工具可以免费使用。所有这些因素都增加了企业被黑客攻击的可能性,导致从网络攻击中恢复的业务成本更高。所以,软件的安全性必不可少,注重软件体系架构的安全性成为最重要的一部分。
参考文献
[1]秦不凡.大数据时代下软件工程技术的应用[J].农家参谋,2020(10):214.
[2]刘子威.软件工程技术发展研究[J].中国校外教育,2020(09):57.