8.9 泄露密钥

    本书中所有的协议、技术、算法仅当在密钥(公钥体制中的私钥)保密的情况下安全,如果Alice的密钥丢失、被盗、出现在报上、或以其它方式泄露,则她的所有的保密性都失去了。

    如果对称密码体制泄露了密钥,Alice必须更换密钥,并希望实际损失最小。如果是一个私钥,问题就大了,她的公钥或许就在所有网络的服务器上。Eve如果得到了Alice的私钥,她就可以在网络上冒充Alice:读加密邮件、对信件签名、签合同等等。Eve能很有效地变成Alice。

    私钥泄露的消息通过网络迅速蔓延是最致命的。任何公钥数据库必须立即声明一个特定私钥被泄露,以免怀疑有人用该泄露的密钥加密消息。

    希望Alice能知道她的密钥是何时泄密的。如果KDC正在管理密钥,Alice应该通知它密钥已经泄露。如果没有KDC,她就要通知所有可能接收到她消息的人。有人应该公布在丢失密钥之后再收到她的任何消息都是值得怀疑的,以及其他人也不应该再用与丢失密钥相对应的公钥给Alice发送消息。实际应用中应该采用各种时间邮戳,这样用户就能识别哪些消息合法,哪些是值得怀疑的。

    如果Alice不知道她的密钥泄露的确切时间,事情就难办多了。Alice要求撕毁合同,因为偷密钥者冒名代替她签了名,如果系统允许这样,那么任何人都可以以密钥已泄密为由在签名前撕毁合同。这对于裁决者来说的确是个难题。

    这是非常严重的问题,并且它给Alice带来一个危险信号:将所有身份约束到一个单一密钥上。对Alice来说不同的应用用不同的密钥会更好——就象她钱柜上不同的锁有不同的钥匙一样。该问题的其它解决办法包括生物统计学、限制密钥的作用、时间延迟、会签。

    这些程序和建议很难最佳,但这是我们能做的最好解决办法。所有这些目的就是为了保护密钥,其中最重要的是保护私钥。