目录

  • 1 第一单元 网络空间安全概述
    • 1.1 课程介绍
    • 1.2 信息与信息系统
    • 1.3 网络空间的概念
    • 1.4 网络空间安全
    • 1.5 网络空间安全知识体系和系统工程
  • 2 第二单元 网络空间安全体系和通用技术安全技术
    • 2.1 安全威胁
    • 2.2 网络攻击
    • 2.3 信息安全策略与模型
    • 2.4 安全服务与安全机制
    • 2.5 访问控制
  • 3 第三单元 现代密码体制与攻防对抗
    • 3.1 密码学回顾
    • 3.2 密码攻防对抗
  • 4 第四单元 安全漏洞和恶意代码
    • 4.1 漏洞的定义和描述
    • 4.2 漏洞挖掘与分析技术
    • 4.3 漏洞扫描技术
    • 4.4 常见漏洞
    • 4.5 恶意代码分类及特征
    • 4.6 病毒攻击和防范
    • 4.7 实验视频
  • 5 第五单元 防火墙和入侵检测系统
    • 5.1 防火墙的概念
    • 5.2 防火墙的分类
    • 5.3 防火墙的指标
    • 5.4 面向防火墙的攻防对抗方法
    • 5.5 下一代防火墙
  • 6 第六单元 网络安全协议
    • 6.1 网络安全协议概述
    • 6.2 安全多方计算协议
    • 6.3 比特承诺协议
    • 6.4 Kerberos认证协议
  • 7 第七单元 信任管理与可信计算
    • 7.1 信任管理和可信计算概述
    • 7.2 可信计算技术架构
    • 7.3 可信计算平台
    • 7.4 可信网络连接
  • 8 第八单元 网络内容安全和舆情控制
    • 8.1 网络不良信息及其分类
    • 8.2 网络信息的传播特点及安全问题
    • 8.3 网络内容监控技术
    • 8.4 网络不良信息监管技术
    • 8.5 网络舆情监控
  • 9 第九单元 信息安全风险评估和安全检测
    • 9.1 信息安全风险评估和安全检测概述
    • 9.2 信息安全风险评估
    • 9.3 信息系统安全测评
    • 9.4 风险评估与安全测评的方法和工具
    • 9.5 风险评估与安全测评发展趋势
  • 10 第十单元 存储备份和灾难恢复
    • 10.1 存储备份和灾难恢复概述
    • 10.2 信息存储设备与技术
    • 10.3 系统备份
    • 10.4 信息系统容灾与灾难恢复
  • 11 第十一单元 软件安全性和软件安全工程
    • 11.1 软件安全性和软件安全工程概述
    • 11.2 软件失效机理
    • 11.3 软件安全需求工程
    • 11.4 软件安全性的分析和设计
    • 11.5 软件安全编码
    • 11.6 软件安全测试
  • 12 第十二单元 信息安全管理、法律法规和标准
    • 12.1 信息安全管理
    • 12.2 信息安全法律法规
    • 12.3 信息安全标准
  • 13 第十三单元 网络空间的典型信息系统的安全防护与测评
    • 13.1 云计算系统的安全防护与测评
    • 13.2 移动智能终端的安全防护与测评
    • 13.3 工业控制网络的安全防护与测评
    • 13.4 物联网的安全防护与测评
软件安全性和软件安全工程概述

1.软件安全工程概述

软件安全工程是信息系统生命周期中的重要环节,也是信息系统安全工程过程中的核心要素。

2.软件安全性的内涵和外延

2.1  软件的定义及特点

软件通常是指一系列按照特定顺序组织的计算机数据和指令的集合,包括与计算机系统操作有关的计算机程序、规程、规则,以及可能的文件、文档及数据等。如果采用开发语言来进行描述,可以通俗地认为“软件=程序+数据+文档”

2.2软件的安全性

美国航空航天局(NASA)在《美国航空航天局安全关键软件的分析和开发指南》(NASA- GB-1740.13-96)给出了软件安全性的定义:在整个软件生命周期内,应用系统安全性工程技术来确保软件采用能提高系统安全性的有效措施,并确保那些可能降低系统安全性的错误均已被排除或控制在可接受的风险水平。

2.3软件安全性与软件可靠性

软件可靠性与软件安全性是紧密联系又有显著区别的两个概念。

软件可靠性(Software Reliability)的研究起源于第一次软件危机,并于 20 世纪 90 年代左右发展成为比较成熟的软件可靠性工程。从现在的角度来看,软件可靠性工程的实施不仅为软件可靠性提升,也为软件可信性和安全性的提升做出了很大的贡献。

目前,软件可靠性的理论已经相对比较成熟,但软件安全性的定义尚不如软件可靠性那样明确。与软件可靠性不同,软件安全性并不强调系统的功能,而是关心系统受到危害的影响。

二者的区别和联系为:

① 所有的软件失效都会破坏软件的可靠性,但只有能够引起危险后果的软件失效才会直接破坏软件的安全性;

② 如果软件缺陷导致的失效影响了软件的安全性,那么修复这些软件缺陷将会同时提高软件的安全性和可靠性;

③ 修复能够引起危险后果的软件缺陷会提高安全性,却可能无助于软件可靠性的提高;

④ 如果软件存在安全性方面的本质缺陷,即便消除了所有的软件失效,也只能提高软件可靠性,但不一定会提高软件安全性;

可靠的软件不一定安全,安全的软件不一定可靠。但是,在具体的软件安全工程实践中,大多不将二者严格区分。