购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.4 密钥管理方法及技术

19世纪,荷兰语言学家Auguste Kerckhoffs von Nieuwenhoff在他的著作 La Crypthographie Militaire 中首先提出了密码分析学的Kerckhoffs原则:攻击者可以知道密码系统的所有细节,包括算法及其实现过程,而密码系统的安全完全依赖于密钥的安全。

现代密码体系的一个基本概念是算法可以公开,而私有密钥必须是保密的。不管算法多么强大,一旦密钥丢失或者出错,不但合法用户不能提取信息,而且可能导致非法用户窃取信息,甚至系统遭到破坏。

一个安全系统不仅要阻止入侵者窃取密钥,还要避免密钥的未授权使用、有预谋地修改和其他形式的操作,并且希望当这些不利的情况发生时,系统能及时察觉。因此密钥管理应解决密钥从产生到最终销毁的整个过程中所涉及的各种问题,包括产生、装入、存储、备份、分配、更新、吊销和销毁。其中最重要且最棘手的是密钥的分配和存储。

3.4.1 基于共享密钥系统的密钥管理方法及技术

密钥必须经常更换,这是安全保密所必需的,否则,即使采用很强的密码算法,同一份密钥使用时间越长,攻击者截获的密文越多,破译密码的可能性就越大。密钥管理就是要在参与通信的各方中建立密钥并保护密钥的一整套过程和机制。密钥管理包括密钥产生、密钥注册、密钥认证、密钥注销、密钥分发、密钥安装、密钥储存、密钥导出及密钥销毁等一系列技术问题。密钥管理的目的是确保使用中的密钥是安全的,即保护密钥的秘密性,防止非授权使用密钥。许多标准化组织提出了一些密钥管理技术的标准,如ISO 11770-X和IEEE 1363。

每个密钥都有其生命周期,有其自身的产生、使用和消亡的过程。在密钥的生命周期中有4个主要的状态:即将活动状态(Pending Active)、活动状态(Active)、活动后状态(Post Active)和废弃状态(Obsolete),如图3-8所示。在即将活动状态,密钥已经生成,但还未投入实际使用。活动状态是密钥在实际的密码系统中使用的状态。在活动后状态,密钥已不能像在活动状态中一样正常使用了,如只能用于解密和验证。废弃状态是指密钥已经不可使用了,所有与此密钥有关的记录都应被删除。

图3-8 密钥的生命周期

密钥安全概念分为两级:第一级是长期的密钥,称为主密钥;第二级和一次会话有关,称为会话密钥。主密钥的管理涉及密钥的产生、注册、认证、注销、分发、安装、存储、导出及销毁等一系列技术问题。会话密钥只与当前的一次会话有关,是为了保证安全通信会话而建立的临时性密钥。所谓密钥的建立就是参与密码协议的双方或多方都得到可用的共享密钥的过程。主密钥的建立由专门的密钥管理机构完成,会话密钥的建立则由参与会话的各方协商完成。密钥的建立是信息安全通信中的关键问题,对安全通信的实现有着重要的影响。下面着重介绍会话密钥的建立方法。

密钥的建立是一个复杂的过程,参与协议的各方可能用直接或者间接的方式进行交流,可能属于同一个信任域,也可能属于不同的信任域,还可能使用可信第三方(Trusted Third Party,TTP)提供的服务。

1.点对点的密钥建立

最常见的密钥建立模型是点对点的密钥建立模型(Point-to-Point Key Establishment),如图3-9所示。如果使用对称密码技术,在点对点的密钥建立模型中,要求在建立密钥之前参与协议的双方事先共享一个对称密钥,以便使用此共享的对称密钥来保护建立密钥时双方的通信。如果使用公钥密码技术,那么参与协议双方也要事先知道对方的公钥。

图3-9 点对点的密钥建立模型

如果用户和可信第三方之间建立了共享密钥,那么可以通过可信第三方的帮助,在任何两个互不认识的用户之间建立一个共享密钥。

2.同一信任域中的密钥建立

信任域是指在一个安全策略约束下的安全环境,参与密钥建立的用户Alice和Bob处于同一信任域内,表明Alice和Bob处于同一个安全策略约束下的安全环境内。设TTP提供密钥的产生、密钥的鉴别、密钥的分发等服务。发送者Alice和接收者Bob分别与TTP共享一个密钥,Alice与TTP的共享密钥为 k AT ,Bob与TTP的共享密钥为 k BT ,Alice和Bob可以有两种方案建立密钥。

