现代密码学-分组密码体制
本章提要
1 分组密码概述
2 数据加密标准DES
3 差分密码分析和线性密码分析
4 分组密码的运行模式
5 IDEA
6 AES-Rijndael
1 分组密码概述
分组密码(Block 美国高级加密标准AES的征集活动以及2000~2003年间欧洲NESSIE计划的实施,再次掀起了密码研究的新高潮
15个AES候选算法和24个NESSIE终选算法反映了当前密码设计的水平,也可以说是近几年研究成果的一个汇总。
目前对分组密码安全的讨论主要包括差分密码分析、线性密码分析和强力攻击等
1990年Biham和Shamir差分密码分析方法以及1993年Mitsuru Matsui线性密码分析方法的问世,都极大丰富了密码学的内容
从理论上讲,差分密码分析和线性密码分析是目前攻击分组密码的最有效的方法,而从实际上说,强力攻击是攻击分组密码最可靠的方法
一些现行的标准
3DES、IDEA、AES
3GPP标准中的算法 KASUMI
我国国家标准SMS4,现在改为了SM4
NESSIE分组密码算法(欧)
MISTY1,过渡型的标准,日本人Eisaku Takeda设计
Camellia,普通型的标准(AES算法也可用),日本人Shiho Moriai与Mitsuru Matsui设计
SHACAL2,高级型的标准,法国人Helena Handschuh和David Naccache设计
瑞典人Jakob Jonsson和美国人Burt Kaliski设计的RC6
分组密码领域有待继续研究和完善的理论和实际问题
如何设计可证明安全的密码算法;
如何加强现有算法及其工作模式的安全性;
如何测试密码算法的安全性;
如何设计安全的密码组件,例如S-盒、扩散层及密钥扩散算法等。
分组密码没有非常有效的数学分析工具
需要实践检验
参考资料:《对称密码学》胡予濮,张玉清等著
《密码分析学》冯登国
分组密码算法设计满足的要求:
I. 应用要求:
实际应用中对于分组密码可能提出多方面的要求,除了安全性外,还有:
运行速度
存储量(程序的长度、数据分组长度、高速缓存大小)
实现平台(硬件、软件、芯片)、
运行模式等限制条件。
这些都需要与安全性要求之间进行适当的折中选择
II. 算法设计的要求
分组密码设计在于找到一种算法,能在密钥控制下从一个足够大且足够好的置换子集中,简单而迅速地选出一个置换,用来对当前输入的明文数字组进行加密变换
① 分组长度n要足够大,使分组代换字母表中的元素个数2n足够大,防止明文穷举攻击法奏效。(需要明文相关性和统计特性)
DES、IDEA、FEAL和LOKI等分组密码都采用n=64,在生日攻击下用232组密文成功概率为1/2,同时要求232×64b=215MB=32GB存贮,故现在采用穷举攻击已经可以实现(时间存储攻击)
生日攻击:()随机选取n个人,至少有两个人生日相同的概率为 P=1-365×364×…×(365-n+1)/365n
当n=64时 p=
② 密钥量要足够大(即置换子集中的元素足够多)
尽可能消除弱密钥并使所有密钥同等地好,以防止密钥穷举攻击奏效。但密钥又不能过长,以便于密钥的管理。
DES采用56比特密钥,太短
IDEA采用128比特密钥,够用
据估计,在今后30~40年内采用80比特密钥是足够安全的
③ 由密钥确定置换的算法要足够复杂,充分实现明文与密钥的扩散和混淆,没有简单的关系可循,能抗击各种已知的攻击
如差分攻击和线性攻击
有高的非线性阶数,实现复杂的密码变换
使对手破译时除了用穷举法外,无其它捷径可循
④ 加密和解密运算简单,易于软件和硬件高速实现
使用子块和简单的运算
如将分组n划分为子段,每段长为8、16或者32
在软件实现时,应选用简单的运算,使作用于子段上的密码运算易于以标准处理器的基本运算,如加、乘、移位等实现,避免用软件难于实现的逐比特置换
加解密算法应具有相似性
为了便于硬件实现,加密和解密过程之间的差别应仅在于由秘密密钥所生成的密钥表不同而已。这样,加密和解密就可用同一器件实现。
设计的算法采用规则的模块结构,如多轮迭代等,以便于软件和VLSI快速实现
多轮迭代是乘积密码的特例,指同一基本加密结构的多次执行
若以一个简单函数f,进行多次迭代,就称其为迭代密码。
每次迭代称作一轮(Round)。相应函数f 称作轮函数。
每一轮输出都是前一轮输出的函数,即y(i)=f[y(i-1), k(i)],其中k(i)是第i轮迭代用的子密钥,由秘密密钥k通过密钥生成算法产生。
⑤ 数据扩展
一般无数据扩展,在采用同态置换和随机化加密技术时(如公钥密码)可引入数据
现代密码学-分组密码体制 来自淘豆网m.daumloan.com转载请标明出处.