首先介绍一下什么是 session 聊天软件,session 是一个不需要手机号注册的聊天软件,它使用的 Signal 协议进行端对端消息加密,然后使用 Oxen 洋葱网络进行消息的传递。
Signal 协议结合了双棘轮算法、前置密钥和三次椭圆曲线迪菲-赫尔曼金钥交换( 3-DH )握手[3],并使用 Curve25519 、AES-256 和 HMAC-SHA256 算法。双棘轮算法( Double Ratchet Algorithm ,以前称为 Axolotl Ratchet[1][2])是由 Trevor Perrin 和 Moxie Marlinspike 在 2013 年开发的密钥管理算法。它可以用作安全协议的一部分。为即时通讯系统提供端到端加密。在初始密钥交换之后,它管理持续更新和维护短期会话密钥。它结合了基于迪菲-赫尔曼密钥交换( DH )的密码棘轮和基于密钥派生函数( KDF )的棘轮,例如散列函数,因此被称为双棘轮。通信双方为每个双棘轮消息派生出新密钥,使得旧的密钥不能从新的密钥计算得出。通信双方还将在消息中附加迪菲-赫尔曼公钥值。将迪菲-赫尔曼计算的结果将被混合到派生出的密钥中,使得新的密钥不能从旧的密钥计算得出。在一方密钥泄露的情况下,这些属性为泄漏前或泄漏后加密的消息提供一些保护。
也就是说理论上只要 app 是安全的,在各种信道下通讯都是安全的。
另外所有 session 的消息都是通过 oexn 的匿名网络,通过 3 层节点进行传递的,这些节点的物理位置统计 https://oxendashboard.com/#5 ,很明显这里面没有 china 节点。
那么你可以说,即使它的协议是安全的,但是它也可以在消息加密前偷偷上传。这个确实是有可能的,这个也是开源的意义,session 的所有客户端、服务端代码都是开源的,也可以自己进行编译使用,我自己就是这样做的。
session 的安全强度比 Signal app 高,Signal app 需要提供手机号注册,上传通讯录,知道你和谁聊天(不知道内容),每次聊天的时间、ip 等信息。但是 session 不需要你的手机号,不需要你的通讯录,不知道你的 ip ,没有任何元数据被统计和收集,随时都可以零成本换一个新号。
大家可以去 GitHub 查看 session 的源码,也可以自己编译体验(偷懒就去应用市场下载),这个软件是否安全,大家自己研究一下就知道了。