IM聊天系统安全手段之传输内容端到端加密技术

本文由融云技术团队分享,原题“互联网通信安全之端到端加密技术”,内容有较多修订和改动 。
 
1、引言 
在上篇《IM聊天系统安全手段之通信连接层加密技术》中,分享了关于通信连接层加密的相关技术和实践,包括在传输即时通信消息时启用 TLS 链路加密(保证消息在到达服务器前无法被窃听和篡改)、使用 CA 认证机制(杜绝中间人攻击)等 。
本篇将围绕IM传输内容的安全问题,以实践为基础,为你分享即时通讯应用中的“端到端”加密技术 。

IM聊天系统安全手段之传输内容端到端加密技术

文章插图
学习交流:
 
- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》
- 开源IM框架源码:https://github.com/JackJiang2011/MobileIMSDK(备用地址点此)
 
(本文已同步发布于:http://www.52im.NET/thread-4026-1-1.html)
 
2、系列文章 
本文是IM通讯安全知识系列文章中的第11篇,此系列总目录如下:
 
  • 《即时通讯安全篇(一):正确地理解和使用Android端加密算法》
  • 《即时通讯安全篇(二):探讨组合加密算法在IM中的应用》
  • 《即时通讯安全篇(三):常用加解密算法与通讯安全讲解》
  • 《即时通讯安全篇(四):实例分析Android中密钥硬编码的风险》
  • 《即时通讯安全篇(五):对称加密技术在Android平台上的应用实践》
  • 《即时通讯安全篇(六):非对称加密技术的原理与应用实践》
  • 《即时通讯安全篇(七):如果这样来理解HTTPS原理,一篇就够了》
  • 《即时通讯安全篇(八):你知道,HTTPS用的是对称加密还是非对称加密?》
  • 《即时通讯安全篇(九):为什么要用HTTPS?深入浅出,探密短连接的安全性》
  • 《即时通讯安全篇(十):IM聊天系统安全手段之通信连接层加密技术》
  • 《即时通讯安全篇(十一):IM聊天系统安全手段之传输内容端到端加密技术》(* 本文
3、为什么需要端到端加密? 
上篇中提到的连接层加密技术,这是提升IM客户端到服务器之间数据传输的安全性手段,但是这并不能解决用户间的通信隐私性以及安全性风险 。
因为在将数据传输到服务器之后,所有有权访问此服务器的人,包括员工、供应商及其他有关人员(甚至黑客),都有可能读取到用户的数据 。
有鉴于此,端到端加密技术在即时通讯IM领域被广泛应用,包括WhatsApp、Signal、Telegram 等国外即时通信软件中都有使用 。
IM聊天系统安全手段之传输内容端到端加密技术

文章插图
PS:有关端到端加密的基础知识,可以从这两篇里得到,建议详读:
 
  • 《移动端安全通信的利器——端到端加密(E2EE)技术详解》
  • 《简述实时音视频聊天中端到端加密(E2EE)的工作原理》
4、端到端加密的技术设计思路 
4.1 简化版思路
说到端到端加密,我们首先想到的解决方案是:在发送端发送消息前对整个消息进行加密,接收端接收到消息后进行解密 。
如上这样:消息中转服务器就无法获取我们的消息内容了 。
事实上:这确实是端到端加密中消息收发的简化版解决方案,只是我们在实际应用中要更加复杂,效果也更加安全 。
4.2 如何安全地传递用于消息加解密的密钥
对于端到端加密,我们需要先解决的前置安全问题是:如何安全地传递用于消息加解密的密钥 。
答案是:用非对称加密的方式传输密钥(与 SSL / TLS 中安全交换密钥的方式类似) 。
非对称加密传输对称加密密钥的算法,一般归结两种方式:
 
  • 1)一种是以 RSA、ECC 等为主(公钥加密私钥解密的方式,本质是加解密的算法);
  • 2)另一种是以 DH、ECDH 为主的生成共享密钥的方式(本质是通过计算协商一个共同的密钥而不是加解密算法) 。
 
实际上:大部分即时通信软件中的端到端加密都采用生成共享密钥的方式来传输会话密钥 。这是为什么呢?


推荐阅读