数字签名原理
【数字签名 及 数字证书 原理】https://www.bilibili.com/video/BV18N411X7ty?vd_source=d4c8a130bd8760e7e8cdd48d80abd00c
数字签名算法包括RSA、DSA、ECDSA等
RSA数字签名算法包含了RSA加密算法和哈希算法
RSA是一种非对称加密(公开秘钥加密)算法,即可加密也可解密。
哈希算法是一种单向(不可逆)加密算法,只能加密不能解密。通过哈希算法对目标信息生成一段特定长度的唯一的哈希值,但不能通过这个哈希值重新获得目标信息。常用的哈希算法有MD5、SHA-1、SHA-256、SHA-512等
(哈希是一种摘要算法、压缩算法)
RSA数字签名算法的具体运算过程:
创作者根据RSA加密算法生成公钥、私钥
对文件进行哈希运算,得到文件哈希值H,使用私钥根据RSA解密公式对文件哈希值进行签名运算,得出数字签名S
至此,创作者完成了对文件的数字签名
公钥、文件、数字签名发送到互联网上
使用公钥根据RSA加密公式对数字签名进行验证运算,得出文件哈希值H
这是因为RSA加密算法是双向的,即可加密也可解密
数字签名亦是如此,签名使用解密公式,验证使用加密公式
同时对文件进行哈希运算,得出文件哈希值H
将这两个文件哈希值进行对比,如果两者相同证明签名成立,不同则签名不成立
如果确保文件不被篡改呢?如果文件被篡改,则文件的哈希值就会发生变化。
如何确保文件是小明本人签署的呢?因为数字签名只能由私钥拥有者生成,也就确保了签字者身份一定是私钥拥有者。
如何确定私钥拥有者是创作者,涉及到了数字证书:
首先公钥、私钥是配对生成的,某一私钥对应者唯一的公钥,某一私钥拥有者也就是对应公钥的生成者,因此只需证明公钥生成者的身份为小明即可,这就是数字证书的作用。
将公钥及部分个人身份信息发送给某个权威公正的证书颁发(简称CA)机构
CA机构在核实小明身份后,将颁发一个数字证书
该证书内包含了小明的身份信息和其公钥数据,证明了该公钥生成者的身份为小明
小明将该数字证书放到互联网上,小红通过该证书就可以确定到底哪一个公钥属于小明的了
而其他人的数字签名使用小明公钥验证出的结果会发生变化,也就不能通过签名验证
如何确保数字证书不被伪造?
因为数字证书是经过CA机构数字签名的,CA机构自己也生成一套公钥、私钥,
使用私钥对“小明身份信息及其公钥数据”这一文件内容进行数字签名,并放到数字证书中,数字证书就相当于文件和数字签名的组合体
每人电脑里安装了的根证书,根证书记录了可以信赖的CA机构信息及其公钥
根证书预先安装在系统中,可以杜绝CA机构公钥被伪造的可能
通过CA机构公钥就可以验证数字证书里面的数字签名,从而确保了数字证书的不可伪造性
至此,我们就可以知道通过数字签名及数字证书确定某一个文件被谁签署而且没有被篡改
疑问:
1.使用私钥根据RSA解密公式对文件哈希值进行签名运算,为什么是解密公式?
2.使用公钥根据RSA加密公式对数字签名进行验证运算,为什么是加密公式?