(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)
当分组长度较小时候,攻击者通过穷举明文空间,得到密码变换规律,难以抵挡选择明文攻击。
如果密钥量小,攻击者可以有效地通过穷举密钥,对密文进行解密,来得到有意义的明文,难以抵挡唯密文攻击。
使攻击者出了穷举法攻击以外,找不到其它有效地数学破译方法。
便于软件和硬件的实现,性能好。
使用迭代方式,由简单得、容易实现的模块搭建出抗破译能力强的分组密码算法;
每个模块各司其责、互相弥补对方的缺点,合作完成分组密码算法的搭建工作。
扩散是指要将算法设计成明文每一比特的变化尽可能多的影响到输出密文序列的变化,以便隐蔽明文的统计特性。形象地称为雪崩效应。
扩散的另外一层意思是密钥每一位的影响尽可能迅速地扩展到较多的密文比特中去。即扩散的目的是希望密文中的任一比特都要尽可能与明文、密钥相关联,或者说,明文和密钥中的任一比特值发生改变,都会在某种程度上影响到密文值得变化,以防止将密钥分解成若干个孤立小部分,然后各个击破。
混乱,指在加解密变换过程中明文、密钥以及密文之间的关系尽可能地复杂化,以防密码破译者采用解析法(即通过建立并求解一些方程)进行破译攻击。
混乱可以用“搅拌机”来形象地解释,将一组明文和一组密钥输入到算法中,经过充分混合,最终变成密文。同时要求,执行这种“混乱”作业的每一步都必须是可逆的,即明文混乱以后能得到密文,反之,密文经过逆向的混乱操作后能恢复到明文。(按照混乱原则,分组密码算法应该有复杂的非线性因素)
依次使用两个或者两个以上的基本密码,所得结果的密码强度将强于所有单个密码的强度,即乘积密码是扩散和混乱两种基本密码操作的组合变换,这样能够产生比个子单独使用时更强大的密码系统。选择某个较为简单的密码变换(包含多个基本密码),在密钥控制下以迭代方式多次利用它进行加密变换,就可以实现预期的扩散和混乱效果。
SP网络是由多重S变换和P变换组合成的变换网络,它是乘积密码的一种。其基本操作是S变换(代替)和P变换(换位),前者称为S盒,后者称为P盒。S盒起到混乱作用,P盒起到扩散的作用。SP网络的构造及S盒、P盒的构造如下图所示:
SP网络具有雪崩效应。所谓雪崩效应是指,输入(明文或密钥)即使只有很小的变化,也会导致输出产生巨大的变化现象。
能够抵御选择明文攻击
能够抵御唯密文攻击
轮函数F是分组密码的核心,是分组密码中单轮加密解密函数,其基本准则:
其主要性能指标是:安全性、速度、灵活性。
子密钥的生成也是也是迭代分组算法的一个重要组成部分,是从初始(种子)密钥产生迭代的各轮要使用的子密钥的算法。也就是说,轮函数F的功能是在子密钥的参与和控制下实现的子密钥的生成很重要,其评价指标:
1.实现简单、速度满足要求;
2.种子密钥的所有比特对每个字密钥比特的影响应大致相同;
3.没有弱密钥或弱密钥容易确定。
分组密码一般采用简单的、安全性弱的加密函数进行多轮迭代运算,使得安全性增强。一般来说,分组密码迭代轮数越多,密码分析越困难,但也不是追求迭代数越多越好,过多迭代轮数会使加密算法的性能下降,而安全性增强不明显。决定迭代轮数的准则:使密码分析的难度大于简单穷举搜索攻击的难度。分组密码迭代轮数一般采用8,10,12,16,20的居多。
分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。
序列密码也称为流密码(Stream Cipher),它是对称密码算法的一种。序列密码具有实现简单、便于硬件实施、加解密处理速度快、没有或只有有限的错误传播等特点,因此在实际应用中,特别是专用或机密机构中保持着优势,典型的应用领域包括无线通信、外交通信。 1949年Shannon证明了只有一次一密的密码体制是绝对安全的,这给序列密码技术的研究以强大的支持,序列密码方案的发展是模仿一次一密系统的尝试,或者说“一次一密”的密码方案是序列密码的雏形。如果序列密码所使用的是真正随机方式的、与消息流长度相同的密钥流,则此时的序列密码就是一次一密的密码体制。若能以一种方式产生一随机序列(密钥流),这一序列由密钥所确定,则利用这样的序列就可以进行加密,即将密钥、明文表示成连续的符号或二进制,对应地进行加密,加解密时一次处理明文中的一个或几个比特。
序列密码(Stream Cipher):又称流密码,将明文消息按字符逐位进行加密。
分组密码(Block Cipher):
在分组密码中将明文消息分组(每组有多个字符),逐组进行加密。