公钥密码学

概览

一般来说,我们生成一个非对称秘钥对,就可以用其中一个加密,然后用另外一个解密。但是不能只用其中一个进行加密和解密,那样的话就变成对称加密了。

公钥和私钥主要是用途上有区别,公钥是分发出去的,而私钥是只留给自己持有,这样就能做好两个关键的事情:

image.png

主要应用

  1. 数字签名
  1. 对称密钥分发
  1. 加密密钥的加密

关键应用场景

  1. 公钥的安全分发(The secure distribution of public keys)
  2. 利用公钥加密分发对称密钥(The use of public-key encryption to distribute secret keys)
  3. 利用公钥加密生成临时密钥进行消息加密(The use of public-key encryption to create temporary keys for message encryption)

效率和安全性

数字签名

仅保证数据不被篡改,但数据是公开的

image.png

公钥证书(数字证书)

  1. 用户的软件(客户端)生成一对密钥:一个公钥和一个私钥。
  2. 客户端准备一个未签名的证书,其中包含用户 ID 和用户的公钥。
  3. 用户通过某种安全方式将未签名的证书提供给证书颁发机构(CA)。这可能需要面对面的会面、使用注册电子邮件,或者通过带有电子邮件验证的网页表单进行提交。
  4. CA 创建签名的步骤如下:
    1. CA 使用哈希函数计算未签名证书的哈希值。
    2. CA 使用 CA 的私钥和签名生成算法生成数字签名。
  5. CA 将数字签名附加到未签名的证书上,从而创建一个已签名的证书。
  6. CA 将已签名的证书返回给客户端。
  7. 客户端可以将已签名的证书提供给任何其他用户。
  8. 任何用户可以通过以下步骤验证证书的有效性:
    1. 用户计算证书的哈希值(不包括签名部分)。
    2. 用户使用 CA 的公钥和签名验证算法验证数字签名。算法返回的结果将是“签名有效”或“签名无效”。

image.png

使用公钥加密进行对称密钥交换

  1. 发送方生成对称密钥
  1. 加密对称密钥
  1. 发送加密的对称密钥
  1. 接收方解密对称密钥
  1. 使用对称密钥进行通信

image.png

GPG加密邮件的流程

  1. 首先要导入对方的公钥,同理对方也持有你的公钥并信任
  2. 用自己的私钥签名正文,并用对方的公钥加密
  3. 对方收到邮件后,用自己的私钥解密,并验证你的签名(对方也持有你的公钥)