Compruébalo en 2 minutos
Pulsa F12 en tu navegador. Sin instalar nada. Sin saber programar.
| Afirmación | Cómo verificarlo | Pestaña |
|---|---|---|
| No hay cookies de rastreo | Application → Cookies → solo cookie de sesión técnica. Sin _ga, _fbp, _gid ni similares |
Application |
| No hay servicios de terceros en la app | Network → filtrar por dominio → solo peticiones a solo2.net. Cero llamadas a Google, Facebook, Amazon, etc. |
Network |
| Analytics solo en landing, no en la app | Network → en /info/* se ve stats.menzuri.com. En la app (/) no aparece ningún script de analytics |
Network |
| Tu historial vive en tu navegador | Application → IndexedDB → solo2-vault-{userId} con stores messages, files, etc. Datos locales |
Application |
| Lista de contactos solo local | Application → IndexedDB → store pares existe localmente. Network → no hay petición de "contacts" ni "friends" al servidor |
Application |
| Sin CDNs externos | Network → todos los JS/CSS se cargan desde el mismo dominio. No hay cdn.jsdelivr.net, cdnjs.cloudflare.com, unpkg.com |
Network |
| Sesiones de 24h máximo | Application → localStorage → solo2_session expira. Puedes cerrar sesión y ver que desaparece |
Application |
| Puedes ver qué tipo de conexión usas | En la UI del chat: indicador P2P (verde) vs Mirror/TURN (naranja) visible en todo momento | UI |
| Umami es cookieless | Application → Cookies → no aparece ninguna cookie de stats.menzuri.com incluso tras visitar el landing |
Application |
| Tu identidad se calcula, no se almacena | Application → localStorage → no existe ninguna clave solo2_identity. La identidad se deriva de tu contraseña en cada login |
Application |
Si sabes usar DevTools
Verificaciones que requieren conocimiento técnico. Si entiendes HTTP, WebRTC y criptografía básica, puedes confirmar estas afirmaciones.
| Afirmación | Cómo verificarlo |
|---|---|
| Mensajes cifrados E2E | Network → las peticiones a /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 |
| Señales WebRTC cifradas E2E | Network → los signal messages viajan como blobs binarios cifrados. No son JSON legible con offer/answer en claro |
| Identidad derivada de contraseña, no almacenada | Application → localStorage → no existe solo2_identity. La identidad se computa con Argon2id + HKDF en cada login. Network → ni la contraseña ni la identidad derivada salen del navegador |
| Padding uniforme en mirror | Network → los paquetes WebSocket/DataChannel tienen tamaño fijo cuando se usa relay. Inspecciona los sizes en la pestaña Network |
| Contraseña protegida (no viaja en plano) | Network → el login envía un hash, no texto plano. No puedes verificar qué algoritmo usa el servidor (Argon2id), pero sí que tu contraseña original nunca sale del navegador |
| Solicitudes de vinculación caducan en 3 días | Crea una solicitud, no la respondas, verifica tras 3 días que desapareció. Requiere paciencia y dos cuentas |
| Push notifications cifradas | Network → las peticiones push al Service Worker llegan cifradas (estándar Web Push). Se ve el payload cifrado en la pestaña Network |
| Conexión P2P directa vs relay | chrome://webrtc-internals/ muestra los ICE candidates y si la conexión es relay (TURN) o srflx/host (directa) |
Esto no puedes verificarlo
Seríamos hipócritas si dijéramos que todo es verificable. Estas afirmaciones requieren que confíes en nosotros — o que esperes a que publiquemos el código.
| Afirmación | Por qué no es verificable |
|---|---|
| Double Ratchet con rotación de claves | Las operaciones criptográficas ocurren dentro de un binario WASM. El usuario ve que se carga, pero no puede leer qué algoritmo ejecuta |
| La identidad se deriva determinísticamente de la contraseña | La derivación usa Argon2id + HKDF dentro de WASM. Puedes ver que no hay clave almacenada, pero no puedes verificar el algoritmo de derivación desde F12 |
| X25519 + Ed25519 + ChaCha20-Poly1305 | Mismo problema: el stack criptográfico está dentro de WASM. No se pueden confirmar las curvas ni los algoritmos desde el navegador |
| El servidor es "completamente ciego" | Puedes verificar que el cliente no envía datos legibles. Lo que el servidor hace con los metadatos de conexión (IPs, timestamps) requiere confianza o auditoría del servidor |
| El servidor no guarda relaciones tras vinculación | Requiere acceso al código y base de datos del servidor |
| Las IPs no se registran | No puedes verificar qué registra el servidor en sus logs |
| Las claves rotan con cada mensaje | Ocurre dentro de WASM. Ves que se envían mensajes, pero no puedes observar la rotación de claves |
| Los datos borrados realmente desaparecen | Puedes borrar de IndexedDB local, pero no puedes verificar que el servidor no retiene copias (aunque el Manifiesto dice que nunca los tuvo) |
Por qué WASM es una barrera real
La capa criptográfica de Solo2 está compilada en WebAssembly — un formato binario que tu navegador ejecuta pero que no puedes leer como texto. Esto significa que no puedes verificar desde F12 qué algoritmo usamos.
El JavaScript minificado (que usamos para la interfaz) sí es reversible: el navegador puede reformatearlo y la estructura del código es legible. Es un obstáculo práctico, no una barrera real. Pero WASM compilado desde Zig es fundamentalmente diferente — 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.
Decimos que es Double Ratchet con X25519. Puedes confiar en nuestra palabra, o puedes esperar a que publiquemos el código fuente de la capa crypto para que cualquiera pueda auditarlo. Estamos trabajando en ello.
Qué estamos haciendo para que puedas confiar más
Publicar hashes SHA-256 de los .wasm
Publicaremos el hash criptográfico de cada archivo WASM en producción. Así cualquier auditor podrá verificar que el binario que se ejecuta en tu navegador corresponde exactamente con el que nosotros compilamos.
Abrir la capa crypto como código abierto
Publicar el código fuente de la capa criptográfica (Zig) como repositorio público. El mismo modelo que Signal: protocolo criptográfico abierto, resto del código cerrado. Cualquiera podrá compilar el código fuente y comparar el hash del .wasm resultante con el que está en producción.
La seguridad no depende de la oscuridad
Nuestro modelo de seguridad está diseñado para funcionar incluso si el código fuente es público. Si la seguridad dependiese de que nadie pudiese leer el código, no sería seguridad — sería esperanza.
5 capas de seguridad documentadas
Contraseña, secreto de dispositivo, identidad determinista, 24 palabras BIP39 y rotación Double Ratchet. Cada capa es independiente y verificable en nuestro Manifiesto de Transparencia.