第0章对称密钥密码体系_第1页
第0章对称密钥密码体系_第2页
第0章对称密钥密码体系_第3页
第0章对称密钥密码体系_第4页
第0章对称密钥密码体系_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第二章 主讲人:任凯主讲人:任凯联系方式:联系方式:renkai_信息安全技术信息安全技术2本章提要2.1 密码体系的原理和基本概念密码体系的原理和基本概念2.2 数据加密标准数据加密标准(DES)2.3 IDEA2.4 AES 2.5 序列密码序列密码信息安全技术信息安全技术3先行案例凯撒密码高卢是罗马共和国北部的一大片土地,包括今天的意大利北部、法国、卢森堡、比 利时、德国以及荷兰和瑞士的一部分。高卢战争是罗马共和国为征服高卢、扩大疆土而进行的侵略性远征,是恺撒为壮大自己的实力进而确立独裁统治而进行的一场建功扬威、扩 军备战、掠夺财富的残酷战争,高卢战争包括8次军事远征。高卢战争使罗马获

2、得面积两倍于意大利的肥沃土地和800多座城镇,凯撒个人则获得大量财富和政治资本,为其建立独裁统治奠定了基础。将替换密码用于军事用途的第一个文件记载是恺撒著的高卢记。恺撒描述了他如何将密信送到正处在被围困、濒临投降的西塞罗,使得敌人根本无法看懂信息。信息安全技术信息安全技术4先行案例凯撒密码 改变明文中符号的排列方式,或按照某种规律置换明文中的符号,使得只有通过数据解密才能读懂接收到的信息将文本中每将文本中每个英文字母个英文字母替换为字母替换为字母表中排列在表中排列在其其后后的第的第k1个字母个字母meet me after the classphhw ph diwhu wkh fodvv将文本

3、中每将文本中每个英文字母个英文字母替换为字母替换为字母表中排列在表中排列在其其前前的第的第k2个字母个字母meet me after the classK1=3K2=3E = (M + k1) mod (26) M = (E - k2) mod (26) (其中,(其中,M表示明文中小写英文字母从表示明文中小写英文字母从025的序号,的序号,E表示密文中表示密文中字母的序号)字母的序号) 信息安全技术信息安全技术5先行案例齐默尔曼电报我们计划于2月1日开始实施无限制潜艇战。与此同时,我们将竭力使美国保持中立。如计划失败,我们建议在下列基础上同墨西哥结盟:协同作战;共同缔结和平。我们将会向贵国提

4、供大量资金援助:墨西哥也会重新收复在新墨西哥州、得克萨斯州,和亚利桑那州失去的国土。建议书的细节将由你们草拟。请务必于得知将会与美国开战时(把此计划)以最高机密告知贵国总统,并鼓励他邀请日本立刻参与此计划;同时为我们与日本的谈判进行斡旋。请转告贵总统,我们强大的潜水艇队的参与将可能逼使英国在几个月内求和。信息安全技术信息安全技术6先行案例齐默尔曼电报当时,墨西哥总统委派一名将军去研究计划的可行性。最后,墨国认为联盟计划不可行。因为:试图收复失去的国土一定会令墨国与军事上更加强大的美国开战。无论德国是否真的会有那么慷慨,它的财政支持仍然将会几乎一文不值,因为墨国没有可能使用那些财政支持去获取武器

5、和其它军事硬件。美国拥有南北美洲内唯一具有规模的武器制造商,而且英国皇家海军长期控制大西洋行海航线,令德国无法提供些足够令墨国收回失去的国土的武器和军事硬件。即使墨国成功收复失地,容纳或安抚当地的讲英语的人口将会是一个严厉和困难的考验。卡兰萨正式在4月14日拒绝齐默尔曼电报内的提案。在那时,美国已经向德国宣战。信息安全技术信息安全技术7先行案例Enigma密码机恩尼格玛加密机宣告了手工编码技术的结束,与Enigma相关的历史人物有三个人。首先是德国人亚瑟.谢尔比乌斯(Arthur Scherbius),德国人发明了ENIGMA;其次是波兰人马里安.雷杰夫斯基(Marian Rejewski),

6、波兰人初步解破了简单的ENIGMA;第三个就是英国人阿兰.图灵(Alan Turing),英国人彻底终结了最高难度的ENIGMA。 信息安全技术信息安全技术8先行案例Enigma密码机信息安全技术信息安全技术9先行案例图灵阿兰阿兰麦席森麦席森图灵图灵(Alan Mathison Turing,1912.6.231954.6.7),英国数学家、逻辑学家,被称为计算机科学之父、计算机科学之父、人工智能之父人工智能之父。 1931年图灵进入剑桥大学国王学院,毕业后到美国普林斯顿大学攻读博士学位,二战爆发后回到剑桥,后曾协助军方破解德国的著名密码系统Enigma,帮助盟军取得了二战的胜利。阿兰图灵,是

