请选择 进入手机版 | 继续访问电脑版

默认
打赏 发表评论 11
移动端安全通信的利器——端到端加密(E2EE)技术详解

前言


端到端加密允许数据在从源点到终点的传输过程中始终以密文形式存在。采用端到端加密(又称脱线加密或包加密)时消息在被传输时到达终点之前不进行解密,因为消息在整个传输过程中均受到保护,所以即使有节点被损坏也不会使消息泄露。

端到端加密系统与链路加密和节点加密相比更可靠,更容易设计、实现和维护。端到端加密还避免了其它加密系统所固有的同步问题,因为每个报文包均是独立被加密的,所以一个报文包所发生的传输错误不会影响后续的报文包。此外,从用户对安全需求的直觉上讲,端到端加密更自然些。单个用户可能会选用这种加密方法,以便不影响网络上的其他用户,此方法只需要源和目的节点是保密的即可。

端到端加密系统通常不允许对消息的目的地址进行加密,这是因为每一个消息所经过的节点都要用此地址来确定如何传输消息。由于这种加密方法不能掩盖被传输消息的源点与终点,因此它对于防止攻击者分析通信业务是脆弱的。

基于以上特性,对于当今如此繁荣的移动端应用来说,由于无线通信技术安全问题的特殊性,研究和应用端到端(E2EE)技术还是非常有价值的。

1.jpg

什么是端到端加密?


实际上,我们可以将端到端加密(E2EE)视作一种目前比较安全的通信系统。在这个系统中,只有参与通信的双方用户可以读取通信数据。不仅网络犯罪分子无法窃听到这种通信信息,甚至连互联网服务提供商、通信服务提供商、以及电信服务提供商都无法获取到这类通信数据。

除此之外,端到端加密还可以防止攻击者轻易地获取到用于解密通信会话的加密密钥。这种通信系统可以有效地防止攻击者对用户的通信数据进行拦截或窃听,而且如果攻击者想要篡改通信内容的话,几乎也是一件不太可能完成的任务。这也就意味着,那些在文字聊天服务中采用了端到端加密的公司无法将客户的聊天内容转交给某些特殊的情报机构。

2.jpg

当我们需要将某些数据从一个源地址发送到目的地址时,我们就可以使用端到端加密技术来保证加密数据的安全传输。端到端加密的主要优势是在Web层就可以对数据进行加密处理,然后在数据接收端的数据库或者应用服务器层解密出明文数据。如果在实现端到端加密的过程中,我们使用的是安全级别较高的加密算法,那么这样就可以确保传输数据能够得到最高级别的安全保护。

在实现端到端机密的过程中,发起加密操作的永远是源设备的用户,这样可以最大程度地体现出这项技术的灵活性,因为用户可以自主选择需要对哪部分数据进行加密。但是,在端到端加密的过程中,类似IP地址和路由信息这样的细节数据是无法进行加密处理的。

端到端加密的优势在哪里?


3.jpg

E2EE技术优势主要体现在以下几个方面:

  • 在用户需要对敏感数据加密的情况下,“有选择性地加密”将会大幅提升加密的灵活性,用户可以根据自己的情况来选择需要进行加密的数据;
  • 用户可以对端到端加密的实现过程进行自定义配置,这将有助于实现功能的高度模块化,并提升加密模块的内聚性;
  • 在整个加密过程中所涉及到的文件量是非常小的,所以加密过程所占用的资源量并不大,而且加密时间也不会太久。

接下来,让我们来了解一下什么是高级加密标准(AES)。

高级加密标准(AES)


高级加密标准(AES)在密码学中又称Rijndael加密算法,AES是美国联邦政府采用的一种区块加密标准。这个标准的设计目标是为了替代原先的DES,目前该标准已经经过了大量安全研究专家的分析,并且在全世界范围内得到了广泛使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPSPUB 197,并在2002年5月26日成为有效的加密标准。2006年,高级加密标准(AES)已然成为对称密钥加密中最流行的算法之一。

下图所示的是一个简单的AES加密流程:

4.jpg

接下来,我们将通过下面的问答环节来向大家介绍有关高级加密标准的内容。

问题一:AES加密到底是什么?

AES加密算法是一种对称加密算法,该算法由比利时密码学家JoanDaemen和VincentRijmen共同设计,结合两位作者的名字,所以得名“Rijndael”加密算法。

AES加密专门用于对电子数据进行加密。毫无疑问,在需要采用信息加密技术的各种聊天应用程序中,AES加密算法肯定是它们的首选。除此之外,AES加密算法可以使用128位、192位、或者256位长度的密钥来对文字数据进行加密和解密。

问题二:AES加密算法的强大之处到底在哪?

当你需要发送敏感信息和凭证数据时,AES加密和解密算法可以保证传输数据的安全。它可以将机密数据加密成一种可被解密的形式,但是只有当你手握正确的解密密码时,你才能够对其进行解密。

问题三:AES加密算法到底有多安全?

AES加密算法是一种非常安全的加密方式,美国政府一直都在使用这种加密算法来加密敏感数据。

Diffie-Hellman密钥交换算法


