数字签名和数字证书有什么区别?

53

我一直在谷歌搜索数字签名和数字证书(非对称加密)之间的区别,似乎它们是相同的。我想澄清它们是否相同?非常感谢!!!

10个回答

79

数字签名用于验证消息的真实性。它基本上是由发送方的私钥加密的消息哈希值。接收者可以通过对接收到的消息进行哈希并将该值与解密的签名进行比较来检查消息是否被篡改。

要解密签名,需要相应的公钥。数字证书用于将公钥绑定到个人或其他实体。如果没有证书,则签名很容易被伪造,因为接收者无法确定公钥是否属于发送方。

证书本身由受信任的第三方机构签名,例如 VeriSign。


72
让我扩展一下Ashley的解释。与所有加密相关的事物一样,假设Alice(发送方)想要向Bob(接收方)发送安全消息。
这里有两个问题需要解决:
1. 如何加密消息,以便只有Bob可以解密。 2. Bob如何确保消息来自Alice而不是在传输过程中被其他人修改。
这两个问题都可以通过公钥密码学来解决。 对于第一个问题,Alice使用Bob的公钥加密消息。 当Bob接收到消息时,他可以使用自己的私钥安全地解密它。 因此,使用Bob的公钥加密,然后再用Bob的私钥解密(这是公钥加密的基本知识)。
为了解决第二个问题,Alice还会随着加密消息发送数字签名。 这样做的方法如下:
1. 将原始消息通过哈希函数(例如sha-1)传递,以获取消息摘要。 2. 使用Alice的私钥加密此消息摘要(请注意,这与如何使用Bob的公钥加密原始消息相反)。
当Bob收到消息和数字签名后,他将:
  • 使用私钥解密消息,然后计算其摘要。我们称之为M1。
  • 使用Alice的公钥解密签名以获取消息摘要。我们称之为M2。
  • 如果M1和M2相同,则Bob可以确定消息在传输过程中未被修改,并确实是来自Alice的。
关于数字证书,注意Alice依赖使用Bob的公钥加密原始消息,而Bob依赖Alice的公钥解密签名。他们如何确信彼此的公钥?这就是数字证书的作用。它允许可信第三方验证/说“Alice的公钥是xyz”。

@numan如果我有一个网站,CA如何验证它是我的网站发送公钥的?(在数字证书验证期间)? - Prajwal
1
非常好的解释! - Snake
@numan 当Bob收到带数字签名的消息时,他将:使用自己的私钥解密消息,然后计算其消息摘要。我们称这个摘要为M1:--> 这个“私钥”是什么?或者它来自哪里?是Bob的还是Alice的?我感到困惑,因为Bob刚刚收到了一条消息,现在我们正在引用“这个”私钥... - RobRen
@RobRen,每个参与方都有自己的私钥。这就是为什么这个密钥被称为“私有”的原因。因此,回答你的问题,Bob总是使用自己的私钥解密消息。很可能,numan打错了字,应该写成他的私钥,而不是这个私钥。 - Stan Mots

22

对我来说最清晰的解释来自RSA Laboratories:

数字签名: 假设Alice想要向Bob发送一个已签名的文档或消息。第一步通常是将哈希函数应用于该消息,创建所谓的消息摘要。消息摘要通常比原始消息短得多。实际上,哈希函数的工作是将任意长度的消息缩小为固定长度。为了创建数字签名,通常签署(加密)消息摘要而不是消息本身。

...

Alice向Bob发送加密的消息摘要和消息,她可以加密也可以不加密。为了验证签名,Bob必须像Alice一样对她发送的消息应用相同的哈希函数,使用Alice的公钥解密加密的消息摘要并进行比较。如果两者相同,则成功验证了签名。如果两者不匹配,则有几种可能的解释。要么有人试图冒充Alice,要么消息本身在Alice签署后被更改,或者传输过程中发生错误。

...

数字证书:此外,有人可以假装是Alice,并使用他声称是Alice的密钥对文档进行签名。为了避免这种情况,有称为证书的数字文档,将一个人与特定的公钥相关联。

这些引用来自RSA Laboratories的http://www.rsa.com/rsalabs/node.asp?id=2182http://www.rsa.com/rsalabs/node.asp?id=2277


17

来自维基百科(强调我的):

数字签名或数字签名方案是一种数学方案,用于证明数字消息或文档的真实性。有效的数字签名使接收者有理由相信该消息是由已知发件人创建的,并且在传输过程中没有被更改。数字签名通常用于软件分发、金融交易和其他重要场合,以便检测伪造和篡改。

在密码学中,公钥证书(也称为数字证书或身份证书)是一份电子文件,它使用数字签名将公钥与身份绑定在一起 ——例如一个人或组织的名称、地址等信息。该证书可用于验证公钥属于某个个人。

因此,如果我正确理解上述内容,数字签名只是证明文档未被篡改,而数字证书证明文档确实来自您。


8

概念上,它们有点相反。使用数字证书,您可以使用公钥进行加密,私钥进行解密,从而确保只有具有私钥的人才能读取您的文本。使用数字签名,您使用私钥进行加密,使用公钥进行解密,这样任何人都可以解密,但只有具有私钥的人才能加密,因此您知道该消息来自具有私钥的人。


我觉得你也可以使用证书的私钥对消息进行签名,然后其他人可以使用证书的公钥验证该消息。 - Kias
2
这是一个非常糟糕的解释。它完全是含糊其辞的 - 在安全主题中应该尽可能避免这种情况。它没有清楚地说明加密/解密什么(我们在任何两个概念中都没有加密消息!)。此外,数字证书的解释只是纯粹错误的 - 我建议阅读其他答案或任何其他来源。我想知道这个答案是如何得到任何赞成票的。 - dingalapadum

