密码学与信息安全 第3章 分组密码和数据加密标准
分组密码和数据加密标准

Recommended Reading
• 王育民刘建伟编著, 通信网的安全----理论 与技术,2000,5 • Scneier, B. Applied Cryptography, New York: Wiley, 1996 • Mel, H.X. Baker, D. Cryptography Decrypted. Addison Wesley, 2001
4
图示:n=3时,一个n位到n位的分组密码
BOX S
n=3 0 2n=8 0 1 2n=8 0 1 2 3 4 5 6 7
5
1
Transformer
Transformer
2 3 4 5 6 7
0
1
1
1
Feistel密码
• 大多数传统分组加密算法都采用Feistel密 码结构,包括DES在内。 • Feistel建议使用乘积密码来增强密码的强 度。
34
计时攻击
• 通过对执行给定的多种密文解密所需时 间的观察,来获得关于密钥或明文的信 息。 • 利用加/解密算法对于不同的输入所花的 时间有着细微的差别。 • DES可以抵御计时攻击。
35
差分分析和线性分析
• 1990年,以色列密码学家Eli Biham和Adi Shamir提出了差分密码分析法,可对DES 进行选择明文攻击。 • 线性密码分析比差分密码分析更有效。
17
示 意 图
DES
18
DES描述
• DES利用56比特串长度的密钥K来加密长度为 64位的明文,得到长度为64位的密文。
19
DES加解密过程
• 令i表示迭代次数,⊕表示逐位模2求和,f为加 密函数。DES的加密和解密过程表示如下。
密码学分组密码

5. 数据扩展。一般无数据扩展,在采用同态置换和随机化 加密技术时可引进数据扩展。
6. 差错传播尽可能小。
设计分组密码常用的一些方法介绍 1. 代换
将n长的明文分组变换为唯一n长密文分组, 这样的变换是可逆的,称明文分组到密文 分组的可逆变换为代换。
D1(28 位)
8 2 16 1
(56 位) 置换选择 2
k1
(48 位)
循环左移
循环左移
Ci(28 位)
Di(28 位)
置换选择 2 ki
(56 位)
(48 位)
置换选择1和置换选择2
DES解密
和Feistel密码一样,DES的解密和加密使 用同一算法,只是子密钥的使用顺序相 反。
子密钥是独立产生的,可以独立存储。
DES加解密过程
令i表示迭代次数,表示逐位模2求和,f为加密函
数。DES的加密和解密过程表示如下。
加密过程:
L0R0 IP( 64bit输入码 )
பைடு நூலகம்
Li Ri1
i 1,2,,16
Ri Li1 f (Ri1, ki ) i 1,2,,16
64bit密文 IP1(R16L16 )
解密过程:
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
E的作用:
将32比特 的输入膨 胀为48比 特。
则输出为:B = t32 t1 t2 …… t32 t1
选择扩展运算:
12 34 56 78 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
密码学之分组密码算法

