应用密码学第讲
0
1
2
3
4
5
6 7 8 9 4比特输出
10 11 12 13 14 15
图3-2 代换结构 加密映射和解密映射也可以用代换表来定义,如表3-1所示。这种定义法 是分组密码最常用的形式,能用于定义明文和密文间的任何可逆 映射。
2018/10/20
应用密码学
4
表 3-1图3-2对应的代换表
明文 0000 0001 0010 0011 0100 0101 0110 0111 密文 1110 0100 1101 0001 0010 1111 1011 1000 明文 1000 1001 1010 1011 1100 1101 1110 1111 密文 0011 1010 0110 1100 0101 1001 0000 0111 密文 0000 明文 1110 密文 1000 明文 0111
x
一、代换
若明文和密文分组都是n比特,则:每个明文分组有 2 个不同的取值。 n 明文到密文的可逆变换(又称代换)个数为 2 ! 个。
例如:n=4时,可产生16个不同的状态,其中每一个输入状态通过代换映射
n
成一个输出状态,代换如图3-2所示。
2018/10/20
应用密码学
3
4比特输入 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
(长为m的矢量),其加密函数
E:
Vn K
Vm
,
Vn
和
Vm
分别
是n维和m维矢量空间, K 为密钥空间 如图3-1所示。
明文x
k
加密算法
密文
图3-1 分组密码框架
k
解密算法 明文x
2018/10/20
应用密码学
2
在相同的密钥下,分组密码对长为n的输入明文组所实施的变换是等同的, 所以,只需研究对任意一组明文数字的的变换规则。 通常取m=n 。若 m n 则为有数据扩展的分组密码;若 m n 则为有 数据压缩的分组密码。在二元的情况下, 和 y 均为二元数字序列,他们 的每个分量 xi ,yi GF (2) 。本节主要讨论二元的情况。
2018/10/20
应用密码学
7
三、Feistel密码结构
Feistel提出了利用乘积密码可获得简单的代换密码。乘积密码是指顺序 地执行两个或多个基本密码系统,使得最后结果的密码强度高于基本密码系 统产生的结果。Feistel还提出了实现代换和置换的方法。 1、Feistel加密结构 加密算法的输入是分组长度为 2 w 的明文和一个密钥 k 。将每组明文分成 左右两半 L0 和 R0 ,在进行完n轮迭代后,左右两半再合并到一起以产生密 文分组。其第 i 轮迭代的输入为前一轮输出的函数:
10
每个子代换只有 n0 个输入变量。一般 n0 都不大,称每个子代换为代换盒,
简称S盒。
二、扩散和混淆
扩散:扩散就是将明文中的统计信息散布到密文中去,实现方式是使 明文的每一位影响密文的多位的值,即密文中的密文中的每一位均受明文 中的多位影响。
例如对英文消息
M m1m2 m3
的加密:
2018/10/20
2018/10/20 应用密码学 5
其中,第2列是决定该可逆映射的密钥,该例中密钥需要64bit。一般地,对 n 比特的代换结构,密钥的大小是 n 2n 比特。比如 n 64 ,密钥大小 21 64 应是 64 2 ,变得难以处理。 实际应用中,常将 n 分成较小的段,例如可选 n r n0 其中,r 和 n0 都是正整数,将设计 n 个变量的代换变为设计 r 个较小的代换,而
0001
0010 0011 0100 0101 0110 0111
0011
0100 1000 0001 1100 1010 1111
1001
1010 1011 1100 1101 1110 1111
1101
1001 0110 1011 0010 0000 0101
从安全角度讲分组长度n要足够大,而且从明文到密文可有任意的可 逆代换,那么明文的统计特性将被隐藏而使攻击不能凑效。 从实现的角度讲分组长度很大的可逆代换结构是不实际的。 以表3-1为例,该表定义了n=4时从明文到密文的一个可逆映射,
第三章 分组密码体制
复习:
1、密码体制的分类。
2、什么是分组密码?
2018/10/20
应用密码学
1
§1节 分组密码概述
分组密码是将明文消息编码表示后的序列 x1 , x2 , , xi , 划分成长为
n 的组 x ( x0 , x1,, xn1 )
,各组(长为n的矢量)分别在密钥
k (k1, k2 ,, kt 1 ) 的控制下,变换成输出数字系列 y ( y0 , y1 ,, ym1 )
其中 Ki 是第 i 轮用的子密钥,由加密密钥K 得到。一般地,各轮密钥互 不相同而且与K 也不相同。 每轮的轮函数的结构都相同,但以不同的子密钥作为参数。 如图3-3所示。
2018/10/20 应用密码学 8
Li Ri 1 Ri Li 1 F ( Ri 1, ቤተ መጻሕፍቲ ባይዱi )
L0
L1
应用密码学
6
ord(mi )
i 1 k 是密钥。 chr(i) 是求序号 i 对应的字母, 是求字母对应的序号,
yn chr( ord (mn i )(mod26))
k
经过这样的代换后每一字母出现的频率更接近于相等,双字母及多字母出
现的频率也更接近于相等。
在分组密码中扩散的目的是使明文和密文之间的统计关系变得尽可能的 复杂,使敌手无法得到密钥。 混淆:混淆是使密文和密钥之间的关系变得尽可能的复杂,使敌手无法 得到密钥。 使用复杂的代换算法可获得预期的混淆效果。 扩散和混淆成功实现了分组密码的本质属性,因而成为设计现代分组 密码的基础。
明文 (2w比特)
w比特
w比特 R0
F
R1
K1
Ki
F
Li
Ri
Kn
F
Ln
Ln1
密文 (2w比特)
图3-3 Feistel网络示意图
2018/10/20 应用密码学
Rn
Rn1
9
Feistel网络的实现与以下参数和特性有关: ① 分组大小 分组越大越安全,但加密速度就越慢。分组密码设计中 最为常用的分组大小是64比特。 ② 密钥大小 密钥越长安全性越高,但加密速度就越慢。通常128位。 ③ 轮数 单轮结构远不足以保证安全性,但多轮结构可提供足够 的安全性。典型的轮数取为16。 ④子密钥产生算法 越大。 ⑤ 轮函数 该算法的复杂性越大,则密码分析的困难性就