【问题标题】:TLS- Are there two digital signature in play during handshakeTLS-握手期间是否有两个数字签名在起作用
【发布时间】:2018-12-10 13:19:04
【问题描述】:

您能否澄清以下疑问。 来自 IBM 网站, https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_7.1.0/com.ibm.mq.doc/sy10520_.htm

数字签名过程的步骤如下:

The sender computes a message digest and then encrypts the digest using the sender's private key, forming the digital signature.
The sender transmits the digital signature with the message.
The receiver decrypts the digital signature using the sender's public key, regenerating the sender's message digest.
The receiver computes a message digest from the message data received and verifies that the two digests are the same.

因此,在握手期间使用一些随机消息创建了一个数字签名。与之相伴的,CA颁发的个人证书中还有一个数字签名值,称为“数字签名值”。此签名值存在于证书本身中。但是在握手期间还有一个随机消息创建的签名值。为什么即使对于单向 SSL,我们也有 2 次签名。我的理解哪里错了?谢谢。

【问题讨论】:

    标签: ssl tls1.2 signature


    【解决方案1】:

    使用发件人的私钥加密摘要

    每当您看到有关“使用私钥加密”的内容时,都希望其解释存在缺陷。没有“用私钥加密”之类的东西。作者在这里的意思是使用发件人的私钥对摘要进行签名。将签名称为“加密”来自对密码学的非常有限的理解:这两个概念具有不同的属性并且它们使用不同的算法。例如,并非总是可以“解密”签名并恢复已签名的摘要(某些签名算法可能,而其他算法则不可能);您所能做的就是验证某个摘要是否具有某个签名。


    话虽如此,是的,有两个签名。

    1. 证书中的签名将服务器的公钥与服务器的名称联系起来。更准确地说,是指证书颁发机构保证具有一定名称的服务器具有一定的公钥。这向客户保证证书是真实的。任何人都可以向您发送一些服务器名称的有效证书,但证书颁发机构仅在知道名称的所有者也是与其中的公钥关联的私钥的所有者时才签署证书证书。
    2. 握手中摘要的签名将服务器的公钥与此特定握手联系起来。任何人都可以使用自己的私钥签署握手协议,但不能使用其他人的私钥。

    从第二个签名中,客户端知道握手是由拥有某个私钥的人签名的。客户端从第一个签名就知道,某个私钥的拥有者就是某个域名的拥有者。通过将两者放在一起,客户端知道握手是由域名所有者签署的。

    事实上,在典型的握手中可能会有更多的签名。客户如何决定信任 CA?毕竟任何人都可以用自己的私钥签署证书。通常有一个证书:服务器的证书由 CA 签名,CA 有自己的证书,由另一个 CA 签名,依此类推。这以在客户端的操作系统或浏览器中硬编码的一小组 CA 证书结束。这些证书被称为链的。它们通常被称为“根 CA”,但请注意,作为根 CA 并不是 CA 的属性,因为不同的系统可以有不同的根 CA 集。

    有关 TLS 的更多信息,请参阅How does SSL/TLS work?

    【讨论】:

    • 感谢您抽出宝贵时间来很好地解释这一点。 @吉尔斯
    猜你喜欢
    • 2021-10-13
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 2010-09-20
    • 2012-06-11
    相关资源
    最近更新 更多