分组密码的处理方式
(1)分组密码算法只负责固定长度消息的加、脱密;
(2)工作模式负责长消息的处理方式;
(3)短块处理方式负责短块处理方式的约定
分组密码的含义
也称块密码,它是将明文消息经过编码表示后的二进制序列m0,m1,......,mi,......划分成若干个固定长度(p)的组(或块)m=(m0,m1,......,mn),各组分别在密钥K=(K0,K1,......,Kt-1)的控制下转换成长度为n的密文分组C=(C0,C1,......,Cn-1)。其本质是一个从明文空间(m长的比特串的集合)P到密文空间(n长的比特串的集合)C的一一映射。(一般而言,p=n)
分组密码的要求
1.分组长度要足够大
当分组长度较小时候,攻击者通过穷举明文空间,得到密码变换规律,难以抵挡选择明文攻击。
2.密钥量要足够大
如果密钥量小,攻击者可以有效地通过穷举密钥,对密文进行解密,来得到有意义的明文,难以抵挡唯密文攻击。
3.密码变换足够复杂
使攻击者出了穷举法攻击以外,找不到其它有效地数学破译方法。
4.加密解密运算简单
便于软件和硬件的实现,性能好。
5.无数据扩展和压缩
设计思想
使用迭代方式,由简单得、容易实现的模块搭建出抗破译能力强的分组密码算法;
每个模块各司其责、互相弥补对方的缺点,合作完成分组密码算法的搭建工作。
扩散
扩散是指要将算法设计成明文每一比特的变化尽可能多的影响到输出密文序列的变化,以便隐蔽明文的统计特性。形象地称为雪崩效应。
扩散的另外一层意思是密钥每一位的影响尽可能迅速地扩展到较多的密文比特中去。即扩散的目的是希望密文中的任一比特都要尽可能与明文、密钥相关联,或者说,明文和密钥中的任一比特值发生改变,都会在某种程度上影响到密文值得变化,以防止将密钥分解成若干个孤立小部分,然后各个击破。
混乱
混乱,指在加解密变换过程中明文、密钥以及密文之间的关系尽可能地复杂化,以防密码破译者采用解析法(即通过建立并求解一些方程)进行破译攻击。
混乱可以用“搅拌机”来形象地解释,将一组明文和一组密钥输入到算法中,经过充分混合,最终变成密文。同时要求,执行这种“混乱”作业的每一步都必须是可逆的,即明文混乱以后能得到密文,反之,密文经过逆向的混乱操作后能恢复到明文。(按照混乱原则,分组密码算法应该有复杂的非线性因素)
分组密码的原理--乘积密码
依次使用两个或者两个以上的基本密码,所得结果的密码强度将强于所有单个密码的强度,即乘积密码是扩散和混乱两种基本密码操作的组合变换,这样能够产生比个子单独使用时更强大的密码系统。选择某个较为简单的密码变换(包含多个基本密码),在密钥控制下以迭代方式多次利用它进行加密变换,就可以实现预期的扩散和混乱效果。
乘积密码的实现--SP网络
SP网络是由多重S变换和P变换组合成的变换网络,它是乘积密码的一种。其基本操作是S变换(代替)和P变换(换位),前者称为S盒,后者称为P盒。S盒起到混乱作用,P盒起到扩散的作用。SP网络的构造及S盒、P盒的构造如下图所示:
SP网络的性质
SP网络具有雪崩效应。所谓雪崩效应是指,输入(明文或密钥)即使只有很小的变化,也会导致输出产生巨大的变化现象。
分组密码简图
分组密码的设计准则
分组长度
能够抵御选择明文攻击
密钥长度
能够抵御唯密文攻击
轮函数(圈函数)F的设计准则
轮函数F是分组密码的核心,是分组密码中单轮加密解密函数,其基本准则:
其主要性能指标是:安全性、速度、灵活性。
子密钥的生成方法
子密钥的生成也是也是迭代分组算法的一个重要组成部分,是从初始(种子)密钥产生迭代的各轮要使用的子密钥的算法。也就是说,轮函数F的功能是在子密钥的参与和控制下实现的子密钥的生成很重要,其评价指标:
1.实现简单、速度满足要求;
2.种子密钥的所有比特对每个字密钥比特的影响应大致相同;
3.没有弱密钥或弱密钥容易确定。
迭代的轮数
分组密码一般采用简单的、安全性弱的加密函数进行多轮迭代运算,使得安全性增强。一般来说,分组密码迭代轮数越多,密码分析越困难,但也不是追求迭代数越多越好,过多迭代轮数会使加密算法的性能下降,而安全性增强不明显。决定迭代轮数的准则:使密码分析的难度大于简单穷举搜索攻击的难度。分组密码迭代轮数一般采用8,10,12,16,20的居多。