第四讲现代分组加密技术 - sjtulonghuan/teaching/p033507/04.pdf ·...
TRANSCRIPT
第四讲 现代分组加密技术
上海交通大学计算机系
内容
三重DES — 3DES 国际数据加密算法 — IDEA 高级数据加密标准—AES 分组密码的工作模式
序言
DES的56比特的密钥长度太小,注定将被取
代。本章将探讨当前最重要几种对称密码算
法。这些密码算法均具有如下特征:
高密码强度
应用广泛
代表了至DES以来的现代对称密码技术
1.DES的变形
DES在穷举攻击下,理论上脆弱—需要寻找替代算法
多次使用DES,且使用多个密钥
设计新的密码算法
最简单形式:双重DES两次进行加密,每次使用不同的密钥
]][[ 12 PEEC KK=
加密
]][[ 21 CDDP KK=
解密
双重DES
][]][[ 312 PEPEE KKK =
如果成立,不管用DES进行了多少次加密,效果均等同于用一个 56 bit 密钥进行一次DES加密
对双重DES的攻击(1)
中间相遇攻击
针对所有分组密码
原理
CPEE KK =]][[ 12
XCDPE KK == ][][ 21
如果:
则有:
算法步骤
给定明文密文对(P, C),对P按照K1的所有可能值( 256 个)加
密,所得结果按照X的值排序放在表T内 再对C用K2的所有可能值( 256 个)解密
每解密一次,将结果与T表中的值比较
如果等式成立,则用K1,K2依次对P加密,若结果为C,则获
得正确密钥
对双重DES的攻击(2)
中间相遇攻击的成功概率
双重DES密文空间长度:264
双重DES密钥长度112,密钥空间2112
对固定明文P,运行双重DES得到固定密文C的密钥个数平均为
2112/264=248。其中仅一个密钥是正确的。因此对第一个(P, C)对,平
均能找到248个密钥对(K1, K2)
对第二个(P’, C’)对,用K1K2对P’加密,若所得结果为C’ ,则认为(K1, K2)对正确。第二次出错的概率为248/264=2-16
结论:使用中间相遇攻击,在已知两组明文密文对时,付出数量级为256
的代价,可以成功攻击密钥长度为2112的双重DES (CP. DES, 攻击数
量级为255攻击)。双重DES不能提高DES的安全性
三重DES (3DES)(1) 思想:为了对抗中间相遇攻击,使用三个密钥进行三次加密,使得已知
明文攻击的代价上升为 2112 数量级。(安全!)
广泛替代了DES,用于密钥管理标准ANS X9.17和 ISO 8732 弱点:密钥长度为168位 Tuchman建议使用两个密钥进行三次加密: 加密-解密-加密(EDE) 加密与解密
]]][[[ 121 PEDEC KKK=
加 密
]]][[[ 121 CDEDP KKK=
解 密
三重DES(2) EDE的目的:与DES兼容(设K1=K2即可)
对3DES的攻击
目前对3DES没有可行攻击方法。
已证明穷举攻击代价为2112≈5×1033数量级
可以对抗差分攻击、线性攻击:攻击代价按指数增长,比DES超过1052倍
Merkle,Hellman攻击(不实际)
逐个查看可能的明文,看哪一个明文的第一个中间值(A)为0 再使用中间相遇攻击
代价:256数量级。但是选择明文攻击,所需明文密文对数量为256
已知明文攻击:给定n个明文密文对 (P, C) (运算数量级约256-log n,也不实际)
1)随机选择a
2) 对所有可能密钥Ki = i,计算Pi=Di[a]
3)若P属于已知对,计算Bi=Di[C],入表并排序
4) 对所有可能K2=j,计算 a 对应的第二个中间值Bj=Dj[a]
5)若 Bj=Bi
则认为(K1,K2)=(i, j)
三重DES(3)
虽然二密钥的3DES可以对抗上述攻击,但研究
者仍不放心
很多研究者推荐使用3个密钥的三重DES
兼容性
与DES兼容: K3=K2,或K1=K2
三密钥的3DES的应用
PGP (Pretty Good Privacy )S/MIME (Secure Multipurpose Internet Mail Extensions 多用途网际邮件
扩充协议 )
]]][[[
]]][[[
123
123
PDEDP
PEDEC
KKK
KKK
=
=
三重DES的优点与缺点
NIST在1999年发布新版DES标准(FIPS PUB46-3),指出
DES只能用于遗留系统,3DES将取代DES成为新标准。
优点
密钥长度112bit,足够长
底层算法与DES相同,因此受密码分析时间远远长于其他加密算法,
对密码分析攻击有很强免疫力。
仅考虑安全性,3DES会成为未来数十年加密算法的合适选择
缺点
DES的设计主要针对硬件实现,而今在许多领域,需要用软件方法
来实现它,在这种情况下,DES效率相对较低。
分组长度64,似乎应该更长
因此,3DES不能成为长期使用的加密算法标准
2. IDEA简介 由瑞士的Xuejia Lai和James Massey于1990的
EuroCrypt’90年公布了IDEA密码算法第一版,称为PES (Proposed Encryption Standard)
在EuroCrypt’91上,为抗击差分密码攻击,他们增强了算法的强度,称IPES(Improved PES)
并于1992年改名为IDEA(International Data Encryption Algorithm)
IDEA已由瑞士的Ascom公司注册专利(欧洲、美国),以商业目的使用IDEA算法必须向该公司申请许可
分组大小:64bit;密钥长度:128bit ;不是Feistel结构
抗穷搜索攻击能力比DES强 目前没有对IDEA的有效攻击
IDEA的“混淆”和“扩散”设计原则来自三种运算,它们易于软、硬件实现(加密速度快)
IDEA简介
按位异或运算( )
整数模216加( + ) 整数模216+1乘( )(IDEA的S盒)
扩散由称为MA结构的算法基本构件提供
16
16
16 Z6
F2F1
Z5
G1 G2
16
16
16
16
1616
逐位异或,记做 例如:
0010001011000100 1010001011000101 = 1000000000000001
模216的整数加,记做 例如:
0010001011000100 1010001011000101 = 1100010110001001
模216+1的整数乘,记做 定义为:
a b = ab mod (216+1) 注意,全零的分组代表216 = -1(因此0的乘法逆元是0),
例
0000 0000 0000 0000 1 000 0000 0000 0000 = 1000 0000 0000 0001
既 216×215 mod (216+1)= 215+1
IDEA基本运算单元
IDEA加密
概述
使用子分组:16bit的子分组;使用简单操作(易
于加法、移位等操作实现)加密解密过程类似;
规则的结构(便于VLSI实现)
每轮轮密钥长度为96 bit(6×16)64位的明文分成4块: X1,X2,X3,X4
明文经过8轮迭代和一个输出变换,得到64位的
密文 Y1,Y2,Y3,Y4
可以看作是8.5轮:8轮轮函数+0.5轮输出变换
IDEA加密示意图
由128bit密钥,经过密钥扩展,生成52个长度为16的子密钥
密钥扩展
128位密钥
Z1 Z52
16
…
IDEA轮函数
Z1 Z2 Z3
Z5
Z4
Z6
X1 X3 X4X2
IDEA的密钥生成
由128bit密钥,经过密钥扩展,生成52个长度为16的子密钥
前8个子密钥直接从密钥中取出;
对前8个16比特的子密钥进行25bit的循环左移,得到下一个8×16比特,该
过程循环7次接下来的密钥就从中取出;
重复进行直到52个子密钥都产生出来。
轮 数
IDEA解密及解密密钥生成
加密解密实质相同,算法也相同但使用不同的密钥
解密密钥来自加密密钥,以如下方法从加密子密钥Z1-Z52中导出:
解密循环i的头4个子密钥从加密循环10-i的头4个子密钥中导出;解
密密钥第1、4个子密钥对应于1、4加密子密钥的乘法逆元;2、3对应
2、3的加法逆元;
对前8个循环来说,循环i的最后两个子密钥等于加密循环9-i的最后两
个子密钥;
IDEA的速度和密码分析
软件实现比DES快两倍
抗穷举攻击
若有每秒测试十亿个密钥的芯片,并采用十亿个芯片并行处理,需要1013—比宇宙年龄更长
若有1024个上述芯片并行处理,可在一天内找出密钥—但宇宙中没有足够硅原子来制作这样的芯片
目前比穷举攻击更快对IDEA的攻击仅对2.5轮以下有效。4轮IDEA很快且刚好是安全的
抗差分攻击 Lai证明了IDEA的第四轮以后对差分免疫
存在极其少的弱密钥,但被选中的概率为(1/296),且很容易被修订
虽然IDEA有坚强的理论基础、高效且安全、已经实用化,Bruce Schneier 认为IDEA是DES的最好替代,但要取代一个当今正在使用的算法仍不容易
3. AES 1997年4月15日美国国家标准和技术研究所(NIST)发起征
集AES(AES—Advanced Encryption Standard)算法的活
动,并成立了AES工作组
目的是为了确定一个非保密的、公开披露的、全球免费使用
的加密算法,用于保护下一世纪政府的敏感信息
AES的基本要求:
比三重DES快至少和三重DES一样安全
分组长度128比特
支持密钥长度为128/192/256比特
历史
1998: 21个候选算法中的15 个候选算法通过第一轮评估
1999: 5个候选算法入围:
Mars (IBM): -complex, fast, high security margin RC6 (MIT):-v. simple, v. fast, low security margin Rijndael(比利时,Joan Daemen & Vincent Rijmen):-clean, fast, good
security margin Serpent(英,以,美): -slow, clean, v. high security margin
Twofish(美): -complex, v. fast, high security margin
2000: Rijndael算法被选中
其原型是Square算法,可抗击差分分析和线性分析
迭代分组密码,其分组长度和密钥长度都是可变的
根据AES的要求,分组长度为128bit,密码长度为128/192/256bit,相应的
轮数r为10/12/14;
2001年11月,美国NIST发布标准FIPS PUB 197
NIST评估标准
第一轮及第二轮 安全性:实际安全、随机性、可靠性、其它
成本:无专利, 软硬件效率、存储空间需求(电路门数、RAM大小)
算法和执行特征:灵活性、简洁性、适用性
最终评估标准 一般安全性:对抗现有攻击
软件实现:速度、跨平台能力、密钥长度导致执行速度变化
受限空间环境:RAM/ROM受限环境
硬件实现:如硬件设备存储区域加倍将导致设备费用上升
对执行的攻击:如计时攻击和能量分析攻击
加密与解密:算法若不一致,会占用存储空间,且存在执行时间差异
密钥灵活性:用少量资源快速改变密钥
多功能性和灵活性:密钥长度、分组长度、轮数的变化;特定环境下的优化
指令级并行执行的潜力:当前和未来处理器中利用ILP特征的能力
选择Rijndael的原因
NIST最终选择了Rijndael作为AES的标准,因为全面地考虑,Rijndael汇聚了安全,性能好,效率高,易用和灵活等优点
Rijndael使用非线性结构的S-boxes,表现出足够的安全余地;
Rijndael在无论有无反馈模式的计算环境下的硬,软件中都能显示出其
非常好的性能
它的密钥安装的时间很好,也具有很高的灵活性;
Rijndael的非常低的内存需求也使它很适合用于受限的环境;
Rijndael的操作简单,并可抵御时间和能量攻击,此外,它还有许多未
被特别强调的防御性能;
Rijndael在分组长度和密钥长度的设计上也很灵活,算法可根据分组长
度和密钥长度的不同组合提供不同的迭代次数,虽然这些特征还需更深
入地研究,短期内不可能被利用,但最终,Rijndael内在的迭代结构会
显示良好的潜能来防御入侵行为。
AES参数
密钥长度
(bit)分组大小
(bit)迭代轮数
(bit)轮密钥长度
(bit)扩展密钥长度
(bit)
AES-128 128 128 10 128 44×32
AES-192 192 128 12 128 52×32
AES-256 256 128 14 128 60×32
AES基本运算
一个被Rijndael处理的数据块(称为状态)和密钥均可用一个矩
阵列图来表示
每一列为一个4字节阵列(1字=4字节=32位)Nb代表分组长度对应的列数(=n/32)Nk代表密钥长度对应的列数(=k/32)每次加密操作的迭代次数(Nr) 分为10、12、14三种
以AES-128为例,明文长度n=128, 密钥长度k=128 不是Feistel结构
密钥和扩展密钥的结构
K0 K4 K8 K12
K1 K5 K9 K13
K2 K6 K10 K14
K3 K7 K11 K15
wo w1 w2 w42 w43
输入 State数组 输出
密钥 扩展密钥
从上到下,从左到右,每列8×4=32比特
扩展为44个字(每个字为32比特,4字节)。每列代表一个字
从上到下,从左到右,每列8×4=32比特
AES的完整结构(AES-128)
AES具体结构
不是Feistel结构,加密解密算法不同
对于加密和解密
均以轮密钥加作为开始
9轮迭代,每轮包括
字节代换:S盒子 (代换,之前有密钥,属于混淆,非线性)
行移位:简单置换 (属于扩散,线性)
列混淆:利用域GF(28)上的算术特性(属于扩散,线性)
轮密钥加:当前分组 XOR 轮密钥 (Vernam密码,线性)
第10轮只包含 字节代换、行移位、轮密钥加
目的是满足算法的可逆性
仅在轮密钥加阶段使用密钥
每个阶段均可逆
具有非常明晰的代数结构
AES的一轮加密过程
字节代换
行移位
8
8
8
8
8
8
列混淆
轮密钥加
AES的字节代换及逆变换(S盒子)
正向字节代换:简单查表
S盒子是一个16×16矩阵,包含8位值所能表达的全部256种可能的变换
字节代换时,对每个字节,高四位作为行值,低四位作为列值,找到S盒子
中的对应元素输出
例 S {95}={2A} S-1{2A}={95}
正向S盒子 逆向S盒子
AES演示
AES演示
4.1 分组密码的工作模式—电码本模式(ECB模式)
Electronic Codebook
工作方式:用相同密钥对各个明文组分别加密,一次处理64
位明文每个64位明文对应唯一密文
明文长度大于64位:明文分段,最后一段可能需要填充
特征:相同64位明文对应相同64位密文
攻击:
若消息有固定开头
交换明文组顺序,并交换对应密文组顺序—对分组的代换或重排
攻击成功的原因:对各个分组的加密彼此独立
应用:单个数据的安全传输
Electronic Codebook (ECB) 模式
ECB加密
ECB 解密
4.2 分组密码的工作模式—密码分组链接模式
Cipher Block Chaining (CBC) 目的:克服ECB的弱点
思路:将消息分为很多块,并通过加密进行
链接。已加密的密文分组与当前的明文分组
链接在一起。
使用初始向量IV Ci= EK(Pi⊕Ci-1) C0= IV 应用:对大量数据的加密和认证
CBC加密解密
CBC加密
CBC解密
CBC消息填充与优缺点
消息的最后一个Block小于64比特时,需要填充
方法一:填充“NULL”方法二:写入填充个数[b1 a2 c3]=>[b1 a2 c3 0 0 0 0 5]
优点
每个密文分组均依据于之前的全部分组
对任意一个分组的改动都会影响后继的所有密文分组
需要初始向量
缺点
收发双方都必须知道IV如果攻击者获得了IV,可以通过预先改变IV中的某些位,使得接收者
的明文中部分位被取反
P1[i] = IV[i] ⊕ Dk(C1[i]) 解决方法:IV为固定值,或者在发送消息前用ECB来保护IV
4.3 密码反馈模式(CFB) Cipher FeedBack 消息被看作比特流,本质是分组加密,可以用于实现流密码。
实现每次对任意比特的加密。(CFB-1, CFB-8, CFB-64, CFB-128)
明文消息与分组加密的输出进行异或,所得结果反馈进入移
位寄存器作为下一阶段的输入
加密:Ci= Pi ⊕As(EK(Ss(Ci-1))), 其中s是流密码每次加密的长度=|Pi|=|Ci|, C-1= IV, Ss代表移位寄存器S移动s位,
As代表取前s位解密:Pi=Ci ⊕ As(EK(Ss(Ci-1)))
•用途:流密码加密,认证
CFB加密
…
移位寄存器64-s位 | s 位
选择 丢弃
s位 | 64 - s位
移位寄存器64-s位 | s 位
移位寄存器64-s位 | s 位
选择 丢弃
s位 | 64 - s位选择 丢弃s位 | 64 - s位
CM-1
CFB解密
移位寄存器64-s位 | s 位
移位寄存器64-s位 | s 位
移位寄存器64-s位 | s 位
选择 丢弃s位 | 64-s 位
选择 丢弃s位 | 64-s 位
选择 丢弃s位 | 64-s 位
CM-1
…
CFB的优缺点
优点
非常适合数据流的加密,是最常见的流密码模式
缺点
每得到s个输入比特,需要暂停进行分组加密
存在误差扩散:密文传输中某位发生错误,会影
响后继的解密
4.4 输出反馈模式(OFB) Output FeedBack 与CFB非常相似,消息被看作比特流
与CFB不同,加密函数的输出被反馈回移位寄存器作为下一
次的输入(而不是密文单元)。
因为反馈值与明文消息无关,所以反馈值都可以预先计算
分组加密的输出与明文异或得到密文
加密
Ci= Pi ⊕Oi
Oi=As(EK(Ss(Oi-1))) O-1= IV
用途:有信道噪声环境下的流密码
OFB加密
移位寄存器64-s位 | s 位
选择 丢弃
s位 | 64 - s位
移位寄存器64-s位 | s 位
移位寄存器64-s位 | s 位
选择 丢弃
s位 | 64 - s位选择 丢弃s位 | 64 - s位
CM-1
…
OFB解密
移位寄存器64-s位 | s 位
选择 丢弃
s位 | 64 - s位
移位寄存器64-s位 | s 位
移位寄存器64-s位 | s 位
选择 丢弃
s位 | 64 - s位选择 丢弃s位 | 64 - s位
CM-1
…
OFB优缺点
优点
传输过程中,比特差错不会扩散
可以预计算分组,流加密时不需停顿
缺点
对抗消息流篡改攻击的能力弱于CFB:若对密文
取反,则解密后的明文也取反
可以看作是一次一密的变形(Vernam密码)
所以绝对不能重复使用相同的密钥序列和IV发送方和接收方必须同步
4.5 计数器模式(CRT) Counter 在70年代已经被提出,直到在ATM和IPSec中应用,才被人
们广泛研究
与OFB相似处:明文与分组的输出异或得到密文。
与OFB的差异:分组加密的输入是计数
对每个明文,必须使用不同的分组密钥和计算器值(绝不重
用)
可以并行处理
加密
Ci= Pi ⊕ Oi
Oi = EK(Counter)
用途:高速网络加密
CTR的优缺点
优点
高效
可以并行处理多块明文密文
可以预计算
good for bursty high speed links 随机访问:密文的第i个分组可以随机访问,不需知道前面i-1个密
文组(c.p. CBC)
可证安全:是CPA安全的
前提:使用了真正的随机数生成器,且每个计数器值绝不重用
缺点
密钥、计数器值绝不能重用
总结
知识要点
三重DES — 3DES,两个密钥的3DES,参
数
国际数据加密算法 — IDEA的参数及优点
高级数据加密标准—AES的参数及优点
分组密码的工作模式,各种模式的优缺点
下一讲预告
用对称密码实现保密性
谢谢!