update time :2019-1-26 author :要你命的三千又三千 type:学习笔记
问题一:什么是数字签名
使用过程:
保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
数字签名是个加密的过程,数字签名验证是个解密的过程。
签名过程
发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公用密钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。
数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是**数字签名能确定消息的完整性。**因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化。不同的文件将得到不同的数字摘要。 一次数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。”
Keystore可理解为一个容器,存放开发者信息、私钥、公钥的容器.
关键点:
公钥与私钥的作用
公钥(公共钥匙)
加密过程中,算法为了提高其加密程度,传入一个参数,使同一个算法在不同参数的作用下产生不同的加密效果。公钥持有者一般为群体,其作用是验证与加密。
私钥(私有钥匙)
通过传入与公钥钥配对的私钥到算法中,实现解密的效果。一般私钥由个人持有,需妥善保管,不可告诉他人,其作用是解密与签章。
补充数字签名的过程
数字签名
- A先对这封Email执行哈希运算得到hash值简称“摘要”,取名h12.
- 然后用自己私钥对摘要加密,生成的东西叫“数字签名”
- 把数字签名加在Email正文后面,一起发送给B
(当然,为了防止邮件被窃听你可以用继续公钥加密,这个不属于数字签名范畴) - B收到邮件后用A的公钥对数字签名解密,成功则代表Email确实来自A,失败说明有人冒充
- B对邮件正文执行哈希运算得到hash值,取名h2
- B 会对比第4步数字签名的hash值h1和自己运算得到的h2,一致则说明邮件未被篡改。
作者:08_carmelo
链接:https://www.jianshu.com/p/4932cb1499bf
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
问题:出现如下问题如何解决?
公钥是公开的并且可以自行导入到电脑,如果有人比如C偷偷在B的电脑用自己公钥替换了A的公钥,然后用自己的私钥给B发送Email,这时B收到邮件其实是被C冒充的但是他无法察觉。
关键字:公钥被替换,无法识别察觉发送邮件的来源。
解决办法:就是数字证书
使用数字证书来验证公钥的来源,公钥使用数字证书的私钥进行加密,然后使用个人使用数字证书的公钥进行验证)这里补充数字证书的公钥的真实性是由根证书进行验证。
根证书是一份特殊的证书,它的签发者是它本身,下载根证书就表明您对该根证书以下所签发的证书都表示信任,而技术上则是建立起一个验证证书信息的链条,证书的验证追溯至根证书即为结束。所以说用户在使用自己的数字证书之前必须先下载根证书。
参考文档: