野火端到端及阅后即焚功能介绍

野火为了实现端到端加密和阅后即焚功能开发了 密聊 会话类型,这个新的会话类型的所有消息都是端到端加密的,并且可以开启阅后即焚功能。野火在开发密聊的过程中参考了电报密聊的端到端加密的技术和交互设计。下面就详细介绍一下:

1. 端到端加密的法律问题

根据国内互联网相关法律要求,运营互联网信息服务,必须保存所有的信息一段时间,必须对信息进行监管。所以说所有国内运营端到端加密的即时通讯软件都是不合法的或者是假的端到端加密。

野火也必须遵循这一规定,不能提供端到端加密功能给客户用于互联网信息服务。但是如果是非互联网应用,比如企业或者组织内部使用,不能公开注册,这种是不受互联网信息服务相关法律约束的。但为了防止该功能被滥用,野火只能提供此功能给知名企业或可信任机构用在非互联网应用方面。

2. 密聊的使用方法

假设用户A需要发起密聊给用户B,用户A点击右上角加号按钮,选择发起密聊,在弹出的联系人界面选择用户B,这时建立密聊会话,A的状态是等待状态,此时还不能发送消息。当B打开应用收到A的密聊请求时,响应对方的请求,协商完成密钥,密聊会话建立成功,此时双方才可以进行各种信息的发送。另外可以设置自己的阅后即焚时间,文本消息对方阅读以后在到达阅后即焚时间后双方同步删除消息。图片文件类消息在打开后,开始计时,当到达阅后即焚时间后双方同时删除。

3. 野火密聊的特点

  1. 密聊消息都是端到端加密消息,密钥不经过服务器传输,也不会存储在服务器,仅存在双方客户端。
  2. 密聊消息在对端接收下来后会立即从服务器删除,不在服务器端保存。
  3. 可以设置阅后即焚时间,到达时间后双方同时删除。阅后即焚时间双方是分开的,互不影响。
  4. 不限时撤回消息,发了消息后任意时间都可以撤回。
  5. 不限时删除双方消息,发方和收方都可以选择同时删除本端和对端的消息。
  6. 可以销毁密聊会话,当销毁后,双方所有信息及密钥全部删除,所有信息销毁干净。
  7. 可以不限制密聊的总数与某个用户的密聊总数。
  8. 密聊消息不允许转发,不允许收藏。

4. 野火密聊的限制

  1. 不能支持多端,仅能在双方的某个客户端建立密聊。
  2. 不支持消息和会话漫游,更换手机后密聊会话失效。
  3. 不支持拉取远程历史消息。
  4. 密聊仅支持移动端和PC端,web端和小程序端不支持。
  5. 当密聊被邀请方PC和移动端多端时,随机某个客户端成功建立密聊,另外一个建立失败。如果想要在某个客户端建立密聊,需要关闭掉另外一个客户端。
  6. 密聊仅支持1对1,不支持群聊。
  7. 密聊不支持Server API消息。
  8. 阅后即焚消息只能在密聊会话中使用,不支持其它会话。
  9. 密聊消息不支持服务器端消息转发功能。
  10. 密聊消息推送不显示内容。
  11. 密聊会话的创建必须等对方上线才能完成,在创建完成之前不能发送消息。

5. 密聊的密钥安全性

每个密聊会话的密钥是通过DH算法生成的,关于DH算法可以自行百度一下。简单来说,就是双方的私钥不通过网络传输,根据对方的公钥和己方的私钥,可以计算出同样的密钥。攻击方即使获取了所有网络传输信息都无法得到密钥,DH算法是目前已知最适合做端到端加密的算法。密钥协商生成后存储在协议栈的sqlite数据库中,协议栈的数据库经过了sqlcipher加密。

理论上是可以通过IM服务数据库查到客户端sqlite数据库的密码,然后用这个密码打开客户端的数据库,读取某个密聊会话的密钥,然后再把捕获的网络流量包先进行野火链路解密(同样需要去IM服务数据库中找到密钥),再用端到端加密的密钥解密。所以最保险的处理就是定期销毁密聊,然后重新建立密聊,这样就能确保信息不会有任何泄漏的可能。

6. 加密和解密的处理

端到端消息解密和解密的处理都是在协议栈自动完成,不需要上层进行特殊处理。但媒体类消息有些特殊,发送跟正常发送消息一样,协议栈会自动做好内容加密再上传。当接收方接到到媒体消息后,点打开需要先下载加密后的文件,然后再调用野火协议栈进行解密,注意解密的内容只能放到内存中,不能放到文件中。

7. 如何开启和使用

默认是不带密聊功能的,如果需要密聊功能需要我们确认后发布特殊的SDK才行。密聊功能只有专业版IM服务才支持,不需要额外的费用。

8. 需要客户进一步完善的地方

野火只专注于基础功能,需要客户进一步完善UI,我们能想到的有如下几点,可能会有更多需要完善:

  1. 密聊防止截屏的处理。
  2. 密聊页面添加暗水印。
  3. 阅后即焚开始计时及删除动画和提示。
  4. 媒体文件解密的处理,目前只处理了语音、图片和动图,其它类型消息需要自行处理。
  5. 媒体类文件的中间文件的处理,下载下来的加密的文件查看后是否要删除。
  6. 对象存储服务文件的处理,当下载成功后是否要从服务器上删除还是别的什么时候删除。
2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2022-08-29 09:42:41

results matching ""

    No results matching ""