7、计算机逻辑的奠基者,许多人工智能的重要方法也源自于这位伟大的科学家。他对计算机的重要贡献在于提出的有限状态自动机也就是图灵机的概念,对于人工智能,它提出了重要的衡量标准“图灵测试”,如果有机器能够通过图灵测试,那它就是一个完全意义上的智能机,和人没有区别了。他杰出的贡献使他成为计算机界的第一人,现在人们为了纪念这位伟大的科学家将计算机界的最高奖定名为“图灵奖”。 信息安全技术信息安全技术10加密解密公式明文用明文用M(消息)或(消息)或P(明文)表示,密文用(明文)表示,密文用C表示。加表示。加密函数密函数E作用于作用于M得到密文得到密文C,用数学式子表示为:,用数学式子表示为:E(M)=C相

8、反地,解密函数相反地,解密函数D作用于作用于C产生产生MD(C)=M先加密后再解密消息,原始的明文将恢复出来,下面的先加密后再解密消息,原始的明文将恢复出来,下面的等式必须成立:等式必须成立:D(E(M)=M 加密 解密 明文 密文 原始明文 信息安全技术信息安全技术112.1.2 安全密码准则所有算法的安全性都所有算法的安全性都基于密钥的安基于密钥的安全性全性,而,而不是不是基于基于算法细节的安全算法细节的安全性性 只有公开的算法才是安全的只有公开的算法才是安全的 信息安全技术信息安全技术12 2.1.3 对称密钥密码和非对称密钥密码基于密钥的算法通常有两类:基于密钥的算法通常有两类:对称算

9、法和非对称对称算法和非对称算法算法。对称算法有时又叫传统密码算法,就是对称算法有时又叫传统密码算法,就是加密密钥加密密钥能够从解密密钥中容易地推算出来能够从解密密钥中容易地推算出来,反过来也成,反过来也成立。立。EK(M) = CDK(C) = M信息安全技术信息安全技术132.1.3 对称密钥密码和非对称密钥密码大多数对称算法中,加大多数对称算法中,加/ /解密密钥是相同的。解密密钥是相同的。对称算法可分为两类:对称算法可分为两类:v 一次只对明文中的一次只对明文中的单个比特单个比特(有时对字节)运算的算法称为(有时对字节)运算的算法称为序列密码或序列密码或流密码算法流密码算法。v 另一类算

10、法是对明文的一组比特进行运算,这些比特组称为分组,相应另一类算法是对明文的一组比特进行运算,这些比特组称为分组,相应的算法称为的算法称为分组算法分组算法。密钥序列发生器PiCiCiPiKey密钥序列发生器 加密算法 mbit 明文 密钥流生成器 nbit 密文 解密算法 密钥流生成器 mbit 明文 信息安全技术信息安全技术142.1.3 对称密钥密码和非对称密钥密码非对称算法是这样设计的:用作非对称算法是这样设计的:用作加密的密钥不同加密的密钥不同于用作解密的密钥于用作解密的密钥,而且,而且解密密钥不能根据加密解密密钥不能根据加密密钥计算出来密钥计算出来(至少在合理假定的有限时间内)。(至少

11、在合理假定的有限时间内)。非对称算法也叫做非对称算法也叫做公开密钥算法公开密钥算法,是因为加密密,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。但只有用相应的解密密钥才能解密信息。信息安全技术信息安全技术15非对称密钥加密方法公钥加密使用乙的使用乙的公钥加密公钥加密甲甲 乙乙密密 文文乙乙丙丙丁丁戊戊使用乙的使用乙的私钥解密私钥解密加密器加密器解密器解密器 明文明文 明文明文甲的甲的公钥环公钥环使用一对不相同的密钥:私钥只有本人知使用一对不相同的密钥:私钥只有本人知道,公钥可让其他用户知道道,公钥可让其他用户

12、知道甲方使用乙的甲方使用乙的公钥进行加密公钥进行加密乙方利用自己乙方利用自己的私钥解密的私钥解密攻击者不可能攻击者不可能使用公钥来恢使用公钥来恢复明文,也很复明文,也很难利用公钥来难利用公钥来推断私钥推断私钥乙用私钥加密的消息,甲也只有用乙的公钥才能解密 信息安全技术信息安全技术162.1.4 密码分析唯密文攻击唯密文攻击v几乎所有密码系统在唯密文攻击中都是可破的几乎所有密码系统在唯密文攻击中都是可破的,只要简单地一个接一个地去试每种只要简单地一个接一个地去试每种可能的密钥可能的密钥,并且检查所得明文是否有意义。这种方法叫做并且检查所得明文是否有意义。这种方法叫做蛮蛮力攻击力攻击。已知明文攻击

13、:基于对算法的研究已知明文攻击:基于对算法的研究选择明文攻击:密码数据库,很多场合无法选择明文攻击:密码数据库,很多场合无法奏效奏效自适应选择明文攻击自适应选择明文攻击信息安全技术信息安全技术172.1.4 密码分析根据被破译的难易程度,不同的密码算根据被破译的难易程度,不同的密码算法具有不同的安全等级法具有不同的安全等级v如果如果破译算法的破译算法的代价代价大于加密数据的大于加密数据的价值价值v或者如果破译算法或者如果破译算法所需的所需的时间时间比加密比加密数据数据保密保密的时间更长的时间更长v或者如果用单密钥或者如果用单密钥加密的加密的数据量数据量比破比破译算法需要的译算法需要的数据量少得

14、多数据量少得多那么可能是安全的。那么可能是安全的。信息安全技术信息安全技术18可以用不同方式衡量攻击方法的复杂性:密码学更关心密码学更关心在计算上不可破译的密码系统在计算上不可破译的密码系统。如。如果一个算法用(现在或将来)果一个算法用(现在或将来)可得到的资源可得到的资源在可在可接受的时间内接受的时间内都不能破译,这个算法则被认为在都不能破译,这个算法则被认为在计算上是安全的计算上是安全的。(1) (1) 数据复杂性数据复杂性:用作攻击输入所需要的:用作攻击输入所需要的数据量数据量(2) (2) 时间复杂性时间复杂性:完成攻击所需要的时间:完成攻击所需要的时间(3) (3) 存储复杂性存储复

15、杂性:进行攻击所需要的存储:进行攻击所需要的存储量量信息安全技术信息安全技术192.2 数据加密标准(DES)IBM 公司,70年代初提出,80年代成为国家标准DES是一种对称密钥算法,密钥长度为56bits (加上奇偶校验,通常写成64bits)是一种分组加密算法,64 bits为一个分组基本思想:v混乱混乱(Confusion) 和扩散扩散(Diffusion )使用标准的算术和逻辑运算 信息安全技术信息安全技术20DES 加密过程 首先把明文分成以64 bit为单位的块m,对于每个m, 执行如下操作 DES(m)=IP-1 T16 T15 . T2 T1 IP(m)v初始置换, IP v

16、16轮迭代,Ti , i=1,2,16v末置换,IP-1信息安全技术信息安全技术21DES加密算法加密算法信息安全技术信息安全技术221. 初始置换函数初始置换函数IP DES对对64位明文分组进行操作。首先,位明文分组进行操作。首先,64位明文位明文分组分组x经过一个经过一个初始置换函数初始置换函数IP,产生,产生64位的输位的输出出x0,再将分组,再将分组x0分成分成左半部分左半部分L0和右半部分和右半部分R0,即:,即:x x0 0=IP(x=IP(x)=L)=L0 0R R0 0DES 加密过程信息安全技术信息安全技术23初始换位(IP)585042342618102605244362

17、82012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157M=m1m2,m62m63,m64M=m58m50,m23m15,m7IP(M)此表顺序为从上到下,从左至右。如初始置换把明文的第58位换至第1位,把第50位换至第二位,以此类推。信息安全技术信息安全技术24DES加密算法的密钥长度为加密算法的密钥长度为56位位,但一般表示为但一般表示为64位位,其中,每个,其中,每个第第8位用于奇偶校验。在位用于奇偶校验。在DES加密加密算法中,将用户提供的算法中,将用户

18、提供的64位位初始初始密钥密钥经过经过一系列的处理一系列的处理得到得到K1,K2,K16,分别作为,分别作为116轮运轮运算的算的16个子密钥。现在来看如何个子密钥。现在来看如何获得这获得这16个子密钥。个子密钥。 首先,将首先,将64位密钥去掉位密钥去掉8个校验位,个校验位,用密钥置换用密钥置换PC1置换剩下的置换剩下的56位位密钥;再将密钥;再将56位分成前位分成前28位位C0和和后后 2 8 位位 D0两 部 分 , 即两 部 分 , 即PC1(K56)=C0D0。 2获取子密钥获取子密钥Ki57 49 41 33 25 17 957 49 41 33 25 17 91 58 50 42

19、 34 26 181 58 50 42 34 26 1810 2 59 51 43 35 2710 2 59 51 43 35 2719 11 3 60 52 44 3619 11 3 60 52 44 3663 55 47 39 31 23 1563 55 47 39 31 23 157 62 54 46 38 30 227 62 54 46 38 30 2214 6 61 53 45 37 2914 6 61 53 45 37 2921 13 5 28 20 12 4 21 13 5 28 20 12 4 信息安全技术信息安全技术25 2获取子密钥Ki0 10 1 0 1 0 112345

20、67891011121314151611222222122222211417112415328156211023191242681672720132415231374755304051453348444939563453464250362932循环左移:根据迭代的轮数,分别左移一位或两位 压缩置换(置换选择):从56bits中选择48bits 9,18,22,25,35,38,49,18,22,25,35,38,43,543,54被置换掉被置换掉1 01 0 1 0 1 0信息安全技术信息安全技术26子密钥产生子密钥产生信息安全技术信息安全技术27(1) 扩展置换扩展置换(E)。将数据的右半部

21、分。将数据的右半部分Ri从从32位扩展为位扩展为48位。位。3 3密码函数密码函数F F32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 1信息安全技术信息安全技术28 (2) 异或。扩展后的48位输出E(Ri)与压缩后的48位密钥Ki作异或运算。v异或的配对性:对于任何数x,都有xy=0,y0=xv异或的自反性:A XOR B XOR B = A xor 0 = A 例如:1001 1100 = 0

22、101 1100 =3 3密码函数密码函数F F01011001信息安全技术信息安全技术29(3) S盒替代。将异或得到的48位结果分成八个6位的块,每一块通过对应的一个S盒产生一个4位的输出。 S盒的具体置换过程为:某个Si盒的6位输入的第1位和第6位形成一个2位的二进制数(从03),对应表中的某一行;同时,输入的中间4位构成4位二进制数(从015)对应表中的某一列(注意:行和列均从0开始计数)。3 3密码函数密码函数F F最大值15信息安全技术信息安全技术30S6盒12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 1110 15 4 2 7 12 9 5 6 1 13

23、14 0 11 3 89 14 15 5 2 8 12 3 7 0 4 10 1 13 11 64 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13S7盒4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 113 0 11 7 4 9 1 10 14 3 5 12 2 15 8 61 4 11 13 12 3 7 14 10 15 6 8 0 5 9 26 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12S8盒13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 71 15 13 8 10 3 7 4 12 5

24、6 11 0 14 9 27 11 4 1 9 12 14 2 0 6 10 13 15 3 5 82 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11例如,第8个S盒的输入为001011,前后2位形成的二进制数为01,对应第8个S盒的第1行;中间4位为0101,对应同一S盒的第5列。可得S8盒的第1行第5列的数为3,于是就用0011代替原输入001011。信息安全技术信息安全技术31Ri1(32比特)E48比特S1S2S3S4S5S6S7S8Ki(48比特)P32比特输出密码函数密码函数F F的输入是的输入是3232比特数据和比特数据和4848比特的子密钥比特的子密钥3

25、 3密码函数密码函数F F信息安全技术信息安全技术32 (4) P盒置换。将八个S盒的输出连在一起生成一个32位的输出,输出结果再通过置换P产生一个32位的输出即:F(Ri, Ki)。 3 3密码函数密码函数F F16 7 20 2129 12 28 171 15 23 265 18 31 102 8 24 1432 27 3 919 13 30 622 11 4 25信息安全技术信息安全技术33最后,将P盒置换的结果与最初的64位分组的左半部分异或,然后左、右半部分交换,接着开始下一轮计算。信息安全技术信息安全技术34末置换是初始置换的逆变换。对L0和R0进行16轮相同的运算后,将得到的两部

26、分数据合在一起,经过一个末置换函数就可得到64位的密文c,即: c=IPc=IP-1-1(R(R1616L L1616) ) ( 1616指的是指的是1616轮)轮) 4 4末置换函数末置换函数IP-1IP-140 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25信息安全技术信息安全技术35课堂练习如果