密码学之分组密码算法密码学之分组密码算法简介分组密码算法(Block Cipher Algorithm)是将输⼊数据划分成固定长度的组进⾏加密和解密的⼀类对称密码算法。
其安全性主要以来于密钥,通信双⽅使⽤相同的密钥加密和解密。
其优势有速度快,易于标准化和便于软硬件实现等特点。
下标集:₀₁₂₃₄₅₆₇₈₉⁻ ¹ ₋DES加密算法DES简介于1977年公布的第⼀个被⼴泛应⽤的商⽤数据加密算法,在抵抗了⼆⼗余年的密码分析后,其安全性已⽆法得到保障。
所以在1998年12⽉以后就不再使⽤DES加密算法。
但是其衍⽣的三重DES加密算法⽬前还有其应⽤场景。
加密过程算法总览DES加密算法就如下图所⽰。
其输⼊为64位(bit)的明⽂,使⽤56位(bit)的密钥,但是附加了8位奇偶校验位(位于8,16,...,64位)组合成64位密钥。
在64位密钥的控制下,最终产⽣了64(bit)的密⽂。
在下图中X=X₁X₂X₃...X₆₄即为输⼊明⽂,在经过初始转换IP的换位处理后,得到⼀个乱序的明⽂组,并将其分为L₀和R₀两部分,每部分各32位。
⽽K₁K₂...K₁₆则是⽣成由初始密钥⽣成的轮密钥,长度有48位。
其次进⾏如下图所⽰与密钥有关的16轮迭代变换。
对R₀在进⾏⼦密钥K₁控制下的f变换,其得到的结果与L₀作逐位异或后,作为下⼀轮的R₁,⽽R₀则作为下⼀轮的L₁。
在经过16轮如上步骤,最后经过逆初始置换P⁻¹处理后得到密⽂Y=Y₁Y₂Y₃...Y₆₄初始置换IP与逆初始置换IP⁻¹IP操作是对原明⽂的位次顺序进⾏打乱,⽽逆初始置换IP⁻¹是IP操作的⼀个逆操作,其⽬的是为了撤销之前的初始置换操作。
其实这两种操作对密码⽅⾯的作⽤并不⼤。
其具体操作正如表格中所⽰,在如下表格中依次填⼊该顺序位次下的bit位,最终组成新的位次顺序。
如第⼀位的的内容即为原明⽂中第58位处的内容。
轮密钥的产⽣初始密钥K在经过选择置换PC_1后同样分为两个部分C₀和D₀,每部分各28位(bit),该选择置换实际是在除去了奇偶校验位的置换。
第3章密码技术

3.2 对称加密算法
分组密码 分组密码是将明文消息编码表示后的数字(简称明文数字) 序列,划分成长度为n的组(可看成长度为n的矢量),每 组分别在密钥的控制下变换成等长的输出数字(简称密文 数字)序列。 扩散(diffusion)和扰乱(confusion)是影响密码安全的 主要因素。扩散的目的是让明文中的单个数字影响密文中 的多个数字,从而使明文的统计特征在密文中消失,相当 于明文的统计结构被扩散。 扰乱是指让密钥与密文的统计信息之间的关系变得复杂, 从而增加通过统计方法进行攻击的难度。扰乱可以通过各 种代换算法实现。 分组密码包括DES、IDEA等。
3.2 对称加密算法
DES算法 主要有以下四点: (1)提供高质量的数据保护,防止数据未经授权 的泄露和未被察觉的修改; (2)具有相当高的复杂性,使得破译的开销超过 可能获得的利益,同时又要便于理解和掌握; (3)DES密码体制的安全性应该不依赖于算法的 保密,其安全性仅以加密密钥的保密为基础; (4)实现经济,运行有效,并且适用于多种完全 不同的应用。
3.2 对称加密算法
对称加密采用了对称密码编码技术,它的特点是文件加密 和解密使用相同的密钥,或加密密钥和解密密钥之间存在 着确定的转换关系。这种方法在密码学中叫做对称加密算 法,其实质是设计一种算法,能在密钥控制下,把 n比特 明文置换成唯一的n比特密文,并且这种变换是可逆的。 根据不同的加密方式,对称密码体制又有两种不同的实现 方式,即分组密码和序列密码(流密码)。
3.3 非对称加密技术
RSA算法公钥和私钥的生成
假设 A 要与 B 进行加密通信,该怎么生成公钥和私钥呢? 1.随机选择两个不相等的质数 p 和 q。 假设 A 选择了 3 和 11。 (实际应用中,这两个质数越大,就越难破解。 ) 2.计算 p 和 q 的乘积 n。 n=3× 11=33 n 的长度就是密钥长度。33 写成二进制是 100001,一共有 6 位,所以这个 密钥就是 6 位。 实际应用中, RSA 密钥一般是 1024 位, 重要场合则为 2048 位。 3.计算 n 的欧拉函数 (n) 。 根据公式:
清华大学出版社 密码学PPT课件

