摘要算法如何在SSL中防止数据被篡改

实际应用中特别在一些安全性要求高的通信场景中往往要保证数据不被篡改.但对于一些信息量大,信息数量多的消息直接进行加密解密过程会严重消耗性能.因此提出消息摘要算法,对消息的摘要进行加解密的性能损耗远小于对消息整体进行加密,并且消息摘要也可以检测消息是否被篡改.目前著名的摘要算法有SHA,MD5等.下文是在SSL通信中如何使用摘要算法防止数据被篡改的简单理解.

1,假设A有一量长消息需要发送给B,需要对消息进行摘要.首先摘要算法会对消息整体进行特征提取.这段特征值就被称为消息的摘要.

提取出来的特征值要能确保消息在作任何一个位置被篡改,篡改多少都能反映出来,即消息被篡改了重新进行摘要操作总能得到与未篡改时不同的特征值.相反地,不同的特征值也意味着不同的消息体.但无须通过特征值还原消息.即特征值只能反映出消息被篡改了,无法反映出消息在何处被篡改,也无法通过特征值还原丢失或者被删除的消息.

2,A使用B的公钥对计算出来摘要进行加密,并将摘要和消息(消息明文)一并发送给B.

假想A发送给B的消息被C截获了,此时C对消息明文可见.但C不能解码出摘要内容(A使用B的公钥发送的摘要只有B的私钥可以解密,而B的私钥只有B才持有).设想此时C对消息修改后重新做摘要,并使用B的公钥进行加密,再发送给B.此时B端解密出来的摘要已经被篡改,因此C的修改在B端通过了摘要验证.这样虽然对消息进行摘要但仍然还是无法保证数据不被篡改.为了解决这个问题.要求A端不能只使用明文进行特征提取,A端可以使用一些私密信息(只有A和B知晓的消息,C并不知情)与消息明文一起混合提取特征.这样虽然C可以获取明文,但对秘密信息并不知情,C尝试重新生成摘要时由于缺失私密信息也无法生成被B成功验证的摘要.这样使用摘要算法就防止了第三方对数据的篡改.


你可能感兴趣的:(摘要算法如何在SSL中防止数据被篡改)