27、S盒输入为:123456ABCDEF000100,100011,010001,010110,101010,111100,110111,101111(0,2), (3,1), (1,8), (0,11), (2,5), (2,14),(3,11) ,(3,7)13, 8, 2, 5, 13, 11, 15, 13D825DBFD信息安全技术信息安全技术36 函数函数F是是DES加密的加密的核心核心,它依赖于,它依赖于S盒的设计盒的设计。 (1) F的设计准则:的设计准则:v函数函数F的基本功能就是的基本功能就是“扰乱扰乱(confusion)”输入,输入,要恢复要恢复F所做的所做的“扰乱扰乱”操

28、作越难越好。操作越难越好。v严格雪崩严格雪崩准则准则(SAC) 。 所谓所谓SAC,就是要求算法具有良好的雪崩效应,就是要求算法具有良好的雪崩效应,输入当中的一输入当中的一个比特发生变化都应当使输出产生个比特发生变化都应当使输出产生”尽可能多尽可能多” 的比特变化的比特变化。 严格地说,就是当任何单个输入比特位严格地说,就是当任何单个输入比特位i发生变换时,一个发生变换时,一个S盒的盒的第第j比特输出位发生变换的概率应为比特输出位发生变换的概率应为1/2,且对任意的,且对任意的i, j都应成立。都应成立。v比特独立准则比特独立准则(BIC) BIC的意思是当的意思是当单个输入比特位单个输入比特

