国际标准化组织(ISO)定义信息安全是为数据处理系统建立和采取的技术与管理的安全保护。广义上来说,信息安全是指保护资源免受各式各样的威胁、干扰和破坏,从而保证信息的安全性,即保密性、完整性、可用性、可预测性、可靠性和不可否认性等 。
1)保密性:保证敏感或私有信息不被未授权人所知悉,对未授权人进行一定的限制访问,以及允许授权人在权限范围内自由访问,确保信息不会因非法泄露而扩散。
2)完整性:在信息传输、存储或处理过程中,保证不破坏、不修改和不丢失信息,以及未经授权信息不可修改等。
3)可用性:保证授权人访问网络和信息系统时的随时可用,而未授权人则无法获取信息或资源。
4)可预测性:软件的运行情况可预测(例如软件输入、运行环境等),软件的功能、属性和行为始终符合预期。
5)可靠性:软件在规定条件和时间下,能完成规定功能。
6)不可否认性:防止所有参与者抵赖曾经完成的操作和承诺。不可否认性与可审计性相对应,为系统中的每项活动、每项变化和每项任务都能够追溯到个人或授权后的行动提供了技术基础。
多年来,网络安全行业主要专注于网络运行安全和网络信息安全。随着软件供应链安全事件频发,软件供应链安全成为业界关注的焦点。假设软件本身是安全的,那么软件的安全控制是只要避免企业和机构在软件运行时发生故障即可。然而,我们在回顾信息系统安全的最佳实践时不难发现:在信息系统中,网络和软件应用都应该是网络安全纵深防御体系的重要组成部分;软件应用作为人们进行信息交互的直接媒介,对信息系统安全的重要性不言而喻。因此,软件安全,尤其是软件应用的安全,应该是信息系统安全的第一步,而不应该是最后一步。这里需要明确的一点是,只有解决软件安全本质问题——代码安全问题,我们才能真正解决信息系统中的网络安全问题。
在软件生命周期方法论建立后,人们认识到软件安全同软件产品的质量属性一样,也需要重视软件生命周期中的各个阶段并提出相应对策,而且越早采取有力措施,后期相关问题的弥补成本越低。因此,人们开始关注软件生命周期中各个阶段的安全,并逐步将安全属性纳入软件生命周期方法论的考量与研究中。
对于软件安全与软件生命周期安全之间关系的理解,为了便于讨论,我们引入了“开发安全”这一概念。对于软件安全来说,广义的“开发安全”是指软件生命周期的安全,即对软件在准备、开发、部署、运营、废弃等阶段进行安全管理,以提升各阶段的安全性,最终实现软件系统安全。狭义的“开发安全”是指仅在开发阶段的安全。在本书中,如无特别注明,提及的“开发安全”则主要是指软件生命周期中涉及软件开发的安全。
谈到“开发安全”,这里有必要再简单介绍一下业界经常提及的几个概念。
1)SDL(Security Development Lifecycle,软件安全开发周期),最早是由微软提出的一种从安全角度出发为软件开发过程管理提供指导建议的实践模型。严格来说,SDL最初的含义仅限于是一种软件安全开发管理模型。然而,随着SDL模型在实践中的推广和改进,以及人们对开发安全的认知加深,从更广泛的意义上来看,SDL已经超出它原有的含义,泛指包括SDL模型、SDL相关的软件安全开发管理模式实践以及由它们延伸出来的软件安全开发方法论等的一种传统安全开发框架。SDL作为一种新的软件安全开发方法论被讨论时,对于业界开展软件安全开发实践、践行开发安全从文化到组织团队、流程管控、技术工具等有着全方位的指导意义。
2)S-SDLC(Secure Software Development Life Cycle)按照字面意思可以理解为安全的SDLC,具体来说是一套将安全活动内建到软件生命周期的各个阶段的安全工程方法。S-SDLC的理念源于微软SDL(即MSSDL)。广义的S-SDLC指包括微软SDL在内的基于安全软件生命周期的安全开发方法,狭义上的S-SDLC则具体指软件安全开发生命周期的研究和实践项目,相当于对早期的微软SDL模型的发展和延伸。事实上,在大多数软件安全开发实践中,开发者仍会将微软SDL体系作为指导安全开发的首选,而将S-SDLC作为学术研究和探索。
数字化业务安全保障本身是一个庞大而复杂的课题,而软件开发安全的实现与落地也才刚刚开始。目前,国内外开发安全既有理论研究,也有分析总结的企业成功实践。下面将对国内外开发安全现状情况做简要介绍。
欧美国家的开发安全行业发展较早,美国是该领域的佼佼者。在理论和规范方面,美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)发布的SP800系列标准就是一套关于信息安全的系统性文件,其中大量篇幅涉及软件开发安全。虽然SP800系列标准只是NIST的特殊出版物,并非正式法定标准,在强制性上类似于我国的推荐性标准,但是在软件安全管理实践中,SP800系列标准不仅已经成为美国软件安全行业的事实标准和权威指南,其影响甚至外溢到国际范围,被包括我国在内的软件安全行业从业者广泛借鉴。SP800系列标准中涉及的软件开发安全内容覆盖了软件生命周期中的各个阶段,并为每一阶段提供了相应的安全实践指导,可用于指导软件开发过程中安全与数字化业务的融合。
在企业级实践方面,国际上也有不少典型的案例。
1)微软SDL:微软公司提出的一种软件安全开发模型。2002年,微软在瀑布式模型基础上结合软件工程发展出安全开发生命周期模型,即微软SDL。事实上,微软SDL本质上就是开发安全软件(即能够抵御恶意攻击的软件)时采用的一套流程。它在软件开发的所有阶段都引入了安全和隐私保护原则,添加了一系列安全活动,例如威胁建模、静态代码分析、模糊测试等。自2004年起,微软在全公司内就将SDL作为强制性策略进行实施。
2)CSDL:思科公司提出的一种软件安全开发模型。CSDL也是在整个软件开发过程中引入安全和隐私保护机制,进而有助于跟踪、发现安全缺陷并及时修复处理以降低危害,推动组织持续评估、检测和改进软件供应链安全。
3)BSI模型:Gary McGraw提出的一种软件安全开发模型。2006年,Gary McGraw在SDL基础之上聚焦于整个软件开发过程中每个阶段的风险,提出了BSI模型。BSI,即Building Security In,主张将安全管理能力内建在软件开发过程中,而非游离于软件生命周期。BSI以工程化方法来保障软件安全。其中,安全触点被认为是一种轻量级工程化方法,能够从不同角度对软件生命周期中的各个阶段提供安全保障。
4)CLASP模型:由Secure Software公司提出,并由OWASP(Open Web Application Security Project,开放式Web应用程序安全项目)完善、维护和推广的一种综合性轻量应用安全过程模型。CLASP模型本质上是一种用于构建安全软件的轻量级过程模型,主要通过一系列安全活动提升整个开发团队的安全意识。
国内对开发安全工作非常重视,开展时间并不比国外晚,但在理论研究深度和实践强度上,和发达国家还有一定距离。在理论和规范方面,2015年5月15日我国正式发布了国家标准GB/T 18336—2015《信息技术 安全技术 信息技术安全评估准则》。该标准对软件生命周期中的各个阶段提出了安全要求,以验证软件产品的保密性、完整性、可用性、可控性等。此外,无论供应商、用户还是第三方评估机构,都能够依据规定的标准化规程和方法体系开展软件产品的安全测试和评估实践。
国内开展开发安全活动的企业也有不少,这里列举几个代表性企业。
1)搜狐SDL:搜狐公司期望通过SDL解决自身在信息安全中面临的诸如项目开发周期短、迭代快、安全设计缺位、安全编程意识缺乏、使用中的老旧代码难以维护、业务线代码风格混杂多变等问题。它的核心安全活动包括安全测试、安全培训、需求分析、系统设计、编码实现、发布和运营。结合企业自身特点设计安全活动中的具体事项是搜狐SDL建设的特点。
2)华为SDL:2019年年初,华为公司开始加强对安全和隐私保护的重视,并加大在SDL建设上的投入。当时,任正非在《全面提升软件工程能力与实践,打造可信的高质量产品——致全体员工的一封信》中明确提出了“把网络安全和隐私保护作为公司的最高纲领”,确保每个产品和解决方案都融入信任和构建高质量,确保安全性、韧性、隐私性、可靠性和可用性,充分展示了华为扎实的安全工程认知。回到实践层面,华为的国际化脚步意味着多产品安全交付已经成为常态,同时面向全球市场成为刚需。因此,在建设SDL时,企业除了要关注单个产品的漏洞外,还要关注相关产品间的安全依赖关系;通过建立制度和采用新技术进行规范和管理,应对引入组件等时潜藏的漏洞。
人是一切安全活动开展的基本。做好开发安全工作,要以人为本,重点从安全文化、流程管控、安全技术和安全运营体系等多个维度展开。
1)安全文化。文化是每个企业和机构强大而独特的组成部分。要做好开发安全工作,企业需要努力构筑安全和研发彼此依赖、彼此助力的融合文化:将安全和研发同步规划、同步构建、同步运营作为基本原则,强化人人为安全负责的意识,让所有成员在日常工作中建立安全意识。这样的文化氛围才能为持续高效地开发安全的软件产品打好思想基础。
2)流程管控。在软件开发生命周期中,企业还应确保整个软件开发及上线运营等全流程中的安全,可建立安全开发流程框架,提高开发过程中安全工作的效率和质量,解决开发流程中的安全问题。
3)安全技术。软件开发过程中使用的技术越多,技术滥用的机会也会更多。只有整个软件开发过程中充分采用缺陷检测技术,才能进一步提高软件产品的安全性。需要注意的是,这些技术不仅能识别缺陷,还能让团队轻松地解决问题。
4)安全运营体系。安全运营体系旨在以安全效果为目标将安全在软件生命周期中运营起来。企业需关注“如何构建和提升安全”“如何持续处于安全的状态”以及“如何在安全成本和威胁之间做出正确选择”等问题。