终究没有人在意一家民营企业的生死

去泰国看了一场“成人秀”,画面尴尬到让人窒息.....

【少儿禁】马建《亮出你的舌苔或空空荡荡》

网友建议:远离举报者李X夫!

司马南|脱口秀算什么?

生成图片,分享到微信朋友圈

自由微信安卓APP发布,立即下载! | 提交文章网址
查看原文

[新文导读] IM聊天系统安全手段之通信连接层加密技术

融云技术团队 即时通讯网 2022-12-29

本文由融云技术团队分享,原题“互联网通信安全之端到端加密技术”,内容有修订和改动。


一、引言

随着移动互联网的普及,IM即时通讯类应用几乎替代了传统运营商的电话、短信等功能。得益于即时通讯技术的实时性优势,使得人与人之间的沟通和交流突破了空间、时间等等限制,让信息的传递变的无处不在。

但互联网为我们的生活带来极大便利的同时,用户的隐私和通信安全问题也随之而来。

对于IM应用开发者来说,信息沟通的开放性也意味着风险性,用户与网络和移动设备的高度依赖,也为不法之徒提供了可乘之机。因此,提升即时通讯应用的安全性尤其重要。

本篇文章将围绕IM通信连接层的安全问题及实现方案,聚焦IM网络“链路安全”,希望能带给你启发。




二、技术看点

1)引言

2)系列文章

3)即时通讯面临的安全问题

4)常用的互联网攻击手段

5)密码学在即时通讯系统中的应用

  • 5.1 基本常识

  • 5.2 在即时通讯中的应用

6)通信连接层的会话加密

7)基于SSL/TLS的通信连接层如何实现会话的快速恢复

  • 7.1 概述

  • 7.2 基于Session ID的SSL/TLS长连接会话恢复

  • 7.3 基于SessionTicket的SSL/TLS长连接会话恢复

8)本文小结

9)参考资料


三、即时通讯面临的安全问题

1)窃取内容:如果在整个即时通讯的通信过程中,其数据内容是未加密或弱加密的,那么其信息被截获后就可以直接被读取出来。

那么,这就会导致用户数据(包括个人隐私ovtr据)的泄露,甚至可能危害用户的财产安全(比如微信这类IM中,红包、钱包都会涉及财产安全)。如果在办公场景下,被窃取的还可能是公司商业机密,那势必将会造成更大的经济损失。

2)篡改内容:如果通信内容被截获后,对其进行修改再发送,会破坏信息的正确性和完整性(此消息已非彼消息)。

3)伪造内容:如果用户通信凭证(比如token)被窃取或在通信过程中穿插其他信息,就可能为冒用用户身份骗取与之通信者的信任创造可能,埋下更大的安全隐患。

4)传播不法内容:基于即时通讯系统的消息推送能力,不法分子除了可能传播涉黄、涉赌、暴恐或危害国家安全的信息外,还可能传播计算机木马病毒等,可能带来的危害范围将进一步扩大。


四、常用的互联网攻击手段

网络通信过程中常见的攻击手段:


1)移植木马:过在终端移植木马,截获或篡改信息。

2)伪造应用:通过伪造 APP 或在 APP 中添加后门等方式,使终端用户误以为是正常应用进行使用,从而达到其不法目的。

3)网络抓包:通过在网络设备上进行抓包,获取用户通信内容。

4)中间人攻击:通过劫持 DNS 等手段,使用户通信连接经过攻击者的设备,从而达到窃取、篡改等目的。

5)漏洞挖掘:服务端或终端除了自有的程序以外还包含了各种三方组件或中间件,通过挖掘其上的漏洞,达到不法目的。

从上图和手段可知,聊天信息从应用经过网络到达服务端,这期间的任何一个环节都有可能被人利用。所以,在“危机四伏”的互联网络通信中,“安全”必须重视。


五、密码学在即时通讯系统中的应用

5.1基本常识


针对前述的安全问题和攻击手段,将密码学应用在即时通讯系统连接上,对通信数据进行加密就变得尤为重要。

密码学解决信息安全的三要素(CIA)即:


  • 1)机密性(Confidentiality):保证信息不泄露给未经授权的用户;

  • 2)完整性(Integrity):保证信息从真实的发信者传送到真实的收信者手中,传送过程中没有被非法用户添加、删除、替换等;

  • 3)可用性(Availability):保证授权用户能对数据进行及时可靠的访问。


以上表述,好像有点绕口,我们换个通俗一点的表述。。。

密码学在网络通信中的三大作用就是:


  • 1)加密:防止坏人获取你的数据;

  • 2)认证:防止坏人修改了你的数据而你却并没有发现;

  • 3)鉴权:防止坏人假冒你的身份。


除 CIA 外,还有一些属性也是要求达到的,如可控性(Controllability)和不可否认性(Non-Repudiation)。

5.2在即时通讯中的应用


作为即时通讯中的关键组成,IM即时通讯系统为了实现消息的快速、实时送达,一般需要客户端与服务器端建立一条socket长连接,用以快速地将消息送达到客户端。

通常即时通讯客户端会以 
TCP 或 UDP 的方式与服务器建立连接,同时某些场景下也会使用 HTTP 的方式从服务器获取或提交一些信息。

整个过程中所有的数据都需进行加密处理,简单的数据加密和解密过程可以归纳为:发送方输入明文 -> 加密 -> 生成密文 -> 传输密文 -> 接收方解密 -> 得到明文。

这其中,会涉及:


  • 1)对称加密算法(详见《对称加密技术在Android平台上的应用实践》)

  • 2)非对称加密算法(详见《非对称加密技术的原理与应用实践》);

  • 3)信息摘要算法(详见《常用加解密算法与通讯安全讲解》)。


这其中,我国也有一套自有的密码算法(国密算法):国密算法,即国家商用密码算法,是由国家密码管理局认定和公布的密码算法标准及其应用规范,其中部分密码算法已经成为国际标准。如 SM 商用系列密码:对称加密算法 SM4、非对称加密算法 SM2、信息摘要算法 SM3。


六、参考资料

[1] TCP/IP详解 - 第11章·UDP:用户数据报协议

http://docs.52im.net/extend/docs/book/tcpip/vol1/11/

[2] TCP/IP详解 - 第17章·TCP:传输控制协议

http://docs.52im.net/extend/docs/book/tcpip/vol1/17/

[3] 网络编程懒人入门(三):快速理解TCP协议一篇就够

http://www.52im.net/thread-1107-1-1.html

[4] 网络编程懒人入门(四):快速理解TCP和UDP的差异

http://www.52im.net/thread-1160-1-1.html

[5] 零基础IM开发入门(二):什么是IM系统的实时性?

http://www.52im.net/thread-3143-1-1.html

[6] 对称加密技术在Android平台上的应用实践

http://www.52im.net/thread-642-1-1.html

[7] 非对称加密技术的原理与应用实践

http://www.52im.net/thread-653-1-1.html

[8] 常用加解密算法与通讯安全讲解

http://www.52im.net/thread-219-1-1.html

[9] 微信新一代通信安全解决方案:基于TLS1.3的MMTLS详解

http://www.52im.net/thread-310-1-1.html

[10] 为什么要用HTTPS?深入浅出,探密短连接的安全性

http://www.52im.net/thread-3897-1-1.html

[11] 探讨组合加密算法在IM中的应用

http://www.52im.net/thread-217-1-1.html


七、全文链接

即时通讯网(52im.net)社区链接:http://www.52im.net/thread-4015-1-1.html,或点击下文的“阅读原文”!


文章有问题?点此查看未经处理的缓存