《密码编码学与网络安全》——基础概念
计算机安全应有的属性
对于一个自动化的信息系统,采取保护措施确保信息系统资源(硬件、软件、信息、通信)的保密性、完整性、可用性
保密性(Confidentiality)
对信息的访问和公开进行授权限制,包括保护个人隐私和秘密信息
- 保密性缺失:信息的非授权泄露
- 数据保密性:隐私或秘密信息不向非授权者泄露,也不被非授权者使用
- 隐私性:确保个人能够控制或确定与其自身相关的哪些信息是可以被收集、被保存的,这些信息可以有谁公开以及向谁公开
完整性(Integrit)
防止对信息的不恰当修改或破坏,包括确保信息的不可否认性和真实性
- 完整性缺失:信息的非授权修改和破坏
- 数据完整性:确保信息和程序只能以特定和授权的方式进行
- 系统完整性:确保系统以一种正常的方式来执行预定的功能,免于有意或者无意的非授权操纵
可用性(Avaliabilty)
确保信息的及时和可靠的访问和使用,确保系统能够工作迅速,对授权用户不能拒绝服务
一般而言,可用性的保证不使用密码学的手段
- 可用性的缺失:对信息和信息系统访问和使用的中断
真实性(Authenticity)
一个实体是真实、可被验证、可被信任的;对传输信息来说,信息和信息来源是正确的;也即能够验证发信人是否为可信信源
可追溯性(Accountability)
实体的行为可以唯一追溯到该实体,且这一属性支持不可否认性、阻止、故障隔离、入侵检测和预防、事后恢复以及法律诉讼
安全的分级
程度 | 低 | 中 | 高 |
---|---|---|---|
对组织的损失、资产和个人的负面影响 | 有限 | 严重 | 灾难性 |
执行使命的能力 | 可见地降低 主要功能性能降低 |
显著降级 主要功能性能显著降低 |
严重 主要功能不能完成 |
资产损失 | 较小 | 显著 | 大部分 |
经济损失 | 很小 | 显著 | 大部分 |
个人伤害 | 跟小 | 显著 | 严重性(包含丧命) |
OSI安全框架
安全攻击
任何危机信息系统安全的行为
被动攻击和主动攻击得区别在于是否对系统存在影响
被动攻击
试图了解或利用系统的信息但不影响系统资源,不涉及对数据的更改,很难被察觉
重在预防
- 信息内容泄露:敏感信息被攻击者获取
- 流量分析:通过观察传输信息的长度、频率等数据来确定通信主机的身份和位置,用于判断通信的性质
主动攻击
试图改变系统资源或影响系统运作
可以被检测,但是很难预防
- 伪装:某实体假装别的实体,实现没有权限的实体通过冒充有权限的实体获得额外的权限
- 重播:将获得的信息再次发送以产生非授权的效果
- 消息修改:修改和发消息的一部分或延迟传输或改变消息顺序以获得非授权的效果
- 拒绝服务:破坏整个网络,使其失效或降低性能
安全机制
用于检测、阻止攻击或者从攻击状态恢复到正常状态的过程(或实现该过程的设备)
特定安全机制
针对某些特定协议实现
- 加密:运用数学算法讲数据转换成不可知的形式,数据的变换和还原依赖于算法和加密密钥
- 数字签名:附加于数据单元后的一种数据,是对数据单元的密码变换,用于证明数据源和完整性,防止伪造
- 访问控制:对资源行为进行访问控制
- 数据完整性:保证数据单元或数据单元流的完整
- 认证交换:通过信息交换保证实体身份的各种机制
- 流量填充:在数据流空隙中插入若干位以阻止流量分析
- 路由控制:能够为某些数据选择特殊的物理上安全的路线并允许路由变化
- 公证:利用可信的第三方来保证数据交换的某些性质
普遍的安全机制
不属于任何协议层或安全服务
- 可信功能:据某些标准认为使正确的功能
- 安全标签:资源的标志,命名或指定该资源的安全属性
- 事件检测:检测与安全相关的事件
- 安全审计跟踪:收集可用于安全审计的数据,是对系统记录和行为的独立回顾和核查
- 安全恢复:处理来自安全机制的请求
安全服务
加强数据处理系统和信息传输的安全性的一种处理过程或同性能服务,其目的在于利用一种或多种安全机制进行反攻击
- 威胁:破坏安全的潜在可能,在环境、能力、行为或事件允许的情况下,他们会破坏安全造成危害。威胁是脆弱性被利用而可能带来的危险
- 攻击:对系统安全的攻击,开源于一种具有智能的威胁,有意违反安全服务和侵犯系统安全策略的智能行为
一种由系统提供的对系统资源进行特殊保护的处理或通信服务;安全服务通过安全机制实现安全策略
- 认证:保护信息的真实性,向接收方保证消息来自所声称的发送方
- 同等实体认证:为连接中的同等实体(不同系统中实现相同协议的实体)提供身份确认。保证实体无法试图进行伪装或对之前的连接重播
- 数据源认证:为数据源的来源提供确认,但对数据的复制和修改不提供报复
- 访问控制:限制和控制那些通过通信连接对主机和应用进行访问的能力,实体必需被验证后才能获取相应的访问权限
- 数据保密性:防止传输的数据遭到被动攻击;防止流量分析
- 数据完整性:保证收到的消息与发出的消息一致,没有复制、插入、修改、更改顺序、重播
- 不可否认性:防止发送方或接收方否认传输或接收过某种消息
- 可用性服务:能够按被授权系统实体的要求访问或使用系统和系统资源的性质
安全性原则
原则 | 解释 |
---|---|
节俭机制 | 软硬件设计应该尽可能简单 |
失效安全(防呆) | 在系统失效后,默认的自动解决方案是失去权限保证安全 |
完全访问仲裁 | 每次访问都应该重新检查权限 |
开放式设计 | 算法应该公布出去,以便被其他专家审查问题 |
权限分离 | 大权限应该分离成多个小权限赋予用户 |
最小特权 | 用户和进程在完成功能的前提下应该拥有尽可能少的权限 |
公共机制最小化 | 应该尽可能少设计公共机制,减少被利用的机会,以便验证安全问题 |
用户友好 | 安全机制不应该过度影响用户使用 |
隔离 | 公共资源和私密资源、不同用户的文件与进程、安全机制与其他机制应该隔离 |
封装 | 按照面对对象的思想,加密数据只能被相应的程序读取 |
模块化 | 加密机制应该是一个独立的模块存在,由不同部分的程序引用 |
分层 | 使用多个重叠的安全机制来保护秘密数据,降低单个机制失效造成的泄露 |
减少惊讶 | 各种机制应该符合用户直觉使用,不应当让人困惑 |
基础概念
- 明文(Plaintext)
- 原始消息
- 密文(Ciphertext)
- 编码的消息
- 密钥(Secret key)
- 加、解密的使用的参数
- 加密(Encryption algorithm)
- 从明文到密文的转换过程
- 解密(Decryption algorithm)
- 从密文恢复明文的转换过程
- 密码编码学
- 研究如何对信息编码以实现信息和通信安全的科学
- 密码分析学
- 研究如何破解或攻击受保护的信息的科学,依赖算法的性质、明文的一般特征或某些明密文对。企图利用算法特征来推导出明文或密钥
密码攻击类型
对于密码的要求,一般有以下两点:
- 需要一个健壮的加密算法:即使对手知道了算法并且能够得知多个密文,也无法解密密文
- 发送方和接收方应该以安全的方式保管密钥
攻击类型 | 密文 | 加密算法 | 同密钥的多个明密文对(不可选择) | 同密钥的多个明密文对(选择明文) | 同密钥的多个明密文对(选择密文) |
---|---|---|---|---|---|
唯密文攻击 | √ | √ | |||
已知明文攻击 | √ | √ | √ | ||
选择明文攻击 | √ | √ | √ | ||
选择密文攻击 | √ | √ | √ | ||
选择文本攻击 | √ | √ | √ | √ |