29、位i发生变化时,输出比特位发生变化时,输出比特位j, k的的变化应当互相独立变化应当互相独立,且对任意的,且对任意的i, j, k均应成立。均应成立。vSAC和和BIC可以有效的增强可以有效的增强F函数的函数的“扰乱扰乱”功能。功能。 3 3密码函数密码函数F F信息安全技术信息安全技术37 (2) S盒设计盒设计vS盒的作用就是对输入向量进行处理,盒的作用就是对输入向量进行处理,使得输出看起来更具随机性,输入和使得输出看起来更具随机性,输入和输出之间应当输出之间应当是非线性的是非线性的,很难用线,很难用线性函数来逼近。性函数来逼近。v S盒的尺寸是一个很重要的特性。一盒的尺寸是一个很重要的特

30、性。一个个S盒其输入为盒其输入为n比特,输出为比特,输出为m比特。比特。3 3密码函数密码函数F F信息安全技术信息安全技术38S盒的设计和实践原则:盒的设计和实践原则:随机性随机性:采用某些伪随机数发生器或随机数表格:采用某些伪随机数发生器或随机数表格来产生来产生S盒的各个项盒的各个项随机测试随机测试:随机选择:随机选择S盒各个项,然后按照不同盒各个项,然后按照不同准则测试其结果准则测试其结果数学构造数学构造:根据某些数学原理来产生:根据某些数学原理来产生S盒。其好盒。其好处就是可以根据处就是可以根据数学上的严格证明数学上的严格证明来抵御来抵御差分差分和和线性密码线性密码分析,并且可以获得很

