数字签名 与 数字证书

1、数字签名

数字签名的核心目标是验证信息的完整性(Integrity)、认证发送方身份(Authentication)和不可否认性(Non-Repudiation)。它并不为了加密信息内容本身。

其基本原理是:发送方用只有自己才有的私钥对信息的“摘要”进行加密,生成签名;接收方用发送方公开的公钥解密这个签名,得到摘要A,再对接收到的信息计算得出摘要B,最后对比摘要A和摘要B是否一致。

整个流程可以分为两大步:发送方签名接收方验签


第一步:发送方签名流程

假设发送方是 Alice,要发送一份重要合同给 Bob,并需要签名。

  1. 原始信息(Message)

    • Alice 拥有她想要发送的原始信息 M(例如:"我同意以100万元购买此设备。Alice")。
  2. 哈希运算(Hash Function)

    • Alice 的电脑使用一个公开的密码学哈希函数(如 SHA-256)对原始信息 M 进行计算。
    • 生成一个固定长度、唯一的“信息摘要”(Digest),也称为哈希值(Hash Value)。
    • 特点:任何对信息 M 的微小改动,都会产生一个完全不同的摘要。这是一个不可逆的过程。
  3. 签名生成(Signing with Private Key)

    • Alice 的电脑使用她自己的私钥(Private Key) 对这个信息摘要进行加密。
    • 加密后的摘要,就是所谓的数字签名(Digital Signature)
    • 关键点:私钥是绝对保密且只有 Alice 自己拥有的。因此,能用Alice公钥解开的签名,必定是由Alice的私钥生成的。
  4. 发送(Transmission)

    • Alice 将 原始信息 M 和 数字签名 一起发送给 Bob。
    • 注意:原始信息 M 本身可以是明文的,也可以是加密的。数字签名不关心信息内容是否保密,只关心身份和完整性。如果需要保密,则需要再用Bob的公钥对“信息+签名”整体进行加密,这是另一个流程(数字信封)。

第二步:接收方验签流程

Bob 收到了来自 Alice 的信息和签名。

  1. 接收信息

    • Bob 收到了两份东西:原始信息 M' 和 数字签名。(这里用 M' 表示Bob收到的信息,因为它可能在传输中被篡改过)
  2. 解密签名(Decrypting the Signature with Public Key)

    • Bob 使用 Alice 公钥(Public Key) 解密收到的数字签名。
    • 如果解密成功,就能得到一个摘要A。
    • 意义:能成功用Alice的公钥解密,证明这个签名最初一定是用Alice的私钥加密的。这就完成了身份认证
  3. 计算信息摘要(Recomputing the Hash)

    • 同时,Bob 使用与 Alice 相同的哈希函数(如 SHA-256),对他收到的原始信息 M' 进行计算,生成一个新的摘要B。
  4. 对比验证(Comparison)

    • Bob 将第 2 步解密得到的 摘要A 与第 3 步计算出的 摘要B 进行比对。
    • 若相等,说明信息传输过程没有篡改,是由Alice发出,Alice 事后无法否。
    • 若不想等,说明信息在传输中被篡改,或者这个签名根本不是用Alice的私钥生成的。

流程总结图
[发送方:Alice]
原始信息 M --> [哈希函数] --> 信息摘要 --> [用Alice的私钥加密] --> 数字签名
                                                              |
                                                              ↓
                                                将 [M] 和 [签名] 一起发送

