8.12 公开密钥的密钥管理

    公开密钥密码使得密钥较易管理,但它有自己的问题。无论网络上有多少人,每个人只有一个公开密钥。如果Alice想传送一段信息给Bob,她必须知道Bob的公开密钥,这有以下几种方式:

    ——她可以从Bob处获得。

    ——她可以从中央数据库获得。

    ——她可以从她自己的私人数据库获得。

    2.5节讨论了基于Mallory用自己的密钥代替Bob密钥引起的针对公钥算法的多种可能的攻击。该攻击是Alice想给Bob发送信息,她进入公开密钥数据库获得了Bob的公开密钥。但是Mallory偷偷摸摸地用他自己的密钥代替了Bob的(如果Alice直接向Bob询问,Mallory必须截取Bob 的通信,并用他的密钥取代Bob的)。Alice使用Mallory的密钥加密她的消息,并传给Bob,Mallory窃听到消息,破译并阅读该消息。他再重新用Bob的密钥加密,并传给Bob,Alice与Bob都被蒙在鼓里。

公钥证书

    公钥证书是某人的公开密钥,由一个值得信赖的人签发。证书可用来防范用一个密钥替换另一个密钥的攻击[879]。Bob的证书在公钥数据库中包含比他的公钥更多的数据,它含有关于Bob姓名、地址等等信息,并由Alice相信的某个人签名:Trent(通常作为证书机关或CA)。通过对Bob的密钥及其有关信息签名,Trent证实有关Bob的信息是正确的,且公钥属于Bob而非其他人的。证书在许多公钥协议中,如PEM[825](参见24.10节)和X.509[304](参见24.9节)扮演了重要的角色。

    这类系统存在一个复杂的非密码学的问题:证书到底意味着什么?或者换个角度,谁值得信任,他给谁发证书?任何人都可以给其他人签发证书,但总得需要一些办法过滤掉那些值得怀疑的证书:例如,由别的公司的CA给公司雇员签发的证书。一般情况下,一个证书链是这样传送信任的:一个唯一的可信任的实体认证多个可信任的代理机构,这些机构再认证一些公司CA,最后这些公司的CA再认证他们的雇员。

    下面是一些值得思考的问题:

    ——通过某人的证书能够对他的身份信任到什么程度 ?

    ——某人与给他公钥证书的CA之间是什么关系?怎样从证书中断定这种关系?

    ——谁可以被信任作为证书链的最高层:唯一的可信任实体?

    ——证书链可以有多长?

    理想的情况是,Bob在CA签发证书之前遵循某种鉴别程序。另外,各种时间邮戳或证书有效期对防止密钥泄露是很重要的[461]。

    使用时间邮戳是远远不够的。密钥或者因为泄露或者由于管理的原因在没有到期之前就已经无效。 所以,CA保存一个合法的证书清单是很重要的,这样用户就可以定期的查看它。密钥撤消仍然是很难解决的问题。

    使用一个公钥/私钥密钥对仍然是不够的。当然,任何好的公钥密码的实现需要把加密密钥和数字签名密钥分开。分离密钥要考虑到不同的安全级别、有效期、备份过程等等。有人或许用储存在智能卡中的2048-比特的密钥给消息签名,并能保密20年,然而他或许用储存在计算机中的只能保密6个月的768-比特的密钥给它加密。

    同样,单独一对加密和签名密钥还是不够的。象身份证一样,私钥证明了一种关系,而人不止有一种关系:Alice分别可以以私人名义、Monolith公司的副总裁 、和她的组织的主席名义给某个文件签名。其中有些密钥比其他的密钥更有价值,所以它们更应该更好地保护。Alice必须将工作密钥的备份储存在公司的安全官那里;但她并不想公司拥有她用来对抵押契据签名的密钥。就象她口袋里有多把物理钥匙一样,Alice也将拥有多个密码密钥。

分布式密钥管理

    在有些情况,进行集中密钥管理是不可能的,或许没有Alice和Bob都相信的CA,或许他们只相信他们的朋友,或许他们谁都不相信。

    分布式密钥管理,如用于PGP(参见24.12),通过“介绍人”解决了此问题。介绍人是系统中对他们朋友的公钥签名的其他用户。例如,当Bob产生出他的公钥时,把副本给他的朋友Carol和Dave,他们认识Bob,两人分别在Bob的密钥上签名并给Bob一个签名副本。现在,当Bob把他的密钥送给Alice这个新来者时,他就将两个介绍人的签名一起给Alice。如果Alice也认识并相信Carol,她有理由相信Bob的密钥是合法的。如果Alice不太认识和信任Carol和Dave,她也有理由认为Bob的密钥有效。如果她既不认识Carol也不认识Dave便没有理由相信Bob的密钥。

    随着时间的推移,Bob将收集更多的介绍人。如果Alice和Bob在同一个社交圈子里,Alice很可能会认识Bob的介绍人。为了防止Mallory替换Bob的密钥,介绍人必须在签名前确信密钥是属于Bob的。也许介绍人需要面对面地收到密钥或通过电话证实它。

    此机制的好处是不需要人人都得相信的CA。缺点就是当Alice接收到Bob的密钥时,并不能保证她认识介绍人中的哪一个。因此就不能保证她相信密钥的合法性。