撤销密钥后验证加密签名文件

信息安全 公钥基础设施 电子签名
2021-08-26 01:14:50

这主要是出于好奇的问题。如果我今天使用我的私钥签署文件,形成签名,并将该签名与文档一起分发给某人,他们就可以使用我的公钥(他们以安全的方式从带外获得)和签名并验证文件保持不变。到现在为止还挺好。

但是如果验证步骤只是在一段时间后发生,同时我撤销了我的密钥,应该如何处理呢?

一方面,文件是在特定时间善意签署的,如果文件以某种方式加盖时间戳并且时间戳在撤销日期之前并且撤销不是因为密钥泄露,那么撤销不应该自动表示对签名的不信任。

另一方面,假设密钥因为被泄露而被撤销,那么其他人可能会使用我泄露的私钥在密钥的有效期限内使用错误时间戳签署文件。

据我了解,密钥保持“活动”的时间越长,它的安全性就越低,因为暴力破解它的时间越长,签名/加密的次数越多,可用于各种攻击的信息就越多. 现在我明白了,理论上暴力破解密钥所花费的时间应该比宇宙遭受热死的时间要长,但将来总有可能找到捷径。所以我想人们会想要定期撤销密钥。

有没有办法区分上述两种情况?

有没有办法区分因骑自行车而撤销和因妥协而撤销之间的区别?

似乎(从这个问题)定期密钥撤销不再是最佳实践,但我不是 100% 确定我读对了。相反,今天在实践中使用首次使用时的信任和“固定”。上述问题中的答案和评论也清楚地表明没有使密钥过期的机制。虽然对TOFUpinning做了一些简短的阅读,但它似乎并没有影响我的问题。

为了防止以“XY”投诉结束,让我更明确一点。在上面提到的密钥泄露的情况下,我想不出一种方法来可靠地验证文档,即使它是由当时未泄露的密钥签名的。这很容易成为我的知识空白,我想知道是否有技术仍然可以可靠地做到这一点?

2个回答

有没有办法区分因骑自行车而撤销和因妥协而撤销之间的区别?

证书
证书通常包括有效时间,在此期间关联的公钥可以有效使用。大多数证书的发行期限为 1 至 3 年,之后您需要循环使用证书(也可能是相关的密钥)。使用大多数更好的TOFU固定方案,您仍然会看到和检查证书,而不仅仅是信任固定的密钥,以确保密钥实际上仍然有效并且没有过期或撤销(通过OCSPCRL处理)。

但是如果验证步骤只是在一段时间后发生,同时我撤销了我的密钥,应该如何处理呢?

这实际上是一个棘手的问题,需要对文档和数据的签名和验证方式进行一些 (2) 更改。

首先,我们需要更改 OCSP 响应者。目前,您通常只会从 CA 获得“良好”、“未知”、“撤销”或“暂停”作为答案。这显然是不够的,因为您需要知道证书何时被吊销或暂停。有了这些信息,您实际上可以检查签名是否在密钥被泄露之前发出。当然,这仍然存在任何人都可以使用撤销前日期来签署数据的问题。

要解决此问题,您需要一些更可靠的时间戳数据方法,而不是让签名者创建时间戳。您需要通过让受信任的服务签署哈希和当前时间的组合,通过巧妙地链接哈希(如使用证书透明度完成)或通过在块链中插入条目来超出时间戳。

只要您在撤销日期之前有一个带有可信时间戳的(看起来有效的)签名,您就可以放心该签名是有效的,但请注意,您的签名应该包含在发送到时间戳服务的哈希中确保没有人将其撕下并更换。

另一种可能的解决方案是摆脱整个吊销系统,只(专门)使用短期证书,您可以确定如果它被吊销,那么在这个短时间范围内的所有数据都可能被恶意签名。

假设在泄露私钥和撤销公钥之间没有时间延迟,并且有一种方法可以可靠地找出密钥何时被撤销,如果您对签名而不是文件进行时间戳,这可能会起作用。这样,可以证明签名是在您丢失私钥之前进行的。

然而,典型的密钥撤销协议并不适合这种应用。撤销数据库将需要一个时间戳来接收您的撤销,并且它必须签署一份声明,说明最多可以信任哪些时间签名,例如您的系统可能被入侵的最早时间。