简而言之,Diffie-Hellman是一种确保共享密钥安全通过不安全网络的一种方法。包括AES加密算法在内的对称加密算法可以使用这种方式来交换加密密钥。需要安全通信的双方可以用这个方法确定对称密钥,然后可以用这个密钥来进行数据的加密和解密。但是请注意,这个密钥交换算法只能用于密钥的交换,而不能进行消息的加密和解密。当通信双方确定了需要使用的密钥后,要使用其他对称加密算法来进行实际的加密和解密操作。

还有一种匿名密钥交换协议,即椭圆曲线Diffie-Hellman(ECDH)。通过椭圆曲线Diffie-Hellman (ECDH) 密钥协商协议,两个用户可以创建共享的机密协议。他们可以在不安全的公共媒体上完成此操作,而不必事先交换任何私有信息。该共享机密协议通常用于派生密钥材料。对称算法(例如高级加密标准(AES)算法)可以使用这份密钥材料来对后续消息进行加密。

5.jpg

为什么需要ECDH密钥交换算法?

即便是没有ECDH,我们的AES加密算法依然可以正常工作。但问题就是,我们还需要自己去处理通信双方的私钥问题。因此,我们需要将密钥硬编码至.apk文件当中,但此时的密钥是可以通过对apk文件进行反编译来获取到的。因此,为了避免这种情况的发生,我们需要使用ECDH密钥交换算法来帮助我们进行密钥的交换操作。

其实这也很好解释,假如现在A需要与B进行通信,那么此时就要生成一个只有他们双方自己知道的密钥。当A要与C(新的通信对象)进行通信时,又要单独生成另外一个密钥。这就是端到端加密的实现方式,你可以将其想象成一种通信专线的形式。也就是说,假如你要和一百个不同的人聊天,那么此时就会存在一百条私人通信信道。

WhatsApp是怎么做的?


WhatsApp也采用了相同的处理机制。这个目前世界上使用人数最多的即时通信服务已经在他们的通信服务中引入了端到端加密技术,而且几乎所有的移动设备都可以使用这项服务,包括Android、iPhone、黑莓、诺基亚、以及WindowsPhone在内。WhatsApp不仅会对每一条信息、每一张照片、每一个视频、以及每一份文件进行加密处理,而且还会对用户的语音通话信息进行加密。端到端加密可以确保只有通信双方(即信息的发送方和接收方)能够对数据进行解密,即使是WhatsApp的开发人员也无法解密这些数据。

(原文链接:http://www.freebuf.com/articles/database/113855.html

更多IM安全文章


即时通讯安全篇(一):正确地理解和使用Android端加密算法
即时通讯安全篇(二):探讨组合加密算法在IM中的应用
即时通讯安全篇(三):常用加解密算法与通讯安全讲解
即时通讯安全篇(四):实例分析Android中密钥硬编码的风险
即时通讯安全篇(五):对称加密技术在Android平台上的应用实践
即时通讯安全篇(六):非对称加密技术的原理与应用实践
传输层安全协议SSL/TLS的Java平台实现简介和Demo演示
理论联系实际:一套典型的IM通信协议设计详解(含安全层设计)
微信新一代通信安全解决方案:基于TLS1.3的MMTLS详解
来自阿里OpenIM:打造安全可靠即时通讯服务的技术实践分享
简述实时音视频聊天中端到端加密(E2EE)的工作原理
移动端安全通信的利器——端到端加密(E2EE)技术详解
>> 更多同类文章 ……

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:IM群聊消息如此复杂,如何保证不丢不重?下一篇:全方位评测:Protobuf性能到底有没有比JSON快5倍?

本帖已收录至以下技术专辑

推荐方案
评论 11
先顶
签名: 该会员没有填写今日想说内容.
先顶后看,年薪百万
引用:liu1348789134 发表于 2017-03-29 16:16
先顶后看,年薪百万

签名: 《盘点移动互联网时代的社交产品进化史(上篇):谁主沉浮》http://www.52im.net/thread-2711-1-1.html
先顶后看,年薪百万
引用:Sweet_ruirui 发表于 2017-03-29 17:04
先顶后看,年薪百万

祝你成功
签名: 《盘点移动互联网时代的社交产品进化史(上篇):谁主沉浮》http://www.52im.net/thread-2711-1-1.html
那么具体实现该怎么做呢
签名: 该会员没有填写今日想说内容.
我也顶一个
签名: 心情好
,如果再来一个所有加密的方式的对比分析,就太好了
签名: 好好学习、天天向上
收回上一条评论,已经看到另外几篇文章了,楼主真的是很好很强大,感觉遇到非自己专业的问题,已经不需要去百度,直接来这里找答案就好了。。。。。。。
签名: 好好学习、天天向上
引用:可爱的汪星人 发表于 2018-08-07 14:47
收回上一条评论,已经看到另外几篇文章了,楼主真的是很好很强大,感觉遇到非自己专业的问题,已经不需要去 ...

签名: 《盘点移动互联网时代的社交产品进化史(上篇):谁主沉浮》http://www.52im.net/thread-2711-1-1.html
这个很好理解。在数据发送的时候先进行加密,等接受方收到数据后再进行解密。可以在常用的压缩算法的基础上进行自己的修改。比如lz4、gz等。总之就是让别人无法对这些数据直接进行分析。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部