带证书签名

Signature with certificate

我想了解它是如何使用证书对文件进行签名的。

我已经了解它是如何为 'basic' 文件签名工作的:

  • Bob wants to send to Alice "I'm signed"
  • Bob hashes "I'm signed", return "ABCDEF"
  • Bob encrypts the hash with his private key, return "101010"
  • Bob sends the encrypted part "101010" to Alice and the message "I'm signed"
  • Alice hashes the file, return "ABCDEF"
  • Alice decrypts the encrypted part "101010" with the public key of Bob, return "ABCDEF"
  • Alice makes match the two value that means that the message is really coming from Bob

我今天和一家公司的工作人员讨论过,该公司处理身份验证产品、令牌、phone 的应用程序、卡片等。

关键是,该公司正在提供两种价值或多或少的证书(取决于他们在流程之上成功识别用户的程度)。

正如我以非常模糊的方式向我解释的那样,"each user needs a certificate to allow him to sign his documents"、"we encrypt with public key"(我认为这一点可能不正确),"the certificate contains the public key"。

我试图通过寻找方案来达到目的:wikipedia scheme

但我越来越迷茫了。

我认为数字签名是用我上面描述的第一种方法进行管理,电子签名是将证书添加到过程中的事实。

但是怎么办?有人可以描述一下步骤吗?

we encrypt with public key

确实如此,因为它被称为非对称加密。每个人(可能)都有 public 密钥,因此可以加密发送给持有私钥的人的消息。

可能让您感到困惑的是混淆的东西:签名和加密

  • Bob 想要发送给 Alice "I'm signed"
  • Bob 哈希 "I'm signed"
  • Bob 需要证书才能进行后续步骤
    • Bob 生成私钥和 public 密钥
    • Bob 生成包含 public 密钥的证书请求并使用私钥对其签名
    • Bob 向 CA 提交请求
    • CA 颁发 证书(使用 CA 私钥签署 Bob 的 public 密钥)
  • Bob 用他的私钥
  • 签署哈希
  • Bob 需要 Alice 的证书才能进行后续步骤
    • Bob 向 Alice 索要她的 public 密钥(证书)
    • Alice 生成私钥和 public 密钥
    • Alice 生成包含 public 密钥的证书请求并使用私钥对其签名
    • Alice 向 CA 提交请求
    • CA 颁发 证书(用 CA 签署 Alice 的 public 密钥 私钥)
    • Alice 向 Bob 发送她的 public 密钥(证书)
  • Bob 使用 Alice 的 public 密钥加密 消息、散列和签名
  • Bob 将加密数据发送给 Alice
  • 爱丽丝用她的私钥
  • 解密数据
  • Alice 使用 Bobs public 密钥
  • 对签名 进行哈希 "I'm signed" 和 验证签名

重点是

  • Alice 是唯一能够读取消息的人,因为她是唯一持有私钥来加密数据的人。
  • Alice 可以确定消息来自 Bob,因为他是唯一持有生成签名的密钥的人。

@daniel-fisher-lennybacon:

这样也对吗:

证书申请程序 * X 是:

  • X 生成私钥和public密钥
  • X 生成 一个包含 public 密钥和 签名的请求 它与私钥
  • X 向 CA
  • 提交 请求
  • X CA 颁发 证书(鲍勃的 public 密钥 + 签名鲍勃的 public 密钥与 CA 私钥)

--- 进程 ---

  • Bob 想要发送给 Alice "I'm signed"
  • 鲍勃 散列 "I'm signed"
  • Bob 用他的私钥
  • 签署哈希
  • Bob 下一步需要 Alice 的证书
    • 爱丽丝继续一个证书请求程序 * 并且发送证书(爱丽丝的public 键)给 Bob
    • Bob 检查 证书的签名与 CA public 密钥
    • 是否正确
  • Bob 使用 Alice 的 public 密钥加密 消息、散列和签名
  • Bob 发送所有加密内容给Alice
  • Alice 解密 内容并获取消息、哈希和签名
  • Alice 需要 Bob 的证书(Bob 的 public 密钥)来验证签名
    • Bob 继续一个证书请求程序 * 并将证书(Bob 的public 密钥)发送给 Alice
    • 爱丽丝检查证书的签名与 CA public 密钥
    • 是否正确
  • Alice 检查来自 bob 的签名与 Bob 的证书(Bob 的 public 密钥)是正确的

对吗?