首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >签名和证书签名是关于什么的?

签名和证书签名是关于什么的?
EN

Security用户
提问于 2022-01-31 10:10:29
回答 1查看 858关注 0票数 3

我知道X.509证书签名过程包括创建一个CSR (证书签名请求),然后发生以下情况:

  1. 要签名的证书中的一些数据是使用散列算法(即SHA-256 )计算的。
  2. 散列结果使用颁发者的私钥签名。
  3. 签名嵌入到客户端证书中。

然而,我仍然不清楚“要签署的证书中的一些数据”和“签名”是什么。

根据我对公钥密码学的基本知识,我知道公钥用于加密,私钥用于解密。但是,这与创建签名和验证签名有什么关系呢?

例如,我可以编写以下代码,也不例外:

代码语言:javascript
复制
usrCer.verify(issuerCert.getPublicKey());

我知道来自usrCer的签名和issuerCert的公钥涉及到这个过程,但是谁能告诉我更详细的具体情况呢?

我的问题是:

  1. 什么是“要签名的证书中的某些数据”?我在SA 证书的哪些部分已签署?上发现了下面的问题,但是我想更深入地挖掘,拿出证书的“部分”并亲自签名。(或者至少检查散列)
  2. 签名由什么组成?它只是签名创建者的公钥和加密的数据吗?签名是否与返回给定公钥的true/false和签名本身有关?
EN

回答 1

Security用户

回答已采纳

发布于 2022-01-31 11:33:46

我还不清楚要签署的证书中有哪些数据

证书是一个具有各种字段的复杂对象。通常,签名加密对象由三部分组成:

  1. TBS (待签署)数据
  2. 签名算法
  3. 签名值

证书结构是在RFC 5280中定义的,特别是在ASN.1模块中:

代码语言:javascript
复制
TBSCertificate  ::=  SEQUENCE  {
  version         [0]  Version DEFAULT v1,
  serialNumber         CertificateSerialNumber,
  signature            AlgorithmIdentifier,
  issuer               Name,
  validity             Validity,
  subject              Name,
  subjectPublicKeyInfo SubjectPublicKeyInfo,
  issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
                       -- If present, version MUST be v2 or v3
  subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
                       -- If present, version MUST be v2 or v3
  extensions      [3]  Extensions OPTIONAL
                       -- If present, version MUST be v3 --  }

TBS数据包括版本、序列号、有效期、主体、发行人、公钥和扩展。

但是,这与创建签名和验证签名有什么关系呢?

相反的进程:用于加密的私钥和用于解密的公钥。这是非对称密码学的特性:一个密钥用于加密,另一个用于解密。哪一个是公共的,哪个是私人的--这只是合乎逻辑的决定,它是双向的。

有人能告诉我更详细的具体情况吗?

发行人在TBS数据上计算单向散列,并使用其私钥加密并生成签名。在验证期间,您将获得颁发者的公钥并对存储在签名中的散列进行解密。然后对TBS数据计算相同的哈希值,并将此哈希值与您从签名中解密的哈希值进行比较。如果它们匹配,那么TBS中的数据就不会被修改,因为签名是由发行者生成的。否则,TBS数据中的数据将在签发人签名后进行修改。

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

https://security.stackexchange.com/questions/259235

复制
相关文章

相似问题

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