我可以用旧(私有)密钥签署新(公共)密钥,以安全地从一个密钥转移到另一个。但据我所知,没有什么能阻止任何获得旧密钥的人作为官方签署不同的新密钥,甚至在我放弃旧密钥之后很久。
如果我撤销旧的私钥,没有人可以做出那个伪造的签名,这很好。但是撤销密钥是否意味着它对新密钥的签名将失效?(以及它制作的每一个签名?)
因此,即使我是“鲍勃”,认识我为“爱丽丝”的人也能说我是一样的。但随后他们看到“爱丽丝”被撤销,在这种情况下,他们必须抛弃所有关于我的知识,无论是爱丽丝还是鲍勃?
我可以用旧(私有)密钥签署新(公共)密钥,以安全地从一个密钥转移到另一个。但据我所知,没有什么能阻止任何获得旧密钥的人作为官方签署不同的新密钥,甚至在我放弃旧密钥之后很久。
如果我撤销旧的私钥,没有人可以做出那个伪造的签名,这很好。但是撤销密钥是否意味着它对新密钥的签名将失效?(以及它制作的每一个签名?)
因此,即使我是“鲍勃”,认识我为“爱丽丝”的人也能说我是一样的。但随后他们看到“爱丽丝”被撤销,在这种情况下,他们必须抛弃所有关于我的知识,无论是爱丽丝还是鲍勃?
处理这个问题的常用方法是使用不同的密钥来签署密钥和签署“有用的”数据。
数据签名密钥位于自动调用的在线服务器上,因此存在被滥用的风险。此密钥定期轮换。原则上,它不需要轮换:如果发生不好的事情,只需撤销它。但在实践中,撤销很难:通常很难确保依赖签名的每一方都能及时看到撤销消息。到期确保即使一方没有看到撤销消息,它也不会长时间接受受损签名。
密钥签名密钥存在于具有严格访问控制的离线服务器上,并且由于它受到更好的保护,因此被泄露的风险非常低。
具有签署其他密钥的密钥的系统称为公钥基础设施。许多系统具有多个级别的签名密钥。最著名的 PKI 生态系统是用于 HTTPS 的生态系统,服务器具有由中间证书颁发机构签名的证书,该证书又具有由另一个 CA 签名的证书,直到您到达根 CA。中间 CA 在线,但运行专门的系统,除了签署证书之外什么都不做。根 CA 证书的密钥被分配给多个员工,这些员工每隔几年就会聚集到一个没有 Internet 连接的保险库中,以生成一个新的中间密钥。
使用 OpenSSL 运行您自己的 CA 并非易事,但它是可行的,并且您会在 Web 上找到许多教程。