基本原则
Solo2在两个人之间创建一条私密隧道。直接连接。没有中间人。
我们的服务器只做一件事:介绍隧道的两端相互认识,让它们能找到彼此。为此它只需要最基本的东西——两个配对的标识符——它在RAM内存中只保留介绍过程的几毫秒。两台设备找到彼此的那一刻,这些数据就从内存中擦除了。永远不会、在任何时刻被写入磁盘。
一旦连接建立,服务器就消失了。它不参与对话。看不到对话内容。不存储对话。不知道对话持续多久、你们多常联系、或者聊了什么。
我们不要求你相信我们。我们请你自己验证:
测试1——服务器是多余的。
一旦直接隧道建立,我们的服务器就不再参与了。如果它在那一刻崩溃,你们的对话会毫无中断地继续。只要你们的设备开着并连接到互联网,隧道就是你们的。我们已经不在那里了。
测试2——发送10GB的文件。
不仅会很快——我们的服务器根本不在乎。试试连续24小时不间断发送10GB或更大的文件。我们的服务器甚至不会注意到,因为它没有参与。用任何其他即时通讯服务试试看。
测试3——聊聊望远镜。
花一个下午和某人聊望远镜、钓鱼竿,或者任何你从未在网上搜索过的东西。等几天。望远镜的广告不会出现在任何地方。你的话语从未离开过你的隧道。
你的数据,你的责任。
这是我们最大的优势,说实话,也是你最需要时间适应的地方。你的消息、文件和联系人保存在你设备内部的加密保险库中。任何服务器上都没有副本。它们由24个词保护——与Bitcoin相同的安全级别。但它们只在一个地方,除非你在第二台设备上安装Solo2——两个保险库会在同时连接时自动同步。你也可以导出加密备份。这里没有云端会在你丢失唯一设备时拯救你。你的数据是你的,包括所有后果。
详细说明
Solo2 的服务器是完全盲目的。 它不知道你在和谁说话、说了什么、也不知道你分享了什么文件。甚至建立设备间连接的技术信号也无法被服务器读取——它们以端到端加密的方式传输。
你的消息在设备之间直接传输,端到端加密。你的聊天记录加密存储在浏览器中,从不存储在我们的服务器上。
加密密钥随每条消息自动轮换。每条消息都用一个唯一的密钥加密,该密钥在使用后立即丢弃。这在技术上被称为 Double Ratchet,这意味着即使有人获得了一个密钥,也只能读取一条消息——而不是整个对话。此外,每轮通信后安全性会自动恢复:一个被泄露的密钥在下一条消息交换时就变得毫无用处。
当设备之间的直连不可能时(例如,由于网络限制),会使用镜像服务器(技术上称为 TURN):数据从一个设备反射到另一个设备,但镜子不知道它反射的是什么——所有数据都经过端到端加密,服务器无法读取。此外,所有数据包都被填充到统一大小,以防止观察者通过分析流量大小或频率来推断信息。
你始终可以在应用中看到你正在使用哪种连接类型——直接连接或通过镜像服务器——并据此采取行动。
你的主密钥使用 256 位真实熵随机生成——与比特币相同的安全级别。 创建账户时,Solo2 会生成一个以 24 个单词表示的唯一密钥。你的密码保护对服务的访问。你的 24 个单词是你数据的钥匙。它们是两把不同的钥匙,用于两扇不同的门。
即使我们的服务器消失,你的数据也会保留。用你的 24 个助记词,你可以在不连接服务器的情况下访问本地保险库。你的数据是你的——真正属于你。
1. 服务器上我们确实拥有的数据
1.1 你的用户账户
以下是你记录中存在的所有字段。没有其他字段。
| 数据 | 原因 | 保护方式 | 保留时长 |
|---|---|---|---|
| 用户名 | 用于登录 | 纯文本(设计上是公开的) | 直到你删除账户 |
| 密码 | 身份验证 | 使用 Argon2id 保护(OWASP 推荐,抵抗专用硬件攻击)。我们从不存储你的真实密码 | 直到你删除账户 |
| 公开显示名 | 让你的联系人认出你 | 纯文本(由你选择) | 直到你更改或删除账户 |
| 关联码 | 你在 Solo2 内的地址——类似于电话号码。你将它分享给某人,对方就能找到你并发送连接请求 | 纯文本,唯一(约 10 个字符) | 直到你删除账户 |
| 经济余额 | 你充入账户的资金 | 数字(以分计) | 直到你删除账户 |
| 奖励余额 | 收到的奖励(促销)。在货币余额之前消耗 | 数字(以分计) | 直到你删除账户 |
| 账户类型 | 你当前的计划(试用、标准、黄金、白金) | 1字节(整数:0=试用,1=标准,2=黄金,3=白金,4=已暂停,5=已停用) | 直到变更或删除账户 |
| 注册日期和时间 | 你创建账户的时间 | 完整日期和时间(时间戳) | 永久 |
| 内部标识符 | 系统需要两个内部代码来引用您,而无需使用您的用户名。一个是您的主要ID,另一个是参考代码。两者都是不透明的——在系统外没有任何意义 | 两个各24个字符的随机代码(例如:u_7kX9mP2...)。不包含您的姓名、日期或任何个人数据——它们是纯随机的 | 直到你删除账户 |
| 安全版本 | 使用了哪个版本的密码保护算法 | 内部编号 | 直到你删除账户 |
| 状态标志 | 技术标志(你的余额是否变化、是否启用了最高安全模式) | 1 字节——相当于一个字母。不可能包含更多内容 | 直到你删除账户 |
数据量参考:你的完整记录约占 400 字节 — 比这段话还短。包括你的名字(可以是虚构的)、密码指纹(固定大小,60 字节)、加密的主密钥(一个我们无法读取的约 128 字节的不透明数据块)、两个余额数字、一些日期和一个字节的配置标志。这就是你在我们服务器上存在的全部。
1.2 活跃会话
| 数据 | 原因 | 保护方式 | 保留时长 |
|---|---|---|---|
| 会话令牌哈希 | 保持你的登录状态 | 不可逆指纹(SHA-256)。原始令牌从不存储在服务器上 | 24小时 — 之后完全删除 |
| 创建日期 | 让系统知道何时创建——有助于自动清理 | 数字时间戳(unix秒) | 随会话一起删除 |
| 到期日期 | 会话在创建24小时后过期。不会因使用而续期——它有固定的到期日期 | 数字时间戳(创建 + 24小时) | 24小时 — 之后完全删除 |
注销或过期时,该行将从数据库中完全删除。不会留下会话存在过的任何痕迹。
1.3 关联请求
| 数据 | 原因 | 保护方式 | 保留时长 |
|---|---|---|---|
| 请求者 ID | 知道谁发送了请求 | 24个随机字符的内部代码 | 3天 — 之后自动删除 |
| 接收者 ID | 知道发给谁 | 24个随机字符的内部代码 | 3天 — 之后自动删除 |
| 状态 | 待处理 / 已接受 / 已拒绝 | 1字节(整数:0=待处理,1=已接受,2=已拒绝) | 解决时或过期时删除(3天) |
| 创建日期 | 知道请求何时创建,以便自动删除 | 数字时间戳(unix秒)— 4至8字节 | 3天 — 之后自动删除 |
重要说明: 在请求等待处理期间(最长 3 天),服务器确实知道用户 A 请求与用户 B 建立连接。3 天后,请求会自动删除。一旦连接被接受,服务器不会保存这层关系。你的联系人列表只存在于你的浏览器中,经过加密。
1.4 连接码
| 数据 | 原因 | 保护方式 | 保留时长 |
|---|---|---|---|
| 连接码(别名) | 短标识符,便于其他用户找到您并请求创建隧道 | 由您的内部ID派生的8个字符的随机代码 | 永久性(这是您的公开连接标识符) |
1.5 推送订阅(通知)
| 数据 | 原因 | 保护方式 | 保留时长 |
|---|---|---|---|
| 通知地址 | 向你的浏览器发送通知 | 浏览器提供商的 URL(Google、Mozilla 或 Apple) | 直到你关闭通知或删除账户 |
| 推送加密密钥 | 加密通知,使只有你的浏览器能读取 | Web Push 标准 | 与通知地址相同 |
1.6 反馈(支持)
| 数据 | 原因 | 保护方式 | 保留时长 |
|---|---|---|---|
| 你的消息 | 以便我们能帮助你 | 纯文本 | 直到我们处理它 |
| 你的用户 ID | 知道谁需要帮助 | 内部 ID | 与消息相同 |
1.7 连接信令(临时)
为了让两台设备能够直接连接,它们需要交换一些技术性的连接建立信号(WebRTC 协议)。服务器在内存中保留你的用户代码和对方用户代码的唯一时刻,是处理这个连接请求的毫秒瞬间。转瞬即逝,仅存于 RAM 中,从不写入磁盘。信号本身是端到端加密的
| 数据 | 原因 | 保护方式 | 保留时长 |
|---|---|---|---|
| 连接信号 | 建立设备之间的直接连接 | 使用接收者的公钥进行端到端加密。服务器无法读取或修改它们 | 60 秒 |
1.8 镜像服务器(TURN 中继)
如果直连不可能,则使用镜像服务器:数据通过它传递,就像光通过镜子一样——从一侧反射到另一侧,但镜子不知道它反射的是什么。所有数据包都被填充到统一大小,使观察者无法区分一条消息和一次简单的连接心跳。
| 数据 | 原因 | 保护方式 | 保留时长 |
|---|---|---|---|
| 访问凭证 | 在镜像服务器上验证你的身份 | 你的身份被转换为不可逆指纹——镜像服务器不知道你是谁 | 24 小时 |
1.9 已处理的付款
支付是匿名性唯一存在真正摩擦的地方。让我们坦诚地谈论这一点。
当你注册 Solo2 时,你选择一个用户名(可以是虚构的)、一个密码和一个公开显示名(也可以是虚构的)。没有任何数据将你与一个真实的人联系起来。但如果你用银行卡付款,你的金融机构确实知道你是谁。
我们从支付网关收到的仅仅是一个确认和一个金额。我们不接收也不存储持卡人姓名、卡号、身份证号或付款人的任何个人数据。这些是小额——在法律上等同于现金小票,就像在小卖部买棒棒糖一样:店主不会记录付款人的身份证。
此外,付款记录被刻意地解除了关联
| 数据 | 原因 | 保护方式 | 保留时长 |
|---|---|---|---|
| 付款记录 | 会计和税务义务 | 确认 + 金额。无付款人个人数据。不与任何用户账户关联 | 永久(法律义务) |
关于最坏的可能情况:
我们所有的收入都是合法的,通过支付网关入账。我们缴纳相应的税款。但从我们这边来说,客户的匿名性是完全的。
2. 服务器上我们没有的数据
这是定义我们的核心。Solo2 的服务器不存储也无法访问
- 你的消息
- 你的文件
- 你的联系人列表
- 你的聊天记录
- 你的位置
- 使用分析
- 设备数据
- 通信元数据
关于你的 IP 地址
你的 IP 地址不会存储在任何数据库中。在服务器的技术日志中,IP 地址会被转换为不可逆的哈希 — 可用于检测滥用模式,但无法还原为原始 IP。这些日志每 7 天自动删除。连接信号可能包含你的 IP,但它们经过端到端加密 — 服务器无法读取。
3. 你浏览器中的数据(保险库)
以下所有内容完全存储在你的浏览器中
你的数据在静态时是加密的——即使有人访问了你浏览器的存储,没有你的密码,他们只会找到无法读取的加密数据块。
当你导出备份时,它使用相同的保护进行加密(Argon2id + AES-256-GCM)。只有知道你密码的人才能解密。
| 数据 | 加密 | 控制 |
|---|---|---|
| 消息 | AES-256-GCM | 你决定何时删除 |
| 文件 | AES-256-GCM | 你决定何时删除 |
| 联系人(配对) | AES-256-GCM | 你决定关联谁 |
| 验证状态 | AES-256-GCM | 你验证每个联系人的身份 |
| 搜索索引 | 使用不可逆令牌加密 (HMAC) | 从你的消息中重建 |
| 送达状态 | AES-256-GCM | 哪些消息已送达 |
| 待发消息 | AES-256-GCM | 离线时的发送队列 |
浏览器临时存储
| 数据 | 类型 | 保留时长 | 原因 |
|---|---|---|---|
| 用户会话 | 浏览器本地存储 (localStorage) | 直到你退出登录 | 保持你的登录状态 |
| 应用版本 | 浏览器本地存储 (localStorage) | 永久 | 检测更新 |
| 主题偏好 | 浏览器本地存储 (localStorage) | 永久 | 记住你的视觉主题 |
| 语言偏好 | 浏览器本地存储 (localStorage) | 永久 | 记住你的语言 |
| 密码(最高安全模式) | 标签页内存 (sessionStorage) | 关闭标签页时消失 | 重新加载页面时重新初始化加密 |
关于浏览器安全性的说明
Solo2 在你的网络浏览器中运行。你的加密数据在静态时受到保护,但当应用打开并在屏幕上显示解密后的消息时,安全性也取决于你的使用环境:
- 浏览器扩展:
- 干净的浏览器:
- 原生应用:
4. 网络连接
Solo2 应用
| 域名 | 原因 | 发送的数据 |
|---|---|---|
| solo2.net | 应用 API | 身份验证、信令、在线状态 |
| pay.menzuri.com | 支付网关 | 仅在你进行付款时 |
没有其他域名。
即使是发现你设备的公共 IP 地址(建立用户之间直连所需),我们也使用自己的服务器(技术上称为 STUN)。我们不依赖外部服务。由我们自己管理。
展示页面
展示页面(solo2.net)——独立于应用——使用托管在我们德国自有服务器上的匿名测量系统:
| 域名 | 原因 | 发送的数据 |
|---|---|---|
| stats.menzuri.com | 匿名访问测量 | 访问的页面(无 Cookie,无 IP,无身份识别) |
该系统不安装 Cookie,不记录你的 IP 地址,不识别你的身份,不在访问之间追踪你,也不与第三方共享数据。Solo2 应用没有此系统,也没有任何其他类型的分析功能。
5. 删除你的数据
存在两种不同的操作,了解它们的区别很重要:
删除本地数据
在应用设置中,你有两个本地删除选项:
- 删除我的数据
- 紧急重置
在这两种情况下,你在服务器上的账户仍然存在。
设备间自动恢复
如果你在一台设备上丢失了数据而另一台设备仍然连接,Solo2 会检测到这种情况并自动提供恢复你的身份和保险库。恢复通过设备之间的直接连接加密传输(Argon2id)——不经过服务器。
从服务器删除你的账户
- 所有
- 删除是原子性的
- 付款记录被刻意解除关联
- 服务器日志中的标识符是不可逆指纹:一旦删除账户,就无法将日志与你的账户关联。
- 浏览器中的保险库不会随此操作自动删除(我们无法访问你的浏览器)。要删除它,请先执行核销毁操作或在浏览器中清除站点数据。
5b. 你的主密钥和 24 个助记词
创建 Solo2 账户时,会生成一个具有 256 位真实熵的主密钥(与比特币使用的相同)。这个密钥表示为只有你知道的 24 个助记词。你的密码包装这个密钥,以加密形式存储在服务器上——服务器无法读取它。
这意味着你拥有两把独立的钥匙
精确算法(可验证)
生成:CSPRNG
你的主密钥如何受到保护
| 层级 | 是什么 | 存储位置 |
|---|---|---|
| 密码 | 访问服务器。包装你的主密钥 | 在你的记忆中 + 哈希在服务器上 |
| 设备密钥 | 不可见的第二因素,安装时自动生成 | 在你的设备上(不可提取) |
| 主密钥(24 个助记词) | 256 位真实熵,随机生成。比特币级别 (BIP39) | 在你保存的纸上 + 包装后存储在服务器上 |
| 密钥轮换 | 每条消息使用一个用后即毁的唯一密钥 (Double Ratchet) | 自动、透明 |
如果你更改密码
更改密码是即时的。只需用新密码重新包装你的主密钥——你的身份不变,保险库不重新加密,联系人不受影响,你的 24 个助记词保持不变。这是毫秒级的操作。
恢复
如果你丢失了密码,可以用 24 个助记词访问你的保险库——无需服务器。如果你丢失了 24 个助记词,可以用密码登录,服务器会返回你的包装密钥。如果两者都丢失了,你的数据将不可恢复。与比特币一样,这是设计上的安全性。
6. 如果有人未经授权访问服务器会怎样
如果攻击者获得了 Solo2 服务器的完全访问权限,他们会获得:
- 用户名和公开显示名
- 关联码
- 公钥(没有私钥就无用,私钥在你的浏览器中)
- 密码指纹(由于 Argon2id,暴力破解成本极高,因此无用)
- 会话令牌指纹(没有原始令牌就无用)
- 待处理的关联请求(内部 ID,3 天过期)
- 账户类型、余额和注册日期
- 付款记录(无法将其关联到具体用户)
他们无法获得的:
- 没有任何消息(它们从未在服务器上)
- 没有任何文件(它们从未在服务器上)
- 没有任何联系人列表(它从未在服务器上)
- 没有任何聊天记录(它从未在服务器上)
- 没有任何加密私钥(它们在你的浏览器中)
- 没有任何 IP 地址(不记录)
7. 我们的承诺
每当数据管理发生相关变更时,本宣言将进行更新。如果我们在数据库中添加新字段,会显示在这里。如果我们删除了某些内容,也会显示。
当前生效的版本始终是本页面。