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 网络,这是一个去中心化的点对点系统,由 1,500 多个社区运营的“Session 节点”组成,分布在 50 多个国家/地区。这些节点负责消息验证、路由和临时存储。该网络采用权益证明 (PoS) 共识机制。要运行 Session 节点,运营商必须质押大量的 Session 代币 ($SESH)。这种财务要求提供了 Sybil 抵抗性,使得恶意行为者控制网络的大部分成本过高,并通过区块奖励激励可靠的服务。 [7]
为了处理现代消息传递工具的性能需求,该网络将某些任务卸载到低费用侧链,利用 Arbitrum One,一种 Ethereum Layer 2 扩展解决方案。这个“应用链”专为高吞吐量而设计,用于诸如名称注册之类的任务。 [3] [7]
Session 采用了一种名为“洋葱请求”的自定义洋葱路由系统,以保护用户元数据并混淆 IP 地址。当用户发送消息时,该消息会被包裹在多层加密中,并通过三个随机选择的 Session 节点路由,然后到达其目的地。 [4]
路由过程确保:
这种设计有效地将用户的 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]
首次使用时,应用程序会在用户设备上生成一个唯一的、66个字符的字母数字会话 ID。此 ID 是一个 Ed25519 公钥,作为用户在网络上接收消息的公共地址。创建会话 ID 不需要电话号码、电子邮件或其他个人数据,从而切断了与用户真实身份的联系。 [3]
除了会话 ID 之外,还会生成一个助记词,称为“恢复密码”。这个短语代表帐户的私钥,并且是在新的或不同的设备上恢复会话 ID 的唯一方法。由于没有保存帐户数据的中央服务器,因此丢失恢复密码会导致永久丢失相关帐户。通过在设备之间共享此恢复密码来实现多设备支持。 [4]
为了简化添加联系人,Session 提供了 Session Name Service (SNS),这是一个建立在智能合约上的去中心化命名系统。它允许用户注册一个永久的、人类可读的用户名(例如,“JohnDoe”),并将其映射到他们的 Session ID。这些名称可以用 Session Token (SESH) 购买,并在区块链上注册,以防止抢注并确保唯一性。 [7]
Session生态系统由 Session Token ($SESH) 支持,它是其原生的 实用代币。使用Session Messenger应用程序是免费的,不需要拥有或与代币互动。 [4]
SESH是一种与EVM兼容的代币,在 以太坊 和 Arbitrum One区块链上发行。其主要目的是为Session网络提供经济安全,并促进应用程序生态系统内的价值转移。 [8]
$SESH代币的用途包括:
Session为桌面(Windows、macOS、Linux)和移动设备(Android、iOS)的客户端提供了一系列通信和隐私功能。 [1]
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]