您正在使用“零知识证明”这一表达方式,但这并不意味着您相信它的意思。
ZKP证明是一种加密协议,证明者通过该协议向验证者展示秘密值的给定属性。如果没有向验证者泄露任何额外信息,则证明是“零知识”。例如,假设有一些秘密整数x ,以及已知整数p(一个大素数)和g的公知值g x mod p。证明者想证明他对x的了解;他可以通过简单地向验证者显示x来做到这一点,但这会将x泄露给验证者,这不会是“零知识”。中描述的协议Wikipedia 页面是一个 ZK 协议,可以达到预期的结果。
因此,“零知识证明”并不是某种较弱的证明。它实际上更强大(或至少“更好”,因为它可以抵抗验证者模仿)。您似乎用一种更简单的“显示密码”身份验证来反对 ZKP,您在某种程度上认为这种身份验证“更强”或“更具身份验证”。你大错特错了。因此,我假设当您谈论“零知识”时,您实际上是在考虑与通常由“零知识”指定的内容没有实际相似性的其他事物。
证书续订可以使用与先前证书相同的公钥,也可以使用新的公钥。如果使用相同的密钥和名称,则可以从 CA 端完成操作,而无需实际与证书所有者交谈:这只是自动扩展用户名称和他的公钥之间的关联。
X.509 中使用的吊销系统实际上相当于在 CA 端自动更新的非常短暂的证书。在“真正的 X.509”形式中,用户的证书实际上是证书本身和足够新鲜的 CRL 或 OCSP 响应的组合,并且 CA 自行“更新”后者。
如果您使用新的、不同的公钥更新证书,那么您需要确保新的公钥确实为用户所有。然后需要一些显式或隐式的身份验证。这可以是显示密码协议;这可以是使用以前的证书签署的续订请求;有很多可能性。这种程序的风险与往常一样:被攻击者冒充。
根据与前一个签名的请求颁发新证书会让人紧张,因为这意味着如果攻击者窃取了前一个私钥,他可以使用它来获得具有自己密钥对的新证书,从而任意扩展他的非法使用权。这确实引出了一个问题,即您为什么要“更新”以及您对这种行动的真正期望。一般来说,用户应该想要更改他的密钥对,因为他不再可以访问以前的密钥,或者它在密码分析方面变得太弱了;在这种情况下,根据定义,用户应该再次使用他对先前私钥的了解之外的其他东西进行身份验证。
撤销是一种紧急机制,旨在遏制潜在的私钥盗窃造成的损害。如上所述,撤销和更新是同一事物的两个方面。撤销等同于拒绝更新。因此,它应该是由异常情况触发的罕见事件。您不想让用户变得复杂,否则他们不会报告密钥盗窃。特别是,不要说或什至假设撤销是昂贵的和/或会导致一些黑标或以其他方式附加到用户的负面声誉。否则,没有人会报告潜在的密钥被盗,情况会更糟。
因此,撤销的主要风险是报告不足。但是,如果任何人都可以触发撤销其他人的证书,那么过度报告也可能是一个问题。存在DoS的潜力。通常的技巧是让记者负责并启发式地处理大规模攻击:
- 当报告私钥被盗时,请让报告的人签名,并保留审计线索。
- 如果短时间内报告的盗窃过多,请触发警报,唤醒系统管理员并进入危机管理模式。
在任何情况下,如果私钥(可能)被盗,那么所有在当前日期仍然有效并包含相应公钥的证书都必须被撤销。过期的证书不需要被吊销。这确实是过期的重点:保持撤销信息很小。
撤销:好吧,不要那样做。它不能可靠地工作,或者根本不能工作。你可以更新:去做吧。如果您可以得出私钥实际上没有被盗的结论,您可以使用相同的公钥进行更新。无论如何,撤销是一种紧急机制,我们处于调查模式。
(根据您的描述,您似乎正在尝试将吊销用作一种授权机制。这很少能很好地结束。)