6

Digital signature explained:

Sender   : Encrypt(hash(message), priv_key) = dig_sign 
Receiver : Decrypt(dig_sign, pub_key) => hash_of_message == hash(message) 

5
@numan的回答提供了确保机密性、完整性和身份验证所必需的过程的良好解释。但这并没有回答一个真正的问题。
数字签名的目标是提供这些基本服务,
- 真实性:发送者已按其声称签署数据(数据必须使用发送者的私钥加密)。 - 完整性:提供保证数据从签名时起未被更改。 - 不可否认性:接收方可以向某些第三方提供数据,该第三方可以接受数字签名作为数据交换已经发生的证明。此外,发送方(签署方)无法拒绝其已签署数据。
它具有确保真实性和完整性的属性,例如,
- 签名不可伪造:提供证据表明签署者,而不是其他人,签署了文档。 - 签名不能被否认:这意味着,出于法律目的,签名和文档被视为物理事物。签署者不能后来声称他们没有签署它。

签名未被篡改: 文档签名后,就无法更改。

签名不可重用: 签名是文档的一部分,不能移动到其他文档中。

另一方面,数字证书由某些第三方证书颁发机构(CA)颁发,用于验证证书持有人的身份。它实际上包含了认证机构的数字签名,该签名是从CA自己的私钥派生出来的。

它还包含与数字证书所有者相关联的公钥。

您可能想了解有关数字证书结构的信息。


3

我最近在研究数字签名和数字证书的相关内容,发现了一个有趣的博客。考虑到网页可能会出现问题,让我在这里试着解释一下。

首先,我们来看看维基百科上的公钥密码学

公钥密码学或非对称密码学是一种加密系统,它使用一对密钥:公钥可以广泛传播,而私钥只有所有者才知道。这些密钥的生成依赖于基于数学问题的加密算法,以产生单向函数。有效的安全性只需要保持私钥的机密性;公钥可以公开分发而不会影响安全性。

公钥密码学的一个常见用途是公钥加密,我用序列图总结了常见的使用场景:

enter image description here

Bob有公钥和私钥,他可以把公钥给多个消息发送者。对于这些发送者,他们可以在发送之前使用公钥加密消息。只有Bob才能使用私钥解密消息。对于其他接收者,他们不知道真正的消息是什么。
另一种常见的使用公钥密码学的方式是数字签名,请查看下面的图表:

enter image description here

相反,Bob使用私钥将摘要加密为签名。如果Pat可以使用提供的公钥解密签名,则知道该文档是由Bob发送的。通过将接收到的文档哈希为摘要,他可以通过将其与解密的摘要进行比较来检查文档是否已被修改。
然而,假设有一个名叫Doug的人冒充Bob并想欺骗Pat。他可以以Bob的名义向Pat发送公钥和数字签名,那么Pat如何知道该密钥是否来自Bob?这就是数字证书的作用。
让我们查看下面的图表:

enter image description here

证书颁发机构充当可信的第三方。这意味着,如果数字证书可以被证书颁发机构的公钥解密,那么该证书将由证书颁发机构发放。解密后,Pat会检查Bob是否处于良好状态,并且Bob身份的证书信息未被更改。然后,Pat会使用Bob的公钥进行数字签名相关的身份验证,如上所述。

3
数字签名是通过电子方式生成,用于确保数据的真实性和完整性,例如电子邮件。而数字证书是一种用于证明网站持有者身份并保护访问者到发件人之间数据交换的媒介。
可以说它类似于个人的其他身份证明,如驾照或任何员工ID卡。受信任的第三方机构颁发数字证书,以建立拥有该证书的人的身份。颁发数字证书的这些第三方机构称为证书授权机构(CA)。简单来说,数字证书用于验证网站的可信度,数字签名用于验证信息的可信度。
一般来说,数字签名系统使用三种算法。第一是密钥生成算法,用于生成公钥和私钥对。第二是签名算法,用于生成在提供私钥和消息时使用的签名。第三,最后,签名验证算法用于验证消息、签名和公钥的正确性。以下是应用数字签名的常见原因:
1.身份验证
2.完整性
3.不可否认性
而数字证书使用数字签名将公钥附加到特定实体或个人。数字证书所携带的一些信息包括:用于唯一标识每个证书的序列号,由证书识别的个人或实体以及用于创建签名的算法。除此之外,它还包含验证所有证书信息的CA、证书的验证和到期日期。它还包含公钥和指纹以确保证书未被修改。数字证书主要用于基于HTTPS的电子商务网站,以获得网站访问者的信任。
数字证书包含以下内容:
证书持有人姓名
序列号
证书过期日期
证书持有人公钥副本
证书授权机构的数字签名
数字签名和数字证书的关键区别:
数字签名
验证文档的真实性
使用非对称密钥加密和解密文件。
提供身份验证、不可否认性和完整性。
数字证书
创建身份并提高网站的可信度。
证书在验证过程完成后由证书授权机构颁发。

关于数字签名及其工作原理的详细信息,请阅读此处;关于数字证书的详细信息,请在此处阅读。

0

签名/证书由同一CA/受信实体签署没有区别。

如果签名数据包含一些由CA/受信实体签署的签名数据(例如发送方的公钥),以委托发送方(即信任链),那么也没有区别(或者我们应该称之为签名数据证书?)。

换句话说,证书是签名的一种用法。


3
通常在讨论X509 PKI中用于签名和证书的术语中,这种说法是不正确的。 - mkl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接