自签名证书的哪个部分可以信任?

信息安全 证书 自签名
2021-08-31 14:13:10

我想确保文档 B 的发件人与之前向我发送文档 A 的人是同一个人。两份文档均使用自签名证书进行签名。我对知道发件人的真实身份不感兴趣。

当我用证书查看器打开自签名证书时,它会显示证书的主题、颁发者、序列号、主题密钥标识符、公钥(很长的乱码)、公钥的 SHA1 摘要、X.509 数据、SHA1 摘要(什么?)和 MD5 摘要(什么?)。

我知道自签名证书的颁发者可以将任意内容放入(即伪造的)“主题”、“颁发者”、“序列号”字段中,因此它们毫无意义。但我对其他领域一无所知。

例如,如果这两个文档中包含的证书具有完全相同的“公钥的 SHA1 摘要”字符串,这是否意味着它们确实是由同一个人签署的?攻击者可以伪造吗?

4个回答

公钥和私钥的链接方式是,如果两个证书具有相同的公钥,则它们是使用相同的私钥创建的。

因此,如果您假设私钥确实是私有的,那么您可以在证书中信任以识别创建者的部分是public key,并且通过扩展公钥的摘要。

如果两个自签名证书具有不同的公钥,则您无法确定这些证书是否由同一个人创建。

如果两个自签名证书具有相同的公钥,您至少知道创建证书时使用了相同的私钥。如果您假设这个秘密私钥只有一个人知道,您可以推断出同一个人创建了这两个证书。
如果您必须假设多个人可能有权访问同一个私钥,那么您至少知道其中一个证书是由该组中的一个人颁发的,而另一个证书是由同一组中的同一人或不同人颁发的。

除了其他用户提出的观点之外,如果文档本身是用 MD5 或 SHA-1 签名的,那么即使签名有效并且具有相同的公钥(即通常就足够了)。

原因是 MD5 和 SHA-1 都被发现有弱点,可以利用这些弱点使攻击者控制的文档看起来是由原作者签名的。

SHA-1 攻击仍然非常昂贵,因此只能由资金雄厚的攻击者尝试,但 MD5 可以通过相对便宜的硬件来利用(大学研究人员已经进行了有效的现实攻击)。

两种攻击都依赖于签名预言机,因此可能不适用于您的情况,但 MD5 或 SHA-1 是有问题的,特别是如果您有资金充足的对手。

鉴于证书中的公钥与创建者的公钥匹配,我认为函数背后的数学应该让你相对安全。

不过,从您的问题来看,您似乎对 SHA 摘要和数字签名的概念不熟悉(大多数签名都是自签名的)。如果您想学习这些原则,那么有很多网站和 YouTube 视频会有所帮助。基本情况如下。有两个功能,一个用于创建,一个用于检查。创建函数将输入作为消息的 SHA 摘要和创建者的私钥,并将输出作为数字签名。检查功能以消息(它是 SHA 摘要)、创建者公钥和数字签名的形式接受输入,根据数字签名是否有效给出逻辑输出“真”或“假”。另请注意,固定消息的 SHA 摘要不会变化。


但一个简单的答案是,如果证书中的公钥与创建者的公钥匹配,那么你就相对安全了。例如,具有相同 SHA1 摘要的两个公钥非常罕见且难以找到。这可以确保 SHA1 不太可能是薄弱环节,因为您可以交叉检查给定密钥的 SHA1 摘要与从公钥计算得出的密钥(它们应该匹配)。您也可以尝试自行检查问题中提到的各种摘要,以确保证书的合法性。如果数字签名无效,您的操作系统或应用程序应该通过内置函数获取它,如果它不自己应用该函数。因此,总而言之,交叉检查摘要和公钥。对于您最初的问题,如果您相信文档 A 是由合法发件人发送的,那么两个证书的公钥应该匹配。如果攻击者试图伪装成原始发件人,它将显示在摘要和签名中。