软件安全-01-软件与软件安全
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件安全技术
信息与软件工程学院 郭建东
软件安全-UESTC-INTEL IA JOINT LAB
CH01 软件与软件安全
软件安全-UESTC-INTEL IA JOINT LAB
主要内容:
1.1 计算环境与软件 1.2 信息安全与软件安全 1.3 关于软件安全的几个重要概念
软件安全-UESTC-INTEL IA JOINT LAB
软件安全-UESTC-INTEL IA JOINT LAB
系统软件
计算机软件
应用软件
1.1.2.2 软件的主要内容
程序、步骤及数据、信息手册等相关资料 功能:针对一个系统(计算机),合理组织工 作。
两个层次: – 直接与硬件相关 – 合理组织工作,完成特定任务。
软件安全-UESTC-INTEL IA JOINT LAB
软件安全-UESTC-INTEL IA JOINT LAB
软件安全的研究范畴
软件安全研究:如何设计、构造、验证和 维护软件以保证其是安全的。 包括: – 改进和实现软件安全的架构或结构 – 改进和实现软件安全的工具 – 改进或实现软件安全的方法
软件安全-UESTC-INTEL IA JOINT LAB
指令中的操作数: – 可以是一个具体的数值 – 可以是存放数据的寄存器 – 或指明数据在主存位置的存储器地址 指令举例:
MOV AX,BX
ADD AX,3 MUL BL CLD
SUB BX,123
AND DL,80H PUSH CBW
软件安全-UESTC-INTEL IA JOINT LAB
DX
如何得到安全的软件?
构建安全的软件是一个过程,这个过程包括:
– – – – – –
教育 设计,接口选择和规格定义 软件的实现和编 验证、测试和评估 软件提交和安全地执行 软件的维护、BUG修复和调整
软件安全的研究包括上述过程中的所有内容
软件安全-UESTC-INTEL IA JOINT LAB
Computer Vulnerability)” :
“计算机系统由一系列描述构成计算机系统的实体的当前配 置状态 (state) 组成,系统通过应用状态变换 (State Transition,状态转换)(即改变系统状态) 实现计算。使用一组 状态变换,从给定的初始状态可以到达的所有状态最终分为
软件安全-UESTC-INTEL IA JOINT LAB
7)位运算赋值运算符
位运算符与赋值运算符可以组成复合赋值运算符 如:&=, |=, >>=, <<=, ∧=
例如,a & = b相当于 a = a & b。a << =2相当于:a = a << 2。 8)不同长度的数据进行位运算
如果两个数据长度不同(例如long型和int型)进行位 运算时(如a & b,而a为long型,b为int型),系统会将二 者按右端对齐。如果b为正数,则左侧16位补满0。 若b为负数,左端应补满1。如果b为无符号整数型, 则左侧添满0。
1.2 信息安全与软件安全
软件安全-UESTC-INTEL IA JOINT LAB
1.2.1 信息与信息安全 信息定义: 所谓信息,就是客观世界中各种事物的 变化和特征的最新反映,是客观事物之间 联系的表征,也是客观事物状态经过传递 后的再现。
软件安全-UESTC-INTEL IA JOINT LAB
脆弱状态:
从已授权的状态变换到未授权状态。
授权状态
状态变换
未授权状态
脆弱状态
软件安全-UESTC-INTEL IA JOINT LAB
攻击(attack):
攻击是以授权状态或脆弱状态开始,以受损状 态为目标的状态变换。
脆弱状态
状态变换
受损状态 授权状态 脆弱状态
授权状态
攻击行为
软件安全-UESTC-INTEL IA JOINT LAB
软件安全-UESTC-INTEL IA JOINT LAB
计算机系统的组成
完整的计算机系统包括计算机硬件系统和计算机软件系统。
主机 计算机硬件 外设 计算机系统
中央处理器 主(内)存储器 输入设备 输出设备 辅助(外)存储器 操作系统、设备驱动程序、 编译系统和解释系统、 数据库管理系统等等 字处理、图像处理、 计算机辅助设计 ……
1.1.2.3 软件的形式
软件=程序+数据+说明文档
用户通过使用软件来达到控制计算机硬件的目的。
系统软件
软件
应用软件
应用软件以系统软件为基础。
软件安全-UESTC-INTEL IA JOINT LAB
计算机系统的层次
应用程序
操作系统 用户 硬件
软件安全-UESTC-INTEL IA JOINT LAB
软件安全-UESTC-INTEL IA JOINT LAB
软件安全属性:
保护敏感信息不被未授权用户访问– 软件的可 信性,confidentiality 保护数据不被更改或破坏 – 软件的完整性 integrity
确保资源被授权用户的使用-软件的可用性, availability
软件安全-UESTC-INTEL IA JOINT LAB
软件安全-UESTC-INTEL IA JOINT LAB
4)“取反”运算符(~)
~是一个单目(元)运算符,用来对一个二进制 数按位取反,即将0变1,1变0。 5)左移运算符(<<) 用来将一个数的各二进位全部左移若干位。 6)右移运算符(>>) a>>2表示将a的各二进位右移2位。移到右端的 低位被舍弃,对无符号数,高位补0。
软件安全-UESTC-INTEL IA JOINT LAB
根据冯•诺依曼提出的“存储程序控制思想”,人们要 控制计算机完成一定的工作,就要事先编写好一系列 的控制命令,一步一步告诉计算机该如何做,然后将 这一系列控制命令输入到计算机的存储器中保存,再 让计算机按照一定的顺序逐一执行,从而完成我们所 要求的工作。 由人根据一定的需要事先编写的一系列控制计算机工 作的命令,就称为计算机程序。
安全漏洞(Security Hole):计算机系统具有 的某种可能被入侵者恶意利用的属性。 有时安全漏洞也称为脆弱性(Vulnerability)。
漏洞是软件的属性。
软件安全-UESTC-INTEL IA JOINT LAB
脆弱性(Vulnerability)
1996年Matt Bishop和Dave Bailey,“计算机脆弱性(
软件安全-UESTC-INTEL IA JOINT LAB
信息安全属性
信息安全的5个基本属性:
–
– – – –
安全性
可用性 保密性 可控性 可靠性
软件安全-UESTC-INTEL IA JOINT LAB
1.2.2 软件安全概念
软件安全性是指软件不被恶意使用或者攻 击进而造成用户信息资产损失的属性。 软件安全:软件在恶意攻击下能够正确地 完成其功能。
运算、移位、跳转等操作,它是指令中不可缺 少的组成部分
操作数是指令执行的参与者,即各种操作的
对象 有些指令不需要操作数,通常的指令都有一个 或两个操作数,也有个别指令有3个甚至4个操 作数
软件安全-UESTC-INTEL IA JOINT LAB
每种指令的操作码: – 用一个唯一的助记符表示(指令功能的英文缩写)
1.1.2 软件的形式与概念
–
– –
源自文库
1.1.2.1 软件的概念 1.1.2.2 软件的主要内容 1.1.2.3 软件的形式
软件安全-UESTC-INTEL IA JOINT LAB
1.1.2.1 软件的概念
与一系统(尤指计算机系统)有关的程序、步骤和有关 文件编制的完整集合。特指特定类型计算机所使用的程 序的总称,连同与计算机或程序有关的资料,例如手册 、图表和操作指令。
软件安全-UESTC-INTEL IA JOINT LAB
位运算
所谓位运算是指进行二进制位的运算。在 系统软件中,常要处理二进位的问题。例如, 将一个存储单元中的各二进位左移或右移一位 ,两个数按位相加等。C语言提供位运算的功 能,与其他高级语言(如PASCAL)相比,它显
然具有很大的优越性。
软件安全-UESTC-INTEL IA JOINT LAB
由安全策略定义的两类状态:已授权的 (authorized,经授权
的) 和未经授权的 (unauthorized ,未被授权的,未经认可的) 。”
软件安全-UESTC-INTEL IA JOINT LAB
关于软件的脆弱性:
初始状态1 状态变换1 授权状态
状态变换2
初始状态n
状态变换m
未授权状态
软件安全-UESTC-INTEL IA JOINT LAB
软件安全保护什么? 软件的完整性、可用性、保密性。 ①软件自身安全 防止软件丢失、被破坏、被篡改、被伪造 ②软件存储安全 可靠存储,保密存储,压缩存储,备份存储 ③软件通信安全 安全传输、加密传输、网络安全下载、完整下载 ④软件使用安全 合法用户与非法用户,授权访问,防止软件滥用, 防止软件窃取,软件的非法复制 ⑤软件运行安全 确保软件正常运行,功能正常
1.1.3 指令系统与指令集
指令系统:计算机的指令系统就是指该计算
机能够执行的全部指令的集合。
指令集:指令系统也称为指令集
软件安全-UESTC-INTEL IA JOINT LAB
指令的一般格式:
操作码
操作数1 操作数2 操作数3
指令由操作码和操作数两部分组成
操作码说明计算机要执行哪种操作,如传送、
软件安全-UESTC-INTEL IA JOINT LAB
2)按位或运算符(|)
两个相应的二进位中只要有一个为1,该位的结 果值为1。即0|0=0; 0|1=1; 1|0=1; 1|1=1。 3)“异或”运算符(∧)
异或运算符∧也称XOR运算符。它的规则是若 参加运算的两个二进位同号,则结果为0(假); 异号则为1(真)。即0∧0=0; 0∧1=1; 1∧0=1; 1∧1=0;
从更广泛的视角看,软件安全涉及到:
– –
–
– –
–
编程语言和编译器技术 形式化验证 软件工程 操作系统 硬件设计,处理器架构 加密算法
软件安全-UESTC-INTEL IA JOINT LAB
1.3 软件安全的几个重要概念
软件安全-UESTC-INTEL IA JOINT LAB
1.3.1.1漏洞和脆弱性
计算机中二进制数与英文字母的对应关系
01000001 01000010 01000011 01000100 A B C D
软件安全-UESTC-INTEL IA JOINT LAB
位运算符和位运算
1)“按位与”运算符(&)
参加运算的两个数据,按二进位进行“与”运算。 如果两个相应的二进位都为1,则该位的结果值为1, 否则为0。即 0&0=0;0&1=0;1&0=0;1&1=1;
信息安全基本概念
“信息安全”没有公认和统一的定义,国内外的
论述大致可分为两大类: 一类是指具体的信息技术系统的安全。 而另一类则是指某一特定信息体系的安全。 但是有人认为这两种定义失之于过窄,而应定 义为:一个国家的社会信息化状态不受外来的 威胁与侵害,一个国家的信息技术体系不受外 来的威胁与侵害。
漏洞的本质:漏洞是系统的一组特性,恶意的主 体(攻击者或者攻击程序)能够利用这组特性, 通过已授权的手段和方式获取对资源的未经授权
访问,或者对系统造成损害。
当系统的某个漏洞被入侵者渗透(exploit)而造
成泄密时,其结果就称为一次安全事件(Security
Incident)。
软件安全-UESTC-INTEL IA JOINT LAB
寻址方式:取得操作数地址的方式
指令系统设计了多种操作数的来源 寻找操作数的过程就是操作数的寻址 操作数采取哪一种寻址方式,会影响机器运 行的速度和效率 与数据有关的寻址方式
与转移地址有关的寻址方式
如何寻址一个操作数对程序设计很重要
软件安全-UESTC-INTEL IA JOINT LAB
1.1.1 计算环境的发展
计算机 网络 互联网 通信终端 通信网络
软件安全-UESTC-INTEL IA JOINT LAB
1.1.2 二进制基础
计算机处理的符号只有两个:0和1
由0和1构成的数就称为“二进制”数 由这些二进制构成的计算机语言称为“机器语言 ”
软件安全-UESTC-INTEL IA JOINT LAB
信息与软件工程学院 郭建东
软件安全-UESTC-INTEL IA JOINT LAB
CH01 软件与软件安全
软件安全-UESTC-INTEL IA JOINT LAB
主要内容:
1.1 计算环境与软件 1.2 信息安全与软件安全 1.3 关于软件安全的几个重要概念
软件安全-UESTC-INTEL IA JOINT LAB
软件安全-UESTC-INTEL IA JOINT LAB
系统软件
计算机软件
应用软件
1.1.2.2 软件的主要内容
程序、步骤及数据、信息手册等相关资料 功能:针对一个系统(计算机),合理组织工 作。
两个层次: – 直接与硬件相关 – 合理组织工作,完成特定任务。
软件安全-UESTC-INTEL IA JOINT LAB
软件安全-UESTC-INTEL IA JOINT LAB
软件安全的研究范畴
软件安全研究:如何设计、构造、验证和 维护软件以保证其是安全的。 包括: – 改进和实现软件安全的架构或结构 – 改进和实现软件安全的工具 – 改进或实现软件安全的方法
软件安全-UESTC-INTEL IA JOINT LAB
指令中的操作数: – 可以是一个具体的数值 – 可以是存放数据的寄存器 – 或指明数据在主存位置的存储器地址 指令举例:
MOV AX,BX
ADD AX,3 MUL BL CLD
SUB BX,123
AND DL,80H PUSH CBW
软件安全-UESTC-INTEL IA JOINT LAB
DX
如何得到安全的软件?
构建安全的软件是一个过程,这个过程包括:
– – – – – –
教育 设计,接口选择和规格定义 软件的实现和编 验证、测试和评估 软件提交和安全地执行 软件的维护、BUG修复和调整
软件安全的研究包括上述过程中的所有内容
软件安全-UESTC-INTEL IA JOINT LAB
Computer Vulnerability)” :
“计算机系统由一系列描述构成计算机系统的实体的当前配 置状态 (state) 组成,系统通过应用状态变换 (State Transition,状态转换)(即改变系统状态) 实现计算。使用一组 状态变换,从给定的初始状态可以到达的所有状态最终分为
软件安全-UESTC-INTEL IA JOINT LAB
7)位运算赋值运算符
位运算符与赋值运算符可以组成复合赋值运算符 如:&=, |=, >>=, <<=, ∧=
例如,a & = b相当于 a = a & b。a << =2相当于:a = a << 2。 8)不同长度的数据进行位运算
如果两个数据长度不同(例如long型和int型)进行位 运算时(如a & b,而a为long型,b为int型),系统会将二 者按右端对齐。如果b为正数,则左侧16位补满0。 若b为负数,左端应补满1。如果b为无符号整数型, 则左侧添满0。
1.2 信息安全与软件安全
软件安全-UESTC-INTEL IA JOINT LAB
1.2.1 信息与信息安全 信息定义: 所谓信息,就是客观世界中各种事物的 变化和特征的最新反映,是客观事物之间 联系的表征,也是客观事物状态经过传递 后的再现。
软件安全-UESTC-INTEL IA JOINT LAB
脆弱状态:
从已授权的状态变换到未授权状态。
授权状态
状态变换
未授权状态
脆弱状态
软件安全-UESTC-INTEL IA JOINT LAB
攻击(attack):
攻击是以授权状态或脆弱状态开始,以受损状 态为目标的状态变换。
脆弱状态
状态变换
受损状态 授权状态 脆弱状态
授权状态
攻击行为
软件安全-UESTC-INTEL IA JOINT LAB
软件安全-UESTC-INTEL IA JOINT LAB
计算机系统的组成
完整的计算机系统包括计算机硬件系统和计算机软件系统。
主机 计算机硬件 外设 计算机系统
中央处理器 主(内)存储器 输入设备 输出设备 辅助(外)存储器 操作系统、设备驱动程序、 编译系统和解释系统、 数据库管理系统等等 字处理、图像处理、 计算机辅助设计 ……
1.1.2.3 软件的形式
软件=程序+数据+说明文档
用户通过使用软件来达到控制计算机硬件的目的。
系统软件
软件
应用软件
应用软件以系统软件为基础。
软件安全-UESTC-INTEL IA JOINT LAB
计算机系统的层次
应用程序
操作系统 用户 硬件
软件安全-UESTC-INTEL IA JOINT LAB
软件安全-UESTC-INTEL IA JOINT LAB
软件安全属性:
保护敏感信息不被未授权用户访问– 软件的可 信性,confidentiality 保护数据不被更改或破坏 – 软件的完整性 integrity
确保资源被授权用户的使用-软件的可用性, availability
软件安全-UESTC-INTEL IA JOINT LAB
软件安全-UESTC-INTEL IA JOINT LAB
4)“取反”运算符(~)
~是一个单目(元)运算符,用来对一个二进制 数按位取反,即将0变1,1变0。 5)左移运算符(<<) 用来将一个数的各二进位全部左移若干位。 6)右移运算符(>>) a>>2表示将a的各二进位右移2位。移到右端的 低位被舍弃,对无符号数,高位补0。
软件安全-UESTC-INTEL IA JOINT LAB
根据冯•诺依曼提出的“存储程序控制思想”,人们要 控制计算机完成一定的工作,就要事先编写好一系列 的控制命令,一步一步告诉计算机该如何做,然后将 这一系列控制命令输入到计算机的存储器中保存,再 让计算机按照一定的顺序逐一执行,从而完成我们所 要求的工作。 由人根据一定的需要事先编写的一系列控制计算机工 作的命令,就称为计算机程序。
安全漏洞(Security Hole):计算机系统具有 的某种可能被入侵者恶意利用的属性。 有时安全漏洞也称为脆弱性(Vulnerability)。
漏洞是软件的属性。
软件安全-UESTC-INTEL IA JOINT LAB
脆弱性(Vulnerability)
1996年Matt Bishop和Dave Bailey,“计算机脆弱性(
软件安全-UESTC-INTEL IA JOINT LAB
信息安全属性
信息安全的5个基本属性:
–
– – – –
安全性
可用性 保密性 可控性 可靠性
软件安全-UESTC-INTEL IA JOINT LAB
1.2.2 软件安全概念
软件安全性是指软件不被恶意使用或者攻 击进而造成用户信息资产损失的属性。 软件安全:软件在恶意攻击下能够正确地 完成其功能。
运算、移位、跳转等操作,它是指令中不可缺 少的组成部分
操作数是指令执行的参与者,即各种操作的
对象 有些指令不需要操作数,通常的指令都有一个 或两个操作数,也有个别指令有3个甚至4个操 作数
软件安全-UESTC-INTEL IA JOINT LAB
每种指令的操作码: – 用一个唯一的助记符表示(指令功能的英文缩写)
1.1.2 软件的形式与概念
–
– –
源自文库
1.1.2.1 软件的概念 1.1.2.2 软件的主要内容 1.1.2.3 软件的形式
软件安全-UESTC-INTEL IA JOINT LAB
1.1.2.1 软件的概念
与一系统(尤指计算机系统)有关的程序、步骤和有关 文件编制的完整集合。特指特定类型计算机所使用的程 序的总称,连同与计算机或程序有关的资料,例如手册 、图表和操作指令。
软件安全-UESTC-INTEL IA JOINT LAB
位运算
所谓位运算是指进行二进制位的运算。在 系统软件中,常要处理二进位的问题。例如, 将一个存储单元中的各二进位左移或右移一位 ,两个数按位相加等。C语言提供位运算的功 能,与其他高级语言(如PASCAL)相比,它显
然具有很大的优越性。
软件安全-UESTC-INTEL IA JOINT LAB
由安全策略定义的两类状态:已授权的 (authorized,经授权
的) 和未经授权的 (unauthorized ,未被授权的,未经认可的) 。”
软件安全-UESTC-INTEL IA JOINT LAB
关于软件的脆弱性:
初始状态1 状态变换1 授权状态
状态变换2
初始状态n
状态变换m
未授权状态
软件安全-UESTC-INTEL IA JOINT LAB
软件安全保护什么? 软件的完整性、可用性、保密性。 ①软件自身安全 防止软件丢失、被破坏、被篡改、被伪造 ②软件存储安全 可靠存储,保密存储,压缩存储,备份存储 ③软件通信安全 安全传输、加密传输、网络安全下载、完整下载 ④软件使用安全 合法用户与非法用户,授权访问,防止软件滥用, 防止软件窃取,软件的非法复制 ⑤软件运行安全 确保软件正常运行,功能正常
1.1.3 指令系统与指令集
指令系统:计算机的指令系统就是指该计算
机能够执行的全部指令的集合。
指令集:指令系统也称为指令集
软件安全-UESTC-INTEL IA JOINT LAB
指令的一般格式:
操作码
操作数1 操作数2 操作数3
指令由操作码和操作数两部分组成
操作码说明计算机要执行哪种操作,如传送、
软件安全-UESTC-INTEL IA JOINT LAB
2)按位或运算符(|)
两个相应的二进位中只要有一个为1,该位的结 果值为1。即0|0=0; 0|1=1; 1|0=1; 1|1=1。 3)“异或”运算符(∧)
异或运算符∧也称XOR运算符。它的规则是若 参加运算的两个二进位同号,则结果为0(假); 异号则为1(真)。即0∧0=0; 0∧1=1; 1∧0=1; 1∧1=0;
从更广泛的视角看,软件安全涉及到:
– –
–
– –
–
编程语言和编译器技术 形式化验证 软件工程 操作系统 硬件设计,处理器架构 加密算法
软件安全-UESTC-INTEL IA JOINT LAB
1.3 软件安全的几个重要概念
软件安全-UESTC-INTEL IA JOINT LAB
1.3.1.1漏洞和脆弱性
计算机中二进制数与英文字母的对应关系
01000001 01000010 01000011 01000100 A B C D
软件安全-UESTC-INTEL IA JOINT LAB
位运算符和位运算
1)“按位与”运算符(&)
参加运算的两个数据,按二进位进行“与”运算。 如果两个相应的二进位都为1,则该位的结果值为1, 否则为0。即 0&0=0;0&1=0;1&0=0;1&1=1;
信息安全基本概念
“信息安全”没有公认和统一的定义,国内外的
论述大致可分为两大类: 一类是指具体的信息技术系统的安全。 而另一类则是指某一特定信息体系的安全。 但是有人认为这两种定义失之于过窄,而应定 义为:一个国家的社会信息化状态不受外来的 威胁与侵害,一个国家的信息技术体系不受外 来的威胁与侵害。
漏洞的本质:漏洞是系统的一组特性,恶意的主 体(攻击者或者攻击程序)能够利用这组特性, 通过已授权的手段和方式获取对资源的未经授权
访问,或者对系统造成损害。
当系统的某个漏洞被入侵者渗透(exploit)而造
成泄密时,其结果就称为一次安全事件(Security
Incident)。
软件安全-UESTC-INTEL IA JOINT LAB
寻址方式:取得操作数地址的方式
指令系统设计了多种操作数的来源 寻找操作数的过程就是操作数的寻址 操作数采取哪一种寻址方式,会影响机器运 行的速度和效率 与数据有关的寻址方式
与转移地址有关的寻址方式
如何寻址一个操作数对程序设计很重要
软件安全-UESTC-INTEL IA JOINT LAB
1.1.1 计算环境的发展
计算机 网络 互联网 通信终端 通信网络
软件安全-UESTC-INTEL IA JOINT LAB
1.1.2 二进制基础
计算机处理的符号只有两个:0和1
由0和1构成的数就称为“二进制”数 由这些二进制构成的计算机语言称为“机器语言 ”
软件安全-UESTC-INTEL IA JOINT LAB