2.3.2 基于公钥系统的密钥管理方法及技术
公钥密码系统的一个重要应用是分配会话密钥,使两个互不认识的用户可以建立一个共享密钥。
1.Diffie-Hellman密钥协商
Diffie-Hellman密钥协商提供了对密钥分发的第一个实用的解决办法,使互不认识的双方通过公共信道交换信息建立一个共享的密钥。Diffie-Hellman密钥协商是一种指数密钥交换,其安全性基于循环群Z*p中的离散对数难解问题。
假设p是一个足够大的素数,g是Z*p中的本原根,p和g是公开的。Alice和Bob可以通过执行下面的协议建立一个共享密钥。
Diffie-Hellman密钥协商协议如下。
(1)Alice随机选择a,满足1≤a≤p-1,计算c:=ga并把c传送给Bob。
(2)Bob随机选择b,满足1≤b≤p-1,计算d:=gb并把d传送给Alice。
(3)Alice计算共享密钥k:=da:=gab。
(4)Bob计算共享密钥k:=cb:=gab。
例2-12 Diffie-Hellman密钥协商示例。
设Alice和Bob确定了两个素数p:=11,g:=7。
(1)Alice随机选择a:=3,计算c:=ga:=73 mod 11:=343 mod 11:=2,并把c=2传送给Bob。
(2)Bob随机选择b:=6,计算d:=gb:=76 mod 11:=117 649 mod 11:=4,并把d=4传送给Alice。
(3)Alice计算共享密钥k:=da:=43 mod 11:=64 mod 11:=9。
(4)Bob计算共享密钥k:=cb:=26 mod 11:=64 mod 11:=9。
Diffie-Hellman密钥协商防止了被动敌人的攻击。但是,一个主动攻击者Eve可以截获Alice发给Bob的消息然后扮演Bob的角色,因为该协议没有提供参与方的认证。在实际应用中,Diffie-Hellman密钥协商可以结合认证技术使用。
2.椭圆曲线Diffie-Hellman密钥协商
设E是有限域Fp上的椭圆曲线,点P∈E,并且点P的阶n足够大,使得由P生成的循环群上的离散对数问题难解,E和P是公共参数。
椭圆曲线Diffie-Hellman密钥协商协议如下。
(1)Alice随机选择a,满足1≤a≤n,计算Q:=a P并把Q传送给Bob。
(2)Bob随机选择b,满足1≤b≤n,计算R:=bP并把R传送给Alice。
(3)Alice计算共享密钥k:=aR:=abP。
(4)Bob计算共享密钥k:=bQ:=abP。
例2-13 椭圆曲线Diffie-Hellman密钥协商示例。
设有限域F11上的椭圆曲线为
E:y2≡x3+x+6(mod 11)
其中,p=11,椭圆曲线E上点的个数n=12,P=(2,7)是椭圆曲线E的生成元。
(1)Alice随机选择a:=3,计算Q:=a P:=3(2,7):=(8,3),并把Q=(8,2)传送给Bob。
(2)Bob随机选择b:=6,计算R:=bP:=6(2,7):=(7,9),并把R=(7,9)传送给Alice。
(3)Alice计算共享密钥k:=aR:=3(7,9):=(3,6)。
(4)Bob计算共享密钥k:=bQ:=6(8,3):=(3,6)。
3.端-端协议
端-端(Station-to-Station)协议是1992年由Diffie、Oorschot和Wiener提出的,结合了Diffie-Hellman密钥协商和认证,增加了通信双方实体间的相互认证和密钥的相互确认。
假设p是一个足够大的素数,g是中的本原根,p和g是公开的。在签名方案(Sign,Verify)中,Alice有密钥对(skA,pkA),skA是签名用的私钥,pkA是验证签名的公钥。Bob有密钥对(skB,pkB),skB是签名用的私钥,pkB是验证签名的公钥。
端-端协议(如图2-16所示)如下。
(1)Alice随机选择a,满足1≤a≤p-1,计算c:=ga并把{c}传送给Bob。
(2)Bob随机选择b,满足1≤b≤p-1,计算d:=gb,k:=cb:=gab,Bob用密钥skB签名ga和gb的连接得到
然后把{d,Ek(sB)}传送给Alice。
(3)Alice收到{d,Ek(sB)}后,计算k:=da:=gab,解密Ek(sB),并验证Bob的签名sB。如果验证成功,Alice认为她与Bob共享密钥k。然后,Alice用密钥skA签名gb和ga的连接得到
然后把{Ek(sA)}传送给Bob。
(4)Bob收到{Ek(sA)}后,解密Ek(sA),并验证Alice的签名sA。如果验证成功,Bob认为他与Alice共享密钥k。
图2-16 端-端协议
4.公钥管理技术
公钥密码技术与对称密钥技术的最大区别就是用公钥技术加密通信的通信双方不需要事先通过共享的安全信道协商加密密钥。加密方只要得到接收方的公开加密密钥就可以加密并将加密的消息发送给接收方。由于加密公钥是公开的,因此需要一种机制保证用户得到的公钥是正确的,即需要保证一个用户的公钥在发布的时候是真实的,在发布以后不能被其他人恶意篡改。公钥管理技术为公钥的分发提供可信的保证。
一个可信的第三方CA(Certification Authority)是必需的。CA是离线的,提前准备信息以保证Alice和Bob在协议执行过程中可以得到对方的公钥。离线的可信任的第三方CA是一个签证机构,它的任务是:
①验证与一个公钥相连的实体的真实性;
②把每个公钥和可识别的名字绑定并注册;
③产生一方的公钥和私钥。
数字证书在公钥管理技术中扮演了基本的角色,使公钥通过不安全的媒介存储和传输而不会被篡改。数字证书由签证机构使用公钥签名方案签署。每个人都知道签证机构的公钥。签证机构的公钥可以用于验证由该签证机构签署的证书。公钥证书(Public Key Certificate)是一种包含持证主体标识、持证主体公钥等信息,并由可信任的签证机构CA签署的信息集合。公钥证书主要用于确保公钥及其与用户绑定关系的安全。
公钥证书能以明文的形式进行存储和分配,任何一个用户只要知道签证机构的公钥,就能验证对证书签名的合法性。如果验证正确,那么用户就可以相信那个证书所携带的公钥是真实的,而且这个公钥就是证书所标识的那个主体的合法的公钥。
存储在公钥证书中的最重要的数据有:
①证书持有者的标识;
②证书持有者的公钥;
③签证机构的标识;
④证书的序列号;
⑤证书的有效期;
⑥签证机构的签名。
(1)证书生成
Alice向签证机构CA证明身份,产生公钥和私钥对,并把公钥的一个副本交给CA,或者由CA产生公钥和私钥对,并把私钥交给Alice,然后,CA把公钥和必需的信息一起放在证书里,用CA的私钥签名证书。
(2)证书存储
Alice可以把证书储存在家里,当需要时提供证书。在开放系统中一种更好的方法是提供证书目录,并且把证书储存在目录里。证书目录是一种分布式数据库,通常由签证机构维护,以确保证书的搜寻和检索。
(3)证书使用
如果Bob想加密一条消息给Alice或者验证一个据称是Alice产生的签名,Bob可以从证书目录或者从Alice那儿检索证书并验证签证机构的签名。如果验证成功,Bob确信从证书中得到了Alice的公钥并且可以使用这个公钥。
(4)证书撤销
如果Alice的私钥泄露了,对应的公钥就再也不能用来加密消息了,同时,Alice再也不能用这个私钥签署任何消息。而且,Alice可能否认从此以后用这个私钥产生的任何签名。因此,Alice私钥泄露的事实必须被公布。当然,签证机构将从证书目录里撤销Alice的证书。然而,证书可能已经被检索,并且还没有过期,不可能通知所有持有Alice证书副本的用户,因为签证机构不知道这些用户。对这个问题的一种解决办法是维护一个证书撤销列表。证书撤销列表登记了相应被撤销证书的名单。为了保证可靠性,签证机构须对列表签名。