重要数据在网络中的传输如果是公开裸露的,可以想象我们发消息,打电话,输入银行卡密码,岂不是随意便能被他人获取,那么什么问题以及该怎么解决呢? 下面是数据产生的四个问题:窃听,篡改,假冒,事后否认 产生了这些问题,又该如何解决呢?下面是常用的解决方案
问题 | 解决方法 |
---|
窃听 | 加密 | 假冒 | 消息认证码、数字签名 | 篡改 | 消息认证码、数字签名 | 事后否认 | 数字签名 |
对于加密技术,存在很多,MD5,SHA-1,SHA-2(推荐使用)等等,基于hash函数的加密技术是不可逆的,且长度是相同的,比如在数据库中存储密码时,可以使用基于hash函数的加密算法进行密码的加密,在保存在数据库中。 我们或多或少都知道对称加密和非对称加密,所谓的对称加密形象来说就是大家都用同一把密钥进行加密解密。常见的对称加密算法有AES,DES,凯撒密码,动态口令。下图简单描述了对称加密的一个流程。 但是对称加密仅仅是对数据进行加密,密钥还是暴露网络上,大家的视野之中,所以对于密钥的暴露问题(密钥分配问题)也要想办法解决。下面是常见的密钥分配问题的解决方案 我们可以把公钥暴露在网络之中,私钥自己留着,A发消息时,先使用暴露在网络中的公钥进行数据的加密,在把数据传输给B,由于B拥有自己的私钥,所以可以解密数据,而他人就是截取到数据也无法解密。常见的非对称加密算法有RSA(较常见),椭圆曲线加密等。 虽然这样可以保证真实数据不会泄露,但是,B并不知道发送方是谁,也就是说,任何人都可以给B发送消息,如果有恶意的人用公钥发送数据,一个while(true),就足够造成威胁。而且使用非对称加解密数据是比较耗时的,所以大多数都是用在一些极其重要的文件上。 由于对称加解密较快,非对称加解密较慢,所以产生了混合加密算法,数据进行对称加密,数据解密的密钥使用非对称加密,这样对数据的加解密较快,而且数据的安全也有保障。
虽然到目前真实数据得到了保障,但是还是会被截取,修改(修改加密后二进制流),如果进行了修改,解密之后的数据是有问题的。现在要解决的问题就是检测数据是否被篡改以及发送方是谁
|