第五章对称密码体制(第一部分)《信息安全技术》对称密码分组密码流密码对称密码体制──加密密钥与解密密钥本质上相同,也称“单密钥密码体制”流密码的密钥在加密过程中随机产生并与明文本身有关分组密码的密钥与加密过程及明文无关5.1分组密码5.1.1分组密码概述明文分组明文分组加密Ek(p)解密Dk(c)密文分组密钥k=(k0,k1,…,km-1)密钥k=(k0,k1,…,km-1)p=(p0,p1,…,pn-1)如:10110101c=(c0,c1,…,cn-1)如:01101011p=(p0,p1,…,pn-1)如:10110101分组密码的模型5.1.2分组密码原理基本原则──Shannon提出的扩散与混乱扩散──将每一位明文的影响尽可能迅速地作用到较多的输出密文位中去,以便隐藏明文的统计特性混乱──密文和明文之间的统计特性关系尽可能地复杂化乘积密码──依次使用两个或两个以上的基本密码,所得结果的密码强度将强于所有单个密码的强度1.SP网络S变换(Substitution,也称S-盒)──通过代替进行扩散p变换(Permutation,也称P-盒)──通过换位进行混淆解密不同于加密典型算法──AES2.雪崩效应──一个明文比特的变换应当引起许多位密文比特的改变3.Lucifer算法──由S-盒与P-盒交替在密钥控制下作用于足够长的明文分组4.Feistel网络结构Li=Ri-1;Ri=Li-1F(R⊕i-1,Ki)新左=旧右;新右=旧左⊕旧右与本轮密钥的函数解密与加密算法相同典型算法──DESFeistel网络结构的迭代流程轮函数F(Ri-1,Ki)Ri-1⊕Li-1子密钥KiRiLiFeistel结构的实现依赖于下列参数:分组长度密钥长度迭代轮数子密钥生成算法轮函数5.1.3分组密码的设计准则(略)5.1.补充S-DES教学算法1.加密模型1)输入输出2)算法流程8位明文p=(p0,p1,…,p7)10位密钥k=(k0,k1,…,k9)8位密文c=(c0,c1,…,c7)加密加密8位明文p=(p0,p1,…,p7)初始置换IP逆置换IP-1依赖密钥的变换Fk依赖密钥的变换Fk左右交换SW8位密文c=(c0,c1,…,c7)循环移位10阶置换P1010位种子密钥k=(k0,k1,…,k9)循环移位10到8变换P810到8变换P8解密8位明文p=(p0,p1,…,p7)逆置换IP-1初始置换IP依赖密钥的变换Fk依赖密钥的变换Fk左右交换SW8位密文c=(c0,c1,…,c7)公共信道传输k1k1k2k23)算法公式加密:c=IP-1(Fk2(SW(Fk1(IP(p)))))解密:p=IP-1(Fk1(SW(Fk2(IP(c)))))4)Fk变换的细节和流程Fk(L,R)=(L⊕P4((S0‖S1)(E/P(R)⊕k)))‖R其中:L、R为输入8位码的左右两半E/P为一个4位到8位的扩展k为8位子密钥⊕为异或运算S0、S1是4位到2位的变换盒,分别作用于左右4位P4是一个4位置换‖表示两个位串的拼接Fk变换的流程8位输入LR扩展变换E/PS0盒变换S1盒变换⊕4位置换P4⊕LR8位输出4位4位4位4位4位8位8位2位2位4位子密钥k5)密钥生成的流程循环左移1位10阶置换P1010位种子密钥k=(k0,k1,…,k9)10到8变换P810到8变换P88位k18位k2循环左移1位5位5位循环左移2位循环左移2位5位5位5位5位10位5位5位2)分别对m1左右两个5位码循环左移1次m1=(1000001100)移位后m2=(0000111000)①②③④⑤⑥⑦⑧⑨⑩③⑤②⑦④⑩①⑨⑧⑥P10=例:种子密钥k=(1010000010)则m1=P10(k)=(1000001100)2.密钥生成的细节和实例1)对10位种子密钥进行10阶置换P10第三章对称密码体制4)分别对m2左右两个5位码循环左移2次m2=(0000111000)移位后m3=(0010000011)①②③④⑤⑥⑦⑧⑨⑩⑥③⑦④⑧⑤⑩⑨P8=3)对m2做10位转8位变换P8m2=(0000111000)得子密钥k1=P8(m2)=(10100100)5)对m3做10位转8位变换P8m3=(0010000011)得子密钥k2=P8(m3)=(01000011)①②③④⑤⑥⑦⑧⑨⑩⑥③⑦④⑧⑤⑩⑨P8=3.加密算法细节与实例1234567826314857IP=设明文:p=(01000001)则:p1=IP(p)=(10000100)1)对明文p执行8位置换IP1234567841232341E/P=R1=(0100)E/P(R1)=(00101000)I.将p1分解为左右两半L1=(1000);R1=(0100)II.对右半进行4位到8位的扩展变换E/P2)对p1进行Fk1变换E/P(R1)=(00101000)k1=(10100100)p2=E/P(R1)k1=(10001100)⊕III.将E/P(R1)与子密钥k1进行异或IV.将p2左右4位分别进行S0、S1盒变换1032321002133132S0=0123201330102103S1=将4位输入码第1、4位的十进制数作为行标i(0~3)将4位输入码第2、3位的十进制数作为列标j(0~3)即得到与Sij对应的2位输出码L...