Skip to content

非对称加密(RSA)

为什么需要非对称加密

对称加密中使用的密钥必须见面协商,因为密钥在网络中传输需要加密,而没有密钥则无法加密。

秘钥对

公钥私钥的概念是相对的:公钥私钥只是“是否公开”上的区别,在数学上,用其中一把加密,就能用另一把解密。

任何人都有可能拿到公钥。

数字签名

数字签名主要用于身份的验证。

第一阶段:发送方(签名)

  1. 取指纹 (Hashing):发送方使用 Hash 算法(如 SHA-256)将原始消息生成一段固定长度的摘要 (Digest)
  2. 私钥加密 (Signing):发送方使用自己的私钥对这段“摘要”进行加密。这个加密后的结果就是数字签名
  3. 发送数字证书:将原始消息数字签名一起发给接收方。

第二阶段:接收方(验签)

  1. 解密签名:接收方使用发送方的公钥对收到的“数字签名”进行解密,得到摘要 A
  2. 重算摘要:接收方对收到的“原始消息”用同样的 Hash 算法重新算一遍,得到摘要 B
  3. 对比:如果 摘要 A == 摘要 B,说明:
    • 消息确实是持有私钥的那个人发的(身份有效)。
    • 消息在传输过程中没有被改动过(内容完整)。

image-20260302173917555

应用:支付系统

在接入支付之前,双方都会有一套密钥:

① 商户密钥对

  • 商户私钥(你自己保存,绝对不能泄露)
  • 商户公钥(上传给支付平台)

② 平台密钥对

  • 平台私钥(平台自己保存)
  • 平台公钥(提供给你,用于验签)

具体流程:

  1. 商户向支付平台发起支付请求时,会对请求的参数进行签名。
  2. 接收到商户的支付请求后,支付平台会进行验签
  3. 如果验签成功,平台知道这个请求确实来自合法商户,且数据未被篡改。

数字证书

为什么需要数字证书

如果公钥是和文件一起发送的,则存在第三方拦截公钥的情况。第三方将自己的公钥分享给你。发送方使用黑客的公钥进行加密,黑客就可以根据自己的密钥对解密你发送的信息,然后篡改你发送的信息发送至接收方。为了保证公钥不被伪造,我们需要将公钥委托给第三方机构CA进行登记。登记公钥与身份之间的关系。

image-20260302174114357

基本原理

数字证书(Digital Certificate)是由认证机构(CA,Certificate Authority)颁发的一种电子文档,用于验证公钥的归属以及确保证书持有者的身份。数字证书通常包括:

  • 持有者的公钥
  • 持有者的身份信息
  • 证书的有效期
  • 证书颁发机构的数字签名

数字证书的签名与验签流程:

  1. 签名:CA对登记的公钥和持有者信息使用自己的私钥进行签名制作成数字证书。

  2. 客户端请求服务端时,服务端将CA颁发的数字证书发送给客户端。

  3. 验签:客户端使用根证书中记录的CA公钥进行解密即可验证公钥的真实性。

根证书记录了可以信赖的CA机构信息和公钥。根证书预先安装在系统中可以杜绝CA机构公钥被伪造的可能。通过CA的公钥可以验证数字证书的数字签名,确保了数字证书的不可伪造性。

应用:HTTPS