前言
看到第一学期开了密码学这门课,本来想好好学一下的,没想到计划赶不上变化居然忙到根本没有时间上课,希望不会挂掉(哭。。。
第一章 概览
计算机安全概念
定义:
“对于一个自动化的信息系统,采取保护措施确保信息系统资源(包括硬件、软件、固件、信息/数据和通信)的保密性、完整性、可用性。”
3个关键目标(CIA):
- 保密性(Confidentiality)
- 数据保密性
- 隐私性
- 完整性(Integrity)
- 数据完整性
- 系统完整性
- 可用性(Availability)
其他概念:
- 真实性(Authenticity)
- 可追溯性(Accountability)
OSI安全框架
主要关注:
安全攻击
- 被动攻击
- 信息内容的泄露
- 流量分析
- 主动攻击
- 伪装
- 重播
- 消息修改
- 拒绝服务
- 被动攻击
- 安全机制
- 特定安全机制:加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证。
- 普遍安全机制:可信功能、安全标签、事件检测、安全审计跟踪、安全恢复。
- 安全服务
- 认证
- 访问控制
- 数据保密性
- 数据完整性
- 不可否认性
是一种由系统提供的对系统资源进行特殊保护的处理或通信服务。(RFC4949)
网络安全模型
可信第三方:
- 第三方负责将秘密信息分配给通信双方,而对攻击者保密。
- 或者当通信双方关于信息传输的真实性发生争执时,由第三方来仲裁。
安全服务:
- 设计算法
- 产生秘密信息
- 分配和共享
- 指明协议实现安全服务
第二章 传统加密技术
基本概念
密码学
- 密码编码学
- 密码分析学
明文:原始的消息
- 密文: 加密后的消息
- 加密:从明文到密文的变换过程
- 解密:从密文到明文的变换过程
对称密码模型
5个基本成分:
- 明文
- 加密算法
- 密钥
- 密文
- 解密算法
加密算法根据输入信息X和密钥K生成密文Y=[Y1, Y2, …, YN],即Y=E[K, X]。
有密钥K的合法接收者,可进行解密变换X=D[K, Y]。
密码编码学
3个独立特征:
- 转换明文为密文的运算类型:代替 vs. 置换。
- 所用的密钥数:对称密码 vs. 公钥密码。
- 处理明文的方法:分组密码 vs. 流密码。
密码分析学和穷举攻击
攻击通用方法:
- 密码分析学
- 穷举攻击
Kerckhoffs原则:假定密码攻击者知道加密数据所使用的算法,数据的安全性应当取决于密钥的选择。
无条件安全:无论花多少时间,攻击者都无法解密密文。
Shannon已经证明:除了一次一密之外,所有的加密算法都不会是无条件安全的。
加密算法应尽量满足:
破译密码的代价超出密文信息的价值
破译密码的时间超出密文信息的有效生命期
如果加密体制满足了上述两条标准中的任意一条,则它是计算安全的。然而,估计攻击者成功破译密文所需的工作量是非常困难的。
代替技术
Caesar密码:
对字母表中的每个字母,用它之后的第3个字母来代替
细节:
- 加密算法:Ek(m) ≡ m + 3 (mod 26)
- 解密算法:Dk(c) ≡ c - 3 (mod 26)
凯撒密码的密钥空间太小,穷举攻击25种可能
单表代替密码:
Caesar密码只有25种可能的密钥,是不安全的。通过允许任意代替,密钥空间将会急剧增大。一般,具有n个元素的集合有n!个置换。如果密文是26个字母的任意置换,那么就有26!种可能的密钥。
Playfair密码:
基于一个5×5的字母矩阵。字母矩阵构造方法如下:
- 选一个英文短语或单词作为密钥,去掉其中重复的字母得到一个无重复字母的字符串。
- 然后再将字母表中剩下的字母依次从左到右、从上往下填入矩阵中,字母i,j占同一个位置。