美文网首页程序员iOS技术点iOS 网络相关
详解IM消息(网络数据)传输安全原理-高级(全)

详解IM消息(网络数据)传输安全原理-高级(全)

作者: atme | 来源:发表于2019-02-19 10:05 被阅读158次

    隐私安全一直是大家关注的热点,特别是在互联网上,那么多大厂的数据安全是如何处理的呢?
    本文将通过通俗易懂的文字,引导你一步步理解为何一个应用需要加密技术,以及需要何种方式的加密技术等,希望能为您的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。
    

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

    本文小结:

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

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

    相关文章

      网友评论

        本文标题:详解IM消息(网络数据)传输安全原理-高级(全)

        本文链接:https://www.haomeiwen.com/subject/cginjqtx.html