数字签名介绍
文章目录
一、概念
- 数字签名: 也称为公钥数字签名,是一种通过公钥加密领域的技术来鉴别数字信息的方法
- 作用: 区块链使用公钥、私钥加密解密信息,数字签名在其中保证发送的信息不被篡改
二、分类
- 数字签名算法包括:RSA(RSA加密算法 + 哈希算法)、DSA、ECDSA
- 双向算法——加密(解密)算法
- 包括对称加密(单秘钥加密)——DES、3DES、AES
- 非对称加密(公开秘钥加密)——RSA、ECC
- 单向算法——加密算法
- 哈希算法——MD5、SHA-1、SHA-256、SHA-512
三、数字签名的两种运算过程
1、签名过程
- 签名:即指使用私钥处理信息或因信息的哈希值而产生签名的过程
- 签名使用解密公式
2、验证过程
- 验证:指使用公钥验证签名的真实性
- 验证使用加密公式
RSA数字签名算法
-
如何保证数据文件没被篡改?
- 若文件被篡改,则文件的哈希值就会发生变化,两个文件哈希值就会不相同,签名验证也就不能通过
-
如何保证文件是小明本人签署的?
- 数字签名只能由私钥拥有者生成,也就确保了签字者身份一定是私钥拥有者的,但不能确定私钥拥有者一定是小明
- 因为其他人自己也可生成一套私钥公钥,并进行数字签名冒充成小明签名,小红使用冒充者的私钥和公钥同样可以验证通过
- 需要数字证书来保证私钥公钥生成者是小明
- 小明将公钥及部分个人身份信息发送到某个权威公正的证书颁发(简称CA)机构
- CA机构在核实小明身份后,将颁发一个数字证书
- 该证书内包含了小明的身份信息和其公钥数据,也就证明了该公钥生成者的身份为小明
- 小明将该证书放到互联网上,然后小红通过该证书可以确定哪一个公钥是小明的
- 其他人的数字签名使用小明公钥验证出的结果会发生变化,也就不能通过数字签名验证
- 数字签名只能由私钥拥有者生成,也就确保了签字者身份一定是私钥拥有者的,但不能确定私钥拥有者一定是小明
-
如何确保数字签名不被伪造?
- 数字证书是经过CA机构数字签名的
- CA机构自己也生成一套公钥私钥
- 使用私钥对“小明身份信息及其公钥数据”这一文件内容进行数字签名,并放到数字证书中
- 数字证书相当于文件和数字签名的组合体
- 在每个人电脑或手机系统里,默认安装了根证书
- 根证书里记录了可以信赖的CA机构信息及其公钥
- 根证书预先安装在系统中可以杜绝CA机构公钥被伪造的可能
- 通过CA机构公钥就可以验证数字证书里的数字签名,从而确保了数字证书的不可伪造性
- 使用私钥对“小明身份信息及其公钥数据”这一文件内容进行数字签名,并放到数字证书中
四、比特币签名的具体过程描述
- 大体过程:由比特币转账的转出方生成的一段防伪造的字符串,可以用来验证签名者的身份和签名时间,从而保证被签信息是否真实正确
- 假设用户A要给用户B转账具体流程:
- 用户A在转账前需要先将交易信息缩短成一段字符串,用自己的私钥进行加密以形成数字签名
- 用户A将交易信息、数字签名和公钥都广播出去,矿工会将这些信息记录下来,并用A的公钥进行验证
在转账前需要先将交易信息缩短成一段字符串,用自己的私钥进行加密以形成数字签名