方案1 :Alice产生与Bob共享的密钥 k AB ,将密钥 k AB 用Alice与TTP的共享密钥 k AT 加密,然后把加密的结果

传送给TTP。TTP接收到Alice发送的加密消息后,用与Alice共享的密钥 k AT 解密后得到 k AB ,再用与Bob共享的密钥 k BT 加密 k AB ,然后把加密的结果 传送给Bob,或者把加密的结果传送给Alice再由Alice传给Bob。Bob用与TTP共享的密钥 k BT 解密后得到 k AB ,如图3-10所示。

图3-10 方案1的密钥建立过程

方案2 :Alice要求TTP产生密钥 k AB ,TTP产生密钥 k AB 后分别用与Alice共享的密钥 k AT 和与Bob共享的密钥 k BT 加密 k AB ,然后把加密的结果

分别传送给Alice和Bob,或者TTP把加密的结果都传送给Alice再由Alice传送给Bob。Alice和Bob分别用与TTP共享的密钥 k AT k BT 解密后得到 k AB ,如图3-11所示。

图3-11 方案2的密钥建立过程

3.不同信任域中的密钥建立

若参与密钥建立的Alice和Bob处于不同的信任域,应如何实现密钥的建立呢?每个信任域都有各自不同的安全策略,如果可信第三方TTPA和TTPB之间存在信任关系,如共享某个密钥,则Alice和Bob可以通过一系列可信任的通信来建立Alice和Bob之间的共享密钥。

设Alice处于信任域A中,TTPA是信任域A中的可信第三方,Bob处于信任域B中,TTPB是信任域B中的可信第三方,Alice和TTPA之间的共享密钥为 k AT ,Bob和TTPB之间的共享密钥为 k BT ,TTPA和TTPB之间存在共享密钥 k PAB ,如图3-12所示。

图3-12 不同信任域中的密钥建立模型

Alice和Bob密钥建立过程如下。

1)Alice产生与Bob的共享密钥 k AB ,将密钥 k AB 用Alice与TTPA的共享密钥 k AT 加密,然后把加密结果

传送给TTPA。

2)TTPA用与Alice共享的密钥 k AT 解密后得到 k AB ,再用与TTPB共享的密钥 k PAB 加密 k AB ,然后把加密的结果

传送给TTPB。

3)TTPB用与TTPA共享的密钥 k PAB 解密后得到 k AB ,再用与Bob共享的密钥 k BT 加密 k AB ,然后把加密的结果

传送给Bob。

4)Bob用与TTPB共享的密钥 k BT 解密后得到 k AB

4.Shamir三次密钥传递协议

Shamir设计了一种三次密钥传递协议,使Alice和Bob无须事先交换任何密钥即可进行保密通信。这里假设存在一种可交换的对称密码算法,即存在

E A ( E B ( m ))= E B ( E A ( m ))

Shamir三次密钥传递协议描述如下(如图3-13所示)。

图3-13 Shamir三次密钥传递协议

1)Alice用自己的密钥加密key得到密文

c 1 = E A (key),

将密文 c 1 传送给Bob。

2)Bob用自己的密钥加密 c 1 得到密文

c 2 = E B ( E A (key)),

将密文 c 2 传送给Alice。

3)Alice用自己的密钥解密 c 2 得到

c 3 = D A E B E A (key)))= D A E A E B (key)))= E B (key)

c 3 传送给Bob。

4)Bob用自己的密钥解密 c 3 得到key。

3.4.2 基于公钥系统的密钥管理方法及技术

在公钥密码系统中,公钥是公开传播的。公钥的这种公开性为信息安全通信带来了深远的影响,同时也为攻击者提供了可乘之机。例如,攻击者可以用一个假公钥替换用户的真实的公钥。因此,发展安全公钥密码系统的关键问题是如何确保公钥的真实性。我们将从密钥协商和公钥证书两个方面来讨论基于公钥密码系统的密钥管理方法和技术。

