文章目录
1.单表代替加密
1.1.Caesar密码
- 原理:使用K位偏移字母代替明文
- 密钥:K
- 攻击方式:穷举法
1.2.单表代替密码
- 原理:将n个元素的明文做任意置换,共有n!个置换
- 密钥:无
- 攻击方式:频率攻击
1.3.Playfair密码
- 原理:如下图所示
- 密钥无:
- 攻击方式:频率攻击
1.4.Hill密码
- 原理:
- 密钥:加密:n阶矩阵K,解密:K-1
- 攻击方式:足以抗唯密文攻击,较易被已知明文攻击破解
2.多表代替加密
对简单单表代替的改进方法是在明文消息中采用不同的单表代替。
2.1.Vigenere密码
- 原理:利用多重Caesar密码构成,对于n位明文,k位密钥,将n位明文分成m组,每组k位,然后使用caesar密码加密(偏移位对应密钥)
- 密钥:k位密钥,k0k1k2…kn-1
- 攻击方式:频率攻击
2.2.Vernam密码
- 原理:利用和明文一样长的密钥对明文进行二进制异或操作
- 密钥:与明文一样长
- 攻击方式:穷举攻击
2.3.一次一密
- 原理:对Vernam密码的改进,密钥为无重复的随机密钥,并且一个密钥仅用一次,是唯一的具有完善保密的密码机制。
- 密钥:与明文一样长且无重复的随机密钥
- 攻击方式:无解
- 难点:1.产生大规模随机密钥有实际困难 2.密钥的分配和保护
3.Feistel密码
- 扩散:使明文的统计特征消散在密文中,这可以通过让每个明文数字尽可能地影响多个密文数字获得。
- 混淆:尽可能使明文和密文间的统计关系变得更加复杂,以阻止攻击者发现密钥。
- 影响因素:
- 分组长度
- 密钥长度
- 迭代轮数
- 子密钥产生算法
- 轮函数
- 原理
4.DES加密算法
- 64位分组,56位秘钥长度
- 输入:64位,输出:64位
- 加密原理:
实际上这个密码函数希望采用64位的密钥。然而却仅仅采用了56位,其余8位可以用来做奇偶校验或随意设置
5.群、环、域
- 有p个元素的有限域GF(p)描述为{0,1,2,…,p-1},p为素数,其算术运算是模p的加法和乘法
6.AES加密算法
AES中的所有运算都是在8位的字节上进行的。特别地,加减乘除算术都是在有限域GF(28)上进行的。
明文分组长度为128位即16字节
密钥长度可以为16字节、24字节或32字节,分别称为AES-128、AES-192或AES-256
初始变换:轮密钥加
4个不同的变换:字节代替,行移位,列混淆和轮密钥加。
具体算法:
**AES结构的一个显著特征是它不是Feistel结构。**而是每一轮都使用代替和混淆将整个数据分组作为一个单一的矩阵处理。
输入的秘钥被扩展成由44个32位字所组成的数组w[i],每轮有四个不同的字作为该轮的密钥。
仅仅在轮密钥加阶段中使用密钥。由于这个原因,该算法以轮密钥加开始,以轮密钥加结束。如果将其他不需要密钥的运算用于算法开始或结束的阶段,在不知道密钥的情况下就能计算其逆,故不能增加算法的安全性。
轮密钥加实质上是一种 Vermam密码形式,就其本身是不难破译的。而另外三个阶段一起提供了混淆、扩散以及非线性功能。因这些阶段没有涉及密钥,故就它们自身而言,并未提供算法的安全性。我们可把该算法看成一个分组的XOR 加密(轮密钥加),接着对这个分组混淆(其他的三个阶段),再接着又是XOR加密,如此交替执行。这种方式非常有效且非常安全。
密钥扩展算法:
7.多重DES加密算法
7.1.两个密钥的三重DES
7.2.两个密钥的三重DES
8.分组加密算法的工作模式
从本质上讲,工作模式是一项增强密码算法或使算法适应具体应用的技术,如将分组密码应用于数据块组成的序列或者数据流。
8.1.电码本模式(ECB)
一次处理一组明文分块,每次使用相同的密钥加密
ECB模式特别适合于数据较少的情况,比如加密密钥。因此,若想安全传输一个DES或AES密钥,选择这种模式是合适的。
8.2.密文分组链接模式(CBC)
当前分组先和前一个分组异或再加密,第一个分组与初始向量(IV)异或后加密
CBC除了用来获得保密性,亦可用于认证。
8.3.密文反馈模式(CFB)
流密码有一个让人心动的性质,即密文与明文等长。所以要发送的是8位的字符,加密时也是用8位的。如果多于8位,传输能力就浪费了。
假设传输单元是s位,s通常为8。同使用CBC模式一样,明文的各个单元要链接起来,所以任意个明文单元的密文都是前面所有明文的函数。在这种情况,明文被分成s位的片段而不是b位的单元。
首先来考虑加密。加密函数的输入是b位的移位寄存器,它的值为初始向量IⅣ。加密函数输出最左边的s位与明文的第一个分段P异或得到密文的第一个单元C,然后将C发送出去,接着,移位寄存器左移s位,C填入移位寄存器的最右边s位。就这样,直到所有明文单元被加密完。
8.4.输出反馈模式(OFB)
OFB的一个优点是传输过程中在某位上发生的错误不会影响其他位。
OFB的缺点就是抗消息流篡改攻击能力不如CFB。即密文中的某位取反,会付出的明文也相应取反。
8.5.计数器模式(CTR)
与ECB,CBC及CFB方式不同的是,由于CTR的结构关系,我们不需要对明文进行填充。
与同OFB模式一样,初始计数器的值必须为时变值。
计数器模式的优点:
(1)硬件效率:能够并行处理多块明文的加密
(2)软件效率:能充分利用各类处理器
(3)预处理:基本加密算法的执行并不依靠明文和密文的输入。因此,如果有充足的存储器可用且能提供安全,可以预处理加密盒的输出。
(4)随机访问
(5)可证明安全性
(6)简单性
8.6.用于面向分组的存储设备的XTS-AES模式
8.7.FPE加密
FPE是一种加密技术,这种加密技术将一种格式的明文作为输入,并输出相同格式的密文。
9.随机数
TRNG = 真随机数产生器
PRNG = 伪随机数产生器,用于生产不限长位流,作为对称流密码的输入
RPF = 伪随机函数图,用于产生固定长度的伪随机位串,对称加密密钥和时变值都是例子。
TRNG基于真随机源,PRNG和RPF基于种子和确定性算法。
伪随机比特流:使用TRNG产生种子,再用种子作为伪随机数发生器输入产生输出
为什么可以用TRNG非要用PRNG呢?
(1)首先伪随机就是对其他用户是真随机,而对会话双方是确定,这样是最好的,所以双方协商好种子每次随机都是一样的,而对外是随机的,但是真随机会导致双方也是随机,每次都要协商随机出来的流密码,不现实
(2)TRNG可能会产生不平衡的二元序列。PRF具有使TRNG的输出更随机化的效果
(3)用于产生真随机数的机制在速率方面也许不能跟得上需要随机化的应用
9.1.伪随机数发生器
线性同余发生器
BBS发生器
ANSIX9.17伪随机数发生器(密码学意义上最强的伪随机数发生器之一)
使用了3DES加密
NIST CTR_DRBG
基于CTR模式
10.流密码
10.1.RC4
11.公钥(非对称)密码学
11.1 RSA加密算法
RSA体制是一种分组密码,其明文和密文均是0~n-1之间的整数,通常为1024位或309位二进制数,也就是说n小于21024。
加密算法描述:
11.2 Diffie-Hellman密钥交换
该算法的目的就是使两个用户能够安全地交换密钥,该算法本身只限于进行密钥交换。
该算法的有效性是建立在计算离散对数很困难的这一基础上的。
加密原理
11.3. EIGamal密码体制
11.4 椭圆曲线算法(ECC)
与RSA相比,ECC的诱人之处在于,它可以使用比RSA短得多的密钥得到相同的安全性,因此可以减少处理负荷。