


























今天在 GitHub Trending 上看到一个非常有价值的项目:SimpleX Chat,它重新定义了即时通讯的隐私边界,通过完全摒弃用户标识符的设计,为用户提供了前所未有的元数据保护能力。
SimpleX Chat 是一个开源的即时通讯平台,其核心创新在于:完全不使用任何形式的用户标识符——没有电话号码、没有用户名、没有随机数字 ID。这种设计从根本上切断了用户身份与通讯行为之间的关联,保护了"谁在与谁通讯"这一最敏感的元数据。
SimpleX 采用客户端-服务器架构,但与传统的联邦网络(如 Matrix)或 P2P 网络(如 Briar)有本质区别:
┌─────────────┐ 单向队列 ┌─────────────┐
│ 发送方 │ ────────────→ │ SMP 服务器 │ ────→ 接收方
│ (Client) │ │ (Relay) │
└─────────────┘ └─────────────┘
核心概念:单向消息队列(Simplex Message Queues)
-- 伪代码:消息队列的标识符结构
data MessageQueue = MessageQueue
{ senderAddress :: QueueAddress -- 发送方已知
, receiverAddress :: QueueAddress -- 接收方已知
, notifyAddress :: Maybe QueueAddress -- iOS 推送通知(可选)
}
-- 关键:发送方和接收方使用不同的地址访问同一队列
-- 服务器无法关联这两个地址属于同一连接
SimpleX 实现了三层加密:
# 消息加密流程(简化示意)
def encrypt_message(plaintext, recipient_public_key):
# 第一层:端到端加密(Double Ratchet)
e2e_encrypted = double_ratchet_encrypt(plaintext, recipient_public_key)
# 第二层:服务器加密(NaCl crypto_box)
server_encrypted = nacl_seal(e2e_encrypted, server_key)
# 第三层:TLS 由网络层处理
return server_encrypted
从 v5.6 版本开始,SimpleX 在双棘轮协议的每次密钥轮换时都加入了后量子密钥交换:
-- 基于 CRYSTALS-Kyber 的后量子密钥交换
-- 与经典的 X25519 结合,形成混合密钥交换
data PQKeyExchange = PQKeyExchange
{ classicalKey :: Curve448Key -- 经典密码学
, postQuantumKey :: Kyber768Key -- 后量子密码学
}
这一设计响应了 Apple 关于 iMessage PQ3 协议的论文中提出的量子威胁——即使量子计算机尚未实用化,现在的通讯内容也可能被"现在截获,未来破解"。
最简单的方式是直接从应用商店安装:
# 一键安装脚本
curl -o- https://raw.githubusercontent.com/simplex-chat/simplex-chat/stable/install.sh | bash
# 安装完成后启动
simplex-chat
# 构建 Docker 镜像
git clone https://github.com/simplex-chat/simplex-chat.git
cd simplex-chat
docker build -t simplex-chat -f Dockerfile .
# 运行 SMP 服务器
docker run -d -p 5223:5223 simplex-chat
# 示例:通过 SimpleX 地址连接
https://smp6.simplex.im/a#lrdvu2d8A1GumSmoKb2krQmtKhWXq-tyGpHuM7aMwsw
建立连接的两种方式:
邀请链接格式:
https://smp4.simplex.im/#/?v=1-2&smp=smp%3A%2F%2F...
1. 连接安全验证
# 验证连接安全码(类似 Signal 的安全号码)
# Settings → Contact → Verify Security Code
2. 消息消失
# 每个联系人可独立设置消失时间
disappearing_messages:
enabled: true
timeout: 24h # 支持:30m, 1h, 6h, 24h, 7d
3. 多配置文件
# 一个应用内可创建多个独立的身份配置
Profile 1: 个人通讯
Profile 2: 工作通讯
Profile 3: 隐身模式(每次连接使用随机名称)
4. Tor 集成
# 通过 Tor 访问消息服务器,完全隐藏 IP
# Settings → Network → Enable Tor
SimpleX 提供了完整的 Bot API:
// 示例:简单的平方机器人
const { SimplexClient } = require('simplex-chat-client');
const client = new SimplexClient('ws://localhost:5225');
client.on('message', async (msg) => {
const num = parseFloat(msg.content);
if (!isNaN(num)) {
const reply = `${num} 的平方是 ${num * num}`;
await client.sendMessage(msg.chatId, reply);
}
});
client.connect();
解决方案:SimpleX 的设计哲学是"不被发现,只能被邀请"。必须通过二维码或邀请链接建立连接,这虽然牺牲了便利性,但换来了真正的隐私保护。
当前状态:消息队列理论上可以长期使用,但建议定期手动轮换(Settings → Rotate Queues)。未来版本将支持自动轮换。
解析:SMP 服务器使用内存存储,消息送达后立即删除。如果服务器宕机,未送达的消息会丢失。解决方案:
| 特性 | SimpleX | Signal | Matrix |
|---|---|---|---|
| 用户标识符 | 无 | 电话号码 | 用户名/Matrix ID |
| 元数据保护 | 最强 | 中等 | 弱 |
| 去中心化 | 部分(可自建服务器) | 否 | 是(联邦) |
| 量子抗性 | 是 | 是(部分) | 否 |
| 审计状态 | Trail of Bits 两轮审计 | 是 | 否 |
答案:所有数据仅存储在客户端设备(加密),服务器仅临时缓存消息。导出功能:
Settings → Export Chat Database
# 生成加密的备份文件,可导入到其他设备
SimpleX Chat 代表了即时通讯领域的范式转变——从"便利优先,兼顾隐私"转向"隐私优先,提供足够便利"。其核心贡献在于:
对于需要高度隐私保护的场景(记者、律师、活动家、企业机密通讯),SimpleX Chat 是当前最佳选择。唯一的代价是需要适应"主动邀请建立连接"的使用模式,但这正是隐私保护的代价。
GitHub 仓库:https://github.com/simplex-chat/simplex-chat
安全声明:SimpleX Chat 已通过独立安全审计,但作为较新的平台,可能仍存在未知漏洞。对于极高安全需求场景,建议配合 Tor 和操作系统的安全隔离措施使用。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。