TLS-握手期间是否有两个数字签名在起作用

时间:2018-12-10 13:19:05

标签: ssl tls1.2 signature

能否请您澄清以下疑问。 在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次签名。我的理解错在哪里?谢谢。

1 个答案:

答案 0 :(得分:0)

  

使用发送者的私钥对摘要进行加密

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


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

  1. 证书中的签名将服务器的公共密钥与服务器的名称绑定在一起。更确切地说,这意味着证书颁发机构保证具有特定名称的服务器具有特定的公共密钥。这向客户保证证书是真实的。任何人都可以向您发送有关 some 服务器名称的有效证书,但是证书颁发机构仅在知道名称的所有者也是与该服务器中的公钥关联的私钥的所有者的情况下对证书进行签名。证书。
  2. 握手中摘要的签名将服务器的公钥与此特定的握手联系在一起。任何人都可以使用自己的私钥签名握手,但不能使用他人的私钥签名。

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

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

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