09-尚硅谷-微信支付-支付安全-数字签名_哔哩哔哩_bilibili
现在Bob想要给Pink写一封信,信件的内容不需要加密
信件的内容不需要加密,怎样能够保证信息的完整性
使用信息完整性的主要手段是摘要算法,散列函数,哈希函数
我们假设一个任意长度的字符串数据z经过哈希运算之后
经过运算之后会得到一个固定长度H,H称为数据指纹或者摘要
MD5也是一种
摘要算法的四大特性,第一个不可逆,它只有算法,没有秘钥
AES算法属于对称加密的一种,需要一个密钥去加密和解密,而RSA算法是非对称加密的典型算法,公钥和私钥,因此无论是对称加密还是非对称加密都是需要钥匙
第二个是难题友好性,要想得到难题的答案,只能够暴力枚举,从h破解z,只能一个个实验
第三个是发散性,只要对原文有一点点改动,摘要就会剧烈变化
雪崩效应,只有有一点点,改变,计算后的摘要也不同
第四个是碰撞性,经过摘要运算后它的数据长度是固定的,相当于把一个大空间缩小到了小空间也可以是冲突,经过摘要运算之后,可能会有两份不同的原文对应同一份摘要,两个不同z对应同一个h,好的摘要算法必须抵抗冲突,让这种可能性尽可能小
目前流行的摘要算法,有MD5 SHA1以及SHA2
MD5和SHA1被证明不具有强的碰撞性,用的比较多的是SHA2(统称),SHA224, 意思是能够生成24个字节,32个字节,48个字节对应下面的内容
如何通过摘要运算保证信息不被篡改,第一步利用摘要算法,生成信件原文摘要
也就是message digest
第二步 bob将摘要附在信件原文下面,一起发送给pat
第三步bob收到信之后,也使用和Bob一样的摘要算法,得到信件原文和摘要
第四步 pat将加密后的摘要和bob在原文中附加的摘要做一下对比,如果一致,说明信件没有被篡改,
有一个致命的漏洞,如果信件被黑客获取,并且黑客直接修改了原文,并且根据原文直接生成了新的摘要,然后附加在原文下面,伪装成bob给pat发送信件,给Pat接收后,这时候Pat是完全察觉不出来的
摘要算法的一大特点是不具有机密性,如果明文传输,那么黑客可以在修改原文之后,把摘要一起改了,那么说我们还是没有办法,鉴定信息传输的完整性
如果才能够真正保证数据无法被篡改呢?答案是一定要加入密钥,从而确保信息的机密性
来看一下加入密钥之后的摘要算法:第一个步骤,Bob写完之后先用摘要算法,生成信件的摘要
第二个步骤将Bob将私钥加入其中,加密的结果,我们称为数字签名
第三个步骤,Bob将数字签名附在信的原文
收到信的操作:
第一步pat取下数字签名之后,用bob公钥解密得到信件摘要
第二步bob的公钥解密得到信件的摘要
第三步,pat将前面得到的摘要进行比对
如果一致就Bob法的,并且没有经过篡改
这个过程我们将他作为验签
如果黑客没有对应的私钥
就无法对摘要进行加密
经过以上步骤,pat就可以将信件原文取出来了