1.1.3 信息系统研发风险与其他相关领域的关系
信息系统研发风险并不是一个孤立的问题,它与其他相关领域关系密切。为了进一步明确研发风险的定位和范畴,特将信息系统研发风险与其他相关领域的关系阐明如下。
1.项目风险
项目风险是指在信息系统研发过程中遇到的预算、资源配置、进度控制等方面的问题以及这些问题对项目的影响。项目风险会影响项目计划的实现,如果项目风险变成现实,就有可能影响项目的进度,增加项目的成本,甚至使项目失败。
项目风险管理是指通过风险识别、风险分析和风险评价去认识项目的风险,并以此为基础合理地使用各种风险应对措施、管理方法、技术和手段,对项目的风险实行有效的控制,妥善地处理风险事件造成的不利后果,以最少的成本保证项目总体目标实现的管理工作。
项目风险主要体现在需求、技术、成本和进度4个方面。信息系统研发项目中常见的风险有以下几类:
(1)需求风险 需求已经成为项目基准,但需求还在继续变化;需求定义欠佳,而进一步的定义会扩展项目范畴;添加额外的需求;缺少有效的需求变化管理过程。
(2)计划编制风险 计划、资源和产品定义不完全一致;计划不现实;计划基于使用不可获取的资源;产品规模比估计的要大;涉及不熟悉的产品领域,花费在设计和实现上的时间比预期要多。
(3)组织和管理风险 决策失误,导致计划进度缓慢,计划时间延长;预算削减,打乱项目计划;管理层做出了打击项目组积极性的决定;缺乏必要的规范,导致工作失误与重复工作。
(4)人员风险 开发人员和管理层之间关系不佳,士气低下;新员工需要更多的时间进行培训;由于项目组成员之间发生冲突,导致工作质量下降;没有找到项目急需的具有特定技能的人。
(5)开发环境风险 设施未及时到位;开发工具未及时到位;新的开发工具的学习期比预期的长,内容繁多。
(6)客户风险 客户要求重新设计或重做;客户的意见未被采纳,产品无法满足用户要求;客户的审核决策周期太长;客户没有参与原型的审核,导致需求不稳定和产品生产周期的变更。
(7)过程风险 大量的纸面工作导致进程比预期的慢;前期的质量保证行为不真实,导致后期的重复工作;风险管理流于形式,导致未能发现重大的项目风险。
项目风险管理工作要求在项目初期阶段要进行风险识别,列出风险清单,然后进行风险分析,根据每个风险可能造成损失的严重程度和其发生概率来确定风险级别,按照既定的风险对策,采取对策制定、风险缓解、风险监控、风险跟踪等控制措施,进行风险监测和控制[2]。
综上所述,项目风险包括项目研发过程中所存在的资源、进度等各类风险,项目风险管理是为了确保项目能够按计划稳步推进,顺利完成。而信息系统研发风险是信息系统研发阶段可能引入系统安全问题的风险。信息系统研发风险管控的目的是为了提高信息系统的安全性。从管理阶段来看,项目风险包含了信息系统研发风险,但两者侧重点各不相同,项目风险侧重对风险的识别、监测和控制等管理工作,信息系统研发风险侧重信息系统的安全设计、安全测试等技术手段运用。
2.运维风险
运维风险是指信息系统在运行、维护过程中可能存在的风险。随着业务的扩张和业务数据的快速增长,信息系统安全运行与维护成为确保业务连续性的关键环节。运维安全管理涉及安全运行与维护机构和安全运行与维护机制的建立,环境、资产、设备、介质的管理,网络、系统的管理,密码、密钥的管理,运行、变更的管理,安全状态监控和安全事件处置,安全审计和安全检查等内容。
根据公安部信息系统安全等级保护标准,运维安全应重点关注安全运行与维护阶段的运行管理和控制、变更管理和控制、安全状态监控、安全事件处置和应急预案、安全检查和持续改进以及监督检查等过程,主要内容包括:
(1)环境管理 包括:机房供配电、空调、温湿度控制;机房的出入、服务器的开关机管理;机房安全管理制度;办公环境的保密管理,包括离岗交还钥匙、来访人员管理、桌面安全等。
(2)信息资产管理 包括:编制资产清单;建立资产安全管理制度;资产标识管理;信息分类与标识;信息的使用、传输和存储等规范化管理。
(3)介质管理 包括:建立介质安全管理制度;确保介质存放在安全的环境中;对介质在物理传输过程登记记录;对存储介质的使用过程、送出维修以及销毁等进行管理;重要介质异地存储;重要介质加密存储等。
(4)设备管理 包括:建立配套设施、软硬件维护方面的管理制度;对终端计算机、工作站、便携机、系统和网络等设备的操作和使用进行规范化管理等。
(5)网络安全管理 包括:管理网络运行日志、网络监控记录的日常维护和报警信息分析和处理;明确网络安全配置、日志保存时间、安全策略、升级与打补丁、口令更新周期;明确网络安全策略并定期检查违反网络安全策略的行为。
(6)系统安全管理 包括:确定系统的访问控制策略;及时修补系统安全漏洞;安装系统的最新补丁程序;定期对运行日志和审计数据进行分析,及时发现异常行为。
(7)恶意代码防范管理 包括:对网络和主机进行恶意代码检测;定期升级恶意代码库;及时分析处理主机防病毒产品、防病毒网关和邮件防病毒网关上截获的危险病毒或恶意代码。
(8)变更管理 包括:建立变更管理制度和流程;建立变更控制的申报和审批流程;建立中止变更并从失败变更中恢复的流程;必要时对恢复过程进行演练。
(9)备份与恢复管理 包括:制定数据的备份策略和恢复策略,明确备份方式、备份频度、存储介质和保存期;定期备份重要业务信息、系统数据及软件系统等;定期检查和测试备份介质的有效性。
(10)安全事件处置 包括:制定安全事件报告和处置管理制度;对计算机安全事件进行等级划分;确定事件的报告流程,响应和处置的范围、程度以及处理方法等。
(11)应急预案管理 包括:制定不同事件的应急预案,应急预案框架应包括启动应急预案的条件、应急处理流程、系统恢复流程、事后教育和培训等内容;定期更新、培训和演练应急预案。
运维风险关注信息系统投产上线后的运行和维护过程中存在的安全问题,而信息系统研发风险关注信息系统投产上线前的研发过程中存在的安全问题,两者是前后串联关系。信息系统研发风险管控水平会对运维风险产生很大影响。对运维风险管理过程中发现的问题应及时反馈,并为研发风险管控工作的改进提供参考依据。
3.信息安全
对现代企业来说,信息是有价值的资产。信息资产应与其他重要商业资产一样要得到妥善的保护。信息安全是指信息系统受到保护,不受偶然或恶意的破坏、更改、泄露,可以连续、可靠、正常地运行,服务不中断,最终实现业务连续性。信息安全主要包括信息的保密性、完整性、可用性,另外也可包括信息的真实性、可核查性、不可否认性和可靠性等。其中,信息的保密性、完整性、可用性统称为信息安全CIA三元组,是信息安全的基本要素。
(1)保密性(Confidentiality) 确保信息在存储、使用、传输过程中不会泄露给非授权用户或实体。
(2)完整性(Integrity) 确保信息在存储、使用、传输过程中不会被非授权用户篡改,同时还要防止授权用户对系统及信息进行不恰当地篡改,保持信息内、外部表示的一致性。
(3)可用性(Availability) 确保授权用户或实体对信息及资源的正常使用不会被异常拒绝,允许其可靠而及时地访问信息及资源。
当然,不同机构和组织因为需求不同,对CIA原则的侧重也会不同。如果组织最关心的是对敏感信息的保护,就会特别强调保密性原则;如果组织最关心的是随时随地向客户提供正确的信息,那就会突出完整性和可用性的要求。组织一般通过制定策略、规程、流程,建立安全管理组织,应用技术手段等一系列管理活动,实现信息安全管理,确保满足特定的安全和业务目标。通俗地讲,信息安全管理工作要做到:非授权用户进不来,进来之后拿不走、看不懂或改不了,拿走了或篡改了但非法用户是跑不掉的,最终达到整个信息安全管理体系打不垮的目的。
目前,信息安全已经发展成为一门学科,其范围覆盖了密码学、网络安全、防病毒、信息对抗等计算机高级应用领域。根据《信息安全管理实施细则》(ISO/IEC27001)的描述,信息安全管理工作包含了安全方针、信息安全组织、资产管理、人力资源安全、物理与环境安全、通讯机操作管理、访问控制、信息系统的获取开发和维护、信息安全事件管理、业务连续性管理、符合性等。
《信息安全管理实施细则》(ISO/IEC 27001)是建立和维持信息安全管理体系的标准。信息安全管理体系是组织在整体或特定范围内建立信息安全方针和目标,以及完成这些目标所用方法的体系。它是直接管理活动的结果,表示成方针、原则、目标、方法、过程、核查表等要素的集合。标准要求组织通过确定信息安全管理体系范围、制定信息安全方针、明确管理职责、以风险评估为基础选择控制目标与控制方式等活动来建立信息安全管理体系;信息安全管理体系应形成一定的文件,其中应阐述被保护的资产、组织风险管理的方法、控制目标及控制方式和需要的保证制度。
信息安全将重点放在信息资产的保护上,可以协助企业找出信息资产面临的风险,排定优先级之后,采用适当的控制措施予以保护。信息系统研发风险面向的是信息系统研发,关注的重点是防范信息系统漏洞,提高信息系统的安全性。从范围上看,信息安全管理的“信息系统获取开发和维护”覆盖了信息系统研发风险的大部分范畴。从本质上看,两者的目的均在于保护企业的资产,但是信息系统研发风险关注范围相对信息安全要小;另一方面,信息系统研发风险的管控工作需要运用许多信息安全技术。
4.软件安全
1983年IEEE(电气和电子工程师协会)对软件的定义是:计算机程序、方法、规则和相关的文档资料以及在计算机上运行时所需的数据。通俗解释为:软件=程序+数据+文档资料。其中,程序是完成特定功能和满足性能要求的指令序列;数据是程序运行的基础和操作的对象;文档资料是与程序开发、维护和使用有关的图文资料[3]。
根据ISO 8402的定义,安全性是“使伤害或损害的风险限制在可接受的水平内”。因此,软件的安全性是软件的一种内在属性。软件安全泛指计算机软件与数据不受自然和人为有害因素的威胁和危害。具体来说,可以理解为软件与数据不会被有意或无意地被跟踪、破坏、更改、显露、盗版、非法复制,软件系统能正常连续地运行。
软件安全保护的指导思想是采用加密、反跟踪、防非法复制等技术,在软件系统或固件上产生一种信息。这种信息既是软件系统中各可执行文件在运行中必须引用的,又是各种文件复制命令或复制软件所无法正确复制、无法正确安装或无法正确运行的。
当前,软件安全面临的主要威胁包括:
(1)软件盗版 软件盗版是指任何未经软件著作权人许可,擅自对软件进行复制、传播,或以其他方式超出许可范围传播、销售和使用的行为。
(2)软件跟踪 软件跟踪包括静态跟踪和动态跟踪。静态跟踪是指将可执行文件反汇编为汇编语言文件,然后分析它。而动态跟踪是利用软件工具一步一步地单步执行软件。软件跟踪本身也是软件分析的主要技术,但如被不法分子利用,用以对软件进行非法破译,将会带来很大的安全威胁。自软件开发出来以后,总有人利用各种程序调试分析工具对程序进行跟踪和逐条运行、窃取软件源码、取消防复制和加密功能,从而实现对软件的动态破译。破解软件的主要手段就是动态跟踪。
(3)软件漏洞 由于种种原因,软件开发商所提供的软件不可避免地存在这样或那样的缺陷,通常把软件中存在的这些缺陷称为漏洞,这些漏洞严重威胁了软件系统的安全。在发现软件的安全漏洞以后,软件公司采取的办法多数是发布“补丁”程序,以修正软件中所出现的问题。虽然补丁的数量越来越多,但安全性却没有很大的提高,主要原因如下:
1)对软件商来讲,目前还缺乏探知软件漏洞的工具,等发现漏洞后可能危害已经发生了,“补丁”程序也只起到亡羊补牢的作用。
2)许多漏洞“补丁”很难补上去。即使能补上,也不一定能补得天衣无缝。
3)有些用户不能及时得知软件存在漏洞和已有“补丁”的信息。即使知道了,也可能因种种原因而无法安装“补丁”程序。
软件安全技术是指为保护软件与数据安全采取的方法、手段和管理措施。目前,保护软件安全的技术包括:
(1)软件加密技术 因为软件极易复制,所以加密是保护软件的一种必要手段。软件加密的目的就是保护软件开发者的利益,防止软件被盗版。目前软件加密技术大致可分为软加密与硬加密两类。软加密是用纯软件的方式来实现软件的加密,主要包括密码方式、软件的校验方式和钥匙盘方式。硬加密则是利用硬件与软件相结合来实现软件的加密,其典型产品包括加密卡、软件狗等。
(2)软件分析技术 软件分析主要作用是保障软件质量,通过分析某个软件,查找出其中包含的软件漏洞,以便开发人员修复该软件,修复漏洞,提高软件质量。软件分析也应用在软件的破解、解密以及计算机病毒分析工作中。因为软件都是机器代码程序,对于它们的分析必须使用静态或动态调试工具,分析跟踪其汇编代码。常见的软件分析技术主要包括直接阅读文档、反汇编和各种跟踪技术等。
(3)软件防盗版技术 软件防盗版技术是指通过某种技术或采取某种加密措施使得一般用户利用正常的复制命令甚至于各种复制软件都无法将软件进行完整的复制,或者是使复制得到的软件不能正常运行。它包括防止软件非法复制和防止软件的非法安装运行两方面。针对防盗版技术的具体细节实现可以使用纯硬件方式、纯软件方式或软硬结合的方式。从软件的发行载体入手,软件防盗版技术又包括磁盘防复制技术和光盘防复制技术。
软件是信息系统的重要组成部分。软件安全是信息系统研发风险管控的重要工作内容之一。信息系统实施阶段的研发风险管控工作重点就是做好软件安全开发工作,防范软件安全漏洞,提高软件安全可靠性。
5.软件质量
软件质量是贯穿软件生存期的一个极为重要的问题,是软件开发过程中所使用的各种开发技术和验证方法的最终体现。因此,在软件生存期中要特别重视软件质量,以生成高质量的软件产品。IEEE在“Standard Glossary of Software Engineering Termilogy”中对质量的定义是:系统、部件或过程满足明确需求。在Rational标准过程理论(Rational Unified Process)中质量被定义为:满足或超出认定的一组需求,并使用经过认可的测评方法和标准来评估,还使用认定的流程来生产。也就是说,为满足软件的各项精确定义的功能和性能需求,遵守文档化的开发标准,需要相应地给出或设计一些质量特性及其组合。如果这些质量特性及其组合都能在产品中得到满足,则这个软件产品质量就是高的[3]。
软件质量反映了以下三方面的问题:
1)软件需求是度量软件质量的基础,不符合需求的软件就不具备质量。
2)在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。
3)有些隐含的需求往往没有明确地提出来,例如,软件应具备良好的可维护性,如果软件只满足那些精确定义了的需求,而没有满足这些隐含的需求,软件质量也不能保证[3]。
软件质量是各种特性的复杂组合,它随着应用的不同而不同,随着用户提出的质量要求的不同而不同。因此,有必要讨论各种质量特性,以及评价质量的准则。软件质量特性及其子特性见表1-1。
表1-1 软件质量特性及其子特性
(续)
软件质量特性反映了软件的本质。从特性上看,信息系统研发风险管控要求覆盖了软件质量中的安全相关特性,包括功能性中的安全性;可靠性中的容错性、可恢复性;效率中的资源特性;可维护性中的稳定性;可移植性中的一致性等方面内容。然而,信息系统研发风险关注的是信息系统整体的安全可靠性,除了软件安全性外,还要关注系统、网络、数据等方面的安全。