网络数据传输安全原理-高级(全)

隐私安全一直是大家关注的热点,特别是在互联网上,那么多大厂的数据安全是如何处理的呢?
本文将通过通俗易懂的文字,引导你一步步理解为何一个应用需要加密技术,以及需要何种方式的加密技术等,希望能为您的IM数据、或消息推送服务的设计提供一些参考

一: 信息裸传

顾名思义:不做任何处理,直接明文传递,如下图所示


信息裸传

安全评估: 网络上传递的数据是不安全的,属于网络黑客公共场所,能被截取;
风险后果: 传递明文无异于不穿衣服裸奔;
改进方案: 先加密,再在网络上传输。

二: 传输密文-对称加密

约定秘钥加解密

安全特点流程 :

 1.服务端和客户端先约定好加密算法,加密密钥
 2.客户端,传输前用约定好的密钥加密;
 3.传输密文;
 4.服务端,收到消息后用约定好的密钥解密。

通信安全性总结如下:

1.安全评估:
    客户端的代码是不安全的,属于黑客本地范畴,能被逆向工程,任何客户端与服务端提前约定好的算法
    与密钥都是不安全的;
2.导致后果:
    任何客户端的代码混淆,二进制化都只能提高黑客的破解门槛,本质是不安全的;
3.改进方案:
    不能固定密钥。

三: 中级通信安全:一人一密


一人一秘,服务器生成

从上图可知

1. 客户端和服务器协商好加密算法和加密秘钥
2. 客户端请求秘钥
3. 服务器返回秘钥
4. 用协商好的加密和秘钥加密,传递消息

风险评估

1. 网络传递秘钥不安全,被截取了,白费了
2. 加密算法也很容易破解
3. 最终破解 

改进方案: 协商的秘钥不能在网上传递

四: 高级安全通信-客户端生成秘钥

一人一密.客户端生成

分析一波:

1.使用特定加密参数作为key
2.每个人的秘钥都不同
3.然后密钥加密消息,传输密文;
4.服务端从db里获取这个“key”,解密

安全分析

1.秘钥存于客户端内存中.非常安全
2.特性的参数作为key,也是安全的,而且一人一密,及时破解,也无法破解其他人的
3.如果该特性的key泄漏了,这个就不安全了,现在谁也不能保证不会泄漏,所以还是具有一定的不安全性

不行,咱们还得改进改进

五: 究极安全通信: 一次一密、密钥协商

一人一密

过程分析

1.服务端随机生成公私钥对(公钥pk1,私钥pk2),并将公钥pk1传给客户端:
(注意:此时黑客能截获pk1);

2.客户端随机生成公私钥对(公钥pk11,私钥pk22),并将公钥pk11,通过pk1加密,传给服务端:
(注意:此时黑客能截获密文,也知道是通过pk1加密的,但由于黑客不知道私钥pk2,是无法解密的);

3.服务端收到密文,用私钥pk2解密,得到pk11;
服务端随机生成对称加密密钥key=X,用pk11加密,传给客户端:
(注意:同理,黑客由密文无法解密出key);
客户端收到密文,用私钥pk22解密,可到key=X。

最后加密是非常安全的了! 不足之处,希望各位大佬指点

本文小结:

零级安全:明文消息传递如同裸奔,不安全;
初始安全:客户端和服务端提前约定加密算法和密钥,不安全(好多公司都是这么实现的=_=);
中级安全:服务端随机生成密钥,发送给客户端,不安全;
高级安全:一人一密,客户端使用“具备用户特性的东西”作为加密密钥,弱安全;
终级安全:一次一密,三次握手建立安全信道,安全。

好文章需要传递,原文链接

你可能感兴趣的:(网络数据传输安全原理-高级(全))