公开密钥密码学(英语:Public-key cryptography)也称非对称式密码学(英语:Asymmetric cryptography)是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥

公私秘钥对的两个典型使用场景:

  1. 加密
  2. 签名

总结就是:
公钥加密、私钥解密。
私钥签名、公钥验签。


加密

公钥加密、私钥解密流程:
image

  1. 准备阶段——初始化秘钥对
    生成一对公、私密钥,

    公钥用作加密,私钥则用作解密,公钥可以公开,可任意向外发布;私钥不可以公开,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。

    公钥分给A,私钥分给B。

  2. 加密流程
    A拿着公钥对消息进行加密,加密后的信息为密文,密文可以在任意地方传输,并且这是安全的。

  3. 解密流程
    B拿到密文,使用私钥解密,得到明文。

签名

物理签名,主要是用来确认这个文件是谁签署的。
数字签名过文件,1是可以保证完整性,2是数字签名具有不可抵赖性(即不可否认性)。

在数字签名中,则将上述加密反过来,使用私钥加密(相当于生成签名),公钥解密(相当于验证签名)。

签名流程:
image

  1. 准备阶段——初始化秘钥对
    生成一对公、私密钥,

    • 私钥(Private Key):由用户秘密保存,用于生成签名,私钥不可泄露!
    • 公钥(Public Key):公钥可以公开发布,供他人验证签名。

    公钥分给Bob(接受方),私钥给Alice(发送方)。
    Alice用私钥签名一份合同,Bob 用 Alice 的公钥验证签名,确认合同未被修改且是Alice签署的。

  2. 签名生成(发送方操作)

    1. 计算数据哈希
      对原始数据(如文件、消息)进行哈希运算(如 SHA-256),生成固定长度的摘要(Digest)。
    2. 私钥加密摘要
      用发送方的私钥对摘要进行加密,生成数字签名(Signature)。
    3. 发送数据与签名
      将原始数据和签名一起发送给接收方。
  3. 签名验证(接收方操作)

    1. 接收数据与签名
      获取发送方的原始数据和签名。

    2. 重新计算数据哈希
      对收到的原始数据使用相同的哈希算法,生成新的摘要。

    3. 解密签名
      用发送方的公钥解密签名,得到发送方生成的原始摘要。

    4. 比对摘要

      • 一致:验证成功,说明数据未被篡改且由私钥持有者签发。
      • 不一致:验证失败,数据可能被篡改或签名无效。

扩展

公开密钥基础建设通过信任数字证书认证机构根证书、及其使用公开密钥加密作数字签名核发的公开密钥认证,形成信任链架构,这些后续文章讲解。

posted on 2020-04-01 23:00  Mysticbinary  阅读(3106)  评论(0)    收藏  举报