(SSL固定)设备上的公钥CA如何检查服务器的证书

时间:2018-11-08 16:49:34

标签: cryptography ssl-certificate

我的设备上的CA如何检查数字签名是真实的还是假的?如果黑客获得了我的数字签名,他们可以将我的数字签名和他们自己的公共密钥结合起来并将证书发送给客户端吗?如果是这样,客户端如何知道证书不是来自正确的服务器?

结论:我想知道从服务器检查数字签名的方法。他们如何使用服务器的CA公钥检查数字签名?

谢谢您的回答。

1 个答案:

答案 0 :(得分:1)

自第一个答案以来,我已经对此进行了进一步更新,以添加更多细节和清晰度。

证书颁发机构(CA)和证书的背景

  1. 证书颁发机构或CA为个人或企业实体颁发证书。 CA形成了一个层次结构,其中顶部是根CA
  2. 证书不能被攻击者篡改,因为证书是由颁发CA的证书进行数字签名的
  3. 根CA具有自签名证书
  4. 根CA签署下一级中间CA证书
  5. 根CA证书和其他各种全球公认的CA证书存储在浏览器,操作系统或应用程序的受信任密钥存储中
  6. 中间CA可能会颁发其他中间CA证书以创建链
  7. 证书链包含到受信任的根CA的最终证书,包括中间的所有中间CA
  8. 要成功验证证书,验证代理必须从证书所有者那里获取链式证书,或者将最终证书保存在其受信任的密钥库中

数字签名提供:

数字证书用于对文档进行数字签名。证书与签名文档一起发送,因此收件人可以验证签名文档的真实性和完整性。

对消息进行数字签名是指使用预定义的算法计算消息的哈希(单向),然后使用证书所有者的私钥对哈希进行加密。因为,除了拥有者本人以外,没有人应该知道证书的私钥,所以没有其他人可以产生可以用证书的公钥解密的相同签名。

因此,数字签名提供了以下三点:

  1. 身份验证-通过验证数字证书(使用如上所述的证书链),收件人知道邮件确实是由受信任方发送的

  2. 不可否认性-消息发送者以后不能否认消息不是由它发送的,因为没有其他人具有消息发送者的私钥,因此没有其他人可以使用相同的私钥对消息进行签名< / p>

  3. 完整性-由于收件人计算的接收消息的哈希值与发件人发送的哈希值(使用发件人的公钥解密后)相同,因此可以证明客户端收到的邮件与发件人发送的邮件完全相同,否则,如果邮件被蓄意的攻击或意外的网络错误篡改,则哈希值将有所不同。

数字签名创建 数字签名由

创建
  • 使用散列函数计算消息的散列(签名所有者希望发送给对方)
  • 使用私钥加密哈希

签名验证

任何经过数字签名的文档的接收者都希望验证签名以确保文档的真实性和完整性。验证可以通过以下方式完成:

  1. 使用相同的哈希函数计算邮件的哈希值

  2. 使用发送者的公钥(证书中可用)解密签名

  3. 计算得出的散列和解密的散列应该相同

因此,只要不破坏证书私钥,它就是一种可靠的机制。

一些技术详细信息

关于证书的两个重要标准是:X.509PKCS12。可以在链接的Wikipedia页面中找到详细信息。

任何人都可以使用Java keytool实用程序创建一个自签名签名。但是,除非收件人将证书添加到其设备信任存储中,否则此类证书或签名将不会在任何地方被信任。