好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

分组密码 (2)教材.ppt

31页
  • 卖家[上传人]:我**
  • 文档编号:115421125
  • 上传时间:2019-11-13
  • 文档格式:PPT
  • 文档大小:322.50KB
  • / 31 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 分组密码,2,*分组密码概述 *IDEA *RC5 *BlowFish,3,分组密码概述,分组密码简介 分组密码(block cipher)又称秘密钥密码或对称密码分组加密是极其重要的加密协议组成,其中典型的如DES和AES,分组密码还包括IDEA、SAFER、Blowfish和 Skipjack — 最后一个是“美国国家安全局(US National Security Agency,NSA)”限制器芯片中使用的算法等 现代分组加密建立在迭代的思想上产生密文其思想由克劳德·香农在他1949年的重要论文《保密系统的通信理论》(Communication Theory of Secrecy Systems)中提出,作为一种通过简单操作如替代和排列等以有效改善保密性的方法迭代产生的密文在每一轮加密中使用不同的子密钥,而子密钥生成自原始密钥分组密码含义 分组密码也称块密码,它在对明文进行加密时,需要首先对明文进行分组,每组的长度都相同,然后对每组明文分别加密得到等长的密文其实质即设计一种算法,能在密钥控制下,把n比特明文简单而又迅速地置换成唯一n比特密文,并且这种变换是可逆的(解密) 分组密码框图:,2019/11/13,分组密码简图,2019/11/13,加密算法 分组密码的工作模式 1、电子密码本模式 2、密码分组连接模式 3、密码反馈模式 4、输出反馈模式 5、计数器模式,分组密码要求 ①分组长度要足够长 ②密钥量要足够大 ③密码变化足够复杂 ④加密和解密运算简单 ⑤无数据扩展或压缩 分组密码的特点 解密密钥和加密密钥是相同的。

      分组密码的安全性应该主要依赖于密钥,所以它的加密与解密算法可以公开分组密码设计思想 扩散和混淆是香农提出的设计密码体制的两种基本方法,其目的是为了抵抗对手对密码体制的统计分析在分组密码的设计中,充分利用扩散和混淆,可以有效的抵抗对手从密文的统计特性推测明文或密钥扩散和混淆是现代分组密码的设计基础 所谓扩散就是让明文中的每一位影响密文中的许多位,或者说让密文中的每一位受明文中的许多位的影响这样可以隐蔽明文的统计特性 所谓混淆就是将密文与密钥之间的统计关系变得尽可能复杂,使得对手即使获取关于密文的一些统计特性,也无法推测密钥IDEA,概述 IDEA(international data encryption algorithm),即国际数据加密算法它的原型是1990年Xuejia Lai(旅居瑞士的中国学者)和国际著名密码学家J.L.Massey提出的一个建议加密标准PES1991年,设计出改进型建议加密标准(IPES),能够抗击差分密码分析于1992年,改名为国际数据加密算法这种算法是在DES算法的基础上发展出来的,类似于三重DES发展IDEA也是因为感到DES具有密钥太短等缺点IDEA的密钥为128位,这么长的密钥在今后若干年内应该是安全的。

      IDEA算法 IDEA加密算法是一个分组长度为64位的分组密码算法,密钥长度为128位,同一个算法即可用于加密,也可用于解密这是基于“相异代数群上的混合运算”设计思想,算法运用硬件与软件实现都很容易,而且比DES算法在实现上快的多IDEA自问世以来,已经经历了大量的详细审查,对密码分析具有很强的抵抗能力,在多种商业产品中被使用 IDEA算法是对称密码体制中的一种基于数据块的分组加密算法,整个算法包含子密钥产生、数据加密过程、数据解密过程三部分该算法规定明文与密文块均为64b,密钥长度为128b,加密与解密相同,只是密钥各异IDEA基本工作原理 IDEA是一种由8个相似圈(Round)和一个输出变换(Output Transformation)组成的迭代算法IDEA的每个圈都由三种函数:逐位异或:,mod (216=65536)整数加法: ⊞,mod (216+1=65537)整数乘法: ⊙IDEA工作原理框图,IDEA加密算法框图 8轮迭代 输入:4个16bit子串 6个16bit子密钥 输出: 4个16bit子串 输出变换 输入:4个16bit子串 4个16bit子密钥 输出: 4个16bit子串 子密钥生成算法 K(128bit) K1, K2,…, K52(16bit).,2019/11/13,8轮迭代,输入: 4个16bit子串: I1, I2, I3, I4 6个16bit子密钥: Z1, Z2, Z3, Z4 , Z5, Z6 输出: 4个16bit子串 O1, O2, O3, O4,2019/11/13,输出变换,输入: 4个16bit子串: W81, W82, W83, W84 4个16bit子密钥: K49, K50, K51, K52 输出: 4个16bit子串 Y1, Y2, Y3, Y4,密文: Y=IDEAK(X)=Y1 ||Y2 || Y3 ||Y4,2019/11/13,子密钥生成算法 在加密之前,IDEA通过密钥扩展(Key Expansion)将128bit的密钥扩展为52Byte的加密密钥EK(Encryption Key),然后由EK计算出解密密钥DK(Decryption Key)。

      EK和DK分为8组半密钥,每组长度为6Byte,前8组密钥用于8圈加密,最后半组密钥(4Byte)用于输出变换IDEA的加密过程和解密过程是一样的,只不过使用不同的密钥,加密时用EK,解密时用DK2019/11/13,对于密钥扩展的过程如下: (1)将128bit的密钥作为EK的前8byte (2)将前8byte循环左移25bit,得到下一8byte,将这个过程循环7次 (3)在第7次循环时,取前4byte作为EK的最后4byte (4)至此52byte的EK生成完毕 密钥扩展的过程如下表所示,,2019/11/13,2019/11/13,IDEA解密算法,解密算法与加密算法相同,子密钥生成方法不同 加密子密钥 将第i迭代使用的6个子密钥记为: K1(i), K2(i), K3(i), K4(i), K5(i), K6(i) (1i 8), 输出变换使用的4个子密钥记为: K1(9), K2(9), K3(9), K4(9) 解密子密钥 将第i迭代使用的6个子密钥记为: U1(i), U2(i), U3(i), U4(i), U5(i), U6(i) (1i 8), 输出变换使用的4个子密钥记为: U1(9), U2(9), U3(9), U4(9),2019/11/13,解密子密钥与加密子密钥的关系 (U1(i), U2(i), U3(i), U4(i)) =( (K1(10i) )1, K3(10 i), K2(10 i), (K4(10i) )1 ) (2i 8) (U1(i), U2(i), U3(i), U4(i)) =( (K1(10i) )1, K2(10i), K3(10i), (K4(10i) )1 ) (i=1, 9) (U5(i), U6(i))=(K5(9i), K6(9i) ) (1i 8) a表示a的mod 216加法⊞逆元: (a)⊞a=0 mod 216 a1表示a的mod 216+1乘法⊙逆元: a 1⊙a=1 mod 216+1.,2019/11/13,IDEA优点,IDEA算法软、硬件实现容易,速度快。

      软件实现比DES快两倍 安全性好:用穷举攻击要试探2128=1038个密钥,如用每秒运行100万次的计算机进行搜索,大约需要1013年. IDEA能抵抗差分攻击和线性攻击 IDEA缺点 IDEA的安全缺陷:存在大量的弱密钥 IDEA的设计适合于16位CPU, 对于32CPU实现不太方便,2019/11/13,IDEA的应用 目前IDEA在工程中已有大量应用实例,PGP(Pretty Good Privacy)就使用IDEA作为其分组加密算法;安全套接字层SSL(Secure Socket Layer)也将IDEA包含在其加密算法库SSLRef中;IDEA算法专利的所有者Ascom公司也推出了一系列基于IDEA算法的安全产品,包括:基于IDEA的Exchange安全插件、IDEA加密芯片、IDEA加密软件包等IDEA算法的应用和研究正在不断走向成熟2019/11/13,RC5,简介 RC5分组密码算法是1994由麻萨诸塞技术研究所的Ronald L. Rivest教授发明的,并由RSA实验室分析它是参数可变的分组密码算法,三个可变的参数是:分组大小、密钥大小和加密轮数在此算法中使用了三种运算:异或、加和循环。

      RC5是种比较新的算法,Rivest设计了RC5的一种特殊的实现方式,因此RC5算法有一个面向字的结构:RC5-w/r/b,这里w是字长其值可以是16、32或64对于不同的字长明文和密文块的分组长度为2w位,r是加密轮数,b是密钥字节长度2019/11/13,RC5 密钥扩展 密钥扩展框图,2019/11/13,对给定的密钥K来说,经过一些复合运算可产生总数为t的子密钥,使得每一轮都分配一对密钥除此之外的非轮运算部分也要分配一对密钥总计产生 t=2r+2 个子密钥,每个密钥的长度为一个字长(w bits)子密钥可标记在t-字阵列中:s[0],s[1], …,s[t-1],它为w×t矩阵 在上图所示框图中: 将参数r,w输入,左面标出的t-字阵列是一些伪随机bit,按r,w的规格选入的然后把b-bits长的密钥K[0, …,b-1]转换成c-字阵列L[0, …,c-1](字的bit数为w,这里c=b×8/w;注意:密钥长度为b个字节)如果b不是w的整数倍,那么L右端的空位用0填入2019/11/13,RC5加密,(1)模2w加法运算,表示为“+”;(2)逐比特异或运算,表示为“⊕”;(3)字的循环左移运算:字x循环左移y比特,表示为xy如(a0,a1,a2, …,an-1)3=(a3,a4, …,an-1,a0,a1,a2)。

      2019/11/13,RC5解密,解密也是很容易的,把密文分组划分为两个字:A和B(存储方式和加密一样),这里符合是循环右移,2019/11/13,BlowFish算法,BlowFish算法用来加密64Bit长度的字符串 BlowFish算法使用两个“盒”——unsignedlongpbox[18]和unsignedlongsbox[4,256] BlowFish算法中,有一个核心加密函数:BF_En该函数输入64位信息,运算后,以64位密文的形式输出 用BlowFish算法加密信息,需要两个过程: 密钥预处理 信息加密,2019/11/13,1.密钥预处理 BlowFish算法的源密钥——pbox和sbox是固定的我们要加密一个信息,需要自己选择一个key,用这个key对pbox和sbox进行变换,得到下一步信息加密所要用的key_pbox和key_sbox具体的变化算法如下: 1)用sbox填充key_sbox 2)用自己选择的key8个一组地去异或pbox,用异或的结果填充key_pboxkey可以循环使用 3)用BF_En加密一个全0的64位信息,用输出的结果替换key_pbox[0]和key_pbox[1]。

      i=0 4)用BF_En加密替换后的key_pbox,key_pbox[i+1],用输出替代key_pbox[i+2]和key_pbox[i+3],2019/11/13,5)i+2,继续第4步,直到key_pbox全部被替换 6)用key_pbox[16]和key_pbox[17]做首次输入(相当于上面的全0的输入),用类似的方法,替换key_sbox信息加密 2.信息加密 用BlowFish算法解密,同样也需要两个过程 1.密钥预处理 2.信息解密 密钥预处理的过程与加密时完全相同 信息解密的过程就是把信息加密过程的key_pbox逆序使用即。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.