众所周知,公钥机制涉及到一对密钥,即公钥和私钥,如何实现密钥管理是pki服务系统的关键问题。其中,私钥只能由证书持有者秘密掌握,无需在网上传输。而公钥是公开的,需要在网上传送,故公钥体制的密钥管理主要是公钥的管理问题。
在公钥体制的实际应用中,公钥主要有两大类用途:
信息接收者使用发送者的公钥对接收的信息的数字签名进行验证。
信息发送者使用接收者的公钥来加密用于对称加密信息的常规密钥,从而进行加密密钥的传递。
由于公钥所具有的两种不同用途,在实际应用中,需要分别配置用于数字签名/验证的密钥对和用于数据加密/脱密的密钥对,这里分别称为签名密钥对和加密密钥对。这两对密钥由于用途不同,因此,对于密钥的管理也就有着不同的要求。
签名密钥对由签名私钥和验证公钥组成。
签名私钥是发送方身份的证明,具有日常生活中公章、私章的效力。为保证其唯一性,签名私钥绝对不能够做备份和存档,丢失后只需重新生成新的密钥对。验证公钥需要存档,用于验证旧的数字签名。
用做数字签名的这一对密钥一般可以有较长的生命期。
加密密钥对由加密公钥和脱密私钥组成。
为防止密钥丢失时数据无法恢复,脱密私钥应该进行备份,同时还可能需要进行存档,以便能在任何时候脱密历史密文数据。加密公钥则无需备份和存档,加密公钥丢失时,只需重新产生密钥对即可。
这种密钥应该频繁更换,故加密密钥对的生命周期较短。
不难看出,这两对密钥的密钥管理要求存在互相冲突的地方,因此,必须针对不同的用途使用不同的密钥对。尽管有的公钥体制算法(如rsa),既可以用于加密,又可以用于签名,但由于这两对密钥在管理上截然不同的要求,在使用中仍然必须为用户配置两对密钥、其一用于数字签名,另一用于加密。而采用一对密钥,既用于加密,又用于签名,这种做法是不安全的。
用户的公钥可有两种产生方式:
在这种方式中,用户自己生成密钥对,然后将公钥以安全的方式传送给ca。
这种方式是ca替用户生成密钥对,然后将其以安全的方式传送给用户。该过程必须确保密钥对的机密性、完整性和可验证性。该方式下由于用户的私钥为ca所产生,故对ca的可信性有更高的要求。如果是签名密钥,ca必须在事后销毁用户的私钥。
用户在网上可通过两种方式获取通信对方的公钥,以用来传送加密数据,实现安全通信。
在pki环境中,有时用户会丢失他们的私钥。这通常是由于以下原因:
n遗失或忘记口令。虽然用户的加密私钥在物理上是存在的,但实际上不可使用。
n介质的破坏。如硬盘和ic卡损坏。
如果用户由于某种原因丢失了解密私钥,则被加密的数据因无法解开,而造成数据的丢失。例如,在某项业务中的重要文件被对称密钥加密,而对称密钥又被某个用户的公钥加密起来,假如该用户的解密私钥丢失了,这些文件将无法恢复。
为了避免这种情况的发生,pki提供了密钥备份与解密密钥的恢复机制,这就是pki的密钥备份与恢复系统。但值得强调的是,密钥备份与恢复只能针对解密密钥,而签名密钥不能做备份。
密钥的备份与恢复形成了pki定义的重要部分。
密钥/证书的生命周期主要分初始化一颁发一取消三个阶段。
初始化阶段是用户实体在使用pki的支持服务之前,必须经过初始化进入pki。初始化(注册)阶段由以下几部分组成:
n实体注册。
n密钥对产生。
n证书创建和密钥/证书分发。
n证书分发。
n密钥备份。
颁发阶段是私钥和公钥证书一旦被产生即可进入颁发阶段。主要包括:
n证书检索——远程资料库的证书检索。
n证书验证——确定一个证书的有效性。
n密钥恢复——不能正常解读加密文件时,从ca中恢复。
n密钥更新——当一个合法的密钥对将要过期时,新的公/私密钥自动产生并颁发。
正如前面所提到的,证书也存在生存周期。也就是说,一个证书的有效期是有限的。这样规定既有理论上的原因,又有实际操作的因素。
从理论上来说,主要是针对当前非对称算法和密钥长度的可破译性分析。同时,在实际应用中,密钥必须有一定的更换频度,才能得到密钥使用的安全性。因此,在很多pki环境中,一个已颁发的证书需要有过期的措施,以便更换新的证书。这个过程被称为“密钥更新或证书更新”。
对pki用户来说,实践证明用手工操作的方式定期更新自己的证书是一件令人头痛的事情。因为用户常常会忘记自己的证书已过期,他们往往是在实际使用中,经过认证失败时才发现问题,这时为时已晚。为此,用户必须完成密钥更新过程,否则他们无法继续获取pki的相关服务。
为解决密钥更新的复杂性和由人工干预所产生的麻烦,应由pki本身自动完成密钥或证书的更新,完全不需要用户的干预。无论用户的证书用于何种目的,在认证时,都会在线自动检查有效期,当失效日期到来之前的某时间间隔内,自动启动更新程序,生成一个新证书来代替旧证书,并且,新旧证书的序列号也是不一样的。
在很多环境中,对可操作的pki来说,自动密钥更新是十分重要的,它也是pki定义的一个组成部分。
密钥更新发生在证书的颁发阶段。当证书被颁发时,它就被赋予了一个固定的生存期。当证书“接近”过期,就必须颁发一个新的公/私密钥和相关证书,这被称为密钥更新。
所谓“接近”过期,一般是指在证书到达有效期之前的时间“提前量”,这个提前量,通常规定为是整个密钥生存期的20%左右,即一旦密钥生存周期被用到80%时,密钥更新就应发生。随后,新的密钥资料应该被用到更新后的所有的密码操作中。
实践证明,这是一个合理的转变时间,可以防止证书过期而得不到安全服务。我们强调密钥和证书更新应该在当前证书过期之前发生,主要是为了避免任何延时和间隔可能使终端实体在处理交易时产生不必要的中断。
实际上,用做签名目的的私钥也可以有一个给定的有效生存期。这个给定的有效期可以小于或等于相关认证证书的过期时间。如果签名私钥是在它的相关联的认证证书之前过期,则为密钥的更新应该是基于签名私钥的过期时间,而不是认证证书的过期时间,以便使终端实体总是持有一个有效的签名密钥。这个过程也必须是自动的,对终端用户而言,也应该是透明的。
证书更新的概念与证书恢复是不相同的。它们的不同点在于:
在经过上述密钥更新概念的论述之后,我们很容易地会得出以下结论,即经过一段时间之后,每个用户都会形成多个“旧”证书和至少有一个“当前”的证书。这一系列“旧”证书和相应的私钥就组成了用户密钥和证书的历史档案,简称密钥历史档案。
记录整个密钥历史是一件十分重要的事情,比如说甲自己5年前加密的数据或其他人用甲的公钥为甲加密的数据,无法用现在的私钥解密。那么,甲就需要从他的密钥历史档案中得到正确的解密密钥来解密数据。
与密钥更新相同,管理密钥历史/档案也应当由pki自动完成。在一个pki的系统中,让用户自己去查找正确的私钥或用每个密钥去尝试解密数据,这对用户来说是无法容忍的,pki必须保存所有密钥,以便正确地备份和恢复密钥。同时,提供正确密钥的查找以便解密数据。
因为加密密钥最后要过期,所以如果没有采取适当措施,没有将已过期的密钥采取适当办法存储起来,就存在着加密后的数据可能变得无法恢复的危险。因此,即使密钥资料过期了,可靠地和安全地储存它们是必须的。在pki中称为密钥历史。
对要保存密钥历史的需求,主要是面向数据加密的服务。具体地说,就是只有被用作解密的私有密钥资料才被存储,其目的是,在将来对加密密钥已加密的数据进行恢复。而对于那些用于数字签名目的的密钥只能够通过密钥档案,适当地满足这种要求。
密钥档案是指对被ca或其他信任机构所支持的密钥资料(包括密钥或证书)的长期储存。
密钥档案与密钥历史是不同的:
另外,在此必须指出的是,当试图验证一个已过期的密钥资料所创建的数字签名时,密钥档案设备是必需的。因为,在这种情况下,要求恢复对该数字签名有用的公钥证书。