# 应用密码学
笔者参加 23 年 scu 期末考试,卷面扣 2 分,放心食用,都是重点。
# 极限速通版
# 数学基础
# 第一章 - 绪论
发展:
古典密码:数据安全依赖于密码方法的保密。古代到十九世纪末
近代密码:数据安全基于密钥,而非算法保密。轮转机。
现代密码:
香农理论 —— 证明了一次一密是完善保密的,导致对流密码的研究(没说他研究了)。
建立了保密与密码学基础。提出分组密码准则,扩散性和混淆性。
迪菲,赫尔曼首次提出公钥密码体制的概念。
分类:密码编码学,密码分析学。
# 1. 任务
目标:保证信息的 保密性,真实性,完整性,可用性,可鉴别性,不可抵赖性
# 2. 攻击方法
攻击方法:穷举攻击,统计分析攻击,解密变换攻击,唯密文攻击,已知明文攻击,选择明文攻击,选择密文攻击
唯密⽂攻击(被动) 这种攻击⽅式通常是密码分析中最困难的⼀种,因为攻
击者只能通过分析密⽂的统计特性和密⽂的结构来猜测明⽂和密钥。需要攻击者拥有⼤量的密⽂和⾜够的时间和计算资源来破解密码系统
已知明⽂攻击(被动) 攻击者已经知道了⼀部分的明⽂和密⽂,可以通过⽐对明⽂和密⽂之间的关系来推断出密钥。需要攻击者在攻击之前收集到⼀些明⽂和
密⽂的对应关系。
选择明⽂攻击(主动) 攻击者可以选择⼀些明⽂,获得对应的密⽂,以此
来推断出密钥。可以选择任意的明⽂,可以更加精准地推断出密钥。需要攻击者能够向密码系统发送恶意的明⽂。
选择密⽂攻击(主动) 攻击者可以选择⼀些密⽂,获得对应的明⽂或其他
密⽂,以此来推断出密钥。需要攻击者能够向密码系统发送恶意的密⽂
无条件安全性 | 攻击者有无限资源也无法破解 |
---|---|
计算安全性 | 远超攻击者资源水平 |
可证明安全性 | 密码系统的难度和某个数学难题等价 |
实际安全性 | 实际上计算资源难以实现 / 所需时间超过生命周期 / 代价大于价值 |
# 3. 对称密码悖论与安全信道
对称密码悖论(Symmetry Paradox)和安全信道问题(Secure Channel Problem)是密码学中的两个重要概念。
- 对称密码悖论: 对称密码悖论是指在对称密钥加密系统中,加密和解密使用相同的密钥。这个悖论的核心问题是:如果通信双方需要安全地交换信息,他们首先需要一个安全的密钥交换机制。然而,如果他们能够安全地交换密钥,他们就已经拥有了一个安全信道,那么加密本身似乎就变得多余了。换句话说,如果通信双方已经拥有一个安全的信道来交换密钥,他们为什么不直接使用这个信道来安全地交换信息呢?
- 安全信道问题: 安全信道问题是指在不安全的通信环境中,如何安全地建立一个加密通信信道。在现实世界中,通信信道往往容易受到窃听和篡改。安全信道问题关注的是如何在不安全的信道上,通过某种方法(如密钥交换协议)来确保通信双方能够安全地共享一个密钥,从而实现加密通信。
这两个问题都涉及到如何在不安全的通信环境中实现安全通信的问题。解决这些问题的方法包括使用公钥加密(非对称加密)来安全地交换密钥,以及使用各种密钥交换协议,如 Diffie-Hellman 密钥交换协议等。这些方法允许通信双方在不安全的信道上生成和共享一个只有他们知道的密钥,而无需事先拥有一个安全的信道。
# 4. 对称与非对称加密
特点 / 方面 | 对称密码体制 | 非对称密码体制 |
---|---|---|
密钥特点 | 只有一个密钥,用于加密和解密 | 有两个密钥:公钥和私钥,公钥加密,私钥解密 |
计算效率 | 加密和解密速度快 | 加密和解密速度慢,不适合大量数据加密 |
密钥管理 | 密钥分发是主要问题,需要安全信道 | 公钥可以公开,私钥需要保密 |
开放性 | 密钥需要保密,不适合开放环境 | 公钥可以公开,适合开放环境 |
实现数字签名 | 通常需要结合哈希函数和消息认证码 | 私钥直接用于签名,公钥用于验证签名 |
主要应用 | 适用于大量数据的加密传输 | 适用于密钥交换、数字签名和身份验证 |
# 5. 两种保密模型
点对点保密通信模型是指通信双⽅之间进⾏加密通信,以保护通信内容的机密性和完整性。
在点对点保密通信模型中,通信双⽅需要使⽤相同的密钥来进⾏加密和解密。
点对点保密通信模型的原理是基于对称加密算法,通信双⽅需要事先协商好⼀个密钥,并使⽤该密钥来进⾏加密和解密。
在通信过程中,明⽂消息被加密成密⽂,只有使⽤正确的密钥才能将密⽂解密成明⽂。
点对点保密通信模型的优点是加解密速度快,但需要保证密钥的安全性。
多⽅保密通信模型是指多个参与者之间进⾏加密通信,以保护通信内容的机密性和完整性。
在多⽅保密通信模型中,每个参与者需要使⽤不同的密钥来进⾏加密和解密。多⽅保密通信模型的原理是基于公钥加密算法和数字签名算法。
在多⽅保密通信过程中,每个参与者都有⾃⼰的公钥和私钥,公钥⽤于加密和验证数字签名,私钥⽤于解密和签名。
在通信过程中,每个参与者可以使⽤其他参与者的公钥来加密消息,只有使⽤正确的私钥才能解密消息。
同时,参与者还可以使⽤⾃⼰的私钥对消息进⾏签名,以保证消息的真实性和完整性。
多⽅保密通信模型的优点是可以保证通信内容的机密性、完整性和真实性,但加解密速度较慢,并且需要管理多个密钥。
# 6. 习题
1-1
(1)密码学是基础。密码技术在解决网络信息安全中发挥重要作用,信息安全服务要依赖各种安全机制来实现,而许多安全机制需要依赖于密码技术。
(2)信息的机密性,完整性,抗抵赖性,鉴别性都依赖于密码学。因此,密码学是信息安全学科建设和信息安全工程实践的基础理论之一,但同时密码学又不能解决所有在信息安全中所遇到的问题。
# 1-6 密钥
此题为开放性题目,只要对密码设计的公开性原则阐述有理有据即可。
【参考答案】对于商用密码系统而言,公开密码算法的优点包括:
1. 有利于对密码算法的安全性进行公开测试评估;
2. 防止密码算法设计者在算法中隐藏后门;
3. 易于实现密码算法的标准化;
4. 有利于使用密码算法产品的规模化生产,实现低成本和高性能。
但是必须要指出的是,密码设计的公开原则并不等于所有的密码在应用时都一定要公开密码算法。
# 1-7 对称 & 非对称区别
对称密码体制中,加解密密钥相同或可相互导出;算法效率高;但密钥管理困难;开放性差;需要可靠密钥传输信道;难以实现数字签名;常用于数据加密。
非对称密码体制中每个用户有两个密钥,一个加密密钥(可公开)和一个解密密钥(保密),两个密钥不相同,且不可由公开的加密密钥导出解密密钥;密钥管理相对简单;适用于开放的应用环境;可方便实现数字签名和验证;算法计算效率较低;常用于密钥协商和数字签名。
# 第二章 - 古典密码
古典密码速通 | 操作 |
---|---|
单表替代 | |
移位密码 | 映射成数字,E(m)=m+k mod 26 |
仿射替换 | 字母射成数字,进行模运算, k=(k1, k0) E(m)=k1m+k0 mod 26 |
密钥短文 | 还是一张表,相当于重组一个字母表,去掉重复字母构成替换表,并在后面补上其他字母 |
多表替代 | |
维吉利亚 | Ci = Mi + Ki (mod 26) ,先分组,成密钥长度那么长,挨着加,加了换回字母表 |
Hill 密码 | 加密比较简单,就是分组,左乘加密矩阵;解密有点困难,要先求一个逆矩阵(模 26 的)![]() |
# 1. 单表替代
① 一般替代
将单个字母唯一的替换为另一个字母
密钥空间:|k|=26!=4*10^26. 密钥即为 26 个置换
②移位:将 a-z 映射到 0-25
E(m)=m+k mod 26
D(c)=c-k mod 26
特别的,k 为 3 时即凯撒密码
② 仿射替换:
E(m)=am+k mod 26
D(c)=(c-k)*a^-1 mod 26
由于 a 与 26 互质,因此 | K|=12*26=312
③ 密钥短语密码
用一个短语作为密钥,去掉重复字母构成替换表,并在后面补上其他字母
此时的密钥空间仍然是 26!
# 2. 多表替代
使用多个替代表,可以解决概率分布相同的问题。
① 维吉尼亚密码
与位移密码类似,但是是动态变化的
密钥(k1,k2,k3….)明文(m1,m2,m3…)
密文(k1+m1,k2+m2,k3+m3…)
① 希尔密码
和线性变换类似 ,但是参数只有乘数,没有加数。
请注意,加密运算是左边乘!
|k|=26^(n*n)
但是容易遭受选择明文攻击与已知明文攻击
② 一次一密
和维吉尼亚差不多,只不过密钥变成了和明文同长的位移量
③ Playfair 密码
与其他密码不同的是,将双字母作为一个单元处理。先构造一个 55 的字母矩阵第一步是编制密码表。在这个 55 的密码表中,共有 5 行 5 列字母。第一列(或第一行(我们作业用的是行))是密钥,其余按照字母顺序。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。如:密钥是 Live and learn, 去掉后则为 liveandr。如果密钥过长可占用第二列或行。
第二步整理明文。将明文每两个字母组成一对。如果成对后有两个相同字母紧挨或最后一个字母是单个的,就插入一个字母 X(或者 Q)。
1 若 p1 p2 在同一行,对应密文 c1 c2 分别是紧靠 p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,ct 对应 dc
2 若 p1 p2 在同一列,对应密文 c1 c2 分别是紧靠 p1 p2 下方的字母。其中第一行被看做是最后一行的下方。
3 若 p1 p2 不在同一行,不在同一列,则 c1 c2 是由 p1 p2 确定的矩形的其他两角的字母(至于横向替换还是纵向替换要事先约好,或自行尝试)。如,按照前表,wh 对应 ku 或 uk。
双字母换成另一个字母。
# 3. 置换密码
# 4. 破解单表
# 5. 破解多表
Hill 密码,可以借助解方程思想,把 E 和 D 确定好。
# 第三章 - 分组密码
# 1. 安全性原则
特点 / 方面 | SPN(替代 - 置换网络) | Feistel 结构 |
---|---|---|
基本组成 | 替代(S 盒)和置换(P 盒) | 替代(函数 f)和置换 |
工作原理 | 明文块经过多轮替代和置换 | 明文块分为左右两半,每轮进行替代和置换 |
混淆与扩散 | 替代实现混淆,置换实现扩散 | 替代实现混淆,置换实现扩散,但迭代方式不同 |
迭代轮数 | 替代和置换交替进行,每轮都影响整个块 | 明文块每轮迭代后,左右两半交换,实现扩散 |
加解密过程 | 加密和解密过程可能不同 | 加密和解密过程相同,易于实现 |
设计复杂度 | 较高,因为需要设计替代和置换的规则 | 较低,替代函数和置换规则相对简单 |
性能 | 通常具有较高的计算复杂性 | 通常具有较低的计算复杂性,适合硬件实现 |
安全性 | 快速扩散,但设计不当可能存在弱点 | 扩散速度可能慢于 SPN,但设计得当可以很安全 |
典型算法 | DES(数据加密标准) | AES(高级加密标准) |
缺点 | 1. 每轮加密时输⼊有⼀半没有改变;<br/>2. 左右块的加密处理不能并⾏实施 |
# 2. 分组密码分析
# DES
特点 / 操作 | 描述 |
---|---|
数据分组长度 | 64 位 |
密文分组长度 | 64 位 |
密钥长度 | 64 位,但有效密钥长度为 56 位(8 位用于奇偶校验) |
迭代轮数 | 16 轮迭代 |
加密结构 | Feistel 结构 |
初始置换 | 将 64 位明文分组进行初始置换 |
迭代过程 | 每轮包括置换、替换、异或与循环移位操作 |
初始逆置换 | 16 轮迭代后对数据进行初始置换的逆操作 |
基本运算操作 | 置换、替换、异或、循环移位 |
解密算法 | 加密算法相同,但子密钥使用顺序相反 |
安全性 | 体制公开,安全性依赖于密钥的保密 |
S 盒设计特点 | |
(1) 任何 S 盒都不是输入变量的线性函数 | |
(2) S 盒的每一行包括所有 16 种比特组合(除输入比特的最左和最右比特确定) | |
(3) 改变 S 盒的一个输入位,至少引起 2 位的输出变化 | |
(4) 当固定 S 盒的 1 位输入时,S 盒的每一位输出中 0 和 1 的个数尽可能平衡 |
# DES 攻击
# 1. 已知明文攻击
# 2. 选择明文攻击
# 3. 互补对称证明
# 4. 三重 DES
⼆重 DES 的加密,所⽤密钥的⻓度为 :56×2=112 bits,⼆重 DES 很难抵挡住中间相遇攻击法
到⽬前为⽌,还没有⼈给出攻击三重 DES 的有效⽅法,相对于单⼀ DES 来说,复杂性以指数形式增⻓。
# AES
特点 / 操作 | 描述 |
---|---|
明文和密文长度 | 128 位 |
密钥长度 | 可变,128 位、192 位或 256 位 |
加解密算法 | 加密和解密使用不同的算法 |
基本操作 | 置换、代替、代数运算 |
加密结构 | SP(替代 - 置换)结构 |
基本轮函数迭代 | 迭代轮数可变,至少 10 轮 |
字节替代 | SubByte (),每个字节应用 S 盒进行非线性变换 |
行移位变换 | ShiftRows (),对明文的字节进行行移位 |
列混合变换 | MixColumns (),对字节列进行线性变换,增加列之间的复杂性 |
轮密钥加法 | AddRoundKey (),将轮密钥与状态进行异或 |
运算次序 | ByteSub () 与 ShiftRows () 的运算次序可以交换 |
MixColumns 变换 | 线性变换,用于增加扩散性,但在解密中不直接使用 |
密钥扩展 | KeyExpansion (),生成轮密钥 |
安全性 | 高,广泛认为是非常安全的加密算法 |
# 分组模式
模式名称 | 描述 | 加密 / 解密特点 | 特点 / 用途 |
---|---|---|---|
ECB | 电子密码本模式,每个数据块独立加密 | 相同明文块产生相同密文块 | 简单高效,但安全性低,不推荐使用 |
CBC | 密码块链接模式,每个明文块与前一个密文块异或后加密 | 需要初始化向量(IV) | 安全性高,常用于文件加密 |
CFB | 密码反馈模式,结合分组密码和流密码的特点 | 需要初始化向量(IV),反馈机制 | 可以处理任意长度的数据,适合数据流加密 |
OFB | 输出反馈模式,类似流密码,使用反馈机制 | 无初始化向量,输出反馈 | 保证数据随机性,适合流数据加密 |
CTR | 计数器模式,将分组密码变为流密码 | 无初始化向量,计数器递增 | 可以并行处理,适合大量数据加密 |
# 第四章 - 公钥密码
# RSA 的安全性
# 1. 本身三种数学攻击
# 2. 其他攻击
# 数字签名(双签名)
# 小加密指数 e
# 共模攻击(共用 e)
# 其他注意
# 3. 强素数选择方法
# 第五章 - 散列函数
# 生日攻击
# 第六章 - 数字签名
# 1. 概念和基本特性
** 定义:** 数字签名是这样一种鉴别机制,它可以使一个报文附加上一段起到签名作用的代码。这个代码可保证报文的来源和完整性。
# 2. 签名和验证过程
# 3. 两种方式
# 4. 数字签名标准
# 5. 特殊签名方式
# 不可否认
签名算法、验证算法、否认协议。
# 盲数字
签名者不知道明文内容(需要隐藏消息) RSA
# 群签名
1)只有群中成员才可以为消息进行签名,并产生群签名;
2)签名验证者能验证签名的有效性,但是无法识别签名人的身份;
3)万一发生争议,群管理员能够识别签名人的身份。
# RSA 选择密文攻击(双签名)
# ElGamal 数字签名的安全
# 随机数 K 泄露 =>da 泄露
# 随机数重用 => 计算 da
🐖抓到你啦~ (nonevector.github.io)
# 三个随机数满足 k1=k2+k3=> 计算 da
# ECDSA 的安全性
# 第七章 - 密钥管理
# 1. 基本内容和概念
# 概念
1)一切秘密予于密钥中,密钥管理是密码系统的核心。
2)密钥管理就是在授权各方之间实现密钥关系的建立和维护的一整套技术和程序,涉及密钥从产生到最终销毁的整个过程。
more:
现代密码体制要求密码算法是可以公开评估的,决定整个密码体制安全性的因素是密钥的保密性。也就是说,在密码系统的设计时,需要解决的核心问题是密钥管理问题,而非密码算法问题。
密钥是密码系统中的可变部分。密钥管理就是在授权各方之间实现密钥关系的建立和维护的一整套技术和程序,涉及密钥从产生到最终销毁的整个过程,包括密钥的生成、存储、分发与协商、使用、备份与恢复、更新、撤销和销毁等。
# 内容
(1) 密钥生成和检验
密钥产生设备主要是密钥生成器,一般使用性能良好的发生器装置产生伪随机序列,以确保所产生密钥的随机性。
(2) 密钥交换和协商
典型的密钥交换主要有两种形式:集中式交换方案和分布式交换方案。前者主要依靠网络中的 “密钥管理中心” 根据用户要求来分配密钥,后者则是根据网络中各主机相互间协商来生成共同密钥。生成的密钥通过手工方式或安全信道秘密传送。
(3) 密钥保护和存储
对所有的密钥必须有强力有效的保护措施,提供密码服务的密钥装置要求绝对安全,密钥存储要保证密钥的机密性、认证性和完整性,而且要尽可能减少系统中驻留的密钥量。密钥在存储、交换、装入和传送过程中的核心是保密,其密钥信息流动应是密文形式。
(4) 密钥更换和装入
任何密钥的使用都应遵循密钥的生存周期,绝不能超期使用,因为密钥使用时间越长,重复几率越大,外泄可能性越大,被破译的危险性就越大。此外,密钥一旦外泄,必须更换与撤消。密钥装人可通过键盘、密钥注入器、磁卡等介质以及智能卡、系统安全模块 (具备密钥交换功能) 等设备实现。密钥装入可分为主机主密钥装入、终端机主密钥装人二者均可由保密员或专用设备装入,一旦装入就不可再读取。
# 生命周期
密钥的生命周期是指密钥从产生到最终销毁的整个过程。在这个生命周期中,密钥处于 4 种不同的状态中:
①使用前状态:密钥不能用于正常的密码操作
②使用状态:密钥是可用的,并处于正常使用中
③使用后状态:密钥不再正常使用,但为了某种目的对其进行离线访问是可行的
④过期状态:密钥不再使用,所有的密钥记录已被删除
# 2. 密钥管理的层次结构和意义
按照密钥的生存周期、功能和保密级别,一般将密钥分为: 会话密钥、密钥加密密钥(二级密钥)和主密钥。
意义:
- 安全性增强:层次化的密钥结构可以提供不同级别的访问控制,确保只有授权的用户或系统才能访问特定的密钥和数据。
- 灵活性:这种结构允许灵活地管理和更新密钥。例如,如果某个子密钥需要更新,不必重新生成整个密钥层次结构,只需更新受影响的部分。
- 责任分离:层次化结构有助于实现责任分离原则,不同的密钥持有者可以有不同的权限和责任,这有助于减少单一故障点。
- 密钥管理:层次化的密钥结构简化了密钥管理过程,使得密钥的生成、分发、存储和撤销更加有序和高效。
- 可扩展性:随着组织规模的扩大,层次化的密钥结构可以方便地扩展以适应更多的用户和设备,而不需要对整个系统进行大规模的重构。
# 3. 密钥分配与协商
目的: 密钥分配与密钥协商过程都是用以在保密通信双方之间安全建立通信所使用的密钥的协议 (或机制)。
在这种协议 (或机制) 运行结束时,参与协议运行的双方都将得到相同的密钥,同时,所得到的密钥对于其他任何方 (除可能的可信管理机构外) 都是不可知的。
分配:Kerboros 密钥分配协议
保密通信中的一方(包括可信第三方)生成并选择秘密密钥,然后将其安全地传送给通信的相关各方。
协商:Diffie-Hellman 密钥交换协议
通常是一种协议,利用该协议通信双方可以在一个公开的信道上通过相互传送一些消息来共同建立一个安全的共享秘密密钥。
# 4. 密钥分配
# 中间人攻击
# PKI
数字证书是一种用于验证网络通信中各方身份信息的电子文档,也称为数字标识。它是由权威的第三方机构(CA)颁发的,通常采用国际标准 X.509 格式。数字证书中包含了一系列关于证书所有人的信息,如姓名、公钥、有效期等,以及 CA 的签名。
数字证书又分为签名证书和加密证书。
签名证书用于对用户信息进行签名,以保证信息的完整性和行为的不可否认行;加密证书用于对用户传送信息进行加密,以保证信息的机密性。
用途:用于确认公钥就是公钥持有人的的真实性(身份认证)
# 认证流程(三趟消息)
# 5.DH 密钥协商
Deffie-Hellman (简称 DH) 密钥交换是最早的密钥交换算法之一,它使得通信的双方能在非安全的信道中安全的交换密钥,用于加密后续的通信消息。
# 安全性
# 中间人攻击
# 鉴别机制
# 6.Shamir 秘密分割
# 门限方案的一般概念
# Shamir
# 特性
# 第八章 - 身份鉴别
# PKI(基于数字证书)
# 攻击手段
# 重放攻击
# 对抗
# 时间戳
# 质询 - 响应机制
设计一种 OTP