隐私安全一直是大家关注的热点,特别是在互联网上,那么多大厂的数据安全是如何处理的呢?
本文将通过通俗易懂的文字,引导你一步步理解为何一个应用需要加密技术,以及需要何种方式的加密技术等,希望能为您的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。
最后加密是非常安全的了! 不足之处,希望各位大佬指点
本文小结:
零级安全:明文消息传递如同裸奔,不安全;
初始安全:客户端和服务端提前约定加密算法和密钥,不安全(好多公司都是这么实现的=_=);
中级安全:服务端随机生成密钥,发送给客户端,不安全;
高级安全:一人一密,客户端使用“具备用户特性的东西”作为加密密钥,弱安全;
终级安全:一次一密,三次握手建立安全信道,安全。
好文章需要传递,原文链接