版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章数据加密技术3.1.1古典加密技术3.1对称加密技术
对称加密技术是指加密和解密,都采用相同的密钥。正如我们出门反锁和回家开门,用的都是同一把钥匙一样,在加密学中,用相同密钥进行加密和解密的方法,叫做对称密钥加密算法。数据加密之前,要先选好加密算法(相当于锁),还要选择一把密钥(相当于用于反锁和开锁的钥匙)。对称加密算法包括各种古典加密算法和当代的一些加密算法,如:DES、3DES、AES、RC4算法等。在1977年非对称加密算法RSA被提出来之前,人们使用的都是对称加密算法技术。
3.1.1古典加密技术
一、“凯撒密码”技术公元前50年,罗马皇帝凯撒为了在战争中传递的信息,又要考虑到万一信息落到敌人手里,不能让敌人看懂信息的内容,而发明了“凯撒密码”。这是一种单表替换密码技术。它的实现方法是:把字母按顺序排列,并首尾相连,明文用其后的某个字母如第2个字母代替。比如单词“YES”,Y之后是Z,Z之后本来是没有字母的,但因首尾相连,所以Z后就来到首字母A了,就是A就是Y加密后的密文;同理,E之后是F、G,G就是E加密之后的密文;S之后是T、U,因此U就是O加密之后的密文。因此,采用凯撒密码技术,加密算法是循环右移,密钥是移动2位,明文“YES”经过加密后得到的密文是“AGU”。
二、换位密码技术英语中,“the”、“is”等单词经常出现,凯撒密码只是对单词做简单的替换,攻击者根据单词出现的频率,很容易试探出明文。而换位密码技术,将明文各字母的顺序打乱,能较好的避免攻击者按单词出现的频率来试探明文的攻击。换位密码技术是通过打乱明文的字母顺序达到加密目的的,以列换位密码技术为例,加密方法是:将密钥写在第一行,明文写在密钥下面,明文超过密钥长度时,就换到第二行,第二行写满换到第三行,以此类推,直到把明文写完为止,然后将表中的字母按列读出来,以便得到密文,注意,不是按第1、2、3、4列这样的顺序来读列的,列的读取顺序由密钥来决定,具体来说,把密钥的各字母按从小到大排序,按排出的顺序读列,得到的就是密文。例如:使用列换位密码技术,用字符串“hack”作为密钥,加密“canyouunderstand”这句话,方法如下:明文:canyouunderstand密钥:hack表3-1是按照换名密码技术使用密钥“hack”,对明文“canyouunderstand”进行加密的过程。
按第2、3、1、4列的顺序读出各列的字母,得到的就是密文:aueanurncodtynsd。表3-1换位密码技术的应用密钥hack列的序号1234按密钥字母大小排序3124明文canyouunderstand三、费杰尔密码
换位密码技术虽然避免了攻击者按单词出现的频率猜明文的方法,但英语中,除了单词出现的频率有规律可循,字母出现的频率也是有规律的,如:字母e出现的频率最大,其次是t,根据密文中字母出现的频率,按换位密码加密得到的密文,是有可能被攻击者匹配出明文来的,而费杰尔密码的出现,则较好解决了这个问题。
使用费杰尔密码技术进行加密,需要用到一张二维表,以表的第一列为纵坐标,表的第一行为横坐标。在纵坐标上,找到密钥对应的字母所在的行,在横坐标上,找到明文对应的字母所在的列,行和列的交叉点就是密文。表3-2是费杰尔密码技术所使用的二维表。abcdefghijklmnopqrstuvwxyzaabcdefghijklmnopqrstuvwxyzbbcdefghijklmnopqrstuvwxyzaccdefghijklmnopqrstuvwxyzabddefghijklmnopqrstuvwxyzabceefghijklmnopqrstuvwxyzabcdffghijklmnopqrstuvwxyzabcdegghijklmnopqrstuvwxyzabcdefhhijklmnopqrstuvwxyzabcdefgiijklmnopqrstuvwxyzabcdefghjjklmnopqrstuvwxyzabcdefghikklmnopqrstuvwxyzabcdefghijllmnopqrstuvwxyzabcdefghijkmmnopqrstuvwxyzabcdefghijklnnopqrstuvwxyzabcdefghijklmoopqrstuvwxyzabcdefghijklmnppqrstuvwxyzabcdefghijklmnoqqrstuvwxyzabcdefghijklmnoprrstuvwxyzabcdefghijklmnopqsstuvwxyzabcdefghijklmnopqrttuvwxyzabcdefghijklmnopqrsuuvwxyzabcdefghijklmnopqrstvvwxyzabcdefghijklmnopqrstuwwxyzabcdefghijklmnopqrstuvxxyzabcdefghijklmnopqrstuvwyyzabcdefghijklmnopqrstuvwxzzabcdefghijklmnopqrstuvwxy表3-2费杰乐密码技术例如:使用费杰尔密码技术进行加密,密钥为“cat”,明文为“lookatthestarts”。加密方法是:在明文下面,反复写上密钥,得到:明文:lookatthestarts密钥:catcatcatcatcat第一个字母的加密过程是:在纵坐标上,找到密钥对应的字母c所在的行,在横坐标上,找到明文对应的字母l所在的列,行与列的交叉点n就是密文。以此类推,可得到加密后的密文为:密文:nohmamvhxuttts谢谢欣赏第3章数据加密技术3.1.2DES加密技术3.1.2DES加密技术
DES(DataEncryptionStandard,数据加密标准)算法,是由IBM公司为非机密数据加密所设计的方案,1977年被美国政府采纳,后被国际标准局采纳为国际标准。DES算法是一种对称加密算法,输入的明文被分成64位的块;密钥长度是64位,其中56位为有效位,8位用于奇偶校验。加密大致分为初始排列、16轮加密和翻转初始排列等三个过程。
如图3-1-1所示,整个算法的主流程图如下:图3-1-1des算法流程图DES加密的大致过程如下:将64位的明文经初始排列打乱顺序,得到左边32位L0和右边32位R0两部分;经过第一轮加密后,变成左边L1和右边R1;经过第二轮加密后,变成左边L2和右边R2;……如此循环,总共经过十六个不同子密钥的16轮加密,得到左边L16和右边R16,将左右合并、翻转初始排列后,最终得到64位密文。1.将64位的明文顺序打乱,生成32位的左边L0、32位的右边R0两部分;2.第一轮加密:1)新的左边L1,直接取自原来的右边R0;2)新的右边R1,由原来的右边R0、第一轮的子密钥、原来的左边L0,经过加密运算,而生成。3.第二~第十六轮加密,与第一轮加密类似。4.翻转初始排列。
下面以密钥为OVERSEAS,明文为FOOTBALL为例,解释DES的加密过程:一、通过查询ASCII码表,将明文和密钥转换成二进制。表3-3是节选的ASCII码表。表3-4是二进制与十六进制的对应关系表。八进制十六进制十进制字符1004064@1014165A1024266B1034367C1044468D1054569E1064670F1074771G1104872H1114973I1124a74J1134b75K1144c76L1154d77M1164e78N1174f79O1205080P1215181Q1225282R1235383S1245484T1255585U1265686V1275787W1305888X1315989Y1325a90Z表3-3ASCII码表(节选)
如:通过查询ASCII码表,得到字符’F’的ASCII码的16进制是:46,转成二进制是:01000110通过查表,可得:明文FOOTBALL的ASCII码的二进制是:0100011001001111010011110101010001000010010000010100110001001100密钥OVERSEAS的ASCII码的二进制是:0100111101010110010001010101001001010011010001010100000101010011二进制十六进制000000001100102001130100401015011060111710008100191010A1011B1100C1101D1110E1111F表3-4二进制与十六进制的对应关系表二、明文的处理
按置换规则表,打乱明文的顺序,并平分为左边32位的L0和右边32位的R0。一)概述:1.将64位的明文顺序打乱,并平分为左边32位的L0和右边32位的R0;2.把右边32位R0赋值给下一轮左边L1;3.把左边32位的L0、右边32位R0(扩展成48位)、第一轮子密钥进行加密运算,生成下一轮的R1。4.相关表格:1)置换规则表:其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位。表3-5所示的是置换规则表:表3-5置换规则表置换规则是将输入的第58位换到第一位,第50位换到第2位,...,依此类推,输入的第7位置换到最后一位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3......D64,则经过初始置换后的结果为:L0=D58D50...D8;R0=D57D49...D7。585042342618102605244362820124625446383022146645648403224168574941332517915951433527191136153453729211356355473931231572)扩展排列表:用于把右边32位R0扩展为48位。表3-6所示的是扩展排列表:表3-6扩展排列表3212345456789891011121312131415161716171819202120212223242524252627282928293031321二)详细过程1.明文FOOTBALL的ASCII码的二进制是:0100011001001111010011110101010001000010010000010100110001001100表3-7是明文FOOTBALL的ASCII码的二进制。表3-8是在表3-7的基础上,进行编号。表3-7明文FOOTBALL的ASCII码的二进制0100011001001111010011110101010001000010010000010100110001001100表3-8为明文FOOTBALL的ASCII码的二进制编号序12345678910111213141516码0100011001001111序17181920212223242526272829303132码0100111101010100序33343536373839404142434445464748码0100001001000001序49505152535455565758596061626364码01001100010011002.表3-9是置换规则表,需将明文按置换规则表进行初始变换。表3-10是明文经过初始变换后,得到的结果。即:1111111100001000110011110010011000000000000000001100011000010111表3-9置换规则表58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157表3-10初始变换后的结果11111111000010001100111100100110000000000000000011000110000101113.把经过初始变换后的明文分成左32位和右32位,得到:L0(32)=11111111000010001100111100100110R0(32)=000000000000000011000110000101114.生成新的左边L1。把R0(32)赋值给L1(32),即L1(32)=R0(32)=000000000000000011000110000101115.把R0(32)按扩展排列表扩展为48位。表3-11是扩展排列表,表3-12是32位的R0按扩展排列表扩展成48位的结果。说明:新的右边R1,由原来的右边R0、原来的左边L0、第一轮的子密钥,经过加密运算,而生成。为了进行上述加密运算,要先将R0扩展成48位。即:R0(48)=100000000000000000000001011000001100000010101110表3-11扩展排列表3212345456789891011121312131415161716171819202120212223242524252627282928293031321表3-12R0扩展为48位100000000000000000000001011000001100000010101110三、密钥的处理分析:密钥要对明文进行16次加密处理1)明文:前面的明文打乱了顺序,平分成了左边32位,右边32位;右边32位扩展成了48位的R0(48);2)密钥:一个密钥将生成十六个子密钥,十六个不同子密钥的长度都是48位。3)加密:明文需经过十六个不同子密钥的十六轮加密,才能产生密文。第一轮加密产生新的左边32位,新的右边32位。其中,新的左边32位,直接取自原来的右边32位;新的右边32位,由原来的右边32位扩展成48位与第一轮的子密钥加密运算,再转换成32位,再与原来的左边32位,经过加密运算,而生成。2.以生成第一轮48位的子密钥为例1)把64位密钥删除8、16、24、32、40、48、56、64位,变成56位即,把8*8的表格,删除最后一列。表3-13是将密钥从64位变成56位的方法说明。得到64位的密钥OVERSEAS的ASCII码的二进制:0100111101010110010001010101001001010011010001010100000101010011表3-14用于将64位的密钥ASCII码值代入,生成56位有效值。得到56位有效值:01001110101011010001001010010101001010001001000000101001表3-13删除64位表格最后一列变成56位12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364表3-14将密钥代入删除最后一列01001111010101100100010101010010010100110100010101000001010100112)将56位的密钥按下表(置换选择1)进行置换(1)将表3-13的第1列、第2列、第3列、第4列的一半,从下往上取,从左往右写到表3-15的第1行、第2行、第3行、第4行的一半(即上表的一半顺时针转90度);(2)将表3-13的第7列、第6列、第5列、第4列的一半,从下往上取,从左往右写到表3-15的第4行的一半、第5行、第6行、第7行:按表3-15的方式,可将表3-14的56位密钥转换成表3-16所示的新的56位密钥:表3-15置换选择1表57494133251791585042342618102595143352719113605044366355473931231576254463830221466153453729211352820124表3-1656位密钥代入置换选择1表000000001111111100000000100110011011001001110000000110103)将转换后的56位的密钥分成左、右两部分C0=0000000011111111000000001001D0=10011011001001110000000110104)表3-17是各轮移位次数表。根据各轮移位次数表,将左、右两部分都循环左移LSi位。现在是第一轮,LSi=1,左右半部各循环左移一位后得:C1=0000000111111110000000010010D1=0011011001001110000000110101表3-17各轮移位次数表LSi·LS1LS2LS3LS4LS5LS6LS7LS8LS9LS10LS11LS12LS13LS14LS15LS16位数11222222122222215)表3-18是置换选择2表。C1、D1拼接后得56位,按置换选择2表进行置换,生成48位的第一个子密钥K1(其中,第9、18、22、25、35、38、43、54位被剔除)。表3-19是C1、D1拼接后的56位表。表3-20是置换后的得到的48位K1表。表3-18置换选择2表1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932表3-19C1与D1拼接为56位123456780000000191011121314151611111110171819202122232400000001252627282930313200100011333435363738394001100100414243444546474811100000495051525354555600110101置换后,得48位K1。K1=101100001001001001001010111000001000000110010001表3-20置换后的48位K11417112415328101100001562110231912410010010268167272013201001010415231374755304011100000514533484449395610000001345346425036293210010001四、加密处理1)将R0(48)与K1进行异或,得到A值:R0(48)=100000000000000000000001011000001100000010101110K1=101100001001001001001010111000001000000110010001异或后得A=0011000010010010010010111000000001000001001111112)将上面的A分为8组A1=001100A2=001001A3=001001A4=001011A5=100000A6=000100A7=000100A8=111111取A1的第1和第6位,作为数组的第一个数;取中间4位,作为数组的第二个数,得S1(00,0110),转换为十进制得S1(0,6)。同样方法,得:S2(1,4)、S3(1,4),S4(1,5),S5(2,0),S6(0,2),S7(0,2),S8(3,15)3)表3-21是S盒数据变换表。查S盒数据变换表得:S1(0,6)=11转成2进制是:1011S2(1,4)=15转成2进制是:1111S3(1,4)=3转成2进制是:0011S4(1,5)=15转成2进制是:1111S5(2,0)=4转成2进制是:0100S6(0,2)=10转成2进制是:1010S7(0,2)=2转成2进制是:0010S8(3,15)=11转成2进制是:1011合并S1~S8,得:B=10111111001111110100101000101011表3-21S盒数据变换表
0123456789101112131415S1:01441312151183106125907101574142131106121195382411481362111512973105031512824917511314100613S2:01518146113497213120510131347152814120110691152014711104131581269321531381013154211671205149S3:01009146315511312711428113709346102851413111512136498153011121251014731101306987415143115212S4:07131430691012851112415113811561503472121101492106901211713151314528433150610113894511127214S5:02124171011685315130149114112124713150151039862421111013781591256301431181271142136150910453S6:01211015926801334147511110154271295611314011382914155281237041011311634321295151011141760813S7:04112141508133129751061113011749110143512215862141113123714101568059236111281410795015142312S8:01328461511110931450127111513810374125611014922711419121420610131535832114741081315129035611
4)表3-22是Permutation置换位置表。表2-23是B值的列表。表3-24是对B值列表进行Permutation置换位置表变换后得到的X0值表。查Permutation置换位置表,对B值进行Permutation置换,得到X0值。可见,经过P置换后得到X0=110111001110111001011110010101105)L0(32)与X0按位异或,可得R1(32)L0(32)=11111111000010001100111100100110X0=11011100111011100101111001010110R1(32)=00100011111001101001000101110000表3-22Permutation置换位置表1672021291228171152326518311028241432273919133062211425表3-23B值列表123410115678111191011120011131415161111171819200100212223241010252627280010293031321011表3-24X0值167202111012912281711001152326111051831101110282414010132273911101913306010122114250110五、经过第一轮加密,得到64位的加密值:L1+R1其中L1=00000000000000001100011000010111R1=00100011111001101001000101110000第一轮加密的结果L1+R1:0000000000000000110001100001011100100011111001101001000101110000六、用与第一轮加密类似的方法,进行第二轮~第十六轮的加密。七、翻转初始排列,得到最终的加密结果。3.1.3三重DES加密技术DES算法经过了16轮的替换和换位迭代运算,算法本身足够安全,唯一的破解方法是穷举所有可能的密钥。因此,其的安全性取决于密钥的长度。随着计算机性能的不断提高,56位的密钥长度已经不够安全。三重DES就是为了提高安全性而发展起来的。三重DES加密有四种不同的模式:1.DES-EEE3模式。使用三个不同密钥(k1,k2,k3),采用三次加密算法。2.DES-EDE3模式。使用三个不同密钥(k1,k2,k3),采用加密-解密-加密算法。3.DES-EEE2模式。使用两个不同密钥(k1=k3,k2),采用三次加密算法。4.DES-EDE2模式。使用两个不同密钥(k1=k3,k2),采用加密-解密-加密算法。通过多个密钥来进行重复的加密运算,相当于增加了密钥的总长度。其中,前两种模式都采用了三个不同的密钥,其密钥总长度为168位;后两种模式均采用了两个不同的密钥,其密钥总长度为112位。随着密钥长度的增加,安全性也得到了相应的提升。谢谢欣赏第3章数据加密技术3.2.1RSA算法和DH算法3.2非对称加密技术通过前面的学习,我们知道,对称加密技术要求发送者和接收者事先将对称密钥共享,如果双方事先没有共享密钥,一方就要想办法将所用的对称密钥传送给另一方。万一密钥在传送过程中被攻击者截获,攻击者就可以解密出所有用这个对称密钥加密的密文了。但如何安全的将对称密钥传送给对方,一直是个大问题。直到1976年美国科学家WhitfieldDiffie和MartinHellman提出DH算法,才解决了这个难题。DH算法不直接传递密钥,只传递用自己的私钥加密某数后的值,最终双方都能计算出一把与对方完全一致的新密钥,双方再用这把新密钥来加密和解密数据。受DH算法启发,麻省理工学院的三位科学家Rivest、Shamir和Adleman于1977年提出了RSA算法,该算法把密钥分成了两把,加密和解密使用不同的密钥,私钥由拥有者保管,不在网络间传输,公钥则是公开的。RSA算法是第一个能同时用于加密和数字签名的算法。常见的非对称加密算法有:RSA、DH、ECC等。下面,借助工具软件RSA-TOOL,先介绍RSA算法,再介绍DH算法,说明如何生成和运用非对称密钥。一、RSA算法RSA算法是如何工作的呢?下面以张三与李四通信为例。张三拥有一对密钥,分别是张三的公钥和张三的私钥。其中,张三的公钥是公开的,共享给所有人,如何确保张三的公钥不被伪造,将在后文中讲解;张三的私钥是保密的,只有张三可以使用。李四若要加密数据给张三,可用张三的公钥加密。张三收到后,再用自己的私钥解密,读取明文。攻击者没有张三的私钥,只有张三的公钥和截获到的密文,是无法获取明文的。RSA密钥对的生成方法如下:首先,要秘密地选取两个大素数。为了便于计算和说明,这里选两个小素数7和17,还要选取一个与(7-1)×(17-1)互素的数(即与96互素的数)作为公钥,这里选5作为公钥。接着,打开工具软件RSA2TOOL,将进制设置为10进制,输入公钥5,第一个素数7,第二个素数17,点击“CalcD”按钮,即可算出循环周期是119,私钥是77。我们可以把循环周期合并到公钥和私钥中书写,即把公钥记为(5,119),把私钥记为(77,119)。3.2.1RSA算法和DH算法为便于理解,下面用不严谨的方法描述一下RSA算法大致是如何工作的。RSA算法要用到欧拉函数与费马小定理。欧拉函数的特例:假如a是素数,那么a的欧拉函数等于a-1。费马小定理的特例:假如a是素数、b是一个整数,那么b^(a-1)moda=1。图3-2-1软件工具RSA-Tool为便于理解,下面用不严谨的方法描述一下RSA算法大致是如何工作的。RSA算法要用到欧拉函数与费马小定理。欧拉函数的特例:假如a是素数,那么a的欧拉函数等于a-1。费马小定理的特例:假如a是素数、b是一个整数,那么b^(a-1)moda=1。以选取两个小素数7和17为例:根据费马小定理,对于素数7,任意取一个整数b,可得到:b^(7-1)mod7=1,即b^6mod7=1;根据费马小定理,对于素数17,任意取一个整数b,可得到:b^(17-1)mod17=1,即b^16mod17=1;由此可知:b^(6×16)mod(7×17)=1,即:b^96mod119=1如果存在一个数mod96等于1,比如385mod96=1,385=4×96+1,那么,b^385mod119=b^(4×96+1)mod119=【(b^(4×96))mod119】×【(b^1)mod119】=1×b=b可见,只要找到两个数,它们的乘积mod96等于1,这两个数就是公钥和私钥。原因如下:比如,我们可以找到两个与96互素的数:5和77,5×77=385,385mod96=1,由上式b^385mod119=b可知:b^(5×77)mod119=b把5×77拆开来写,上式也可写成:【b^5mod119】^77mod119=b其中,【b^5mod119】可以看成对b进行加密,得到的结果就是密文;接着,(密文^77mod119)是对密文进行解密,得到的结果就是解密后的明文b。演算过程中,从7×17求得119很容易。119是公开的,如果能将119分解成7乘以17,再根据公钥5就可以破解出私钥是77了。但实际应用中,采用的是两个上百位的十进制大素数。由这两个上百位十进制数的乘积得到一个很大的数,RSA算法的安全性就取决于对这个大数分解的难度。将长达1024位或2048位的十进制大数分解成两个素数相乘,这样的难度非常大,接近不可能。因此,只要密钥位数足够大,RSA算法是安全的。例题:已知RSA公钥是(5,119),私钥是(77,119),请用公钥(5,119)加密字母A(A的ASCII码是65,即加密:65),再用私钥对密文进行解密。明文:65用公钥加密:用公钥(5,119)进行加密,(65^5)mod119=46即加密后,得到密文:46用私钥解密:用私钥(77,119)进行解密,(46^77)mod119=65,即解密得到明文:65因为公钥是公开的,即5和119是公开的,若能对119作因数分解,就可以破解出私钥了,对119进行因数分解很容易,可以分解成7×17。但对1024位、2048位这样的大数进行因数分解是不可行的,因此,只要密钥位数够大,RSA算法是安全的。二、DH算法DH是Diffie-Hellman的首字母缩写,DH算法是WhitefieldDiffie与MartinHellman在1976年提出了一个的密钥交换算法。它可以使用不对称加密算法,为通信双方生成相同的临时对称密钥,然后双方利用这个临时对称密钥进一步传送真正使用的对称密钥。一)原理很简单,简单的运算过程举例如下:1.公开两个数:5和97。2.A、B双方各自取一个保密的数:A方选取36。B方选取58。3.A计算出5^36mod97给B。B计算出5^58mod97给A。4.A根据((5^58mod97)^36)mod97得到对称密钥:((5^58^36)mod97。5.B根据((5^36mod97)^58)mod97得到对称密钥:((5^36)^58)mod97。可以看出,A、B双方得到的对称密钥是一至的。二)具体过程如下:1.各自产生密钥对。2.交换公钥。3.用对方的公钥和自己的私钥运行DH算法得到一个临时的对称密钥M。4.A产生一个对称密钥N,用临时密钥M加密后发给B。5.B用临时密钥M解密得到对称密钥N。6.B用这个对称密钥N来解密A的数据。比较关键的一步,双方是如何对方的公钥计算得到临时的对称密钥M的?三)举例说明。1.各自产生密钥对。先解释什么是原根。若存在g∈[2,p-1],对于所有i∈[1,p-1],计算(g^i)%p得到的结果都是互不相同的,那么数g就是数p的一个原根。每个素数都有原根。1)双方协商一个素数和这个素数的一个原根,这个素数和它的原根是公开的。如取素数q=97和97的一个原根a=5。q和a由双方协商,并且都是公开的。2)A、B双方各自选择一个小于q的随机数作为自己的私有密钥(即小于97的随机数)。A选的私钥XA=36。B选的私钥XB=58。3)A、B双方计算各自的公开密钥:A的公钥YA=(5^36)mod97=50B的公钥YB=(5^58)mod97=442.交换公钥。3.根据DH算法,用对方的公钥和自己的私钥进行运算,得到临时的对称密钥M。A计算得到临时密钥M=(YB)^XAmod97=(44^36)mod97=75B计算得到临时密钥M=(YA)^XBmod97=(50^58)mod97=75攻击者的目的是利用素数97、97原根5、A的公钥50和B的公钥44,计算出临时密钥75。若所选的素数很大,攻击者是无法计算出临时密钥的。谢谢欣赏第3章数据加密技术3.2.2PGP软件在加密上的综合应用3.2.3SSH的加密过程对称密钥算法运算速度快,但传输密钥困难;非对称密钥算法不存在传输密钥问题,但运算速度慢。两者结合起来,就能取长补短。一、为三台电脑安装PGPDesktop,生成密钥对。1.启动三台windows虚拟机,都安装上PGPDesktop刚安装完成,软件会弹出PGP密钥生成助手,若还不想生成密钥对,可点击取消按钮,下次启动PGP后,再生成。3.2.2PGP软件在加密上的综合应用1.如图3-2-2所示,启动PGPDesktop,打开如图3-2-3所示的管理界面。图3-2-2打开PGPDesktop图3-2-3PGPDesktop界面2.如图3-2-4所示,点击“文件”/“新建PGP密钥”。图3-2-4新建PGP密钥3.弹出如图3-2-5所示的PGP密钥生成助手,点击“下一步”。图3-2-5PGP密钥生成助手4.如图3-2-6所示,输入全名和主要邮件。图3-2-6分配名称和邮件5.创建口令。在需要使用私钥时,可用现在创建的口令来调用。如图3-2-7所示,按要求输入不少于8位、包含数字和字母的口令。输入完成后,点击“下一步”。图3-2-7创建口令6.如图3-2-8所示,PGP为user1生成了包括公钥和私钥的密钥对。点击“下一步”。在出现的PGP全球名录助手框中,点击“跳过”按钮。图3-2-8密钥生成进度7.如图3-2-9所示,可以查看到user1的密钥对。图3-2-9user1的密钥对8.PGP默认保存私钥的口令,用到私钥时直接调用,不需要用户再次输入口令。若不想我的电话口令,可如图3-2-10所示,先打开菜单“工具”/“选项”,然后按图3-2-11所示,将保护私钥的口令设置成“不保存我的口令”。图3-2-10PGPDesktop选项图3-2-11PGP选项窗口-不保存我的口令9.如图3-2-12和图3-2-13所示,用同样方法,为第二台电脑的user2和第三台电脑的user3分别生成密钥对。10.用同样方法,为第二台电脑的user2和第三台电脑的user3进行私钥“不保存我的口令”的设置。图3-2-12user2的密钥对图3-2-13user3的密钥对二、导出公钥,互相交换公钥。1.如图3-2-14所示,右击user1,选择“导出”。图3-2-14导出user1的公钥2.如图3-2-15所示,选择存储位置,不要勾选“包含私钥”选项,点击“保存”按钮,为user1导出公钥。3.如图3-2-16所示,把user1的公钥拖放到PC2上。图3-2-15user1的公钥保存位置图3-2-16将user1的公钥分发给PC24.如图3-2-17所示,在PC2上,双击user1.asc,点击“导入”。5.如图3-2-18所示,User1的公钥成功的导入到了win2中。图3-2-17导入user1的公钥图3-2-18导入user1的公钥后的界面6.如图3-2-19所示,右击刚导入的user1公钥,选择“签名”。图3-2-19对user1的公钥进行签名7.如图3-2-20所示,在弹出的“PGP签名密钥”框中,点击“确定”按钮。8.如图3-2-21所示,在弹出的“PGP为选择密钥输入口令”对话框中,输入调用user2私钥的口令,为新导入的公钥签名。图3-2-20确认签名图3-2-21输入user2私钥的口令9.如图3-2-22所示,签名后,新导入的公钥“已校验”状态变绿。10.如图3-2-23、3-2-24、3-2-25所示,用同样方法,为user1、user2、user3互传公钥,并为导入的公钥签名。图3-2-22对user1的公钥签名后的结果
图3-2-23为win1导入其它公钥图3-2-24为win2导入其它公钥图3-2-25为win3导入其它公钥
三、在PC1上,新建文件,用user2的公钥加密,发送到PC2和PC3上,观察user2能解密打开文件,但user3不能解密,无法打开加密后的文件。这是因为user2的公钥加密的文件,只有user2的私钥才能解密,user3没有user2的私钥,所以无法解密。1.如图3-2-26所示,在PC1上新建文件test1.txt,右击,选择“PGPDesktop”/“使用密钥保护test1.txt”。图3-2-26使用密钥保护文件2.如图3-2-27所示,在PGP压缩包助手中,选择User2的公钥,并点击“添加”按钮。图3-2-27添加user2的公钥3.如图3-2-28所示,在PGP压缩助手中,签名密钥选择“无”,点击“下一步”按钮。图3-2-28签名密钥选择无并保存4.将加密好的文件传送到win2主机上。5.如图3-2-20所示,在win2主机上,右击加密好的文件test1.txt.pgp,选择“PGPDesktop”/“解密&校验test1.txt.pgp”。图3-2-29win2上解密文件6.如图3-2-30所示,在Win2上弹出的输入口令框中,输入调用user2私钥的口令“123”,点击“确定“按钮。图3-2-30输入user2的私钥解密文件7.通过User2的私钥,能解密并打开测试文件。8.如图3-2-31所示,把加密好的文件test1.txt.pgp传到win3上,右击文件,选择“PGPDesktop”/“解密&校验test1.txt.pgp”。提示“因为您的密钥环不包含user1或user2公钥对应的可用私钥,无法解密“。可见,user3无法解密此加密文件。图3-2-31user3无法解密文件
我们已经在上一章中介绍了使用SSH网管防火墙ASA的方法,SSH是如何加密数据的呢?SSH综合运用了对称密钥和非对称密钥技术,SSH的运行过程如下:1.服务端生成密钥对,包括公钥和私钥。公钥可以公开,用于发给客户端加密数据,对于采用服务端公钥加密的数据,只有服务端相应的私钥才能解密;服务端的私钥不公开,只有服务端才拥有,可以解密用服务端公钥加过密的数据。2.客户端向服务端发起SSH连接请求。3.服务端向客户端发起版本协商,确定是使用版本1还是版本2。4.协商结束后服务端发送服务端的公钥给客户端,在此之前,所有通信都是不加密的。5.客户端的用户通过核验服务端发来的公钥的MD5值,核验公钥的真伪,如果公钥没有问题,则接收此公钥,并产生一个随机数,用此公钥来加密这个随机数,这个随机数可用于计算双方加密数据用的对称密钥,该对称密钥加密的数据,可以用该对称密钥来解密。6.客户端将已经用服务端公钥加密过的随机数发送给服务端。7.服务端获得已加密的随机数后,用服务器的私钥解密,获得该随机数的值,并用这个随机数产生双方加密数据用的对称密钥,从而双方都拥有了这个对称密钥,之后的通信都经过这个对称密钥加密,也就是说,已经建立了安全的传输通道。8.进入认证阶段,利用上面产生的安全的传输通道,使用预共享密钥进行认证。9.认证成功后,进入交互阶段。3.2.3SSH的加密过程谢谢欣赏第3章数据加密技术3.3HASH算法及数据的指纹3.4数字签名及PGP软件在签名上的应用要使信息安全的传送到目的地,应确保传送过程具备以下四个基本特性:私密性(Confidentiality)、完整性(Integrity)、源认证(Authentication)和不可否认性(Non-repudiation)。对数据、密码等进行加密,使数据不被未经授权者读取,称为私密性(Confidentiality);确保信息在传送过程中,未被篡改,称为完整性(Integrity);发送和接收前先确认发送者和接收者不是冒名的,称为源认证(Authentication);发送者和接收者事后不能否认是自己发送的或是自己接收的,称为不可否认性(Non-repudiation)。加密算法可以实现数据的私密性,数据的指纹则可以实现数据的完整性校验(Integrity),一旦数据被篡改,数据的指纹就会改变,从而鉴别出数据已经被篡改,不再完整了。3.3HASH算法及数据的指纹一、数据的指纹人有指纹,数据也有指纹。数据指纹也叫做数据的哈希值、数据的HASH值、数据的散列值、数据的摘要、数据的消息验证码(MessageAuthenticationCode,MAC)等。在现实生活中,两个人的指纹不会完全相同,公安部门可以通过人的指纹来识别出罪犯。不同数据的数据指纹也是互不相同的,一个长文件,假如将其中的一个逗号改成了句号,那么重新产生的数据指纹就会跟原来数据指纹完全不一样,这被称为数据指纹的雪崩效应。人不管长得高矮胖瘦,人的指纹大小都是相同的。数据的指纹也一样,不管数据的长短,经过HASH运算产生的数据指纹,长度都是固定的。不能通过人的指纹,还原出整个人的模样。数据指纹也是单向的,从数据也以计算出数据指纹,但不能从数据指纹逆推出原始数据。二、HASH算法产生数据指纹的算法,叫做哈希算法,也称为HASH算法或散列算法。常见的HASH算法有MD5算法、SHA算法等。对于任意长度的数据,哈希算法输出的摘要信息长度是固定的。其中,MD5算法输出的是128位固定长度的摘要信息。SHA算法则分为不同档次的SHA-1和SHA-2。SHA-2又可分为SHA-224、SHA-256、SHA-384和SHA-512等四种。其中,SHA-1产生的报文摘要是160位,SHA-224产生的报文摘要是224位,SHA-256产生的报文摘要是256位,SHA-384产生的报文摘要是384位,SHA-512产生的报文摘要是512位。至今还没有出现对SHA-2有效的攻击。但对于MD5和SHA-1,科学家已经能为指定的HASH值找到可产生这些值的乱码数据,当然,这些乱码数据是无法冒充原始数据的,因为原始数据是有意义的,而这些乱码数据则毫无意义。三、HMAC虽然对数据进行Hash运算能实现对数据的完整性校验(Integrity)。但攻击者截获报文后,可以修改报文内容、伪造报文摘要。针对这样的攻击,HMAC对HASH算法进行了改进。HMAC算法要求发送方与接收方预先共享一个密钥key,将数据与预共享密钥key合并后,再做hash运算,这样计算出来的MAC值,不但取决于输入的原始数据,还取决于预共享密钥key,攻击者因为没有预共享密钥key,就算修改了截获的报文内容,也仿造不了报文摘要。因此,HMAC不仅可以实现完整性校验(Integrity),还能实现源认证(Authentication)。3.4数字签名及PGP软件在签名上的应用加密算法可以实现数据的私密性,数据的指纹即hash运算可以实现数据的完整性(Integrity),若将数据与预共享密钥key合并后再做hash运算的HMAC,可实现数据的完整性校验(Integrity),和源认证(Authentication)。数字签名,则可同时实现完整性Integrity、源认证Authentication和不可否认性Non-repudiation。HMAC和数字签名都能实现完整性Integrity和源认证Authentication,但它们的应用场合是不一样的。由于HASH运算速度比较快,所以数据量比较大时,一般用HMAC进行完整性校验(Integrity)和源认证(Authentication),比如将来要学习到的IPSECVPN中,ESP的每个包都会用到HMAC。数字签名的安全性更高,但速度较慢、消耗资源较大,所以在需强认证的关键点,才会采用数字签名技术。对明文进行数字签名的方法是:求出明文的HASH值,用自己的私钥对明文的HASH值进行加密,得到的就是数字签名。再将明文和数字签名同时发送给接收方。对数字签名进行验证的方法是:接收方用发送方的公钥解密数字签名,得到发送方明文的HASH值。接收方对明文计算出HASH值,与发送方提供的HASH值进行比较,若相同,则数字签名有效。数字签名的应用很广泛,比如,苹果APPStore上的APP必须是经过了苹果的数字签名的,如果没有苹果数字签名的AAP,客户是无法安装到苹果手机上的。在上次PGP加解密实验中,已经为user1、user2、user3所在的三台电脑生成了密钥对,并已经互传公钥。在此基础上,我们继续完成数字签名及验证的实验。1.在user1、user2、user3所在的电脑上,启动并打开PGPDesktop的主界面。2.在user1所在的电脑上,新建文件test2.txt,输入内容,存盘。如图3-4-1所示,右击该文件,选择“签名为user1”选项。图3-4-1文件签名为user13.如图3-4-2所示,输入调用user1私钥所需口令,调用user1的私钥对文件test2.txt进行数字签名。点击“下一步”。4.如图3-4-3所示,在test2.txt文件旁边,会生成test2.txt.sig文件。图3-4-2签名并保存图3-4-3生成text2.txt.sig
5.如图3-4-4和图3-4-5所示,将test2.txt和test2.txt.sig拖放到user2所在的win2和user3所在的win3中。在win2和win3上,分别双击test2.txt.sig,在各自的PGPDesktop上,都能看到对test2.txt文件的签名信息,包括签名人、签名时间等。图3-4-4win2上test2.txt文件的签名信息图3-4-5win3上test2.txt文件的签名信息谢谢欣赏第3章数据加密技术3.5数字证书3.5数字证书
在人类社会中,身份证可以证明一个人的身份。在数字世界中,数字证书能证明公钥的拥有者是谁,证明某个公钥不是冒名顶替的。实现数字证书,需要一个安全体系PKI。3.5.1PKI对于在网络上通信的双方来说,如何综合运用对称密钥技术和非对称密钥技术,确保信息从源出发,安全传送到目的地,做到数据传输的私密性(Confidentiality)、源认证(Authentication)、完整性(Integrity)、不可否认性(Non-repudiation)。都是建立在公钥真实性的基础之上的。非对称密钥包括公钥和私钥组成的密钥对,在之前的研究中,公钥传送给通信的另一方的方式,是直接发送给对方,这种方式获取公钥并不方便,也不安全。获取和验证公钥的更好方式是通过公钥基础架构PKI来实现。PKI(PublicKeyInfrastructure,公钥基础结构)是通过非对称密钥技术和数字证书来验证数字证书所有者的身份,确保系统信息安全的一种体系。由称为CA的权威机构把公钥所有者的信息与公钥捆绑在一起,用权威机构的私钥对以上捆绑的数据进行签名,生成公钥所有者的证书,颁发给证书所有者。这就象公安局把公民的身份证号、姓名等捆绑在一起,用公安局的公章进行盖章,制成公民的身份证,颁发给该公民。数字证书的主要作用是证明公钥拥有者的身份及公钥的合法性。每个客户都拥有权威机构CA的根证书,权威机构CA的根证书中包含有权威机构的公钥。同时,权威机构CA对发送方的数字证书进行签名后颁发给发送方,发送方的数字证书中包含了发送方的信息以及发送方的公钥。接收方从CA的根证书中获取到权威机构的公钥,用它来解密CA在发送方数字证书上的签名,得到发送方证书的HASH值,与接收方自己计算出的HASH值进行比较,如果一致,就可证明发送方身份的真实性,从而确保了从发送方数字证书中获取到的公钥的可靠性。1.数据私密性(Confidentiality)的实现数据的私密性可通过对数据加密实现。数据加密分为对称加密技术和非对称加密技术。由于非对称密钥的加密方式占用资源较多,速度较慢,只适用于小数据量的加密;而对称密钥加密本身速度快,网络设备整合的对称加密硬件加速卡又进一步提升了对称加密的速度。因此,数据加密一般采用对称加密技术。然而,对称加密技术涉及到“对称密钥”的传送问题,一旦“对称密钥”在传送过程中被攻击者截获,数据也就无私密性可言了。解决“对称密钥“的传送问题,可采用“非对称密钥“加密“对称密钥”后再传送的方式。用“接收者的公钥”加密“对称密钥”,传给接收者后,接收者用自己的私钥解密,获得发送方和接收方共同使用的对称密钥。攻击者就算截获了加密过的对称密钥,由于没有接收者的私钥,也是无法读取对称密钥的真正内容的。2.源认证(Authentication)的实现源认证需要发送方对数据进行数字签名。发送者在发送前先用自己的私钥对数据的HASH值进行加密,再将加密后的HASH值连同数据一起传送给接收者,接收者用发送者的公钥解密HASH值,与自己计算出的HASH值对比,如果一致,再根据发送者是其私钥的唯一拥有者,就证明了HASH值是发送者本人提供的。发送者用自己的私钥对数据的HASH值进行加密,得到的结果就是数字签名。接收方收到发送方发来的数据及对数据的数字签名,并通过发送方的数字证书获取到发送方的公钥。接收方使用发送方的公钥,解密发送方的数字签名,得到发送方数据的HASH值,与接收方自己计算出来的数据HASH值进行比较,如果一致,就可证明发送方的身份,实现对发送方的源认证。3.数据完整性校验(Integrity)的实现要确保数据的完整性,可在数据发送前,先对数据做HASH,接收者收到后,对接收到的数据做HASH,与发送者发来的HASH值进行比较,如果一致,就证明了数据未被篡改,确保了数据的完整性。为确保发送者计算出的HASH值在传送给接收者的过程中没有被篡改。需要结合源认证来实现。因此,实现数据的完整性校验,在PKI的基础上,除了要对数据进行HASH计算,还要结合数字签名的源认证功能。4.不可否认性(Non-repudiation)的实现不可否认性可从私钥的唯一拥有特性,结合公钥基础架构PKI、由权威机构CA颁发的数字证书,以及数字签名来实现。由此可见,在PKI的基础上,数字签名实现了数据的源认证、完整性校验、不可否认性等功能。SSL(SecureSocketsLayer,安全套接层)是一个工作在TCP与应用层之间的安全协议。提供私密性、信息完整性和身份认证。这些特性主要综合运用了各种加密技术,如数字证书、非对称加密算法、对称加密算法和HMAC等实现。可用于加密HTTP、邮件、VPN等。下面,通过安装独立根CA,架设SSL网站,实现加密技术的综合运用。需要启动三台虚拟机,PC1为win2008,用做独立根CA;PC2为win2008,用做网站服务器,PC3为win7,用作客户机。3.5.2SSL应用一、配置CA服务器1.启动第一台虚拟机win2008,用做CA服务器,虚拟网卡连接到Vmnet1,配置IP地址为0。2.如图3-5-1所示,打开服务管理器,点击服务器管理器中的“角色”,再点击“添加角色”。图3-5-1服务器管理器添加角色
3.如图3-5-2所示,勾选“ActiveDirectory证书服务”,点击“下一步”,再点击“下一步”。安装ActiveDirectory证书服务。图3-5-2选择服务器角色4.如图3-5-3所示,默认已经勾选“证书颁发机构”,接着勾选“证书颁发机构Web注册”。
图3-5-3选择证书颁发机构Web注册5.勾选“证书颁发机构Web注册”后,会弹出如图3-5-4所示的“添加角色向导”,询问是否添加证书颁发机构Web注册所需的角色服务和功能,点击“添加所需的角色服务”按钮。
图3-5-4
添加角色向导-添加所需的角色服务6.如图3-5-5所示,点击“下一步”继续。图3-5-5添加角色向导-角色服务7.如图3-5-6所示,因没有安装活动目录,所以默认只“独立”选项可选,点击“下一步”。图3-5-6指定安装类型8.如图3-5-7所示,这是第一台CA,所以选“根CA”,点击“下一步”。
图3-5-7指定CA类型9.如图3-5-8所示,独立根CA需要用自己的私钥为自己的根证书进行签名、在为申请者颁发证书时,也要用自己的私钥进行签名,因此需要选“新建私钥”,然后点击“下一步”。图3-5-8设置私钥
10.如图3-5-9所示,因为要生成密钥对(含公钥、私钥),所以要确定使用哪种非对称密钥算法生成,另外,为证书做数字签字时,需要先对证书内容做HASH运算,再用私钥对HASH值进行加密,所以要选择所用的HASH算法。选择好后,点击“下一步”。图3-5-9为CA配置加密11.如图3-5-10所示,CA的公用名称可自定义,这里定义为“CA1”,可分辨名称后缀可不填写。点击“下一步”。图3-5-10配置CA名称12.如图3-5-11所示,设置有效期为5年,然后,点击“下一步”,随后用默认值,一直点击“下一步”。
图3-5-11设置有效期13.如图3-5-12所示,确认安装选择后,点击“安装”即可。图3-5-12确认安装选择二、配置WEB服务器1.启动第二台虚拟机win2008,虚拟网卡连接到Vmnet1,配置IP地址为1。2.如图3-5-13所示,打开服务管理器,勾选“DNS服务器”和“Web服务器(IIS)”,连续点击“下一步”,直至安装完成。图3-5-13
安装DNS服务和Web服务3.在C:盘中,新建文件夹site1,用于网站的根目录。4.如图3-5-14所示,点击资源管理器中的“组织”/“文件夹和搜索选项”。图3-5-14资源管理器配置为显示扩展名5.如图3-5-15所示,在出现的“文件夹选项”的“查看”选项夹中,取消对“隐藏已知文件类型的扩展名”的勾选,以便确认新建的首页命名为default.htm。
图3-5-15文件夹选项6.如图3-5-16所示,在资源管理器的C:\site1中,新建网站的首页default.htm。
图3-5-16新建文件命名为default.htm7.如图3-5-17所示,在IIS中,停掉默认网站。
图3-5-17停止默认网站
8.如图3-5-18所示,右击“网站”,选择“添加网站”。图3-5-18添加网站9.如图3-5-19所示,输入网站名称“lcvc”,选择内容目录的物理路径为“C:\site1”,点击“确定”按钮。
图3-5-19添加网站的名称和物理路径三、配置DNS服务,新建域名和主机指向1。1.如图3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区团购团长供应链管理方案
- 提交年终总结报告通知函(5篇)范文
- 2026年供应商取消资格告知函(6篇)
- 机械装备制造项目经理项目管控考核表
- 2026年吉林省安全员B证考试题库及答案
- 实验室安全自查管理制度
- 机房巡检管理制度
- 公路工程竣工资料编制规范
- 公共卫生法规与政策、医疗服务体制法规与政考试试题及答案
- 电力监控系统网络安全防护方案
- 文物修缮工程现场监理工作规程
- GB 48147.1-2026矿山隐蔽致灾因素普查规范第1部分:总则
- 2026年国信集团评标专家模拟题及答案详解
- 电气设计强条审图要点速查手册(2026版)
- 换填垫层专项施工方案(3篇)
- 门店托管代运营合同
- 国际政治学概论(第四版)
- 钢结构屋面内天沟更换不锈钢天沟施工方案
- 2026春鲁科版二年级劳动技术全一册每课教案附目录
- 慢性病管理平台构建与应用
- 新里程大学英语听说教程谭思坦课后部分参考答案
评论
0/150
提交评论