我的设备上的CA如何检查数字签名是真实的还是假的?如果黑客获得了我的数字签名,他们可以将我的数字签名和他们自己的公共密钥结合起来并将证书发送给客户端吗?如果是这样,客户端如何知道证书不是来自正确的服务器?
结论:我想知道从服务器检查数字签名的方法。他们如何使用服务器的CA公钥检查数字签名?
谢谢您的回答。
答案 0 :(得分:1)
自第一个答案以来,我已经对此进行了进一步更新,以添加更多细节和清晰度。
证书颁发机构(CA)和证书的背景
数字签名提供:
数字证书用于对文档进行数字签名。证书与签名文档一起发送,因此收件人可以验证签名文档的真实性和完整性。
对消息进行数字签名是指使用预定义的算法计算消息的哈希(单向),然后使用证书所有者的私钥对哈希进行加密。因为,除了拥有者本人以外,没有人应该知道证书的私钥,所以没有其他人可以产生可以用证书的公钥解密的相同签名。
因此,数字签名提供了以下三点:
身份验证-通过验证数字证书(使用如上所述的证书链),收件人知道邮件确实是由受信任方发送的
不可否认性-消息发送者以后不能否认消息不是由它发送的,因为没有其他人具有消息发送者的私钥,因此没有其他人可以使用相同的私钥对消息进行签名< / p>
完整性-由于收件人计算的接收消息的哈希值与发件人发送的哈希值(使用发件人的公钥解密后)相同,因此可以证明客户端收到的邮件与发件人发送的邮件完全相同,否则,如果邮件被蓄意的攻击或意外的网络错误篡改,则哈希值将有所不同。
数字签名创建 数字签名由
创建签名验证
任何经过数字签名的文档的接收者都希望验证签名以确保文档的真实性和完整性。验证可以通过以下方式完成:
使用相同的哈希函数计算邮件的哈希值
使用发送者的公钥(证书中可用)解密签名
计算得出的散列和解密的散列应该相同
因此,只要不破坏证书私钥,它就是一种可靠的机制。
一些技术详细信息
关于证书的两个重要标准是:X.509和PKCS12。可以在链接的Wikipedia页面中找到详细信息。
任何人都可以使用Java keytool
实用程序创建一个自签名签名。但是,除非收件人将证书添加到其设备信任存储中,否则此类证书或签名将不会在任何地方被信任。