首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法来验证签名存档的X.509 CoT

方法来验证签名存档的X.509 CoT
EN

Cryptography用户
提问于 2016-09-20 21:48:37
回答 1查看 87关注 0票数 0

在下载档案时,我试图了解验证信任的关键高级细节。

这是我对如何做到这一点的理解:

软件开发人员端的

  1. 从公共CA (如verisign )获得证书
  2. 生成存档的散列,然后使用证书中的私钥加密此字符串,这是“签名”。
  3. 托管供下载的归档文件,以及一个单独的文件,该文件包含证书中的公钥+步骤2中生成的签名。

(用户)客户端上的

  1. 下载并解压缩存档,下载签名+公钥文件
  2. 使用下载的公钥解密下载的签名,保存此值
  3. 迭代嵌入在操作系统中的公共根证书。对于每个根证书,解密签名值并将结果与步骤2中的结果进行比较。
  4. 一旦在3中找到匹配项,您就可以验证作者的私钥是从您在步骤3中找到的CA信任链中降下来的:这都假设软件开发人员使用了CA,我们在客户端OS中有一个嵌入的根证书。

问题:

  1. 上述方法是否有效,还是我忽略了关键细节?
  2. 给定一个空白的客户机,如果我想将公钥+签名+归档组合成一个文件,我可以让客户机理解和解析,那么是否有任何广泛支持的格式来组织这些数据呢?
EN

回答 1

Cryptography用户

发布于 2016-09-21 11:33:39

软件开发人员端的

从公共CA (如verisign )获得证书

是的,您可以使用CA,但也可以承载您自己的CA。你当然需要你的客户信任这个CA。

然而,从长远来看,获得证书可能更经济。

生成存档的散列,然后使用证书中的私钥加密此字符串,这是“签名”。

签名生成通常包含哈希操作。哈希算法是签名生成算法的一个参数。哈希不需要加密,例如,ECDSA不用于加密。

有时使用哈希树代替--数据上的散列不是直接签名的,但哈希包含在也包含元数据的结构中(例如,数据的MIME类型),并且该结构被签名。

托管供下载的归档文件,以及一个单独的文件,该文件包含证书中的公钥+步骤2中生成的签名。

不,你会把公钥留在证书里。您可以使用附加签名或分离签名(见下文)。

(用户)客户端上的

下载并解压缩存档,下载签名+公钥文件

正确的。但公钥文件将是证书。

使用下载的公钥解密下载的签名,保存此值

如上文所示,解密并不总是使用。

迭代嵌入在操作系统中的公共根证书。对于每个根证书,解密签名值并将结果与步骤2中的结果进行比较。

该链可能超过两个证书(包含中间/服务器证书),证书包含一个或多个“颁发者”字段以查找更高级别的证书。因此,不需要搜索自顶向下的根证书。

一旦在3中找到匹配项,您就可以验证作者的私钥是从您在步骤3中找到的CA信任链中降下来的:这都假设软件开发人员使用了CA,我们在客户端OS中有一个嵌入的根证书。

是的,通过验证证书中的签名,还可以验证CRL的撤销,验证证书是否在有效期内,等等。

问题:

上述方法是否有效,还是我忽略了关键细节?

是的,见上文。

给定一个空白的客户机,如果我想将公钥+签名+归档组合成一个文件,我可以让客户机理解和解析,那么是否有任何广泛支持的格式来组织这些数据呢?

对于使用PKIX (使用-Verisign颁发的X5.09证书的公钥基础设施)的系统,最著名的容器格式可能是CMS,即加密消息语法。

当然,现在有各种各样的包管理器(或“商店”)可以描述软件需要如何签名或以其他方式管理。这很可能是,他们反过来使用CMS签署软件,但其他协议也可以使用。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/40118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档