【问题标题】:Authentication using digital signtures使用数字签名进行身份验证
【发布时间】:2013-12-22 19:58:31
【问题描述】:

我知道一点身份验证理论,但想知道它是如何真正付诸实践的。

这些软件补丁必须定期分发。为确保只有真正的内容才能到达我们的用户,我们被建议在分发之前对我们的内容进行签名。

计划是生成一个公私密钥对。补丁首先由我们的私钥和接收者签名,然后使用我们的公钥对下载的补丁进行身份验证。我们签名的想法是生成补丁的散列并用我们的私钥加密散列。加密后的哈希(签名)将在分发前与补丁一起捆绑。

我们进一步被告知,从 CA 获取我们的公钥的数字证书并将其发布在我们场所的证书服务器上是一种很好的做法。我们被告知 CA 将使用其私钥创建此证书。我们的用户应该从我们的服务器下载公钥证书并使用 CA 的公钥对其进行身份验证。因此,我们的用户会确信他们拥有我们提供的正确公钥来验证补丁的真实性。

最后是问题:

  1. 如何/在哪里可以下载 CA 的确切公钥,以验证从我们服务器下载的公钥证书?

  2. 这些证书有哪些格式?这些是纯文本文件还是 XML 或 ??

【问题讨论】:

  • 请注意,RSA签名生成与散列+加密不同。签名包括散列,然后为签名生成填充,然后使用私有指数进行模幂运算。加密只是填充 用于加密,然后使用公共指数进行模幂运算。至少不要混淆这两种不同的填充机制。
  • @owlstead:点了。澄清一下,我们基本上是在寻找最小/基本的身份验证。在这种情况下,加密哈希似乎可以满足我们的目的。
  • 我没有看到加密哈希比使用签名生成的现有标准实现更容易。我会遵守标准,除非你想最终陷入维护噩梦。此外,使用公钥进行加密通常不需要任何针对侧信道攻击的保护,而签名生成则需要。因此,您也可能会牺牲安全性。

标签: security authentication cryptography digital-certificate


【解决方案1】:

按顺序回答您的问题:

  1. 使用浏览器和 SSL。在这种情况下,您依赖浏览器中已经存在的证书存储。发布您自己证书的指纹可能是个好主意。请注意,您还可以在您的软件中分发证书或证书链。如果软件下载是可信的,那么您甚至可能不需要外部证书颁发机构。但在这种情况下,您的 CA 私钥会非常安全。

  2. X5.09 证书是使用 ASN.1 DER 编码创建的。 DER 是一种二进制编码(文本 ASN.1 定义指定了内容)。证书也经常以 PEM 格式分发。这是二进制证书的 base 64 编码,带有额外的页眉和页脚。

【讨论】:

  • 软件下载不受信任。我们基本上想让我们的用户了解刚刚下载的补丁的来源。如果它来自我们,他们很好。如果它来自其他人,则用户必须决定是否要继续安装。我们在用户 PC 上安装这些补丁的工具将下载我们由 CA 颁发的公钥证书。问题是我们如何使用 CA 公共证书来验证我们自己的公钥证书?例如,威瑞信提供了几类公共根证书。我们如何知道要使用哪一个?
  • 嗯,这很简单:询问 Verisign。您想要签署(创建证书)的证书请求类型称为代码签名证书。我会敦促您在交流中使用该术语。
  • 所以您是说一旦向 CA 发出请求,它将为请求者提供 2 个密钥。第一个
  • 请忽略上面的评论。有什么不对劲。请帮我理解。你是说我给了威瑞信我的公钥,它给了我两个证书。第一个是我与 CA 共享的公钥的公钥证书,第二个是代码签名证书。两个证书都是 DER 或 PEM 格式。在补丁认证过程中,我会先使用代码签名证书对公钥证书进行认证,然后再使用刚刚认证的公钥证书对补丁进行认证。
  • 不,只有一个证书。不幸的是,我无法在这里完全解释 PKI。请尝试查找有关该主题的教程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 2018-03-08
  • 1970-01-01
  • 2020-08-29
相关资源
最近更新 更多