Session
Session 是一款免费、开源且去中心化的端到端加密即时通讯工具,专注于用户隐私、匿名性和元数据最小化。该应用程序允许用户创建账户并进行通信,而无需电话号码、电子邮件地址或任何其他个人身份信息。它由 Session 基金会开发和维护,建立在 Session 网络之上,该网络是由社区运营的节点的去中心化网络。该项目的指导原则可以用其口号概括为“发送消息,而非元数据”。[1]
历史和治理
Session 由澳大利亚非营利组织 Loki 基金会发起,该基金会致力于开发隐私技术。该基金会后来更名为 Oxen 隐私技术基金会 (OPTF),并从 2018 年开始担任该项目的初始管理者。详细介绍 Session 协议和架构的技术白皮书于 2020 年 2 月在 arXiv 上发布。 [2] [3]
2024 年 10 月,Session 项目的管理权从 OPTF 过渡到新成立的 Session 技术基金会 (STF),这是一个位于瑞士的非营利基金会。STF 的成立是为了监督 Session messenger 及其生态系统的持续开发、治理和推广。选择瑞士作为基地的原因是该国强大的个人隐私法和关于去中心化技术的复杂法规。 [4]
Session 项目建立在多年的开源开发基础上,并得到全球贡献者社区和构成其网络基础设施的节点运营商的支持。 [5]
技术架构
Session的架构是一个多层系统,专为去中心化和匿名性而设计,将面向用户的应用程序与分布式后端网络相结合。它不使用中央服务器进行消息传递或数据存储。 [6]
Session 网络
应用程序的后端是 Session 网络,这是一个去中心化的点对点系统,由 1,500 多个社区运营的“Session 节点”组成,分布在 50 多个国家/地区。这些节点负责消息验证、路由和临时存储。该网络采用权益证明 (PoS) 共识机制。要运行 Session 节点,运营商必须质押大量的 Session 代币 ($SESH)。这种财务要求提供了 Sybil 抵抗性,使得恶意行为者控制网络的大部分成本过高,并通过区块奖励激励可靠的服务。 [7]
为了处理现代消息传递工具的性能需求,该网络将某些任务卸载到低费用侧链,利用 Arbitrum One,一种 Ethereum Layer 2 扩展解决方案。这个“应用链”专为高吞吐量而设计,用于诸如名称注册之类的任务。 [3] [7]
匿名性和路由
Session 采用了一种名为“洋葱请求”的自定义洋葱路由系统,以保护用户元数据并混淆 IP 地址。当用户发送消息时,该消息会被包裹在多层加密中,并通过三个随机选择的 Session 节点路由,然后到达其目的地。 [4]
路由过程确保:
- 第一个节点(入口)知道发送者的 IP 地址,但不知道最终目的地。
- 第二个节点(中间)只知道入口和出口节点的身份。
- 第三个节点(出口)知道目的地(接收者的消息群),但不知道原始发送者的 IP。
这种设计有效地将用户的 IP 地址与其消息分离,使得任何单个节点或外部观察者都难以追踪通信的来源。该项目已声明其目标之一是集成 Lokinet,这是一种低延迟洋葱路由器,以便在未来实现更复杂的匿名通信,如语音和视频通话。 [3] [7]
消息存储和群
对于异步消息传递,Session使用基于“群”的去中心化存储系统。群是由5到10个Session节点组成的小型、分布式和冗余的组,负责存储特定Session ID范围的离线消息。当消息发送给离线用户时,它会被传递到其指定的群中,并保存到接收者的设备上线以检索它为止。消息以固定的生存时间(TTL)存储,并在传递后或TTL过期后删除,从而最大限度地减少数据保留。这种基于群的架构提供了容错能力,并确保即使网络中的某些节点离线,消息仍然可用。 [6] [3]
加密和会话协议
Session中的所有一对一和群组对话都使用Session协议进行端到端加密。Session协议是一种自定义协议,源自Signal协议,但针对去中心化、异步环境进行了大量修改。它使用经过严格审计的开源密码学库libsodium来实现其密码学原语。 [4]
与Signal协议不同,Session协议的一对一聊天是无状态的,不使用密钥棘轮机制。消息使用发送者的长期私钥签名,然后使用接收者的公钥加密。这种设计意味着Session不实现完全前向保密(PFS)。开发者认为,PFS主要降低了长期密钥泄露后被用于解密过去拦截的消息的风险。他们认为Session的架构通过其核心设计(包括匿名账户、强制洋葱路由和最小的元数据暴露)更全面地解决了这一威胁,从而使有针对性的拦截变得更加困难。 [4] [3]
由于消息使用长期密钥签名,因此在技术上是可归属的。但是,客户端软件被设计为在验证后立即删除签名,这意味着未经修改的客户端无法向第三方证明消息的来源。这在应用层提供了一种可信的否认形式。 [3]
身份和账户
Session的身份系统被设计为完全匿名,并与现实世界的标识符分离。 [4]
会话 ID
首次使用时,应用程序会在用户设备上生成一个唯一的、66个字符的字母数字会话 ID。此 ID 是一个 Ed25519 公钥,作为用户在网络上接收消息的公共地址。创建会话 ID 不需要电话号码、电子邮件或其他个人数据,从而切断了与用户真实身份的联系。 [3]
恢复密码
除了会话 ID 之外,还会生成一个助记词,称为“恢复密码”。这个短语代表帐户的私钥,并且是在新的或不同的设备上恢复会话 ID 的唯一方法。由于没有保存帐户数据的中央服务器,因此丢失恢复密码会导致永久丢失相关帐户。通过在设备之间共享此恢复密码来实现多设备支持。 [4]
Session Name Service (SNS)
为了简化添加联系人,Session 提供了 Session Name Service (SNS),这是一个建立在智能合约上的去中心化命名系统。它允许用户注册一个永久的、人类可读的用户名(例如,“JohnDoe”),并将其映射到他们的 Session ID。这些名称可以用 Session Token (SESH) 购买,并在区块链上注册,以防止抢注并确保唯一性。 [7]
Tokenomics
Session生态系统由 Session Token ($SESH) 支持,它是其原生的 实用代币。使用Session Messenger应用程序是免费的,不需要拥有或与代币互动。 [4]
SESH是一种与EVM兼容的代币,在 以太坊 和 Arbitrum One区块链上发行。其主要目的是为Session网络提供经济安全,并促进应用程序生态系统内的价值转移。 [8]
$SESH代币的用途包括:
- 网络安全 & 质押: 运营商必须质押大量的SESH才能运行Session节点。这可以作为抵押品,保护网络免受攻击,并确保 节点 运营商投资于网络的健康。
- 激励: Session节点运营商因向网络贡献带宽、存储和计算资源而获得SESH奖励。
- 应用层功能: SESH用于购买高级功能,例如通过Session Name Service (SNS)注册用户名。它也适用于未来的功能,如“Session Pro”,这可能会提供高级功能。 [1] [8]
功能
Session为桌面(Windows、macOS、Linux)和移动设备(Android、iOS)的客户端提供了一系列通信和隐私功能。 [1]
通讯
- 私聊和群聊: Session支持标准的一对一聊天和端到端加密的群聊,最多可容纳100名成员。群组消息多播到所有成员的群,避免使用中央服务器进行管理。 [4]
- 社区: 对于更大规模的讨论(100+成员),Session提供“社区”。这些是公共频道,集中托管在用户运行的开源服务器上。与服务器的通信通过洋葱路由来保护成员的IP地址,但消息本身并非在所有成员之间进行端到端加密,仅对服务器进行传输加密。这提供的隐私级别低于群组。 [3]
- 语音和视频通话: 该应用程序支持端到端加密的语音和视频通话。此功能目前处于测试阶段,目前使用通过WebRTC的点对点(P2P)连接。此实现可能会将用户的IP地址暴露给他们的通话伙伴和STF运营的STUN/TURN服务器。未来的开发目标是实施洋葱路由通话以隐藏IP地址。 [4]
消息传递和隐私
- 附件: 用户可以发送最大 10MB 的文件和图像。附件在上传之前,会在设备上进行对称加密,然后通过 onion 请求上传到 STF 运营的“Session 文件服务器”。解密密钥和文件链接随后在标准的端到端加密 Session 消息中发送给联系人,确保文件服务器无法查看内容。 [4]
- 阅后即焚消息: 用户可以设置消息在计时器到期后从所有设备和网络群中自动删除。选项包括“发送后消失”和“阅读后消失”。 [4]
- 推送通知(移动设备): Session 为移动设备上的通知提供两种模式:
- 快速模式(默认): 使用 Google 的 FCM 或 Apple 的 APNs。这种标准方法可能会将设备的 IP 地址暴露给 Google 或 Apple,但可以保护消息内容和发件人身份不被他们获取。
- 慢速模式(轮询): 应用程序在后台运行,并定期轮询网络以查找新消息。此模式避免使用 Google/Apple 服务,以更高的隐私为代价,增加了电池消耗并降低了通知传递速度。 [4]
- 消息请求: 来自未知联系人的消息会被过滤到一个单独的请求文件夹中,允许用户接受、删除或阻止该联系人以防止垃圾邮件。 [9]
开发和安全
Session是以开源软件的形式开发的,其代码公开,可供审计和贡献。 [1]
开源
Android (Kotlin)、iOS (Swift) 和桌面 (TypeScript) 的客户端应用程序以及核心库,都可以在 Session Foundation 的 GitHub 组织上找到。该软件主要根据 GNU General Public License v3.0 (GPL-3.0) 获得许可。 [2]
安全审计
Session桌面端、安卓端和iOS端客户端已经过第三方公司Quarkslab的安全审计。审计结果已公开。 [4]
威胁模型
Session旨在通过最小化元数据来防御公司和国家级行为者的监视。其主要保护措施包括隐藏用户IP地址,防止创建社交关系图(谁在与谁交谈),并使用端到端加密保护消息内容。该项目承认其低延迟洋葱路由器容易受到来自全球被动攻击者(GPA)的流量关联攻击——该实体能够监控用户入口点和网络出口点的流量。未来的研究目标包括调查Mixnet的实施,以提供更强的保护,防止此类威胁。 [3]