密码学h面试大法---h(自用版)更新中~(^v^)
分组密码体系
分组密码是什么,有什么原则?
分组密码:将明文进行分组,每组的长度相同,然后分别对明文进行加密
分组密码系统{明文空间,密文空间,密钥空间,加密算法,解密算法}
基本原则(1)分组足够长,低于明文穷举攻击(2)密钥量足够大且尽可能削减密钥使用(3)密钥变换足够复杂(4)加解密运算简单便于软硬件高速实现
什么是feistel网络?有什么优点?
明文分左右两部分,每轮只对一半进行变换(Li=Ri-1,Ri=Li-1异或F(Ri-1,ki)),典型代表:DES
优势:解密流程与加密流程几乎相同,且轮函数不需要可逆
什么是SP结构(代替置换网络)
替代-置换网络,通过S盒(提供非线性混淆)和P盒(提供线性扩散)交替迭代。轮函数必须可逆,否则无法解密;典型代表:AES
- 混淆是为了掩盖明文与密文、密钥与密文之间的关系(常用 S 盒实现);
- 扩散是为了让明文/密钥的每一位影响密文的很多位(常用移位、列混合实现)。
分组密码的工作模式***
1.电子码本(ECB):每个分组使用同一个密钥进行加密
最不安全。相同的明文加密后生成相同的密文,无法隐藏明文模式,不能抵抗替换攻击
2.密码分组链接(CBC):第一组是明文分组与初始矢量进行异或,其余加密的输入是当前明文分组与前一次密文的异或。
(1)优点:能够隐蔽明文数据的格式规律和统计特性,一定程度识别攻击者是否在密文传输中对密文进行了篡改
(2)缺点:具有错误传播;
- 明文中有单比特出错,之后的组都会受影响,解密后除了原来有错的那一组,其他的都正确恢复
- 密文中由比特出错,导致两组无法解密,其余正常,错误传播长度为2
3.密码反馈模式(CFB):分组密码算法来提供复杂的非线性逻辑的密钥流生成器的作用
(1)与CBC区别:反馈密文长度为j而且不是直接与明文相加而是反馈至密钥流生成器
(2)具有错误传播
4.输出反馈模式(OFB):将加密算法的输出反馈至密钥流生成器
(1)优点:比特错误不会被传播
(2)缺点:容易收到对消息流的篡改攻击,无法实现完整性检测
5.计数器模式(CTR):将分组密码变成流密码。加密一个不断递增的计数器,再与明文异或。
AES算法(面向字节)***
AES算法的基础
(1)AES 的分组长度固定是128 位(16 字节)。而密钥长度是可变的,有三种:128 位、192 位、256 位。
(2)AES-128、AES-192、AES-256 的主要区别是什么?密钥长度不同、加密轮数不同、密钥扩展算法的轮数不同。分别对应:10轮、12轮、14轮
(3)AES采用S-P(代替-置换网络)结构
AES算法步骤
除了第一轮的初始密钥加和最后一轮没有列混合外,AES 的标准轮包含:
- 字节代换:利用 S 盒 进行非线性字节映射。作用:提供混淆。
- 行移位:将矩阵的每一行循环左移不同的字节。作用:提供扩散。
- 列混合:在有限域GF(2^8)上进行矩阵乘法,让一列中的每个字节影响输出的四个字节。作用:提供扩散。
- 轮密钥加:将矩阵与当前轮密钥进行异或。作用:引入密钥,保证安全性。
非对称密码体制
非对称密码体制的核心机制,公钥和私钥的作用
公钥加密,私钥解密(用于保证机密性);或者私钥签名,公钥验签(用于身份认证和防篡改)
非对称密码体制的缺点
算性能差异巨大。非对称加密基于复杂的数论问题(如大整数素因子分解、离散对数),其计算速度比对称加密(如 AES)慢100 到 1000 倍。
RSA算法
(1)核心:基于大素数分解困难问题
(2)RSA的密钥生成和加解密公式
- 求私钥d用欧几里得算法
- 计算加解密用模平方算法
ELGamal算法
(1)核心:基于有限域上的离散对数问题
(2)ElGama
缺点:密文膨胀,因为每一次加密都会产生一对密文(C1,C2),所以密文长度是明文的两倍