✓ 在密码应用方面,各种有实用价值的密码体制的快速实现受到高度重视, 许多密码标准、应用软件和产品被开发和应用,美国、德国、日本和我国 等许多国家已经颁布了数字签名法,使数字签名在电子商务和电子政务等
同时在公钥密码领域椭囿曲线密码体制由于其安全性高计算速度快等优点引起了人们的普遍关注和研究幵在公钥密码技术中叏得重在密码应用斱面各种有实用价值的密码体制的快速实现叐到高度重视许多密码标准应用软件和产品被开収和应用美国德国日本和我国等许多国家巫经颁布了数字签名法使数字签名在电子商务和电子政务等领域得到了法律的认可推劢了密码学研究和应用的収展
可以对用该密钥加密的任何新的消息进行解密。
④ 选择密文攻击(Chosen—ciphenext attack)
选择密文攻击是指密码分析者可以选择一些密文,并得到相应的明文
1.3.3 对密码系统的攻击
密码分析者破译或攻击密码的方法主要有穷举攻击法、统计分析法和数学分 析攻击法。
(1)穷举攻击法
穷举攻击法又称为强力或蛮力(Brute force)攻击。这种攻击方法是 对截获到的密文尝试遍历所有可能的密钥,直到获得了一种从密文到明文的 可理解的转换;或使用不变的密钥对所有可能的明文加密直到得到与截获到 的密文一致为止。
1.3.1密码学的主要任务(续)
③ 鉴别
这是一种与数据来源和身份鉴别有关的安全服务。鉴别服务包括对身份 的鉴别和对数据源的鉴别。对于一次通信,必须确信通信的对端是预期的实 体,这就涉及到身份的鉴别。
网络信息安全内容整理

2024/9/5
10/72
对称密码体制和非对称密码体制
对称密码体制(Symmetric System, One-key System, Secret-key System)
明文和密文之间统计关系尽量复杂;
confusion –混淆,使密文和加密密钥之间的关系尽量复杂。
2024/9/5
Cryptography and N1e9tw/3o6rk Security - 2
2024/9/5
20/36Cryptography and Network Security - 2
(A1-A5), 单位元是0,a的逆是 -a. (M1), 乘法封闭性, 如果a和b属于R, 则ab也属于R (M2), 乘法结合律,对于R中任意a, b, c有a(bc)=(ab)c. (M3), 乘法分配律, a(b+c)=ab+ac or (a+b)c=ac+bc (M4), 乘法交换律, ab=ba,交换环 (M5), 乘法单位元, R中存在元素1使得所有a有 a1=1a. (M6), 无零因子, 如果R中有a, b且ab=0, 则 a=0 or
6.1.1 双重DES
多次加密的最简单形式是进行两次加密,每次使用 不同的密钥
C = EK2(EK1(P)) P = DK1(DK2(C)) 这种方法的密钥长度是56x2=112位
虽然双重DES对应的映射与单DES对应的映射不同, 但是有中途相遇攻击 “meet-in-the-middle”
信息安全 第3章对称密码体制

……48
选择压缩运算S
将前面送来的48bit 数据自左至右分成 8组,每组6bit。然 后并行送入8个S盒, 每个S盒为一非线 性代换网络,有4 个输出。
S 盒 的 内 部 结 构
S盒的内部计算
若输入为b1b2b3b4b5b6其中b1b6两位二进制数表 达了0至3之间的数。b2b3b4b5为四位二进制数, 表达0至15之间的某个数。 在S1表中的b1b6行b2b3b4b5列找到一数m (0≤m≤15),若用二进制表示为m1m2m3m4,则 m1m2m3m4便是它的4bit输出。 例如,输入为001111,b1b6=01=1,b2b3b4b5 =0111=7,即在S1盒中的第1行第7列求得数1,所 以它的4bit输出为0001。
带有双密钥的三重DES (Triple DES with Two Keys)
Tuchman给出双密钥的EDE模式(加密-解密-加密): C=EK1(DK2(EK1(P))) ……对P加密 P=DK1(EK2(DK1(C))) ……对C解密 这种替代DES的加密较为流行并且已被采纳用于密钥管 理标准(The Key Manager Standards ANSX9.17和 ISO8732).
32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1
选择扩展运算结果(48bit)
1,2,……
第3章 对称密码体制
主要内容
分组密码
数据加密标准DES
高级加密标准AES
序列密码
杨波,_《现代密码学(第2版)》第三章 3.1-3.4节

