签名 / 验签
解决了网路通讯中的完整性、身份认证与抗抵赖性的问题,不能解决保密性问题
- 签名:
- 原文m 经Hash运算得到 数字摘要h ,然后再由私钥进行加密,得到 密文s
- 密文s是客户端生成的,客户端会把s和m一起发给服务端
(由于发送了原文m,所以不能保证保密性)
(如果m是在SSL保密通道中传输,则可以解决保密性问题)
【需要注意的是,单纯的签名/验签是可以保密,因为被签名的是经过Hash运算后的原文,不是直接在原文上签名,所以经过验签是得不到原文的,但是在实际应用时是需要的原文的,所以才会把原文和签名一起发过去】
- 验签:
服务端接到m和s后,取出m做Hash运算,得到h1,然后拿s用公钥进行解密,得到h2,最后对比h1和h2
如果相等,说明m和s都没有被篡改过,即解决了完整性问题
如果客户端C是用C私钥加密,服务端S用C公钥解开了,那C端就不能否认这件事,即解决了身份验证与抗抵赖问题
注意:
一个签名/验签过程,签名方需要维护自己的私钥,验签方需要维护对方的公钥