1、第二十四讲密钥建立技术 密钥建立是两个或多个实体建立一个共享密钥的过程。这个密钥可能用在后续的各种操作之中以实现密码功能,例如,机密性或数据完整性。本讲提要q 动机q 密钥预先分配q 密钥分配q 密钥协商协议q Kerberosq 公钥基础设施(PKI)1 动机 密钥建立协议将产生共享密钥,也称为会话密钥。产生会话密钥的目的包括:(1)限制使用固定密钥的密文数量以阻止攻击。(2)限制由意外泄露会话密钥而造成的相关保密数据的暴露数量。(3)避免长期存储大量不同的秘密密钥(在一个实体可能与大量其他实体通信的情况下),而仅在实际需要时建立密钥。(4)产生不同通信会话和应用的相互独立性。2 密钥预先分
2、配 2.1 简单版本的缺陷 (1)事先需要双方Alice和Bob见面或通过安全信道建立密钥。(2)一旦Alice和Bob见面并交换了信息,则密钥如果在某些情况下泄露,唯一的解决办法就是再次会面交换信息。2.2 Blom密钥预先分配方案 为了克服这些缺点,我们需要一个可信权威,称之为Trent。假定Trent可以和每一个实体建立一条安全信道。因此,如果Trent负责n个实体,每个实体将接受并存储n-1个密钥,而Trent必须安全的发送n(n-1)/2个密钥。一个减少可信权威发送消息数量的方法就是Blom密钥预先分配方案。计算而,计算通信,则想与如果。就有了线性多项式每个实体送给每个实体。并通过安
3、全信道将其发计算数字,对每个实体。和,个秘密的随机数字选择。公开数字每个都分配一个不同的个实体在网上的。体都知道这个素数是一个大素数。每个实令。可以计算秘密密钥和:任何一对实体钥数据和公共数据。个实体每个分配初始密:密钥预先分配方案)(Bob)(Alice)Bob()(Alice(6)(mod)(5)(mod )(mod Trent (4)(mod 3Trent(3)(mod (2)(1)BlomABBABAABUUUUUUUUBAABBArgKrgKBA pxbaxgU prcbb prbaaUpcba prUnpnpKKUUn结果结果摘要摘要机制1机制1 2.2 Blom密钥预先分配方案(
4、续)传统方案TrentU1 U2Unn-1 密钥总和:n(n-1)密钥Blom的方案TrentU1U2UnaU,bU总和:2n 密钥2.2 Blom密钥预先分配方案(续)。产生的密钥就是:和最终使用该方案。,相应的线性多项式为。,因此,。,选择数字假定。,并另。令和考虑网上有两个实体14)()(BobAlice617)(1418)(617 1418 138 Trent3 11 23BobAliceBAABBAABBABBAABAKrgrgKxxgxxgbabacbarrp 例子1例子12.2 Blom密钥预先分配方案(续)。和,可以决定一组任意,因此,这里,。进一步,和,不可能找到的帮助,没有
5、。这里,的取值。和,共谋,他们可以确定和如果实体cbaKprrrrprrrrrrpbaKcbarrrrrrcbaprrprrrpbabcbarrrcbaABBOAOOOBABAOOABOOBABAOEOOEOOEOOE )(mod0)()(mod10011)(mod10011 Oscar Eve )2()(mod0)()(mod100110)(mod100110 OscarEve(1)-评述.评述.2.2 Blom密钥预先分配方案(续)3 密钥分配 Shamir的无密钥算法是一个密钥传输协议,它允许在公共信道上建立密钥。每一方只要掌握自己的秘密。在下面的实例中,将说明Alice通过这一协议传输
6、一个自己产生的密钥给Bob。计算。给计算并传送。给计算并传送。给计算并传送。钥选择一个共享的随机密共享密钥做如下步骤以实现双方协议执行。和逆元再分别计算模。,和,满足和机数字分别选择自己的秘密随和问题不可计算。下的离散对数,满足在模的素数选择并公开全系统共同定义和公开系统参数一次性的建立过程。未经认证秘密的传送到了从结果:密钥条消息。在公共信道上交换和摘要:实体的无密钥协议)(modBob(2.4)Bob )(mod Alice(2.3)Alice)(mod Bob(2.2)Bob)(mod Alice Alice(2.1).(2)1 11)(11)(BobAlice(1.2)(1.1).(1
7、)Bob(Alice3BobAliceShamir 1132312111pKKpKKpKKpKKKbap pb pabappKbaba-协议1协议1AliceBob)(mod 1pKKa)(mod 12pKKb)(mod123pKKa-。)(mod1111111123pKKKKKbababbabab-证证明明.)(mod13pKKb-评述评述.(1)协议的安全依赖离散对数问题的困难性。(2)协议没有提供认证。4 密钥协商协议 密钥协商是一类双方Alice和Bob通过交换消息来建立密钥的方法,而每一方都以交换消息的函数计算得到密钥。事实表明密钥协商协议最好同时提供对密钥的认证服务。4.1 Dif
8、fie-Hellman密钥协商。并计算共享密钥收到。并计算共享密钥收到。给,计算并发送,选择一个随机秘密数字。给,计算并发送,选择一个随机秘密数字共享密钥做如下步骤以实现双方协议执行并将它们公开。的生成元和一个模选择一个适当的素数一次性的建立过程。建立一个共享密钥和结果;双方消息。在公共信道上交换一条和摘要:密钥协商)(mod)(Alice(2.4)(mod)(Bob(2.3)Alice2 1 Bob(2.2)Bob2 1 Alice(2.1).(2).(1)BobAliceBobAlice Hellman-Diffie pKpKpyypxxppKxyyyxxyx-协议2协议2AliceBob
9、)(mod px)(mod py)(mod)(pKyx)(mod)(pKxy4.1 Diffie-Hellman密钥协商(续)4.2 中间人攻击 4.2.1 国际象棋大师问题 Eve最近刚刚认识了国际象棋的棋子,就声称可以同时和两位国际象棋大师对战并保证至少赢一场或平两场。4.2.2 中间人攻击Diffie-Hellman 密钥协商AliceBob)(mod px)(mod py)(mod)(pKyzOB)(mod)(pKxzOAEve)(mod pz)(mod pz)(mod)()(mod)(pKpKzyOBzxOA 讨论讨论.当Alice发送一条由密钥KOA加密的消息给Bob,Bob能使用
10、密钥 KOB解密得到消息。Bob没有理由认为通信不安全。4.2.2 中间人攻击Diffie-Hellman 密钥协商(续)4.3 站对站(STS)协议 为了阻止中间人攻击,我们希望在形成密钥的过程中同时认证Alice和Bob的身份。能够做到这一点的协议通常称为认证密钥协商协议。标准的解决方案是在协议中使用签名。开密钥。可以访问对方真实的公每一方都也有类似密钥对。假定,和,选择,公开和秘密签名密钥每个实体分别选择公开。并将它们的生成元和一个模选择一个适当的素数定义和公开系统参数一次性的建立过程签名。的对消息表示表示对称加密算法。符号。互认证、明确密钥认证结果:密钥协商、实体条消息。交换和摘要:协
11、议站对站 Bob)(Alice RSA(2.2)(2.1).)(2)Alice)(.(1)3BobAlice(STS)AAAAdneppmmSE协议3协议34.3 站对站(STS)协议(续)的共享密钥。确实为与接受签名。如果成功,的并验证,也类似解密收到的。给,的类似的共享密钥,最后发送确实为与接受成功,如果验证的公开密钥验证签名。并用,解密加密数据计算共享密钥。给,享密钥加密,最后发送再用共对两个模幂的连接签名。密钥计算共享,产生一个随机秘密数字。给发送,计算并,选择一个随机秘密数字议直接以失败告终签名过程失败将导致协任何共享认证密钥做如下步骤以实现双方协议执行续协议站对站AliceBob
12、icelA)(Bob(3.4)Bob)(BobAlice Bob)()(mod)(Alice(3.3)Alice)()(mod Bob)(mod)(,21 Bob(3.2)Bob)(mod21 Alice(3.1).)(.(3)(STS)KSESEKSEpKSEppKpyyppxxyxAKyxAKxyBKxyxyBKyyxx-协协议议3 34.3 站对站(STS)协议(续)AliceBob)(mod px),(),(modxyBKyS Ep)(mod)(),(pKSEDVeryxyxAKKA),(yxAKSE)(mod)(),(pKSEDVerxyxyBKKB4.3 站对站(STS)协议(续)
13、4.4 密钥协商协议的安全特性 (1)已知密钥安全。每次对密钥协商协议的运行都产生一个唯一的秘密密钥。这些密钥希望可以限制进行密码分析所能得到的数据数量,也希望能够限制密钥泄露带来的秘密数据泄露数量。协议应该达到这一安全目标即使攻击者已经掌握了一些之前的会话密钥。(2)前项安全。如果一个或多个实体的长期秘密密钥泄露,以前由诚实实体建立的会话密钥不受影响。有时我们区分一个实体长期秘密密钥泄露(半前项秘密)和参与双方实体长期秘密密钥泄露(全前项秘密)两种情况。4.4 密钥协商协议的安全特性(续)(3)密钥泄露冒充。假定Alice的长期秘密密钥泄露。很明显,攻击者知道这个密钥可以冒充Alice,因为
14、其确切掌握标定Alice身份的数据。但是,在某些情况下,我们希望这一泄露不能够让攻击者冒充其他实体欺骗Alice。4.4 密钥协商协议的安全特性(续)(4)未知共享密钥攻击。实体Alice结束协议执行后相信她与Bob共享密钥,虽然这是实际情况,但是Bob却错误的认为他与实体 Eve Alice共享密钥。4.4 密钥协商协议的安全特性(续)5 Kerberos Kerberos是现实中执行的对称密码协议。它的目的是在网络中为用户提供一个高安全强度的认证和安全的密钥交换功能。Kerberos来源于 M.I.T.的大型研发计划Athena计划。Athena的目的是在M.I.T.将计算机工作站形成的大
15、型网络集成到大学学生的课程之中,以允许学生在网上的任何地方自如的访问他们的文件。Kerberos基于客户端/服务器结构。一个客户可以是一个用户也可以是某个完成特定任务的软件程序。服务器是大型实体,功能是向客户提供各种服务。基本Kerberos模型有如下参与者 Cliff:一个客户 Serge:一个服务器 Trent:一个信任权威 Grant:一个授予许可证的服务器。给发送消息许可证的共享密钥。和是,这里,的地址,时间戳的名字,的名字产生话密钥。的会和产生的是的共享密钥,和是这里,计算先检查收到的消息。连接操作符。表示,这里的名字给的名字发送协议执行口令信息的数据库。建立一个存储所有客户一次性的
16、建立过程是一个对称加密算法。符号的身份。认证结果:条消息。交互,和,摘要:各方协议Cliff|Trent GrantTrent)1Cliff(Cliff|Grant TrentGrantCliffTrentCliffTrent)(TrentTrent(3.2)|TrentGrant|Cliff Cliff(3.1).(3)Trent.(2).(1)CliffSerge5SergeGrantTrentCliff Kerberos TGTTKKETGTKKKETEGCGKCGCCGKGC协议4协议4 SergeCliffSerge Serge ServTicket|4)Cliff(Cliff Cl
17、iff(3.5)Cliff ServTicket|)(GrantSergeCliffGrantSergeGrant)()3Cliff(CliffServTicket 2)Cliff(CliffGrant(3.4)Grant|2)Cliff(CliffCliff(3.3)(Kerberos 进行后续的交互。可以使用就和的认证,如果可以通过。给的地址,时间戳的名字,计算并发送。给发送共享的密钥。和产生的是由共享的密钥,和是,这里和,过期时间,的地址,时间戳的名字,他就计算如果通过,。地址,时间戳的的名字,和检查使用他的。给的地址,时间戳的名字,接着计算并发送计算出从续协议CSKCSKCSSCSKC
18、SKKGKCGKEKEKKKEKEETGTKTGTEKTCSCGCGSCGCG协议4协议4TrentGrantCliffSerge的名字的名字Grant|Cliff(1)1 Cliff(Cliff|Grant|)(2)CGKCGKKEKEGC,时间戳地址,的的名字,名字的许可证)1 Cliff(Cliff|2)Cliff(Cliff)3(CGKKKEEGCG,时间戳的地址,名字,的地址,时间戳的的名字,)3 Cliff(Cliff|)()4(CSKCSKKEKESCG,过期时间,时间戳的地址,的名字,)3 Cliff(Cliff|4)Cliff(Cliff)5(CSKKKEESCS,过期时间,
19、时间戳的地址,的名字,时间戳地址,的的名字,6 公钥基础设施(PKI)除非对密钥产生的认证性和合法性有足够的信任,否则公钥密码的优势就十分有限。公钥基础设施或简称PKI是一个框架。这个框架主要由一组策略组成。策略确切定义了关于密码系统运行和密钥产生和发布与证书的规则。6.1 X.509 X.509是设计用来在大型计算机网络中提供目录认证服务的国际标准。由于它本身是ISO/ITU 的一个标准,很多实用产品都基于它开发出来。例如,X.509被用在Visa和Mastercard的安全电子交易标准中。6.1 X.509(续)密钥相绑定。户的身份与特定的公开数字签名,其将目标用权威对数据部分的一个位串。
20、签名部分是证书及标识指定实体身份的文数据有:公开密钥以数据部分至少包含的明组成的一个数据结构。部分和签名部分一个公钥证书是由数据 定义1定义16.1 X.509(续)公钥证书的产生公钥证书的产生 情况1:可信方产生密钥对。可信方为实体产生公钥算法的密钥对,并将公开密钥和绑定身份的公钥证书通过公共信道发给该实体。实体在证明了自己的身份(例如,出示身份证或个人可信照片)后,将通过安全信道得到对应的秘密密钥。6.1 X.509(续)公钥证书的产生公钥证书的产生(续续)情况2:实体产生自己的密钥对。实体产生自己的公钥算法的密钥对,并安全的将公开密钥传送给可信方(例如,通过可信通道或派人送达),这里主要
21、是保证公开密钥的真实性。在验证了公开密钥来源的真实性后,可信方为公开密钥生成证书。6.1 X.509(续)证书链和证书路径6.1 X.509(续)6.2 PGP信任网 PGP,是Pretty Good Privacy的缩写。PGP最初是Zimmerman设计的用来加密和签名电子邮件消息的程序。每个用户都维护一个由与其电子邮件往来的用户的公开密钥组成的密钥环。信任关系信任关系 完全信任:A完全相信 B,并将相信任何使用B的密钥签名的任何密钥。部分信任:A部分相信B 但不全部相信他。在A相信B密钥签的密钥之前,她需要这个密钥有其他实体的签名。不信任:A完全不相信B,因此,不相信来自B的任何密钥的证书。不了解:A不能确定是否应该相信B。6.2 PGP信任网(续)基本思想 PGP的基本依据是如果有足够多的对某个实体的公开密钥签名,就应该相信公开密钥的真实性,因为毕竟不可能所有的签名者都是坏人。6.2 PGP信任网(续)谢谢!