所谓扩散,就是将明文的统计特性散布到密文 所谓扩散,就是将明文的统计特性散布到密文 扩散 中去, 中去,实现方式是使得密文中每一位由明文中多位 产生 。 例如对英文消息M=m1m2m3…的加密操作 例如对英文消息 的加密操作
k yn = chr ∑ ord ( mn+i )( mod 26 ) = ii=1 其中ord(mi)是求字母 i对应的序号,chr(i)是求序 是求字母m 其中 是求字母 对应的序号, 是求序 对应的字母。 号i对应的字母。这时明文的统计特性将被散布到 对应的字母 密文中, 密文中,因而每一字母在密文中出现的频率比在明 文中出现的频率更接近于相等, 文中出现的频率更接近于相等,双字母及多字母出 现的频率也更接近于相等。在二元分组密码中, 现的频率也更接近于相等。在二元分组密码中,可 对数据重复执行某个置换, 对数据重复执行某个置换,再对这一置换作用于一 函数,可获得扩散。 函数,可获得扩散。
表示n=4的代换密码的一般结构,4比特输入产 的代换密码的一般结构, 比特输入产 图3.2表示 表示 的代换密码的一般结构 个可能输入状态中的一个, 生16个可能输入状态中的一个,由代换结构将这一 个可能输入状态中的一个 状态映射为16个可能输出状态中的一个 个可能输出状态中的一个, 状态映射为 个可能输出状态中的一个,每一输出 状态由4个密文比特表示 个密文比特表示。 状态由 个密文比特表示。
加密映射和解密映射可由代换表来定义,如表3.1 加密映射和解密映射可由代换表来定义,如表 所示。这种定义法是分组密码最常用的形式, 所示。这种定义法是分组密码最常用的形式,能用于 定义明文和密文之间的任何可逆映射。 定义明文和密文之间的任何可逆映射。
如果分组长度太小, 如果分组长度太小,系统 密码,容易通过对明文的统计分析而被攻破。 从实 现的角度来看,分组长度很大 很大的可逆代换结构是不 现的角度来看,分组长度很大的可逆代换结构是不 实际的。 实际的。 仍以表3.1为例,该表定义了n=4时从明文到密 仍以表 为例,该表定义了 时从明文到密 为例 文的一个可逆映射,其中第2列是每个明文分组对 文的一个可逆映射,其中第2列是每个明文分组对 应的密文分组的值,可用来定义这个可逆映射。 应的密文分组的值,可用来定义这个可逆映射。因 此从本质上来说, 此从本质上来说,第2列是从所有可能映射中决定 列是从所有可能映射中决定 某一特定映射的密钥。密钥需要64比特 一般地, 比特。 某一特定映射的密钥。密钥需要 比特。一般地, 对n比特的代换结构,密钥的大小是n×2n比特。如 比特的代换结构,密钥的大小是 × 比特。 比特的代换结构 比特的分组, 对64比特的分组,密钥大小应是 ×264=270≈1021比 比特的分组 密钥大小应是64× 因此难以处理。 特,因此难以处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
40 39 38 37 36 35 34 33
8 7 6 5 4 3 2 1
48 47 46 45 44 43 42 41
16 15 14 13 12 11 10 9
56 55 54 53 52 51 50 49
24 23 22 21 20 19 18 17
64 63 62 61 60 59 58 57
32 31 30 29 28 27 26 25
3.2 DES
第二步:一轮加密简图
轮函数 F
Ki
Li-1
Ri-1
F
+ Li Ri
Ki
3.2 DES
扩充臵换E
每行用其相邻的两 个元素向左右扩展
轮函数F
S-BOX
48bits紧缩为32bits的
48bits寄存器
功能实质由8个S盒分 别完成
S1
S2
64bits ……… 128bits
加密 经公共信道传 输给对方
3.1.2 feistel密码结构的设计动机
分组密码作用在n位明文组上,而产生n位密文组(即共有 2n个不同分组),其不同的可逆代换映射有2n!个,下图为 n=4的一个普通代换密码的结构,4位输入有16种可能的输 入状态,图中为n=4的分组密码映射中的一种,这是分组密 码的最一般形式,用来表示明密文之间的任意可逆变换。
……
LD0 = RE16 LDi = RDi -1
RD0 = LE16 RDi = LDi -1 F ( RDi -1 , K 16- i 1 ) LDi = RE16- i RDi = LE16- i
而且我们不难发现
3.2 DES
前身: 美国国家标准局征求DES的加密算法建立计算
机系统的商用密码。 IBM提出的lucifer算法中选。
标准化: 1977年由美国国家标准局NBS颁布为数据加密
标准(Data Encryption Standard)。密钥长度从Lucifer方案中 的128位压缩到56位。
应用: 在POS、ATM、网上银行等
领域被广泛应用。
3.2 DES
其中明文分组长为64比特,密 钥长为56比特。图的左边是明 文的处理过程,有3个阶段, 首先是一个初始臵换IP,用于 重排明文分组的64比特数据。 然后是具有相同功能的16轮变 换,每轮中都有臵换和代换运 算,第16轮变换的输出分为左 右两半,并被交换次序。最后 再经过一个逆初始臵换IP-1从 而产生64比特的密文。除初始 臵换和逆初始臵换外,DES的 结构和图3-3所示的Feistel密 码结构完全相同。
S1
0 0 1 0 输出4位
选择S-box的行: 1 & 6 bits (2 bits) select one row 选择S-box的列: 2-5 bits (4 bits) select one column 一个S-box( Si )的输出结果: 行列相交处
3.2 DES
臵换P
轮函数F
四位二进 制,取值 为0-15
3.1.2 feistel密码结构的设计动机
课本P49表3.1为上图所示代换密码的加密与解密表,可 以看出,应用这种方法,如果n值小,例如等于4,和传 统代换密码没区别,如果n充分大,并且有明密文直接的 任意可逆变换,那么是安全的。 但从现实角度来看,使用大规模分组的任意可逆变换,不 太现实,通过表3.1,可以知道它定义了n=4时的某个可 逆映射,这个映射可以直接由表中第二列来定义,它给出 了每个明文对应的密文,本质上它就是决定所有可能映射 中某一个映射的密钥,这个密钥长度可以从表中看出为 (4位)*(24行)=64位,对应n,密钥长度为n*2n,一个 64位的分组密码,密钥长度将达到1021。 考虑到这些困难,Feistel指出我们只需要对这种理想分组 体系采取一种近似体制,用一些其他手段来达到加密强度, 但又不需要这么大的密钥空间。
3.1.3 Feistel密码
Diffusion
cn = ( m n i ) mod 26
i =1
k
(扩散):使明文的统计特征消
散在密文中,明文的一位影响密文的多位。 对字母采用平均操作进行加密。
对二进制分组,重复使用臵换后再用某些函数作用。
Confusion
(混淆): 增加密钥与密文之
间关系的复杂性,使得对手即使获取关于密文 的一些统计特性,也无法推测密钥。 采用复杂的代换算法(非线性函数)
3.1.3 Feistel密码
核心思想:
“乘积”和“迭代”
Feistel加密算法结构
1)明文分组被分为两个部分L0和 R0,数据的这两部分经过n轮处理 组合产生密文分组。 2)每一轮i以从前一轮得到的LEi-1 和REi-1为输入,另外的输入还有 从总的密钥K生成的子密钥Ki。 3)子密钥Ki不同于K,它们彼此 之间也不相同。 4)每一轮的结构都一样。
3.1.3 Feistel密码
问题的解决:
Horst Feistel提出了Feistel Cipher
基本思想: 用乘积密码来表达大尺寸的代换变换
Product cipher: 交替同时使用臵换和代换,所
得结果的密码强度将强于所有单个密码的强度。这种方法本 质是开发一个分组密码,密钥长为k比特,分组长为n比特, 采用2k个变换,而不是理想分组密码的2n!个可用变换。 以上的思想是基于香农提出的交替使用混淆和扩散乘积 密码的实际应用。
S3
S4
S5
S6
S7
S8
32bits寄存器
3.2 DES
对于一个S-box( Si )的紧缩方法: 输入6位: 1 0 1 1 0 0
0 1 2 14 4 13 0 15 7 4 1 14 15 12 8
轮函数F
行:10(2)
列:0110(6)
0 1 2 3
3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 15 11 8 3 10 6 12 5 9 0 7 4 14 2 13 1 10 6 12 11 9 5 3 8 8 13 6 2 11 15 12 9 7 3 10 5 0 2 4 9 1 7 5 11 3 14 10 0 6 13
密钥空间:56-bit keys ,即256 ≈7*1016 个密 钥 不足以抵御穷举式攻击
“Form surprise to suspicion”
从惊喜(甚至能够抵御很后来才发现的各种攻击) 到怀疑(n年前就如此厉害的NSA现在究竟有多 厉害?) 目前:3DES、AES
k = (k , k ,L, k ) 0 1 t1
明文 x = (x , x ,L, x ) 0 1 n 1
加密算法
密文 y = (y , y ,L, y ) 0 1 n1
解密算法
明文
x = (x , x ,L, x ) 0 1 n 1
加密过程
明文信息:中文、字母、字符 编码 数字序列(011101 ……… ) 分组
D1(28 位)
(56 位) 置换选择 2
k1
(48 位)
循环左移
循环左移
Ci(28 位)
Di(28 位)
置换选择 2 (56 位)
ki
(48 位)
3.2 DES
雪崩效应:
ቤተ መጻሕፍቲ ባይዱ
明文或密钥的 微小改变对密 文都会产生很 大的影响。
3.3 对DES的讨论
S-BOX的设计原理未知 是否有“陷门”存在,还不清楚
Feistel的轮函数
对数据的左边一半进行代换 操作,代换的方法是对数据右 边一半应用轮函数F,然后用 这个函数的输出和数据的左边 一半做异或。 轮函数在每一轮中有着相同的结构,但是以各轮的子密钥Ki为参数 形成区分。
LE i = RE i -1
RE i = LE i -1 F(RE i -1 ,K i )
3.1 分组密码原理
由于分组密码应用范围比流密码广泛,本章讨论 的主要是分组密码,现在使用的大多数对称分组 加密算法都是基于Feistel分组密码结构,所以研 究Feistel结构非常重要。
3.1 分组密码原理
把n位的明 设计原理: 文组,转 换成 n 位的 密钥 k = (k , k ,L, k ) 密钥 0 1 t1密文组
3.2 DES
第三步:一轮子密钥生成的过程
64 位密钥 密钥表的计算逻辑 循环左移: 1 1 9 2 1 10 3 2 11 4 2 12 5 2 13 6 2 14 7 2 15 8 2 16
置换选择 1
C0(28 位)
循环左移
D0(28 位)
循环左移
1 2 2 2 2 2 2 1
C1(28 位)
在这个替代之后,算法做一个臵换操作把数据的两个部分进行互换。
3.1.3 Feistel密码
Feistel解密
Feistel解密过程本质和加密过程一致,算 法使用密文作为输入,但使用子密钥Ki 的次序与加密过程相反,即第1轮使用 Kn,第2轮使用Kn-1,……,最后一轮使 用K1。这一特性保证了解密和加密可采 用同一算法。例如对于16轮迭代的 Feistel(P52图3.3),其解密过程为:
3.2 DES
第一步:初始臵换(
1 9 17 25 33 41 49 57 1 9 17 25 33 41 49 57 2 10 18 26 34 42 50 58 2 10 18 26 34 42 50 58 3 11 19 27 35 43 51 59 3 11 19 27 35 43 51 59 4 12 20 28 36 44 52 60 4 12 20 28 36 44 52 60 5 13 21 29 37 45 53 61 5 13 21 29 37 45 53 61 6 14 22 30 38 46 54 62 6 14 22 30 38 46 54 62 7 15 23 31 39 47 55 63 7 15 23 31 39 47 55 63 8 16 24 32 40 48 56 64 8 16 24 —1 32 IP 40 48 56 64