31、好的扩散分析,并且可以获得很好的扩散(Diffusion)特性特性3 3密码函数密码函数F F信息安全技术信息安全技术39 根据上面所述,可以将根据上面所述,可以将DES算法归结如下:算法归结如下:子密钥生成子密钥生成: C0D0 = PC1(K) for 1 = i = 16 Ci = LSi(Ci1) Di = LSi(Di1) Ki = PC-2(CiDi) 5 5总结总结信息安全技术信息安全技术40加密过程:加密过程:L0R0 = IP(x)for 1 = i = 16 /i从从1递增到递增到16Li = Ri1Ri = Li1 XOR f(Ri1, Ki)c= IP1(R16L16)

32、5 5总结总结信息安全技术信息安全技术41解密过程:解密过程:R16L16 = IP1 (c)for 1= i = 16 /i从从16递减递减Ri1 = LiLi1 = Ri XOR f(Li, Ki)x= IP (L0R0)5 5总结总结信息安全技术信息安全技术42DES解密过程DES解密过程与加密过程完全相似,只不过将16次迭代的子密钥顺序倒过来,即 m = DES-1(c) = IP-1 T1T2.T15 T16 IP(c)可以证明,DES(DES-1(m) )=m信息安全技术信息安全技术43DES的安全性和速度密钥的长度密钥的长度v56位密钥空间为7.2*1026v1976年,耗资20

