2 分钟验证
在浏览器中按 F12。无需安装任何东西。无需编程知识。
| 声明 | 如何验证 | 面板 |
|---|---|---|
| 没有追踪 Cookie | Application → Cookies → 只有技术性会话 Cookie。没有 _ga, _fbp, _gid ni similares |
Application |
| 应用中没有第三方服务 | Network → 按域名筛选 → 只有到 solo2.net. Cero llamadas a Google, Facebook, Amazon, etc. |
Network |
| 分析仅在着陆页,不在应用中 | Network → 在 /info/* se ve stats.menzuri.com. En la app (/) no aparece ningún script de analytics |
Network |
| 你的聊天记录存储在浏览器中 | Application → IndexedDB → solo2-vault-{userId} con stores messages, files, etc. Datos locales |
Application |
| 联系人列表仅在本地 | Application → IndexedDB → store pares existe localmente. Network → no hay petición de "contacts" ni "friends" al servidor |
Application |
| 没有外部 CDN | Network → 所有 JS/CSS 从同一域名加载。没有 cdn.jsdelivr.net, cdnjs.cloudflare.com, unpkg.com |
Network |
| 会话最长 24 小时 | Application → localStorage → solo2_session expira. Puedes cerrar sesión y ver que desaparece |
Application |
| 你可以查看正在使用的连接类型 | 在聊天界面中:P2P 指示器(绿色)vs Mirror/TURN(橙色)始终可见 | UI |
| Umami 无 Cookie | Application → Cookies → 没有来自 stats.menzuri.com incluso tras visitar el landing |
Application |
| 你的主密钥是随机生成的 | Application → 注册时,Solo2 生成 24 个唯一助记词。它们不是从你的密码派生的——而是具有 256 位真实熵的独立密钥 | Application |
如果你会使用开发者工具
需要技术知识的验证。如果你了解 HTTP、WebRTC 和基础密码学,你可以确认这些声明。
| 声明 | 如何验证 |
|---|---|
| 消息 E2E 加密 | Network → 到 /cmd contienen payloads binarios opacos (zcatpack). El contenido no es texto legible. No puedes confirmar qué algoritmo se usa, pero sí que no viaja en claro |
| WebRTC 信号 E2E 加密 | Network → 信令消息以加密的二进制 blob 形式传输。不是可读的带有 offer/answer en claro |
| 主密钥独立于密码 | Network → 登录时收到一个 wrapped_master_key cifrado del servidor. El cliente lo descifra localmente con la contraseña. La clave maestra nunca viaja en claro. Cambiar contraseña no cambia la identidad |
| 镜像模式下的统一填充 | Network → 使用中继时 WebSocket/DataChannel 数据包大小固定。检查 Network 面板中的 sizes |
| 密码受保护(不以明文传输) | Network → 登录时发送哈希值,不是明文。你无法验证服务器使用什么算法(Argon2id),但可以确认你的原始密码从不离开浏览器 |
| 关联请求 3 天后过期 | 创建一个请求,不回复,3 天后验证它已消失。需要耐心和两个账户 |
| 推送通知已加密 | Network → 到 Service Worker 的推送请求以加密形式到达(Web Push 标准)。可在 Network 面板中看到加密的 payload |
| P2P 直连 vs 中继 | chrome://webrtc-internals/ muestra los ICE candidates y si la conexión es relay (TURN) o srflx/host (directa) |
这些你无法验证
如果我们说一切都可验证,那就是虚伪的。这些声明需要你信任我们——或者等我们公开代码。
| 声明 | 为什么不可验证 |
|---|---|
| 带密钥轮换的 Double Ratchet | 密码学操作在 WASM 二进制文件内部进行。用户可以看到它被加载,但无法读取它执行什么算法 |
| 主密钥使用真实熵生成(256 位) | 生成在浏览器内使用 crypto.getRandomValues。你可以看到生成了 24 个助记词,但无法从 F12 验证熵的质量或 CSPRNG 的安全性 |
| X25519 + Ed25519 + ChaCha20-Poly1305 | 同样的问题:密码学堆栈在 WASM 内部。无法从浏览器确认曲线或算法 |
| 服务器是“完全盲目的” | 你可以验证客户端不发送可读数据。服务器如何处理连接元数据(IP、时间戳)需要信任或服务器审计 |
| 服务器在关联后不保存关系 | 需要访问服务器代码和数据库 |
| IP 不被记录 | 你无法验证服务器在日志中记录了什么 |
| 密钥随每条消息轮换 | 发生在 WASM 内部。你可以看到消息被发送,但无法观察密钥轮换 |
| 已删除的数据真的消失了 | 你可以从本地 IndexedDB 删除,但无法验证服务器是否保留了副本(尽管宣言声称从未拥有过它们) |
为什么 WASM 是一个真正的壁垒
Solo2 的密码学层编译为 WebAssembly——一种你的浏览器可以执行但无法以文本形式读取的二进制格式。这意味着你无法从 F12 验证我们使用什么算法。
压缩后的 JavaScript(我们用于界面的)是可逆的:浏览器可以重新格式化它,代码结构是可读的。这是一个实际障碍,而非真正的壁垒。但从 Zig 编译的 WASM 有根本性的不同 — es un binario de bajo nivel donde los nombres originales desaparecen y las optimizaciones del compilador transforman el código más allá de lo reconocible.
我们说这是使用 X25519 的 Double Ratchet。你可以选择信任我们,或者等我们公开密码学层的源代码以供任何人审计。我们正在推进这项工作。
我们正在做什么来赢得你更多的信任
公布 .wasm 文件的 SHA-256 哈希值
我们将公布每个生产环境 WASM 文件的加密哈希值。这样任何审计员都可以验证你浏览器中运行的二进制文件与我们编译的完全一致。
开源密码学层
将密码学层(Zig)的源代码作为公开仓库发布。与 Signal 相同的模式:密码学协议开源,其余代码闭源。任何人都可以编译源代码,并将生成的 .wasm 哈希值与生产环境中的进行比较。
安全不依赖于隐蔽性
我们的安全模型设计为即使源代码公开也能正常运作。如果安全性依赖于没有人能读取代码,那就不是安全——那是侥幸。
5 层安全防护文档
密码(访问服务器)、24 个助记词(真正的主密钥)、设备密钥(保险库保护)和 Double Ratchet 轮换。每一层都是独立的,在我们的透明度宣言中有文档记录。