公钥密码系统的一个重要应用是分配会话密钥,使两个互不认识的用户可以建立一个共享密钥,然后双方就可以利用该共享密钥保障通信的安全。例如,Alice和Bob相互发送消息,Alice首先建立一个共享密钥key,并用Bob的公钥 k e 加密key得到密文 c = E ( k e ,key),然后把密文 c 传送给Bob。接收方Bob用自己的私钥 k d 解密密文 c 得到共享密钥key= D ( k d , c )。最终,Alice和Bob可以利用共享密钥key来保障双方会话的安全。在这种密钥建立的过程中,只有Alice对密钥的建立有贡献,Bob只是被动地接收Alice发送的密钥。为了增加密钥的随机性,有时需要通信双方都对密钥的建立做出贡献。密钥协商就是这样的一种密钥建立方法。

1.Diffie-Hellman密钥协商协议

Diffie-Hellman密钥协商提供了对密钥分发的第一个实用的解决办法,使互不认识的双方通过公共信道交换信息建立一个共享的密钥。Diffie-Hellman密钥协商是一种指数密钥交换,其安全性基于循环群 中离散对数难解问题。

假设 p 是一个足够大的素数, g 中的本原根, p g 是公开的。Alice和Bob可以通过执行下面的协议建立一个共享密钥。

Diffie-Hellman密钥协商协议如下。

1)Alice随机选择 a ,满足1≤ a p -1,计算 c = g a 并把 c 传送给Bob。

2)Bob随机选择 b ,满足1≤ b p -1,计算 d = g b 并把 d 传送给Alice。

3)Alice计算共享密钥 k = d a = g ab

4)Bob计算共享密钥 k = c b = g ab

例3-11 Diffie-Hellman密钥协商示例

设Alice和Bob确定了两个素数 p =11、 g =7。

1)Alice随机选择 a =3,计算 c = g a =7 3 mod 11=343mod 11=2,并把 c =2传送给Bob。

2)Bob随机选择 b =6,计算 d = g b =7 6 mod 11=117649mod 11=4,并把 d =4传送给Alice。

3)Alice计算共享密钥 k = d a =4 3 mod 11=64mod 11=9。

4)Bob计算共享密钥 k = c b =2 6 mod 11=64mod 11=9。

Diffie-Hellman密钥协商防止了被动敌人的攻击。但是,一个主动攻击者Eve可以截获Alice发送给Bob的消息然后扮演Bob的角色,因为该协议没有提供参与方的认证。在实际应用中,Diffie-Hellman密钥协商可以结合认证技术使用。

2.椭圆曲线Diffie-Hellman密钥协商协议

E 是有限域 F p 上的椭圆曲线,点 P E ,并且点 P 的阶 n 足够大,使得由 P 生成的循环群上的离散对数问题难解, E P 是公共参数。

椭圆曲线Diffie-Hellman密钥协商协议如下。

1)Alice随机选择 a ,满足1≤ a n ,计算 Q = aP 并把 Q 传送给Bob。

2)Bob随机选择 b ,满足1≤ b n ,计算 R = bP 并把 R 传送给Alice。

3)Alice计算共享密钥 k = aR = abP

4)Bob计算共享密钥 k = bQ = abP

例3-12 椭圆曲线Diffie-Hellman密钥协商示例

设有限域 F 11 上的椭圆曲线为

E y 2 x 3 + x +6(mod 11)

其中, p =11,椭圆曲线 E 上点的个数 n =13, P =(2,7)是椭圆曲线 E 的生成元。

1)Alice随机选择 a =3,计算 Q = aP =3(2,7)=(8,3),并把 Q =(8,3)传送给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协议

端-端(Station-to-Station)协议是1992年由Diffie、Oorschot和Wiener提出的,结合了Diffie-Hellman密钥协商和认证,增加了通信双方实体间的相互认证和密钥的相互确认。端-端协议的实现过程如图3-14所示。

图3-14 端-端协议的实现过程

假设 p 是一个足够大的素数, g 中的本原根, p g 是公开的。Alice有密钥对(sk A ,pk A ),sk A 为私钥,pk A 为公钥。Bob有密钥对(sk B ,pk B ),sk B 为私钥,pk B 为公钥。

1)Alice随机选择 a ,满足1≤ a p -1,计算 c = g a 并把{ c }传送给Bob。

2)Bob随机选择 b ,满足1≤ b p -1,计算 d = g b k = c b = g ab ,然后Bob用私钥sk B 和签名算法Sign对 g a g b 进行签名,得到

然后把{ d , E k ( s B )}传送给Alice。

