第3章常规加密的现代技术内容要点:加密分类分组密码的设计原则和操作方式常规加密的现代技术常规加密算法第3章常规加密的现代技术3.1流密码3.2分组密码3.3数据加密标准3.4常规加密的算法第3章常规加密的现代技术3.1流密码3.2分组密码3.3数据加密标准3.4常规加密的算法3.1流密码按对明文的处理方法,加密可分为:流密码(streamcipher)分组密码(blockcipher)3.1流密码流密码的概念又称序列密码。每次加密一位或一字节的明文。流密码是手工和机械时代的主流序列密码主要应用于军事和外交场合。序列密码的优点是错误扩展小、速度快、利于同步、安全程度高3.1流密码流密码和分组密码的区别在于记忆性无记忆元件加密器Kyj=EKj(xj),kj=f(k,sj)分组密码y=Ek(x)流密码有记忆元件加密器K图3-1分组密码和流密码的加密方式3.1流密码图3-2流密码框图密钥流生成器密钥k明文m密文c异或运算Ci=PiKi+Pi=CiKi+3.1分组密码分组密码的概念将明文分为固定长度的组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。优点:易标准化,容易实现同步缺点:不能隐蔽数据模式,不能抵抗组的重放、嵌入和删除等攻击3.2.1分组密码的设计原则针对安全性的一般设计原则混乱扩散针对实现的设计原则软件设计原则硬件设计原则3.2.2分组密码的操作方式电子密码本ECB(electroniccodebookmode)密码分组链接CBC(cipherblockchaining)密码反馈CFB(cipherfeedback)输出反馈OFB(outputfeedback)3.2.2分组密码的操作方式模式描述典型应用电子密码本ECB每个64位的明文用相同的密钥加密单个数据的安全传输密码分组链接CBC加密算法的输入是下一个明文和上一个64位明文的异或通用的面向分组的传输密码反馈CFB一次处理J位,上一个分组密文作为加密算法的输入以产生伪随机数输出,该输出再和明文分组异或产生下一个单元的密文通用的面向流的传输认证输出反馈OFB与CFB相同,只是加密算法的输入是上一次DES的输出噪声信道上数据流的传输(如卫星传输)iKiiKiC=E(P)P=D(C)电子密码本ECBECB的特点简单和有效可以并行实现不能隐藏明文的模式信息相同明文生成相同密文,同样信息多次出现造成泄漏对明文的主动攻击是可能的信息块可被替换、重排、删除、重放误差传递:密文块损坏仅对应明文块损坏适合于传输短信息密码分组链接CBCiKii-1iKii-1C=E(PC)P=D(C)CCBC的特点没有已知的并行实现算法能隐藏明文的模式信息需要共同的初始化向量IV相同明文生成不同密文初始化向量IV可以用来改变第一块对明文的主动攻击是不容易的信息块不容易被替换、重排、删除、重放误差传递:密文块损坏两明文块损坏安全性好于ECB适合于传输长度大于64位的报文,还可以进行用户鉴别,是大多系统的标准如SSL、IPSec密码反馈CFBCFB:分组密码流密码假定:Si为移位寄存器,传输单位为jbit加密:Ci=Pi(EK(Si)的高j位)Si+1=(Sij)|Ci解密:Pi=Ci(EK(Si)的高j位)Si+1=(Sij)|Ci密码反馈CFB加密Ci=Pi(EK(Si)的高j位);Si+1=(Sij)|Ci密码反馈CFB解密Pi=Ci(EK(Si)的高j位);Si+1=(Sij)|CiDESDecryptDESDecryptDESDecryptCFB的特点没有已知的并行实现算法隐藏了明文模式需要共同的移位寄存器初始值IV对于不同的消息,IV必须唯一误差传递:一个单元损坏影响多个单元输出反馈OFBOFB:分组密码流密码假定:Si为移位寄存器,传输单位为jbit加密:Ci=Pi(EK(Si)的高j位)Si+1=(Sij)|(EK(Si)的高j位)解密:Pi=Ci(EK(Si)的高j位)Si+1=(Sij)|(EK(Si)的高j位)输出反馈OFB加密Ci=Pi(EK(Si)的高j位);Si+1=(Sij)|(EK(Si)的高j位)输出反馈OFB解密Pi=Ci(DK(Si)的高j位);Si+1=(Sij)|(DK(Si)的高j位)DESDecryptDESDecryptDESDecrypt0FB的特点没有已知的并行实现算法隐藏了明文模式需要共同的移位寄存器初始值IV对于不同的消息,IV必须唯一误差传递:一个单元损坏只影响对应单元对明文的主动攻击是可能的信息块可被替换、重排、删除、重放安全性较CFB差3.3数据加密标准(DES)提供高质量的数据保护具有相当高的复杂性不依赖于算法的保密,其安全性仅以加密密钥的保密位基础实现经济,运行有效,适用于多种不同的应用背景发明人:美国IBM公司W.Tuchman和C.Meyer1971-1972年研制成功基础:1967年美国HorstFeistel提出的理论产生:美国国家标准局(NBS)1973年5月到1974年8月两次发布通告,公开征求用于电子计算机的加密算法。经评选从一大批算法中采纳了IBM的LUCIFER方案标准化:DES算法1975年3月公开发表,1977年1月15日由美国国家标准局颁布为数据加密标准(DataEncryptionStandard),于1977年7月15日生效背景美国国家安全局(NSA,NationalSecurityAgency)参与了美国国家标准局制定数据加密标准的过程。NBS接受了NSA的某些建议,对算法做了修改,并将密钥长度从LUCIFER方案中的128位压缩到56位1979年,美国银行协会批准使用DES1980年,DES成为美国标准化协会(ANSI)标准1984年2月,ISO成立的数据加密技术委员会(SC20)在DES基础上制定数据加密的国际标准工作DES概述分组加密算法:明文和密文为64位分组长度对称算法:加密和解密除密钥编排不同外,使用同一算法密钥长度:56位,但每个第8位为奇偶校验位,可忽略密钥可为任意的56位数,但存在弱密钥,容易避开采用混乱和扩散的组合,每个组合先替代后置换,共16轮只使用了标准的算术和逻辑运算,易于实现DES加密算法的一般描述输入64比特明文数据初始置换IP在密钥控制下16轮迭代初始逆置换IP-1输出64比特密文数据交换左右32比特DES加密过程Li-1(32比特)Ri-1(32比特)Li(32比特)48比特寄存器选择扩展运算E48比特寄存器子密钥Ki(48比特)32比特寄存器选择压缩运算S置换运算PRi(32比特)Li=Ri-1DES的一轮迭代DES加密过程)(6416,,2,1),(16,,2,1)64(1616111100LRIPbitikRfLRiRLbitIPRLiiiiii密文输入码令i表示迭代次数,表示逐位模2求和,f为加密函数DES解密过程令i表示迭代次数,表示逐位模2求和,f为加密函数)(641,,15,16),(1,,15,16)64(0011111616LRIPbitikRfRLiLRbitIPLRiiiiii明文密文DES中的各种置换、扩展和替代初始置换IP和初始逆置换IP—1IP和IP—12014'MM1420'''MMIPIP—1扩展置换E-盒-32位扩展到48位扩展压缩替代S-盒-48位压缩到32位共8个S盒S-盒1S-盒2S-盒3S-盒4S-盒5S-盒6S-盒7S-盒8S-盒的构造1234561626234521133911001110019bbbbbbbbSbbbb行:-盒子行列列:值:14=1100S-盒的构造DES中其它算法都是线性的,而S-盒运算则是非线性的S-盒不易于分析,它提供了更好的安全性所以S-盒是算法的关键所在k1(56位)(48位)ki(56位)(48位)64位密钥置换选择1C0(28位)D0(28位)循环左移循环左移C1(28位)D1(28位)循环左移循环左移Ci(28位)Di(28位)置换选择2置换选择2密钥表的计算逻辑循环左移:119121102321124212252132621427215282161DES中的子密钥的生成Li-1(32比特)Ri-1(32比特)Li(32比特)48比特寄存器选择扩展运算E48比特寄存器子密钥Ki(48比特)32比特寄存器选择压缩运算S置换运算PRi(32比特)Li=Ri-1DES的一轮迭代两重DES解密解密双重DES解密逻辑三重DES解密解密解密密钥长度的争论DES的破译DES的安全性DES密钥长度关于DES算法的另一个最有争议的问题就是担心实际56比特的密钥长度不足以抵御穷举式攻击,因为密钥量只有256(≈1017)个早在1977年,Diffie和Hellman已建议制造一个每秒能测试100万个密钥的VLSI芯片。每秒测试100万个密钥的机器大约需要一天就可以搜索整个密钥空间。他们估计制造这样的机器大约需要2000万美元1756102DES密钥长度在CRYPTO’93上,Session和Wiener给出了一个非常详细的密钥搜索机器的设计方案,这个机器基于并行运算的密钥搜索芯片,所以16次加密能同时完成。花费10万美元,平均用1.5天左右就可找到DES密钥美国克罗拉多洲的程序员Verser从1997年2月18日起,用了96天时间,在Internet上数万名志愿者的协同工作下,成功地找到了DES的密钥,赢得了悬赏的1万美元DES密钥长度1998年7月电子前沿基金会(EFF)使用一台25万美圆的电脑在56小时内破译了56比特密钥的DES1999年1月RSA数据安全会议期间,电子前沿基金会用22小时15分钟就宣告破解了一个DES的密钥破译DES1990年,以色列密码学家EliBiham和AdiShamir提出了差分密码分析法,可对DES进行选择明文攻击线性密码分析比差分密码分析更有效DES软硬件实现的速度硬件实现商业DES芯片或者FPGA实现目前可支持1.5Gbps以上的加解密速度软件实现80486,CPU66Hz,每秒加密43000个DES分组,336KBytes/sHP9000/887,CPU125Hz,每秒加密196,000个分组,1.53MBytes/sIDEA算法1990年,XuejiaLai(赖学家),JamesMassey,InternationalDataEncryptionAlgorithm设计原则:不同代数群的混合运算“依我看来,该算法是目前一公开的最好和最安全的分组密码算法”——《应用密码学》,p226目前已经最为PGP的一部分加密算法由8轮迭代运算和最后的变换函数组成首先将64位IDEA算法分组长度64bits,密钥长度128bits同一算法即可以加密,也可用于解密只需要简单的混合运算异或模216加模216+1乘(可以看出IDEA的S-盒)软件实现IDEA比DES快两倍安全性:弱密钥有251,1/277赢得彩票头等奖并在同一天被闪电杀死的可能性1/255IDEA的概略步骤3.4.2.4IDEA子密钥的产生过程密钥长度为128位,共使用53组16位长的子密钥。方法:移位。IDEA子密钥的产生过程例如:密钥K=10010011010100011001001110101110010100010100100111001001100100110100101111100111011001101010011111100101101001010011010010001011第一轮K1(1)=1001001101010001K2(1)=1001001110101110K3(1)=0101000101001001