文章目录
1、分组密码的概念
分组密码(block cipher) 的数学模型是:将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列
2、密码体制
2.1、密码体制的概念
密码体制也叫密码系统,是指能完整地解决信息安全中的机密性、数据完整性、认证、身份识别、可控性及不可抵赖性等问题中的一个或几个的一个系统。对一个密码体制的正确描述,需要用数学方法清楚地描述其中的各种对象、参数、解决问题所使用的算法等
2.2、密码体制的三要素
- 算法
- 密钥个数
- 加密方式( 分组加密 流式加密)
2.3、密码体制的组成
通常情况下,一个密码体制由五元组{M,C,K,E,D}五个部分
- 明文信息空间Message:它是全体明文M的集合
- 密文信息空间Ciphertext:它是全体密文C的集合
- 密钥空间Key:它是全体密钥K的集合。其中每一个密钥K均由加密密钥Ke和解密密钥Kd组成,即K=(Ke,Kd)
- 加密算法Encryption Algorithm:它是由M到C的加密变换,即 M→C; 也就是 C = ( M,Ke)
- 解密算法Decryption Algorithm:它是由C到M的加密变换,即 C→M; 也就是 M = ( C,Kd)
2.4、密码体制的基本模式
通常的密码体制采用移位法、代替法和代数方法来进行加密和解密的变换
可以采用一种或几种方法结合的方式作为数据变换的基本模式
下面举例说明:
移位法也叫置换法。移位法把明文中的字符重新排列,字符本身不变但其位置改变了。
例如最简单的例子:把文中的字母和字符倒过来写
或将密文以固定长度来发送
5791ECNI SYLDIPAT DEVLOBES AHYTIRUC ESATAD**
3、Feistel 密码
Feistel 密码结构,在密码学研究中,Feistel 密码结构是用于分组密码中的一种对称结构
3.1、Feistel密码的核心
Feistel密码的核心是代替和置换
- 代换:每个明文元素或元素被唯一地替换为相应的密文元素或元素组
- 置换:明文元素的序列被替换为该序列的一个置换。也就是说,序列里没有元素被添加进去,删除或替换,但序列里的元素出现的顺序改变了
3.2、Feistel密码构造过程
令F 为轮函数;令K1,K2,……,Kn 分别为第1,2,……,n 轮的子密钥。那么基本构造过程如下:
(1)将明文信息均分为两块:(L0,R0);
(2)在每一轮中,进行如下运算(i 为当前轮数):
Li+1 = Ri;
Ri+1 = Li ⊕F (Ri,Ki)。(其中⊕为异或操作)
所得的结果即为:(Ri+1,Li+1)
3.3、Feistel密码解密过程
对于密文(Rn+1,Ln+1),我们将i 由n 向0 进行,即, i = n,n-1,……,0。然后对密文进行加密的逆向操作,如下:
(1)Ri = Li+1;
(2)Li = Ri+1⊕F (Li+1,Ki)。(其中⊕为异或操作)
所得结果为(L0,R0),即原来的明文信息。
Feistel密码加解密过程
3.4、影响Feistel 结构的因素
(1)块的大小:大的块会提高加密的安全性,但是会降低加密、解密的速度。截止至2013年,比较流行的这种方案是64 bit。而128 bit 的使用也比较广泛。
(2)密钥的大小:同上。而 128 bit 正逐渐取代64 bit ,成为主流。
(3)循环次数(轮次数):每多进行一轮循环,安全性就会有所提高。现阶段比较流行的是16轮。
(4)子密钥的生成算法:生成算法越复杂,则会使得密码被破译的难度增强,即,信息会越安全。
(5)轮函数的复杂度:轮函数越复杂,则安全性越高。
3.5、Feistel结构的特点
1、加解密算法相同;
2、16轮加密(16轮解密);
3、子密钥产生越复杂,密码分析就越困难;
4、轮函数越复杂,抗攻击能力就越强;
5、密钥长度越长,安全性增强;
6、分组越长,安全性越高。