《即时消息技术剖析与实战》学习笔记6——IM系统如何保证消息的安全性
在消息产生、流转的各个环节中,需要保证消息传输安全性、消息存储安全性、消息内容安全性。
一、消息传输安全性
消息传输的重要防范点有两个,一是访问入口安全,二是传输链路安全。
1.HttpDNS保证访问入口安全
访问入口指的是即时消息服务中提供的一个公网的接入服务,作为用户收发消息的出入口,它通过域名的方式提供给客户端。常见的问题有DNS劫持。
DNS劫持的原因
1)路由器的DNS设置被非法侵入篡改;
2)运营商的LocalDNS可能会导致接入域名的解析被劫持。
这里先解释一下:LocalDNS是部分运营商为了降低跨网流量,缓存部分域名的指向内容,把域名强行指向自己的内容缓存服务器的IP地址。
- 运营商可能会修改DNS的TTL(time-to-live,DNS缓存时间),导致DNS的变更生效延迟,影响服务可用性。
- 运营商可能为了减轻自身的资源压力,把DNS请求转发给其他运营商解析,这样分配的IP地址可能存在跨运营商访问的问题,导致请求变慢甚至不可用。
防止DNS劫持的方法
1)如果是路由器的DNS被篡改,可以重置路由器的配置,修改路由管理登录密码。
2)如果是运营商LocalDNS的域名劫持和调度错误,可以使用HttpDNS。
- HttpDNS绕开了运营商的LocalDNS,通过HTTP协议来直接和DNS服务器交互,有效防止域名被运营商劫持。
- HttpDNS服务器能够获取到真实的用户出口IP,因而能选择离用户更近的节点进行接入,或者一次返回多个接入IP,使客户端通过测速等方式选择速度更快的接入IP,使接入调度更精准。
2.TLS传输层加密协议保证传输链路安全
消息传输链路出现问题主要有以下几个原因:
1)中断:攻击者破坏或切断网络,破坏服务可用性,属于主动攻击;
2)截获:攻击者非法窃取传输的消息内容,属于被动攻击;
3)篡改:攻击者非法篡改传输的消息内容,破坏消息的完整性和真实语义;
4)伪造:攻击者伪造正常的通讯消息模拟正常用户或者模拟IM服务端。
针对第一种原因,可以采取多通道方式提升链路可用性,从而解决消息链路中断;
针对后三种原因,可以利用私有协议和TLS(消息内容加密)进行防控。
TLS巧妙地把“对称加密算法”、“非对称加密算法”、“密钥交换算法”、“消息认证码算法”、“数字签名证书”、“CA认证”进行结合,有效地解决了消息传输过程中的截获、篡改、伪造问题。
二、消息存储安全性
如果消息存储在服务端,不管消息内容是明文还是密文,都会存在泄露的风险。保证消息内容存储安全性的最好方式是:
1.消息内容不在服务端存储(这个没啥好说的,估计大部分场景都需要存储在服务端);
2.消息内容采用“端到端加密”(E2EE),中间任何链路环节都不对消息进行解密,这样除了收发双方,其它任何中间环节都无法获取消息原文内容。
“端到端加密”之所以更加安全,是因为和服务端TLS加密不一样。
它是由通信双方各自生成密钥对并进行公钥的交换,私钥各自保存在本地不给到IM服务端。
发送方的消息使用接收方的公钥来进行加密,因此即使IM服务端拿到了加密消息,也会因为没有接收方的私钥无法解密。
三、消息内容安全性
内容安全性主要指的是内容的识别和传播的控制,一般依托于第三方的内容识别服务来进行防范。常见的方案有:
1.建立敏感词库,针对文字内容进行安全识别。
2.依托图片识别技术来对色情图片/视频/广告、涉政图片等进行识别、处理。
3.使用“语音转文字”和OCR(图片文本识别)辅助图片、语音的进一步挖掘识别。
4.通过爬虫技术对链接进行分析,识别“风险外链”。
对于IM服务端来说,要做的是建立与“识别”配套的惩罚处置机制,比如识别到群里有人发色情图片,就对该用户进行“禁言”处理,或者进行“解散群”的操作,具体业务具体分析。
《即时消息技术剖析与实战》学习笔记6——IM系统如何保证消息的安全性的更多相关文章
- 《即时消息技术剖析与实战》学习笔记4——IM系统如何保证消息的可靠性
IM 系统中,保证消息的可靠投递主要体现在两方面,一是消息的不丢失,二是消息的不重复. 一.消息不丢失 消息丢失的原因 首先看一下发送消息的流程,如下图所示: 消息.可以采取"时间戳比对&q ...
- 《即时消息技术剖析与实战》学习笔记5——IM系统如何保证消息的一致性
一.什么是消息一致性 消息一致性指的是消息的时序一致性,即消息收发的一致性.如果不能保证时序一致性,就会造成聊天语义不连贯,引起误会. 对于点对点的聊天场景,时序一致性保证接收方的接收顺序和发送方的发 ...
- 《即时消息技术剖析与实战》学习笔记3——IM系统如何保证消息的实时性
IM 技术经历过几次迭代升级,如图所示: 从简单.低效的短轮询逐步升级到相对效率可控的长轮询: 全双工的 Websocket 彻底解决了服务端的推送问题: 基于 TCP 长连接衍生的 IM 协议,能够 ...
- 《即时消息技术剖析与实战》学习笔记1——IM系统的架构
一.IM的应用场景 聊天.直播.在线客服.物联网等所有需要实时互动.高实时性的场景,都需要应用到 IM 技术.
- 《即时消息技术剖析与实战》学习笔记12——IM系统如何提升图片、音视频消息发送、浏览的体验
IM系统如何提升用户发送.浏览图片和音视频消息的体验呢?一是保证图片.音视频消息发送得又快又稳,二是保证用户浏览播放图片.音视频消息时流畅不卡顿. 一.提升用户发送图片.音视频的体验 1. 多上传接入 ...
- 《即时消息技术剖析与实战》学习笔记11——IM系统如何保证服务高可用:流量控制和熔断机制
IM 系统的不可用主要有以下两个原因: 一是无法预测突发流量,即使进行了服务拆分.自动扩容,但流量增长过快时,服务已经不可用了: 二是业务中依赖的这些接口.资源不可用或变慢时,比如发消息可能需要依赖& ...
- 《即时消息技术剖析与实战》学习笔记7——IM系统的消息未读
一.什么是消息未读 消息未读包括会话未读和总未读.前者指的是当前用户和某一聊天方的未读消息数,后者指的是当前用户的所有未读消息数,也就是所有会话未读的和.比如用户A收到用户B的2条消息,还收到用户C的 ...
- 《即时消息技术剖析与实战》学习笔记8——IM系统如何保证长连接的可用性:心跳机制
假设有以下突发意外情况: 用户进入信号不好的地方,手机没有网络信号了 上网的路由器突然掉线了 这个时候,比如微信发消息,消息就会转圈圈,甚至变成红色叹号-- 上面情况都会导致"长连接&quo ...
- 《即时消息技术剖析与实战》学习笔记9——IM系统如何支持消息的多终端漫游
一.什么是多终端漫游 多终端漫游是指:用户在任意一个设备登录后,都能获取到历史的聊天记录.如:QQ 默认漫游 7 天的聊天记录,开通 VIP 会员可漫游 30 天,开通 SVIP 会员可漫游 2 年. ...
随机推荐
- i春秋四周年福利趴丨一纸证书教你赢在起跑线
i春秋四周年庆典狂欢已接近尾声 作为压轴福利 CISP-PTE认证和 CISAW-Web安全认证 迎来了史无前例的超低折扣 每个行业都有特定的精英证书,例如会计行业考取的是注册会计师证,建筑行业是一级 ...
- 章节十四、2-自动完成功能-Autocomplete
一.什么是自动匹配功能? 很多网站都有自动匹配功能,列如你在使用天猫搜索商品时,输入“鞋”,输入框的下面会出现很多与“鞋”有关的选项. 二.以https://www.expedia.com/网站的城市 ...
- 5. [mmc subsystem] mmc core(第五章)——card相关模块(mmc type card)
零.说明(重要,需要先搞清楚概念有助于后面的理解) 1.mmc core card相关模块为对应card实现相应的操作,包括初始化操作.以及对应的总线操作集合.负责和对应card协议层相关的东西. 这 ...
- linux 线程基础
线程基础函数 查看进程中有多少个线程,查看线程的LWP ps -Lf 进程ID(pid) 执行结果:LWP列 y:~$ ps -Lf 1887 UID PID PPID LWP C NLWP STIM ...
- Confluence 邮箱设置
Confluence有两种方法设置邮箱 原理: confluence服务器配置好邮箱信息,用户触发邮件发送规则时,confluence服务使用已配置的邮箱信息登录到邮箱服务器,进行发件服务. 那么我们 ...
- mysql常用配置注意项与sql优化
建立数据库: 建立数据库时编码字符集采用utf8 排序规则: 后缀"_cs"或者"_ci"意思是区分大小写和不区分大小写(Case Sensitive & ...
- JS高阶---显式原型和隐式原型
前言: 1.函数对象即函数的prototype原型属性指向原型对象,在创建函数时便存在,默认为空Object 2.实例对象的__proto__隐式原型在实例化创建实例时产生,值等于构造函数的显式pro ...
- JAVA并发-Executor
结构 类继承图: 上面的各个接口/类的关系和作用: Executor 执行器接口,也是最顶层的抽象核心接口, 分离了任务和任务的执行. ExecutorService 在Executor的基础上提供了 ...
- 成神之Java之路
既然励志在java路上走的更远,那就必须了解java的路径.先看图 image.png 更加细化的细节如下 一: 编程基础 不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的 ...
- leetcode组合总和 Ⅳ 解题路径
题目: 关于动态规划类题目的思路如何找在上一篇博客 https://www.cnblogs.com/niuyourou/p/11964842.html 讲的非常清楚了,该博客也成为了了leetcode ...