打开并验证签名文档

时间:2010-08-18 22:08:13

标签: digital-signature

我已经清楚签署文件的过程。您需要CA颁发的证书。你有一个公钥和私钥。通过私人签名和公众,人们可以打开您签名的文件。当您对文档进行签名时,数学算法会处理该文件,然后生成一个哈希值,稍后使用私钥对此哈希进行加密。最后,我需要将这个加密的哈希值(concat)添加到文档中。

现在,要打开此文档,我需要将加密哈希代码与文档分开。我需要公钥来验证文档的有效性。这对我来说非常清楚。

所以..问题是......从哪里获得公钥?我如何检查谁签署文件??

我是否需要将证书附加到我想唱的文件上? 如果这是真的。这不是一个问题吗?把证书交给每个人?

感谢,

2 个答案:

答案 0 :(得分:1)

您要问的是公钥 - 私钥密码系统。在RSA(一个特定的这样的系统)中,“公共”和“私有”密钥实际上只是两个数字,它们是较大数字的主要因素。由于模幂运算的工作原理(我不打算解释数学),效果是:

  • 使用“私钥”加密的任何内容都可以使用“私钥”进行解密
  • 使用“私钥”加密的任何内容都可以使用“公共”密钥进行解密

它有两种方式。现在,在生成这对之后,你保留其中一个。这是“私人”的。在另一半,您添加一些身份信息。对于X.509(一种特定的证书格式),您可以添加“公用名”和一些辅助信息,例如创建日期。这将添加到证书的“公共”一半。这个证书的一半,公钥,你以某种方式分发。

在文档签名的情况下,分发方法通常是您附加公钥。 “谁签署了文档”由X.509证书“通用名称”字段回答。这看起来像“cn = Joe Blow,o = Widgets Inc,l = Washington,st = DC,c = US”。您没有向所有人提供“证书” - 只是公开部分。让人们做的就是:

  • 验证您的签名
  • 以只有您可以解密邮件的方式加密邮件

这不会让人们伪造消息,使他们看起来是来自你。

答案 1 :(得分:0)

散列不与文档“连接”。各种数据签名标准(PKCS#7,用于通用数据的CAdES,用于XML的XMLDSig,用于PDF文档的PDF规范)描述了将签名数据合并到输出文件中的不同方式。所有这些格式都允许您将公钥(通常是X.509证书)与数据一起包含在内以进行验证。验证者的目标也是检查密钥本身是否有效。或者,用户可能应该知道公钥。

相关问题