我一直在谷歌搜索数字签名和数字证书(非对称加密)之间的区别,似乎它们是相同的。我想澄清它们是否相同?非常感谢!!!
我一直在谷歌搜索数字签名和数字证书(非对称加密)之间的区别,似乎它们是相同的。我想澄清它们是否相同?非常感谢!!!
数字签名用于验证消息的真实性。它基本上是由发送方的私钥加密的消息哈希值。接收者可以通过对接收到的消息进行哈希并将该值与解密的签名进行比较来检查消息是否被篡改。
要解密签名,需要相应的公钥。数字证书用于将公钥绑定到个人或其他实体。如果没有证书,则签名很容易被伪造,因为接收者无法确定公钥是否属于发送方。
证书本身由受信任的第三方机构签名,例如 VeriSign。
对我来说最清晰的解释来自RSA Laboratories:
数字签名: 假设Alice想要向Bob发送一个已签名的文档或消息。第一步通常是将哈希函数应用于该消息,创建所谓的消息摘要。消息摘要通常比原始消息短得多。实际上,哈希函数的工作是将任意长度的消息缩小为固定长度。为了创建数字签名,通常签署(加密)消息摘要而不是消息本身。
...
Alice向Bob发送加密的消息摘要和消息,她可以加密也可以不加密。为了验证签名,Bob必须像Alice一样对她发送的消息应用相同的哈希函数,使用Alice的公钥解密加密的消息摘要并进行比较。如果两者相同,则成功验证了签名。如果两者不匹配,则有几种可能的解释。要么有人试图冒充Alice,要么消息本身在Alice签署后被更改,或者传输过程中发生错误。
...
数字证书:此外,有人可以假装是Alice,并使用他声称是Alice的密钥对文档进行签名。为了避免这种情况,有称为证书的数字文档,将一个人与特定的公钥相关联。
这些引用来自RSA Laboratories的http://www.rsa.com/rsalabs/node.asp?id=2182 和 http://www.rsa.com/rsalabs/node.asp?id=2277
概念上,它们有点相反。使用数字证书,您可以使用公钥进行加密,私钥进行解密,从而确保只有具有私钥的人才能读取您的文本。使用数字签名,您使用私钥进行加密,使用公钥进行解密,这样任何人都可以解密,但只有具有私钥的人才能加密,因此您知道该消息来自具有私钥的人。
Digital signature explained:
Sender : Encrypt(hash(message), priv_key) = dig_sign
Receiver : Decrypt(dig_sign, pub_key) => hash_of_message == hash(message)
签名未被篡改: 文档签名后,就无法更改。
签名不可重用: 签名是文档的一部分,不能移动到其他文档中。
另一方面,数字证书由某些第三方证书颁发机构(CA)颁发,用于验证证书持有人的身份。它实际上包含了认证机构的数字签名,该签名是从CA自己的私钥派生出来的。
它还包含与数字证书所有者相关联的公钥。
您可能想了解有关数字证书结构的信息。
我最近在研究数字签名和数字证书的相关内容,发现了一个有趣的博客。考虑到网页可能会出现问题,让我在这里试着解释一下。
首先,我们来看看维基百科上的公钥密码学:
公钥密码学或非对称密码学是一种加密系统,它使用一对密钥:公钥可以广泛传播,而私钥只有所有者才知道。这些密钥的生成依赖于基于数学问题的加密算法,以产生单向函数。有效的安全性只需要保持私钥的机密性;公钥可以公开分发而不会影响安全性。
公钥密码学的一个常见用途是公钥加密,我用序列图总结了常见的使用场景:
Bob有公钥和私钥,他可以把公钥给多个消息发送者。对于这些发送者,他们可以在发送之前使用公钥加密消息。只有Bob才能使用私钥解密消息。对于其他接收者,他们不知道真正的消息是什么。签名/证书由同一CA/受信实体签署没有区别。
如果签名数据包含一些由CA/受信实体签署的签名数据(例如发送方的公钥),以委托发送方(即信任链),那么也没有区别(或者我们应该称之为签名数据证书?)。
换句话说,证书是签名的一种用法。