[接收方:Bob]
收到 [M'] 和 [签名] --> 两条路径:
       |
       |--> [用Alice的公钥解密签名] --> 得到摘要A
       |
       |--> [对M'进行哈希计算] --> 得到摘要B
                               |
                               ↓
                         [对比摘要A和摘要B] --> 相同则验证成功,不同则失败

简单来说:

  • 数字签名是一种技术,用于验证数据的完整性和签名者的身份。
  • 数字证书是一种数字文件,它像一本护照,用来安全地绑定一个公钥和其所有者的身份,而这个绑定关系本身又由一个受信任的第三方(CA)进行了数字签名

2、数字证书

数字证书,也称为公钥证书或身份证书,其核心作用是解决公钥的信任问题

回想一下数字签名流程:接收方(Bob)需要用发送方(Alice)的公钥来验证签名。但这里存在一个关键问题:Bob 如何确信他拿到的公钥真的属于 Alice,而不是一个冒充者提供的?

数字证书就是为了回答这个问题而诞生的。

数字证书可以理解为一本由官方认证机构颁发的“数字护照”,它包含以下关键信息:

  1. 证书所有者的身份信息:如姓名、组织、电子邮件地址等。
  2. 证书所有者的公钥:这是证书最核心的内容之一。
  3. 证书颁发者(CA)的信息:是哪个机构颁发的这个证书。
  4. 有效期:证书的生效日期和过期日期。
  5. 数字签名:由证书颁发机构(CA)对上述所有信息进行哈希并用CA的私钥加密后生成的签名。这是整个证书可信的根源。

证书颁发机构(CA) 是一个受信任的第三方组织,它的核心职责就是核实实体(个人、网站、公司)的身份,然后为其签发数字证书。操作系统和浏览器都预装了大量受信任的根CA的证书(包含它们的公钥)。


3、数字签名 与 数字证书 的关联

两者的关系可以概括为:数字证书利用数字签名技术来建立其自身的可信度,从而为数字签名流程中的公钥分发提供信任基础。

这是一个层层嵌套的信任链:

  1. CA使用数字签名来签署证书

    • CA在颁发证书给Alice时,会将Alice的身份信息和她的公钥等数据打包,并计算哈希值。
    • CA然后用它自己的私钥对这个哈希值进行加密,生成一个数字签名,并将这个签名附加到证书文件中。
    • 现在,Alice拥有了一个包含她公钥和CA签名的数字证书。
  2. 用户使用数字签名来验证证书

    • 当Bob收到Alice的数字证书时,他需要验证这个证书是否可信。
    • Bob的电脑(浏览器/操作系统)里预存了受信任的根CA的公钥
    • Bob的电脑会:
      • 用CA的公钥去解密证书中的CA签名,得到摘要A
      • 对证书中Alice的身份信息、公钥等数据重新计算哈希,得到摘要B
      • 对比摘要A和摘要B。如果匹配,则证明:
        • 这个证书的内容是完整的,未被篡改。
        • 这个证书确实是由那个受信任的CA颁发的。
      • 至此,Bob就可以信任这本“数字护照”,进而信任里面包含的Alice的公钥
  3. 使用可信的公钥进行数字签名验证

    • 现在Bob确信了证书里的公钥属于Alice,他就可以用这个公钥去验证Alice发送来的信息的数字签名了。

总结与类比

特性 数字签名 数字证书
是什么 一种技术流程 一种数字文件凭证
目的 验证数据/信息的完整性、身份和不可否认性 验证公钥所属者的真实身份,建立公钥信任
核心操作 发送方私钥加密信息的摘要 CA私钥加密证书内容的摘要
验证方式 发送方公钥解密签名并对比摘要 CA公钥解密签名并对比摘要
依赖关系 依赖数字证书来安全地获取可信的公钥 依赖数字签名技术来保证自身内容的可信度

一个简单的比喻:

  • 数字签名 就像一个人在合同上的亲笔签名
  • 数字证书 就像这个人的护照,由官方机构(CA)签发。护照上包含了他的照片(身份)、签名样本(公钥),并且护照本身有官方的防伪印章(CA的数字签名)。
  • 验证过程:你首先检查他的护照(数字证书)是不是真的(用官方印章的样本来核对防伪印章),确保证件本身是真的。确认后,你相信护照里的信息(包括签名样本)是真实的。最后,你拿出护照里的签名样本(公钥)去核对合同上的亲笔签名(数字签名)是否一致。

所以,数字证书是数字签名能够大规模安全应用的基础设施。没有数字证书,公钥分发环节就存在巨大风险,数字签名的身份认证功能也就无从谈起。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容