确保数据在传输中不被篡改,是确保数据的完整性。
通常来说方案是数字签名。
在每个 tcp 段的数据部分首部,额外使用若干个字节,用于标示这次要发送的数据的长度,在接收端,通过检测这若干个字节以及数据的长度,来判断此次通信是否被修改。
这个方案基本聊胜于无。
虽然TCP协议也有校验和来确保包的完整性,但是这个校验和不能防止恶意篡改,而是应对网络传输中的干扰信号等。
然后又发现很多人没有分清楚数据传输安全性和数据完整性之间的区别。
确保数据完整性只需要数字签名,不需要对整个数据进行加密,数字签名的原理是对数据的摘要信息(SHA、MD5)进行非对称加密来校验数据的完整性。用途其实非常广泛,例如操作系统自动更新的文件,驱动程序,这些都用数字签名来确保完整性,却不需要用什么安全传输协议来传输。