33、00万美元的计算机,可以在一天中找到密钥。v1993年,设计100万美元的计算机,3.5小时用穷举法找到密钥。信息安全技术信息安全技术442.2.2 三重DES 加密:加密:c=Ec=EK3K3(D(DK2K2(E(EK1K1(m) (m) 解密:解密:? ? m=D m=DK1K1(E(EK2K2(D(DK3K3(c)(c)其中,其中,K1、K2、K3为为56位位DES密钥。为了获得更高的安全性,密钥。为了获得更高的安全性,三个密钥应该选择为互不相同。但在某些情况下,如三个密钥应该选择为互不相同。但在某些情况下,如与原来与原来的的DES保持兼容保持兼容,则可以选择,则可以选择K1=K3。注:

34、所谓兼容就是原来的加密和解密不变化(可以继续使用)注:所谓兼容就是原来的加密和解密不变化(可以继续使用) DESDES1DESDESDES1DES1K1K2K3明文密文加密解密信息安全技术信息安全技术45课后作业使用使用JAVAJAVA实现对字符串的实现对字符串的DESDES加密和解密加密和解密要求:要求:1. 输入输入1表示加密:输入任意一个字符串,输出表示加密:输入任意一个字符串,输出DES加密后的字符串;加密后的字符串;2. 输入输入2进行解密:输入加密后的字符串,输出进行解密:输入加密后的字符串,输出原始字符串;原始字符串;3. 可以重复执行,输入可以重复执行,输入exit退出;退出;

35、4. 截止时间:下次上课前调试完毕并抄写在截止时间:下次上课前调试完毕并抄写在A4纸上提交纸上提交信息安全技术信息安全技术46课后作业所需要的包:vjavax.crypto.KeyGenerator; vjava.security.Key; vjava.security.SecureRandom; vjavax.crypto.Cipher信息安全技术信息安全技术47如何导入第三方包“项目”右击“Properties”信息安全技术信息安全技术48JAVA DES算法应用1.密钥的生成密钥的生成:使用的包:使用的包:v import javax.crypto.KeyGenerator; v imp

36、ort java.security.Key; v import java.security.SecureRandom; 代码:代码:public void setKey(String strKey) try KeyGenerator _generator = KeyGenerator.getInstance (DES); /提供(对称)密钥生成器的功能。提供(对称)密钥生成器的功能。 _generator.init( new SecureRandom(strKey.getBytes(); /产生安全的随机数产生安全的随机数 this.key = _generator.generateKey()

37、; _generator = null ; catch (Exception e) e.printStackTrace(); 信息安全技术信息安全技术49JAVA DES算法应用2.加密:使用的包加密:使用的包javax.crypto.Cipher; private byte encryptByte( byte bytes) byte byteFina = null ; Cipher cipher; try cipher = Cipher.getInstance ( DES ); cipher.init(Cipher.ENCRYPT_MODE, key );byteFina = cipher.

38、doFinal(bytes); catch (Exception e) e.printStackTrace(); finally cipher = null ; return byteFinal; 信息安全技术信息安全技术50JAVA DES算法应用3.解密解密private byte decryptByte( byte bytes) Cipher cipher; byte byteFina = null ; try cipher = Cipher.getInstance(DES); cipher.init(Cipher.DECRYPT_MODE, key ); byteFina = ciph

39、er.doFinal(bytes); catch (Exception e) e.printStackTrace(); finally cipher = null ; return byteFinal; 信息安全技术信息安全技术51JAVA DES算法应用4.输入、输出的是字符串不是比特流?输入、输出的是字符串不是比特流?输入处理:输入处理:v引用的包:引用的包:import Decoder.BASE64Encoder;public String encryptStr(String sPlainText) byte bytePlainText = null ; String sCipherTe

40、xt = ; BASE64Encoder base64en = new BASE64Encoder(); try bytePlainText = sPlainText.getBytes( UTF8 ); sCipherText = base64en.encode(encryptByte(bytePlainText); catch (Exception e) e.printStackTrace(); finally base64en = null ; bytePlainText = null ; return sCipherText; 信息安全技术信息安全技术52JAVA DES算法应用4.输入

41、、输出的是字符串不是比特流?输入、输出的是字符串不是比特流?输出处理:输出处理:引用的包引用的包:import Decoder.BASE64Decoder; public String decryptStr(String sCypherText) BASE64Decoder base64De = new BASE64Decoder(); byte bPlainText = null ; String sPlainText = ; try bPlainText = base64De.decodeBuffer(sCypherText); sPlainText = new String(decryp

42、tByte(bPlainText), UTF8 ); catch (Exception e) e.printStackTrace(); finally base64De = null ; bPlainText = null ; return sPlainText; 信息安全技术信息安全技术53异或运算(异或运算( )整数模整数模216加(加( )整数模整数模216+1乘(乘( ),其中全零子块用),其中全零子块用216代替代替例如:例如:0000000000000000100000000000000000000000000000001000000000000000=10000000000000

43、01=1000000000000001这是因为这是因为2 216162 21515 mod (2 mod (21616+1)=2+1)=21515+1+1。IDEA运算信息安全技术信息安全技术54乘法逆元定义:如果定义:如果gcd( a, b )=1,那么,那么v存在a-1,使得a * a-11 mod b, 即(a*a-1)mod b =1;v存在b-1,使得b * b-11 mod a, 即(b*b-1)mod a =1;这里,把这里,把a-1称为称为a模模b的乘法逆元,的乘法逆元,b-1称为称为b模模a的的乘法逆元。乘法逆元。信息安全技术信息安全技术55欧几里得算法欧几里得算法基于以下定

44、理:gcd( a, b ) = gcd( b, a mod b )算法描述:1. A a, B b;2. 若若 B = 0, 则返回则返回A = gcd( a, b );3. R = A mod B;4. A B;5. B R;6. 转到转到 2。信息安全技术信息安全技术56欧几里得算法例求gcd(1180(A), 482(B)解: 1180 = 2 * 482 +216 482 = 2 * 216 +50 216 = 4 * 50 + 16 50 = 3 * 16 + 2 16 = 8 * 2 + 0 A = 2, B = 0 所以, gcd(482,1180) = 2信息安全技术信息安全技

45、术57乘法逆元计算求11111模12345的乘法逆元,即求解x,使得11111xn( mod12345 )= 1。第一步使用欧几里得算法计算gcd( 11111, 12345 )第一步:第一步:12345 = 1 * 11111 + 123411111 = 9 * 1234 + 51234 = 246 * 5 + 45 = 1 * 4 +14 = 4 * 1 +0第二步:第二步:1234 = 12345 - 1 * 11111 5 = 11111 - 9 * 1234 4 = 1234 - 246 * 5 1 = 5 - 1 *4第三步:第三步:1 = 5 - 1 * (1234 - 246

46、* 5) = 247 * 5 - 1 * 1234 = 247 * (11111 - 9 * 1234 ) - 1 * 1234 = 247 * 11111-2224 * 1234 = 247 * 11111 -2224 *(12345 - 1 * 11111) = * 11111 -2224 *12345信息安全技术信息安全技术58练习求7模96的乘法逆元。96 = 13 * 7 + 5 7 = 1 * 5 + 2 5 = 2 * 2 + 1 2 = 1 * 2 + 01 = 5 - 2 * ( 7 - 1 * 5) = 3 * 5 - 2 * 7 = 3 * ( 96 - 13 * 7 )

47、 - 2 * 7 = 3 * 96 - 41 * 7 = 3 * 96 - 41 * 7 + 96 *7 - 96 *7 = (96 - 41)*7 - 4* 96 7模96的乘法逆元为96 - 41 = 5596 - 13 * 7 = 57 - 1 * 5 = 25 - 2 * 2 = 1信息安全技术信息安全技术592.3 IDEA算法IDEA国际数据加密算法国际数据加密算法(International Data Encryption Algorithm):IDEAIDEA是一个分组长度为是一个分组长度为6464位的分组密码算法,位的分组密码算法,密钥长度为密钥长度为128128位,同一个算

48、法即可用于加密,位,同一个算法即可用于加密,也可用于解密。也可用于解密。IDEAIDEA的加密过程包括两部分:的加密过程包括两部分:(1) (1) 输入的输入的6464位明文组位明文组分成分成四个四个1616位子分组位子分组:X X1 1、X X2 2、X X3 3和和X X4 4。四个子分组作为算法第一轮的输入,总共进行八轮的迭代运四个子分组作为算法第一轮的输入,总共进行八轮的迭代运算,产生算,产生6464位的密文输出位的密文输出。(2) (2) 输入的输入的128128位会话密钥产生八轮迭代所需的位会话密钥产生八轮迭代所需的5252个子密钥个子密钥( (八八轮运算中每轮需要六个,还有四个用

49、于输出变换轮运算中每轮需要六个,还有四个用于输出变换) )。信息安全技术信息安全技术60 子密钥产生:子密钥产生:输入的输入的128位密钥分成八位密钥分成八个个16位子密钥位子密钥(作为第一轮运算的六个和作为第一轮运算的六个和第二轮运算的前两个密钥第二轮运算的前两个密钥);将;将128位密位密钥循环左移钥循环左移25位后再得八个子密钥位后再得八个子密钥(前面前面四个用于第二轮,后面四个用于第三轮四个用于第二轮,后面四个用于第三轮)。这一过程一直重复,直至产生所有密钥。这一过程一直重复,直至产生所有密钥。IDEA的解密过程和加密过程相同,只是的解密过程和加密过程相同,只是对子密钥的要求不同对子密

50、钥的要求不同2.3 IDEA算法信息安全技术信息安全技术61密钥间满足:密钥间满足:Zj(r) Z (r)-1j = 1 mod(216+1)vZ(r)-1j为为Z(r)j的乘法逆元的乘法逆元v即即Z(r)jZ(r)-1j= (216+1) k +1v或者或者Zj(r)Z(r)-1jmod (216+1) =1v一般而言如果一般而言如果Z(r)j与与216+1互素,那么逆元有唯一解互素,那么逆元有唯一解 例如,例如, 5模模14的乘法逆元是的乘法逆元是3,因为,因为5*3=15(mod 14)=1 2模模14却没有乘法逆元却没有乘法逆元v因因216+1是一素数,所以每一个不大于是一素数,所以每

51、一个不大于216的非的非0整数都整数都有一个惟一的模有一个惟一的模216+1乘法逆元。乘法逆元。 IDEA运算信息安全技术信息安全技术62IDEA运算-Zj + Zj=0 mod (216 +1)v-Z(r)j为Z(r)j的模216 +1加法逆元v即Z(r)j+Z(r)-1j= (216+1) k v或者Zj(r)+Z(r)-1jmod (216+1) = 0信息安全技术信息安全技术63)1(5z)1(6z3x1x4x)1(1z2x)1(2z)1(3z)1(4z1. X1和第一个子密钥模乘。和第一个子密钥模乘。2. X2和第二个子密钥模加。和第二个子密钥模加。3. X3和第三个子密钥模加。和第

52、三个子密钥模加。4. X4和第四个子密钥模乘。和第四个子密钥模乘。5. 将第将第1步和第步和第3步的结果相异或。步的结果相异或。6. 将第将第2步和第步和第4步的结果相异或。步的结果相异或。7. 将第将第5步的结果与第五个子密钥步的结果与第五个子密钥模乘。模乘。8. 将第将第6步和第步和第7步的结果模加。步的结果模加。9. 将第将第8步的结果与第六个子密钥步的结果与第六个子密钥模乘。模乘。10.将第将第7步和第步和第9步的结果模加。步的结果模加。11.将第将第1步和第步和第9步的结果相异或。步的结果相异或。12.将第将第3步和第步和第9步的结果相异或。步的结果相异或。13.将第将第2步和第步和

53、第10步的结果相异或。步的结果相异或。14.将第将第4步和第步和第10步的结果相异或。步的结果相异或。)9(1z)9(2z)9(4z3Y1Y2Y4Y1 12 23 34 45 56 67 78 89 9101011121314IDEA运算)9(3z信息安全技术信息安全技术642.4 高级加密标准(AES)19971997年年4 4月月1515日,美国日,美国国家标准与技术研究所国家标准与技术研究所(NIST)(NIST)发起发起征集征集AES(Advanced Encryption Standard)AES(Advanced Encryption Standard)的活动。对的活动。对AESA

54、ES的基本要的基本要求是:求是:比三重比三重DESDES快,至少与三重快,至少与三重DESDES一样安全,数据分组长度一样安全,数据分组长度为为128128比特比特,密钥长度为,密钥长度为128/192/256128/192/256比特。比特。19981998年年8 8月月1212日,在首届日,在首届AESAES会议上公布了会议上公布了AESAES的的1515个候选算法个候选算法,任由全世界各机构和个人攻击和评论。任由全世界各机构和个人攻击和评论。19991999年年3 3月,在第二届月,在第二届AESAES会议上从会议上从1515个候选算法中选出个候选算法中选出5 5个个。20002000年

55、年4 4月月1313号和号和1414号,召开第三届号,召开第三届AESAES会议。会议。20002000年年1010月月2 2日,日,NISTNIST宣布宣布RijndaelRijndael作为新的作为新的AESAES,RijndaelRijndael终于脱颖而出。终于脱颖而出。信息安全技术信息安全技术652.4 高级加密标准(AES)算法名称算法名称密钥长度密钥长度速度速度解密时间(机器每秒解密时间(机器每秒尝试尝试255255个密钥)个密钥)资源消资源消耗耗AES128、192、256位高1490000亿年低3DES112位或168位低46亿年中信息安全技术信息安全技术662.5 序列密码

56、2.5.1 序列密码原理序列密码原理加密时将明文划分成字符(如单个字母)加密时将明文划分成字符(如单个字母)或其编码的基本单元(如或其编码的基本单元(如0、1),然后将),然后将其与密钥流进行运算(通常为异或),解其与密钥流进行运算(通常为异或),解密时以同步产生的相同密钥流实现解密。密时以同步产生的相同密钥流实现解密。 加密明文密文 解密原始明文密钥流密钥流密钥流生成器密钥流生成器信息安全技术信息安全技术67序列密码强度完全依赖于密钥流产生器所产生的序列密码强度完全依赖于密钥流产生器所产生的序列的序列的随机性和不可预测性随机性和不可预测性,其核心问题是密钥,其核心问题是密钥流生成器的设计。而

57、保持流生成器的设计。而保持收发两端密钥流的精确收发两端密钥流的精确同步同步是实现可靠解密的关键技术。是实现可靠解密的关键技术。迄今为止,只有一种理论上不可破的加密方案,迄今为止,只有一种理论上不可破的加密方案,叫做叫做一次一密乱码本一次一密乱码本,这是一种序列密码。其基,这是一种序列密码。其基本思想是让密钥和明文一样长,密钥称为乱码本,本思想是让密钥和明文一样长,密钥称为乱码本,用一次便不再用用一次便不再用 。将密钥与明文异或得到密文,。将密钥与明文异或得到密文,接收者用同样的密钥与密文异或即得到明文。接收者用同样的密钥与密文异或即得到明文。一次一密乱码本在今天仍有应用场合,主要用于一次一密乱码本在今天仍有应用场合,主要用于高度机密高度机密的低带宽信道。的低带宽信道。2.5 序列密码信息安全技术信

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论