我一直在用谷歌搜索数字签名和数字证书(非对称加密)之间的区别,看起来它们是一样的。我想澄清它们是否相同?非常感谢!!!
11 回答
数字签名用于验证消息。它基本上是消息的加密哈希(由发送者的私钥加密)。收件人可以通过对收到的消息进行哈希处理并将该值与解密的签名进行比较来检查消息是否被篡改。
要解密签名,需要相应的公钥。数字证书用于将公钥绑定到个人或其他实体。如果没有证书,签名很容易被伪造,因为收件人无法检查公钥是否属于发件人。
证书本身由受信任的第三方签名,即VeriSign 等证书颁发机构。
让我扩展阿什利的解释。与所有加密货币一样,假设 Alice(发送者)想要向 Bob(接收者)发送一条安全消息
这里有两个问题需要解决。
- 如何加密消息,以便只有 Bob 可以解密它。
- Bob 怎么能确定消息首先来自 Alice,并且没有被传输中的人修改。
这两个问题都可以通过公钥加密来解决。对于 (1),Alice 使用 Bob 的公钥加密消息。当鲍勃收到消息时,他可以用他的私钥安全地解密它。所以用 Bob 的公钥加密并用 Bob 的私钥解密(这是公钥加密中的基本内容)
为了解决 (2),Alice 还发送了一个数字签名以及加密消息。这是按如下方式完成的:
- 通过散列函数(如sha-1)传递原始消息以获得消息摘要
- 使用 Alice 的私钥加密此消息摘要(注意这与使用 Bob 的公钥加密原始消息的方式相反)
当 Bob 收到消息 + 数字签名时,他将:
- 用这个私钥解密消息,然后计算它的消息摘要。让我们将此摘要称为 M1。
- 用 Alice 的公钥解密签名,得到消息摘要。让我们称之为M2。
- 如果 M1 和 M2 相同,Bob 可以确定消息在传输过程中没有被修改,并且确实来自 Alice。
至于数字证书,请注意 Alice 依赖于使用 Bob 的公钥加密原始消息,而 Bob 依赖于 Alice 的公钥来解密签名。他们如何才能确定彼此的公钥?这就是数字证书的用途。它允许受信任的第三方验证/说“Alice 的公钥是 xyz”。
RSA 实验室对我来说最清楚的解释是:
数字签名: 假设 Alice 想向 Bob 发送一个签名的文档或消息。第一步通常是对消息应用散列函数,创建所谓的消息摘要。消息摘要通常比原始消息短很多。实际上,散列函数的工作是获取任意长度的消息并将其缩小到固定长度。要创建数字签名,通常需要对消息摘要进行签名(加密),而不是对消息本身进行签名。
...
Alice 将加密的消息摘要和消息发送给 Bob,她可能加密也可能不加密。为了让 Bob 验证签名,他必须将与 Alice 相同的散列函数应用于她发送给他的消息,使用 Alice 的公钥解密加密的消息摘要并比较两者。如果两者相同,他就成功地验证了签名。如果两者不匹配,则有几种可能的解释。要么有人试图冒充 Alice,要么在 Alice 签名后消息本身已被更改,要么在传输过程中发生错误。
...
数字证书:此外,有人可以假装是 Alice,并使用他声称是 Alice 的密钥对签署文件。为了避免这样的情况,有一些称为证书的数字文档将一个人与一个特定的公钥相关联。
这些引用来自 RSA 实验室,网址为http://www.rsa.com/rsalabs/node.asp?id=2182和http://www.rsa.com/rsalabs/node.asp?id=2277
来自维基百科(重点是我的):
数字签名或数字签名方案是用于证明数字消息或文档的真实性的数学方案。有效的数字签名使收件人有理由相信该消息是由已知的发件人创建的,并且在传输过程中没有被更改。数字签名通常用于软件分发、金融交易以及其他需要检测伪造和篡改的情况。
和
在密码学中,公钥证书(也称为数字证书或身份证书)是一种电子文档,它使用数字签名将公钥与身份绑定在一起——例如个人或组织的名称、他们的姓名等信息。地址等等。该证书可用于验证公钥是否属于个人。
因此,如果我正确理解上述内容,数字签名只是证明文件没有被篡改,而数字证书证明文件实际上来自您。
从概念上讲,它们是对立的。使用数字证书,您可以使用公钥加密并使用私钥解密,这样您就可以确保只有拥有私钥的人才能阅读您的文本。使用数字签名,您可以使用私钥加密并使用公钥解密,这样任何人都可以解密,但只有拥有私钥的人才能加密,因此您知道消息来自拥有私钥的人。
@numan 的回答很好地解释了确保机密性、完整性和身份验证的必要过程。但这并不能回答一个真正的问题。
数字签名的目标是提供这些基本服务,
真实性: 发件人已按照他的要求对数据进行了签名(必须使用发件人的私钥对数据进行加密)。
完整性: 保证数据自签署之日起没有改变。
不可否认性:接收方可以将数据提供给可以接受数字签名作为数据交换确实发生的证据的第三方。此外,发送方(签署方)不能拒绝它已经签署了数据。
它具有确保真实性和完整性的特性,例如,
签名不可伪造:提供签名者(而非其他人)签署文件的证据。
签名不可否认:这意味着,出于法律目的,签名和文件被视为物理事物。签名者以后不能声称他们没有签名。
签名未更改:文件签名后,无法更改。
签名不可重复使用:签名是文档的一部分,不能移动到其他文档。
另一方面,数字证书由某些第三方证书颁发机构(CA)颁发,以验证证书持有者的身份。它实际上包含来自 CA 自己的私钥的证书颁发机构的数字签名。
它还包含与数字证书所有者关联的公钥。
您可能想了解数字证书的结构。
数字签名说明:
Sender : Encrypt(hash(message), priv_key) = dig_sign
Receiver : Decrypt(dig_sign, pub_key) => hash_of_message == hash(message)
数字签名以电子方式生成,用于确保数据的真实性和完整性,例如电子邮件消息。鉴于,数字证书是一种证明网站所有者身份的媒介,它可以防止访问者与发送者进行数据交换。
可以说,它类似于一个人的其他身份证明,如驾驶执照或任何员工身份证。受信任的第三方颁发数字证书,用于确定拥有证书的人的身份。这些颁发数字证书的第三方称为证书颁发机构 (CA)。简单来说,数字证书用于验证网站的可信度,数字签名用于验证信息的可信度。
通常,数字签名系统使用三种算法。首先 - 密钥生成算法用于生成公钥和私钥对。第二 - 签名算法用于生成签名,该签名在发出私钥和消息时使用。第三也是最后一点,签名验证算法用于验证消息、签名和公钥。以下是应用数字签名的常见原因。
1.认证 2.
完整性 3.
不可否认
而数字证书使用数字签名将公钥附加到任何特定实体或个人。与数字证书一起携带的一些信息例如,用于唯一标识每个证书的序列号、证书标识的个人或实体以及用于创建签名的算法。除此之外,它还包含验证证书的所有信息、验证和证书到期日期的 CA。它还包含公钥和指纹,以确保证书不被修改。数字证书主要用于基于 HTTPS 的电子商务网站,以获得网站访问者的信任。
数字证书包含以下内容:
证书持有者姓名
序列号
证书到期日期
证书持有者的公钥副本 证书
颁发机构的数字签名
数字签名和数字证书的关键区别
电子签名
它验证文档的真实性
非对称密钥用于加密和解密文档。
它提供身份验证、不可否认性和完整性。
数字证书
它创建了一个身份并提高了网站的可信度。
验证过程完成后,证书由证书颁发机构颁发。
在此处阅读有关数字签名及其工作原理和数字证书的详细信息。
我最近在研究数字签名和数字证书的一些东西,发现了一个有趣的博客,基于网页可能被破坏的事实,让我在这里尝试说明一下。
首先,让我们看看wiki 上的公钥密码学,
公钥密码学或非对称密码学是一种使用密钥对的密码系统:可以广泛传播的公钥和只有所有者知道的私钥。这种密钥的生成依赖于基于数学问题的密码算法来产生单向函数。有效的安全性只需要保持私钥的私密性;公钥可以在不影响安全性的情况下公开分发。
公钥加密的一种常见用法是公钥加密,我用下面的时序图总结了常见的使用场景:
Bob 有公钥和私钥,他可以将公钥提供给多个消息发送者。对于那些发件人,他们可以在发送之前使用公钥对消息进行加密。只有 Bob 可以使用私钥解密消息。对于其他接收者,他们不知道真正的消息是什么。
公钥密码学的另一个常见用法是数字签名,请查看下图:
相反,Bob 使用私钥加密摘要到签名。如果 Pat 可以使用提供的公钥解密签名,Pat 就知道该文档是由 Bob 发送的。通过将接收到的文档散列到摘要,然后他可以通过将其与解密的摘要进行比较来检查文档是否已被修改。
但是,假设有一个名叫 Doug 的人假装是 Bob 并想欺骗 Pat。他可以以 Bob 的名义向 Pat 发送公钥和数字签名,Pat 怎么知道密钥是否来自 Bob?这就是导入 数字证书的原因。
让我们检查下面的图表:
证书颁发机构充当受信任的第三方。如果数字证书可以被 CA 公钥解密,则表示该数字证书由 CA 颁发。解密后,pat 会检查 Bob 的信誉是否良好,以及 Bob 身份的证书信息是否未被更改。Pat 然后使用 Bob 的公钥进行上述数字签名相关的认证。
如果签名/证书由同一个 CA/受信任实体签名,则没有区别。
如果签名数据中包含一些由CA/可信实体签署的签名数据(例如发送者的公钥)委托发送者(即信任链),也没有区别(或者我们应该称之为签名数据证书?) .
换句话说,证书是一种签名的用法。
数字签名是一种用于验证消息、软件或数字文档的真实性和完整性的技术。作为手写签名或盖章的数字等效物,数字签名提供了更好的安全性,旨在解决数字通信中的篡改和冒充问题
换句话说,数字签名是一种身份验证机制,它使消息的创建者能够附加充当签名的代码。
数字签名如何工作?
数字签名基于公钥加密,也称为 . 使用公钥算法,可以生成相互链接的公钥和私钥。
数字签名之所以有效,是因为公钥加密依赖于两个相互验证的加密密钥。创建数字签名的个人使用自己的私钥来加密与签名相关的数据,解密该数据的唯一方法是使用签名者的公钥。这就是数字签名的验证方式。
数字签名技术要求所有各方都相信创建签名的个人能够将自己的私钥保密。如果其他人有任何机会访问签名者的私钥,那么他们可以以私钥持有者的名义创建欺诈性数字签名。