数字签名

读阮一峰数字签名总结梳理:

B:生成公钥B、私钥B
A:持有公钥B
CA(certificate authority):生成公钥CA、私钥CA

A与B之间信息传递

A写信给B

A:contentA + publickeyB = 秘文A
B:秘文A + privateKeyB= contentA
只要B的privateKeyB不泄漏,这封信就是安全的,即使落在别人手里,也无法解密

数字签名

B回信给A (该情况只能证明contentB未被修改,并不能证明contenB是B所发)

B:contentB + Hash = digestB
digestB +privateKeyB = signatureB
signatureB 和contentB 一起发送给A
A:signatureB + publicKeyB = digestB
contentB + Hash = digest
digest == digestB ? contentB未被修改 : contentB被修改

注意:但是这种情况下如果有人冒充B,冒充者C将A持有的公钥B替换为公钥C,此时A收到C的信息后,只能证明contentC未被修改,但并不能证明contentC是否是B所发。所以A需要想办法证明自己持有的公钥是B的,所以需要CA为公钥B做认证

B回信给A

CA(证书中心)为公钥做认证
CA: publickKeyB+其他相关信息+CA 私钥 = 数字证书(Digital Certificate)
B持有:数字证书
A持有:CA公钥
B:contentB + Hash + privateKey = signatureB
数字证书 、signatureB 以及 contentB 一起发送给A
A:数字证书 + CA公钥 = publicKeyB(证明是B的公钥)
signatureB + publickeyB = digestB
contentB + Hash = digest
digest == digestB ?contentB未被修改 : contentB被修改

参考链接

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

RSA加密+AES加密
RSA:非对称加密,生成公私钥
AES:对称加密,生成AES密钥
客户端:用AES对content进行加密,RSA公钥对AES密钥进行加密
服务端:RSA私钥进行解密得到AES密钥,从而得到content

摘要算法:可以将任意长度的文本转化为固定长度的文本
摘要算法具有以下重要特性:

  • 只要源内容不同,计算得到的结果,必然不同。
  • 无法通过摘要算法可逆拿到源内容

典型的摘要算法有大名鼎鼎的MD5SHA。摘要算法主要用于比对信息源是否一致,因为只要源内容发生变化,得到的摘要必然不同;而且通常结果要比源短很多,所以称为“摘要信息”。

你可能感兴趣的:(数字签名)