菜鸟笔记
提升您的技术认知

数字签名的过程详解

1. 数字证书的概念

数字证书又叫“数字身份证”、“网络身份证”,是由证书认证中心CA发放并经认证中心数字签名,包含公开密钥拥有者以及公开密钥相关信息的一种电子文件,可以用来证明数字证书持有者的真实身份。数字证书的格式一般采用X.509国际标准。

2. 数字签名的过程

用户A将待发送的信息原文经散列函数运算生成摘要信息,并用自己的私有密钥对摘要信息进行加密,将形成的密文和原文传送给用户B。用户B接收到密文后,使用A的公开密钥验证密文,得到摘要信息,并按照约定的摘要算法对原文进行摘要运算,再将两个摘要值进行比对,一致则表明数据未被篡改。

数字签名实现了用户的身份认证,保证了数据在传输过程中的完整性、和交易的不可否认性;但是,任何拥有发送方公开密钥的人都可以验证数字签名的正确性,因此无法保证数据的机密性

3. 加密的过程

加密:A首先要用B的公钥对信息原文进行加密,形成密文,发送给B;B在收到密文后用自己的私钥进行解密,将密文恢复为原文。该过程实现了信息的保密性以及对信息接收方B的认证

由于加密和数字签名都只保证了信息在传输过程中的完整性、保密性、不可否认性和真实性的一部分,只有将两者相结合才能实现所有安全特性

所以真正AB信息传递过程中,完整的情况如下:

A的行为

1、A把信息原文进行哈希运算,得到信息的数字摘要

2、A用自己私钥,采用非对称加密算法,对数字摘要进行加密,得到数字签名

3、A用对称算法的密钥,采用对称算法,对信息原文和数字签名和A的公钥一起加密,得到加密信息

4、A用B的公钥,采用非对称算法,把对称密钥加密,形成信封。就像是对称密钥装到了B公钥加密的信封里面

5、A把加密信息和数字信封一起发给B

B的行为

1、B收到数字信息,用自己的私钥解密信封,拿到对称密钥

2、B用对称密钥,把加密信息解密,得到信息原文和数字签名和A的公钥

3、B用A的公钥解密数字签名,得到数字摘要1

4、B将原文用同样的哈希算法,得到数字摘要2

5、将摘要1和摘要2对比。如果相等,则原文没有被修改,签名是真实的

详细图解:

4. 数字签名两大特性

数字签名,它的作用跟手写签名其实是一样的,用来证明某个消息或者文件是本人发出/认同的,利用公钥加密系统保证不可伪造和不可抵赖两个特性。

不可伪造
其他人因为没有对应的私钥,所以没法生成公钥可以解密的密文,所以是不可伪造的。

不可抵赖
又因为公钥对应的私钥只有一个,所以只要能成功解密,那么发消息的一定是你,不会是其他人,所以是不可抵赖的。

5. 用到的部分名词解释

消息摘要:

消息摘要就是将消息哈希转换成一个固定长度的值唯一的字符串,该过程不可逆,基本上做不到通过消息摘要转换成消息的。
实际应用中,由于直接对原消息进行签名有安全性问题,而且原消息往往比较大,直接使用RSA算法进行签名速度会比较慢,所以我们一般对消息计算其摘要(使用SHA-256等安全的摘要算法),然后对摘要进行签名。只要使用的摘要算法是安全的(MD5、SHA-1已经不安全了),那么这种方式的数字签名就是安全的。

非对称加密:

在通信双方,如果使用非对称加密,一般遵从这样的原则:公钥加密,私钥解密。同时,一般一个密钥加密,另一个密钥就可以解密。
因为公钥是公开的,如果用来解密,那么就很容易被不必要的人解密消息。因此,私钥也可以认为是个人身份的证明。
如果通信双方需要互发消息,那么应该建立两套非对称加密的机制(即两对公私钥密钥对),发消息的一方使用对方的公钥进行加密,接收消息的一方使用自己的私钥解密。