private/public 密钥、CSR、CA、CERT 和签名如何相互关联?

How does private/public keys, CSRs, CAs, CERTs and signing relate to each other?

private/public 密钥、CSR、CA、CERT 和签名如何相互关联?

我的理解是,如果 Alice 希望 Bob 有理由相信某些消息来自她,她可以使用她的私钥创建该数据的签名,并让 Bob 使用相关 public 键。但是,Bob 必须确信 public 密钥实际上属于 Alice,这就是我认为证书颁发机构派上用场的地方。

这究竟是如何运作的?我不太明白 how/if/when 密钥和证书是在 Alice、Bob 和 CA 之间创建和共享的。

  1. 爱丽丝(程序或安装程序的人)可以创建一个 public/private-key 吗?
  2. 如果为 1,Alice(或安装程序)是否可以从该 public 密钥创建 CSR(证书签名请求)?
  3. 如果是 2,Alice(或安装程序)能否将此 CSR 发送到 CA(证书颁发机构)?
  4. 现在有证书了吗?它是在 1、2 还是 3 中创建的?
  5. Alice现在如何让Bob信任Alice的签名? Alice 是否应该向他发送 a) 她的 public 密钥或 b) 她的证书,以便 Bob 可以 "install" 它以某种方式信任她,因为他也信任 CA?
  6. 5b 不会以某种方式将 Alice 的私钥暴露给 Bob 吗?
  7. 现在是否可以让 Alice 签署消息,而 Bob 可以验证她的签名+消息,因为 Bob 确信 public 密钥确实是 Alice 的 public 密钥?
  1. Can Alice (the program or the one who installed the program) create a public/private-key?

是的。在现代计算机上创建非对称密钥对(相对)容易且(相对)便宜。

  1. If 1, can Alice (or the installer) create a CSR (Certificate signing request) from that public key?

Yessy-noey。 CSR 的主体使用 public 密钥,但应该使用 proof-of-possession 的私钥对其进行签名。 (不过,也许有些 CA 不检查签名)。

  1. If 2, can Alice (or the installer) send this CSR to a CA (Certificate Authority)?

是的。任何人都可以向 CA 发送 CSR。然后 CA 做他们的事情(通常涉及信用卡)并颁发证书。或者没有。

  1. Is there a certificate now? Has it been created in 1, 2 or 3?

假设它是在步骤 3(b) 中创建的(作用于 CSR 的 CA)。

  1. How can Alice make Bob trust signatures by Alice now?

这是一个深刻的形而上学问题。

  1. (again) How can Alice make Bob trust signatures by Alice now? Should Alice send him a) her public key or b) her certificate so that Bob can "install" it somehow and thereby trust her, because he also trust the CA?

Alice 应该发送证书,其中给出了 { her as a subject entity, the public key } 的关联以及 CA 想要提供的任何约束或背书。然后,如果 Bob 信任 CA(或 CA 的 CA 等),他现在将有理由相信这个 public 密钥确实表明 Alice 是做事的人。

  1. Wouldn't 5b somehow expose Alice's Private Key to Bob?

不,证书仅包含 public 密钥(public)、元数据(public)和签名(public)。创建CSR需要Alice的私钥,生成证书需要CA的私钥

如果预算足够大,有人可以从 public 密钥中导出私钥,但在 2018 年,它是 "infeasible" 的 RSA-2048 密钥或 ECC-256 密钥。所以... yessy-noey.

  1. Is it now possible for Alice to sign a message, and for Bob to verify her signature+message because Bob is confident that the public key is really Alice's public key?

如果 Alice 发送 a) 消息,b) 签名,以及 c) 证书;好的。如果以某种方式证书和一些 Aliceness(Aliciosity?)已经关联,那么消息和签名以及 "I'm probably Alice" 上下文将使密钥被查找。

  1. (Unasked) Are there other schemes which would work, without the certificate?

当然可以。如果 Bob 可以证明 Alice 就是 Alice,并且 Alice 递给他一把 public 密钥,就不需要中间人了。然后 Bob 可以使用 "I'm probably Alice" 和他已经知道属于 Alice 的 public 密钥,然后你又回到只需要消息和签名的状态。但接下来的问题是她如何报告妥协等。