数字签名介绍

数字签名介绍

一、概念

  • 数字签名: 也称为公钥数字签名,是一种通过公钥加密领域的技术来鉴别数字信息的方法
  • 作用: 区块链使用公钥、私钥加密解密信息,数字签名在其中保证发送的信息不被篡改

二、分类

  • 数字签名算法包括:RSA(RSA加密算法 + 哈希算法)、DSA、ECDSA
  • 双向算法——加密(解密)算法
    • 包括对称加密(单秘钥加密)——DES、3DES、AES
    • 非对称加密(公开秘钥加密)——RSA、ECC
  • 单向算法——加密算法
    • 哈希算法——MD5、SHA-1、SHA-256、SHA-512

在这里插入图片描述

三、数字签名的两种运算过程

1、签名过程

  • 签名:即指使用私钥处理信息或因信息的哈希值而产生签名的过程
  • 签名使用解密公式

2、验证过程

  • 验证:指使用公钥验证签名的真实性
  • 验证使用加密公式
  • 在这里插入图片描述

RSA数字签名算法

  • 场景假设:小明向小红借了一笔钱,需要写一张借条,纸质版的借条我们可以使用笔迹签名来鉴定签名者的身份是小明,然后通过肉眼观察确保文件内容,但如果是电子版的借条就需要使用数字签名来保证了

  • 具体过程:

    • (1)小明完成对文件的数字签名:

      • 小明通过RSA算法生成自己的私钥和公钥,对文件进行哈希运算,得出文件哈希值H,
      • 使用私钥根据RSA解密公式对文件哈希值进行签名运算,得出数字签名S
    • (2)公钥、文件及数字签名发送到互联网上

    • (3)小红完成签名验证

      • 小红使用公钥根据RSA加密共识对数字签名进行验证运算,得出文件哈希值H
      • 同时对文件进行哈希运算,得出文件哈希值
      • 将者两个文件哈希值进行对比,若两者相同,则证明签名成立,不同则签名不成立

在这里插入图片描述

  • 如何保证数据文件没被篡改?

    • 若文件被篡改,则文件的哈希值就会发生变化,两个文件哈希值就会不相同,签名验证也就不能通过
  • 如何保证文件是小明本人签署的?

    • 数字签名只能由私钥拥有者生成,也就确保了签字者身份一定是私钥拥有者的,但不能确定私钥拥有者一定是小明
      • 因为其他人自己也可生成一套私钥公钥,并进行数字签名冒充成小明签名,小红使用冒充者的私钥和公钥同样可以验证通过
    • 需要数字证书来保证私钥公钥生成者是小明
      • 小明将公钥及部分个人身份信息发送到某个权威公正的证书颁发(简称CA)机构
      • CA机构在核实小明身份后,将颁发一个数字证书
      • 该证书内包含了小明的身份信息和其公钥数据,也就证明了该公钥生成者的身份为小明
      • 小明将该证书放到互联网上,然后小红通过该证书可以确定哪一个公钥是小明的
      • 其他人的数字签名使用小明公钥验证出的结果会发生变化,也就不能通过数字签名验证

在这里插入图片描述

  • 如何确保数字签名不被伪造?

    • 数字证书是经过CA机构数字签名的
    • CA机构自己也生成一套公钥私钥
      • 使用私钥对“小明身份信息及其公钥数据”这一文件内容进行数字签名,并放到数字证书中
        • 数字证书相当于文件和数字签名的组合体
      • 在每个人电脑或手机系统里,默认安装了根证书
        • 根证书里记录了可以信赖的CA机构信息及其公钥
      • 根证书预先安装在系统中可以杜绝CA机构公钥被伪造的可能
      • 通过CA机构公钥就可以验证数字证书里的数字签名,从而确保了数字证书的不可伪造性

在这里插入图片描述

四、比特币签名的具体过程描述

  • 大体过程:由比特币转账的转出方生成的一段防伪造的字符串,可以用来验证签名者的身份和签名时间,从而保证被签信息是否真实正确
  • 假设用户A要给用户B转账具体流程:
    • 用户A在转账前需要先将交易信息缩短成一段字符串,用自己的私钥进行加密以形成数字签名
    • 用户A将交易信息、数字签名和公钥都广播出去,矿工会将这些信息记录下来,并用A的公钥进行验证
      在转账前需要先将交易信息缩短成一段字符串,用自己的私钥进行加密以形成数字签名

猜你喜欢

转载自blog.csdn.net/qq_44749630/article/details/127315633