3)Alice收到{ d , E k s B )}后,计算 k = d a = g ab ,解密 E k s B )得到 S B ,并用Bob的公钥pk B 和验证算法Verify验证签名 S B 。如果验证成功,Alice认为她与Bob共享密钥 k 。然后,Alice用私钥sk A 和签名算法Sign对 g b g a 进行签名,得到

然后把{ E k ( s A )}传送给Bob。

4)Bob收到{ E k s A )}后,解密 E k s A )得到 s A ,并用Alice的公钥pk A 和验证算法Verify验证签名 s A 。如果验证成功,Bob认为他与Alice共享密钥 k

4.公钥证书

数字证书在公钥管理技术中扮演了基本的角色,使公钥通过不安全的媒介存储和传输而不会被篡改。数字证书由可信任的签证机构(Certification Authority,CA)使用私钥签名方案签署。每个人都知道签证机构的公钥,签证机构的公钥可以用于验证由该签证机构签署的证书。

公钥证书(Public Key Certificate)是一种包含持证主体标识、持证主体公钥等信息,并由可信任的签证机构签署的信息集合。公钥证书主要用于确保公钥及其与用户绑定关系的安全。

创建证书的时候,首先由用户提出申请,CA审查用户信息,特别是验证用户的公钥是否与用户的私钥匹配。若检查通过,则生成证书并用CA的私钥签名,然后发给用户。领到证书的用户、实体或应用程序使用CA的公钥对证书进行验证,以确保证书的可靠性。因为证书只有具有CA的数字签名,才能保证证书的合法性和权威性(同时也就保证了持有者的公钥的真实性),所以CA必须确保证书签发过程的安全,以保证签名私钥的高度机密,防止他人伪造证书。

公钥证书能以明文的形式进行存储和分配,任何一个用户只要知道可信任的签证机构的公钥,就能验证证书的合法性。如果验证正确,那么用户就可以相信该证书所携带的公钥是真实的,而且这个公钥就是证书所标识的那个主体的合法的公钥。

存储在公钥证书中的最重要的信息有:

· 证书持有者的标识。

· 证书持有者的公钥。

· 签证机构的标识。

· 证书的序列号。

· 证书的有效期。

· 签证机构的签名。

CA的主要任务是:验证与一个公钥相连的实体的真实性;把每个公钥和可识别的名字绑定并注册;为实体颁发公钥证书。当用户Alice向CA申请公钥证书时,Alice需要向CA证明身份,产生公钥和私钥对,并把公钥的一个副本交给CA,或者由CA产生公钥和私钥对,并把私钥交给Alice,然后,CA把公钥和必需的信息一起放在证书里,用CA的私钥签名证书。

Alice可以把公钥证书存储在家里,当需要的时候提供证书。在开放系统中,一种更好的存储公钥证书的方法是证书目录。Alice可以把公钥证书存储在证书目录里以方便查寻。证书目录是一种分布式数据库,通常由CA维护,以确保证书的搜寻和检索的可信。

如果Bob想加密一条消息给Alice或者验证一个据称是Alice产生的签名,Bob可以从证书目录或者从Alice那儿检索证书并验证签证机构的签名。如果验证成功,Bob确信从证书中得到了Alice的公钥并且可以使用这个公钥。

如果Alice的私钥被泄露了,对应的公钥就再也不能用来加密消息了,同时,Alice再也不能用这个私钥签署任何消息。而且,Alice可能否认从此以后用这个私钥产生的任何签名。因此,Alice私钥泄露的事实必须被公布。当然,签证机构需要从证书目录里撤销Alice的证书。然而,证书可能已经被检索,并且还没有过期,不可能通知所有持有Alice证书副本的用户,因为签证机构不知道这些用户。对这个问题的一种解决办法是维护一个证书撤销列表。证书撤销列表登记了相应被撤销的证书的名单。为了保证可信性,签证机构必须对列表签名。

公钥密码技术与对称密钥技术的最大区别就是:用公钥技术加密消息,通信双方不需要事先通过共享的安全信道协商密钥。加密方只要得到接收方的公开密钥就可以加密消息,并将加密后的消息发送给接收方。由于公钥是公开的,因此需要一种机制来保证用户得到的公钥是正确的,即需要保证一个用户的公钥在发布的时候是真实的,在发布以后不会被恶意篡改。公钥管理技术为公钥的分发提供可信的保证。 58wNvsAfVkoBRBjYfm1MgUKsemMdY/r81DCLF7y3uhAzVAXNanX7pigcRGz+zFQZ

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开