《密码学与网络安全》学习 [ 2 ]
计算机对称密钥加密算法算法类型与模式
广义上讲,明文生成密文的方法有两种:流加密法(一次加密一个位)与块加密法(一次加密明文中的一个块)
组结构
组元素是每个可能密钥构成的密文块,组表示明文生成密文的变化次数 。
打乱与扩散
混淆是为了保证密文中不会反映出明文的线索。
扩散增加明文的冗余度,使其分布在行和列中。
算法模式
算法模式是块加密法中一系列的基本算法步骤的组合,有些要从上一步得到某些反馈。这是计算机加密算法的基础。算法模式有四种:电子编码薄(ECB),加密块链接(CBC),加密反馈(CFB),输出反馈(OFB).
1,电子编码薄
电子编码薄是最简单的操作模式,将输入的明文消息分成64位,然后单独加密每个块,消息中的所有块用相同的密钥加密。
解密过程相反。
其缺点是:电子编码薄模式用一个密钥加密消息的所有块,如果原消息中重复明文块,则加密消息中的相应密文块也会重复,因此,电子编码薄模式适于加密小消息。
2,加密块链接模式
为克服电子编码薄模式的缺点,加密块链接模式保证即使输入中的明文块重复出现,这些明文块也会在输入中得到不同的密文块。
连接在块加密法中增加反馈机制。在加密块链接模式中,上一次的加密结果反馈到当前块的加密中,用每个块修改下一个块的加密。这样,每块密文与相应的当前输入明文块相关,与前面的所有明文块有关。
加密过程是:
1,接受两个输入:第一个明文块和随机文本块,称为初始化向量;
2,第一个明文块和初始化向量用异或运算组合,然后用一个密钥加密,产生第一个密文块。第一个密文块作为下一个明文块的反馈。
3,将第三个明文块与第二个密文块用异或运算组合,然后用相同的密钥加密,产生第三个密文块。
4,依此类推。
解密过程相反
加密反馈模式
面向字符的应用程序的加密要使用流加密法,可以使用加密反馈模式。在此模式下,数据用更小的单元加密,如可以是8位,这个长度小于定义的块长(通常是64位)
其加密步骤是:
1,加密反馈模式也使用64位的初始化向量。初始化向量放在移位寄存器中,在第一步加密,产生相应的64位初始化密文;
2,加密初始化向量最左边的8位与明文前8位进行异或运算,产生密文第一部分(假设为c),然后将c传输到接收方;
3,初始化向量的位(即初始化向量所在的移位寄存器内容)左移8位,使移位寄存器最右边的8位为不可预测的数据,在其中填入c的内容;
4,重复第1-3步,直到加密所有的明文单元。
解密过程相反
输出反馈模式
输出反馈模式与CFB相似,惟一差别是,CFB中密文填入加密过程下一阶段,而在OFB中,初始化向量加密过程的输入填入加密过程下一阶段。
数据加密标准
DES
(由于部分内容需要图片解释,但图片未加补充,将在今后几天陆续补充)
DES是个块加密法,按64位块长加密数据,即把64位明文作为DES得输入,产生64位密文输出。加密与解密使用相同的算法和密钥,只是稍作改变,密钥长度为56位(实际上,最初的密钥是64位,但在DES开始之前放弃密钥的每个第八位,从而得到56位密钥,即放弃第8,16,24,32,40,48,56,64位)。
简单的说,DES利用加密的两个基本属性。替换(混淆)与变换(扩散),DES共16步,每一步称为1轮,每一轮进行替换与变换步骤,具体为:
1,将64位明文块送入初始置换(初始置换只发生一次,是在第一轮之前);
2,对明文进行初始置换;
3,初始置换产生转换块的两半,假设为左明文和右明文;
4,每个左明文与右明文经过16轮加密过程,各有自己的密钥;
5,最后,将左明文与右明文重接起来,对组成的块进行最终置换;
6,结果得到64位密文。
初始置换之后,得到64位置换文本块分成两半,各32位,左明文,右明文,然后对这两块进行16轮操作,如下:
1,密钥变换
前面得到56位密钥,每一轮从这个56位密钥产生不同的48位子密钥,称为密钥变换。为此。56位密钥分成两半各28位,循环左移一位或两位,例如,如果轮号是1,2,9,16,则只移一位,否则移两位。
相应移位后,选择56位中的48位,由于密钥变换要进行置换和选择56位中的48位,因此称为压缩置换。
2,扩展置换
经过初始置换后,得到32位明文区,分别称为左明文和右明文,扩展置换将右明文从32位扩展到48位,称为扩展置换,过程如下:
a,将32位右明文分成8块,每块各有4块;
b,将上一步的每个4位块扩展为6位块,即每个4位块增加2位(实际上是重复4位块的第一位和第四位),第二位和第四位口令输入一样写出。
密钥变换将56位秘要压缩成48位,而扩展置换将32位右明文扩展为48位,现在,48位密钥与48位右明文进行异或运算,将结果传递到下一步,,即s盒置换。
3,S盒置换
s盒置换过程从压缩密钥与扩展右明文异或运算得到的48位输入用替换法得到32位输出。
替换用8个替换盒,也称其为s盒,每个s盒有6位输入和4个输出。48位输入块分成8个子块(各有6位),每个子块指定一个s盒。s盒将6位输入变为输出。
所有s盒的输出组成32位块,传递到下一阶段,即p盒置换
4,p盒置换
p盒置换机制只是进行简单的置换(即按p表指定把一位换成另一位,而不进行扩展的压缩)
5,异或与交换
64位明文的大半部分与p盒置换的结果进行异或运算,结果成为新的右明文,并通过交换将旧的右明文变成新的左明文。
6,最终置换
[ 本帖最后由 ruanyongjie 于 2008-8-15 16:36 编辑 ]
页:
[1]