在数字签名安全模型中,如何确保公钥来自发送者?

Posted

技术标签:

【中文标题】在数字签名安全模型中,如何确保公钥来自发送者?【英文标题】:How the public key can be ensured being from sender in the digital signature security model? 【发布时间】:2012-02-12 02:13:58 【问题描述】:

我阅读了一篇关于数字签名的文章 (link) 并有如下问题。

假设 Alice 想向 Bob 发送一条消息。她需要让 Bob 知道该消息来自她。所以她用她的私钥将散列消息加密成证书。然后 Bob 可以在收到消息时用公钥对消息进行解密。如果消息的哈希码与从证书中解密的哈希码匹配,Bob 就可以知道它来自 Alice。这里我们假设 Bob 已经知道公钥。如果公钥的传输已经受到攻击怎么办? Bob 可能使用错误的公钥来解密错误的消息并从 Alice 那里得到该消息。是否有任何协议或策略来避免对公钥的攻击?我们可以吗?

【问题讨论】:

Security.SE 可能会更好。 或Crypto.SE。 【参考方案1】:

是的,公钥的真实性是应用密码学的关键组成部分。我可以发布一个公钥,上面写着“我是你银行的网站,相信我”,但你不应该真的相信它。已经开发了不同的方案来建立公钥的认证。一种方法是 PGP 和 GnuPG 中的 web of trust model,其他方法是 PKI 和 Kerberos。这些方法之间的主要区别之一是您信任的地方。我仅提供简化说明,您必须阅读它们才能了解确切的详细信息(您不会将安全性建立在极短的摘要上,对吗?)。

信任网络中有一些你信任的人,并且你(理想情况下)亲自验证了他们的公钥。如果其他公钥已由您最初信任的多个人签名,则您可以信任它们。使用这些受信任的人,您可以检查越来越多的密钥。

PKI(个人密钥基础架构)中,您信任多个 证书颁发机构 (CA) 并接受他们的公钥。您相信他们会在签署公钥之前彻底检查密钥持有者的身份。公钥 + 来自 CA(和一些其他数据)的签名的组合形成了一个证书。 PKI 在SSL/TLS 中使用,它是安全网络的底层基础设施。当您在 Web 界面上阅读邮件、进行网上银行等时使用它。如果是 CA is compromised,那么 CA 签署的每个证书都是不安全的。

Kerberos 专为计算机网络而设计,密钥服务器 是单点信任。它为客户端和服务器提供相互身份验证和唯一的对称加密密钥。密钥服务器通过仅在密钥服务器和客户端之间共享的秘密来检查客户端的身份。例如,在 Windows、AFS、网格计算中使用 Kereberos。

【讨论】:

【参考方案2】:

您的回答让我对这个问题有了很多了解。而且,我想把***链接http://en.wikipedia.org/wiki/X.509#Security放在这里。因为文章中有一句话解决了我的问题“谁证明了证书颁发机构”

这是自签名证书的示例,因为颁发者和主题是相同的。没有办法验证这个证书,除非它自己检查它;相反,这些***证书由 Web 浏览器手动存储。 Thawte 是 Microsoft 和 Netscape 都认可的根证书颁发机构之一。此证书随网络浏览器提供,默认受信任。

以防万一有人有同样的问题。

【讨论】:

以上是关于在数字签名安全模型中,如何确保公钥来自发送者?的主要内容,如果未能解决你的问题,请参考以下文章

安全-数字签名

安全与加密之gpg,ssh服务

中间攻击预防的数字签名人

数字信封工作原理

数字签名

部署PKI与证书服务给网页加“s”