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网络,它是一个由1500多个社区运营的“Session节点”组成的去中心化点对点系统,分布在50多个国家。这些节点负责消息验证、路由和临时存储。该网络基于权益证明(PoS) 共识机制运行。要运行一个Session节点,运营商必须质押大量的Session代币($SESH)。这种财务要求提供了女巫抵抗性,使得恶意行为者控制网络的大部分成本过高,并通过区块奖励激励可靠的服务。 [7]
为了满足现代信使的性能需求,该网络将某些任务卸载到一个低费用的侧链,利用Arbitrum One,一个以太坊 Layer 2 扩展解决方案。这个“应用链”专为高吞吐量任务而设计,例如名称注册。 [3] [7]
Session 采用了一种名为“洋葱请求”的自定义洋葱路由系统,以保护用户元数据并混淆 IP 地址。当用户发送消息时,该消息会被包裹在多层加密中,并通过三个随机选择的 Session 节点路由,然后到达其目的地。 [4]
路由过程确保:
这种设计有效地将用户的 IP 地址与其消息分离,使得任何单个节点或外部观察者都难以追踪通信的来源。该项目已声明其目标之一是集成 Lokinet(一种低延迟洋葱路由器),以便在未来实现更复杂的匿名通信,如语音和视频通话。 [3] [7]
对于异步消息传递,Session使用基于“群”的去中心化存储系统。一个群是5到10个Session节点的分布式冗余小组,负责存储特定Session ID范围的离线消息。当消息发送给离线用户时,它会被传递到其指定的群中,并保存到接收者的设备上线以检索它为止。消息以固定的生存时间(TTL)存储,并在传递后或TTL过期后删除,从而最大限度地减少数据保留。这种基于群的架构提供了容错能力,并确保即使网络中的某些节点离线,消息仍然可用。 [6] [3]
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 名称服务 (SNS),这是一个建立在智能合约之上的去中心化命名系统。它允许用户注册一个永久的、人类可读的用户名(例如,“JohnDoe”),并将其映射到他们的 Session ID。这些名称可以用 Session 代币 (SESH) 购买,并在区块链上注册,以防止抢注并确保唯一性。 [7]
Session 生态系统由 Session 代币 ($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)的流量关联攻击——GPA能够监控用户入口点和网络出口点的流量。未来的研究目标包括调查Mixnet的实施,以提供更强的保护,抵御此类威胁。 [3]