Lo que vemos.
Lo que no hacemos.
Esta no es una página de marketing. Esta es una especificación técnica de exactamente qué datos recopila City of Hats, a qué pueden acceder nuestros servidores y a qué no, y dónde están nuestros límites de cifrado.
Última actualización: abril de 2026Creemos que la seguridad debe demostrarse, no reclamarse.
Contra qué nos protegemos — y qué no
Diseñado para proteger contra
- ✅ Vigilancia pasiva de la red
- ✅ Acceso a datos del lado del servidor (no podemos leer mensajes E2E)
- ✅ Correlación de identidad a través de números de teléfono o correo electrónico.
- ✅ Futuros ataques cuánticos (intercambio de claves PQ híbrido)
- ✅ Compromiso clave que expone mensajes pasados (secreto directo)
- ✅ Análisis de la longitud del mensaje (relleno de metadatos)
Aún no evaluado formalmente
- ⚠ Adversarios del Estado-nación
- ⚠ Dispositivos de usuario comprometidos (ataques a nivel de sistema operativo)
- ⚠ Ataques dirigidos avanzados
- ⚠ Análisis de tráfico a gran escala (timings, patrones de frecuencia)
Arquitectura de cifrado
Double Ratchet Protocolo
Misma familia de protocolos que Signal. Cada mensaje utiliza una clave única. El compromiso de una clave no expone mensajes pasados o futuros (secreto directo + secreto futuro).
Híbrido poscuántico
El intercambio de claves utiliza X25519 + ML-KEM-768 (Kyber). Incluso si en el futuro un ordenador cuántico interrumpe el clásico intercambio de claves, los mensajes seguirán protegidos.
AES-256-GCM
Todas las cargas útiles de mensajes, el contenido de los archivos y la señalización de llamadas están cifrados con cifrado autenticado AES-256-GCM. Los encabezados también están cifrados para evitar la fuga de metadatos.
Claves de remitente de grupo
Los mensajes grupales utilizan un protocolo de clave de remitente con trinquete de cadena HMAC y firmas ECDSA. Cada remitente mantiene su propio llavero distribuido en canales cifrados 1:1.
Intercambio de claves → X25519 + ML-KEM-768 (híbrido post-cuántico)
Trinquete → Double Ratchet (Signal familia de protocolos)
Cifrado simétrico → AES-256-GCM
Derivación de clave → HKDF-SHA-256
Autenticación de mensaje → HMAC-SHA-256
Firmas → ECDSA P-256 (grupos)
Frase de contraseña KDF → PBKDF2
Tiempo de ejecución → Web Crypto API (nativo del navegador)
Biblioteca PQ → @noble/post-quantum (ML-KEM-768)
github.com/City-of-Hats/coh-crypto-spec →
Lo que nuestros servidores pueden y no pueden ver
| Tipo de datos | Acceso al servidor | Detalles |
|---|---|---|
| Contenido del mensaje | ✕ no puedo ver | Todos los mensajes hat-to-hat están cifrados de extremo a extremo del lado del cliente. El servidor almacena únicamente texto cifrado opaco. |
| Archivos adjuntos | ✕ no puedo ver | Los archivos se cifran en el lado del cliente antes de cargarlos. El servidor almacena blobs cifrados. |
| Voz & Videollamadas | ✕ no puedo ver | Las llamadas utilizan WebRTC peer-to-peer con señalización cifrada. El servidor facilita únicamente la configuración de la conexión. |
| Dead Drops / EchoDrops | ✕ no puedo ver | Contenido cifrado del lado del cliente. La clave de descifrado se encuentra en el fragmento de URL (nunca se envía al servidor) o se deriva de una frase de contraseña. |
| GhostFrame Cargas útiles | ✕ no puedo ver | Contenido esteganográfico incrustado y cifrado en el lado del cliente antes de la carga. |
| Claves privadas | ✕ no puedo ver | Las claves privadas ECDH y poscuánticas se generan y almacenan únicamente en el dispositivo. Nunca transmitido al servidor. |
| Códigos de sombrero | ✓ Visible | Los identificadores de sombrero se almacenan para enrutar mensajes. Son seudónimos y no están vinculados a una identidad real. |
| ID de pares de canales | ✓ Visible | Un registro de que Hat A y Hat B tienen un canal. Requerido para el enrutamiento de mensajes. |
| Marcas de tiempo | ✓ Visible | Marcas de tiempo de envío/recepción de mensajes. Requerido para la lógica de pedidos y vencimiento. |
| Claves públicas | ✓ Visible | Las claves públicas ECDH y ML-KEM se publican para permitir el intercambio de claves. Esto es por diseño, las claves públicas — están destinadas a ser públicas. |
| Fichas de notificación push | ⚠ Sólo metadatos | Los tokens de inserción del dispositivo se almacenan para enviar notificaciones. El contenido de la notificación utiliza texto genérico, no contenido del mensaje. |
Dos rutas de cifrado — explicadas honestamente
E2E del lado del cliente (predeterminado)
Se utiliza para todos los mensajes, llamadas, puntos muertos, GhostFrame y EchoDrop.
- ✅ Cifrado en su dispositivo antes de enviar
- ✅ Descifrado solo en el dispositivo del destinatario
- ✅ El servidor almacena texto cifrado opaco
- ✅ No podemos descifrar incluso si nos vemos obligados
Cifrado del lado del servidor (limitado)
Se utiliza únicamente para contenido generado por el sistema: anuncios de plataforma y el bot de inteligencia CHECK.
- ⚠ El servidor genera y cifra este contenido.
- ⚠ El servidor posee claves de cifrado para estas rutas
- ℹ Esto se aplica sólo a los mensajes del bot/sistema.
- ✅ El chat de usuario a usuario nunca está en este camino
Lo que registramos
| Categoría | Qué se registra | Retención |
|---|---|---|
| Direcciones IP (aplicación) | La limitación de velocidad utiliza un hash SHA-256 unidireccional de direcciones IP. La IP sin procesar no se almacena en la base de datos. Los registros de acceso al servidor web estándar pueden contener direcciones IP temporalmente. | Hash: persistente. Registros de acceso: rotados periódicamente. |
| Direcciones IP (sitio web) | El sitio web de marketing (cityofhats.com) recopila análisis de visitantes, incluida la IP y la geolocalización aproximada. Esto es independiente de la aplicación de mensajería. | No vinculado a la identidad de mensajería. |
| Contenido del mensaje | No registrado. No accesible. El texto cifrado E2E se almacena para su entrega y luego está sujeto a una caducidad configurada por el usuario. | Controlado por el usuario (temporizadores de grabación, caducidad automática). |
| Registros de errores/fallos | Registros de errores del lado del servidor para depuración. Estos contienen tipos de errores y seguimientos de pila, no contenido de mensajes. | Rotado regularmente. |
| Eventos de límite de tarifa | Grabado con identificadores hash para evitar abusos. Sin contenido del mensaje. | Ventana enrollable. |
| Datos de cuenta | Si inicia sesión con Auth0 (Google/Apple), su proveedor de autenticación comparte un correo electrónico. Las cuentas anónimas (solo sombrero) no tienen correo electrónico vinculado. | Hasta la eliminación de la cuenta. |
Donde viven tus llaves
| Tipo de clave | Ubicación de almacenamiento | Acceso al servidor |
|---|---|---|
| Clave privada ECDH | Solo dispositivo (almacenamiento local del navegador) | Nunca transmitido |
| Clave secreta de ML-KEM | Solo dispositivo (almacenamiento local del navegador) | Nunca transmitido |
| Double Ratchet Estado | Sólo dispositivo. Copia de seguridad cifrada opcional en el servidor (cifrada con clave derivada de clave privada). | Sólo copia de seguridad cifrada |
| Claves de remitente de grupo | Solo dispositivo (almacenamiento local del navegador) | Nunca transmitido |
| Clave pública ECDH | Publicado en el servidor para intercambio de claves. | Visible (por diseño) |
| Clave pública ML-KEM | Publicado en el servidor para intercambio de claves. | Visible (por diseño) |
Aplicación de la ley y solicitudes legales
- ✓ No podemos proporcionar el contenido del mensaje. Los mensajes cifrados E2E se almacenan como texto cifrado. No tenemos claves de descifrado. Incluso si nos obliga la ley, no podemos descifrar mensajes de usuario a usuario.
- ✓ Qué podríamos proporcionar si nos obligaran legalmente: Códigos de sombrero, registros de pares de canales, marcas de tiempo, claves públicas y correo electrónico de la cuenta (si el usuario inició sesión con un proveedor). Estos son los mismos metadatos que almacena cualquier servicio de mensajería cifrada.
- ✓ Las cuentas anónimas tienen datos mínimos. Los usuarios que crean cuentas exclusivas sin iniciar sesión no tienen correo electrónico, número de teléfono ni información de identidad en nuestros servidores. El código del sombrero es el único identificador.
- ✓ Publicaremos un informe de transparencia. Tenemos la intención de publicar estadísticas agregadas sobre las solicitudes legales recibidas y los datos proporcionados, de conformidad con la ley aplicable.
- ✓ Warrant canary: City of Hats mantiene un warrant canary. Si alguna vez se elimina, eso indica que hemos recibido una orden legal secreta.
Qué haremos a continuación
Página de transparencia técnica
Esta página. Una especificación detallada y honesta de lo que hace nuestro sistema. Publicado en abril de 2026.
Capa criptográfica de código abierto
Publicaremos la implementación del protocolo de cifrado (Double Ratchet, híbrido poscuántico, claves de remitente grupal) como código abierto para verificación independiente.
Auditoría de seguridad independiente
Una empresa externa acreditada auditará nuestra implementación criptográfica. El informe completo se publicará aquí, sin redactar.
Informes de transparencia
Informes periódicos sobre solicitudes legales recibidas, datos divulgados y tiempo de actividad del sistema. Publicado en esta página.
No tienes que confiar en nosotros
- ✓ Números de seguridad. Cada canal muestra un número de seguridad único derivado de las claves públicas de ambas partes. Compare fuera de banda para verificar que no se haya producido ningún ataque de intermediario.
- ✓ Alertas de cambio de clave. Si las claves de cifrado de un contacto cambian (dispositivo nuevo, reinstalar), recibirá una alerta. Esto evita la sustitución silenciosa de claves.
- ✓ Cadena de registro de auditoría. Los registros de auditoría criptográficos utilizan cadenas hash para que se pueda detectar la manipulación del registro.
- ✓ Indicador E2E. Cada canal cifrado muestra un icono de candado con "E2E" para confirmar que el cifrado del lado del cliente está activo para esa conversación.
- ✓ Especificación criptográfica abierta. Nuestro diseño de protocolo completo — intercambio de claves, Double Ratchet, híbrido post-cuántico, cifrado de grupo — se publica públicamente. Revíselo usted mismo: github.com/City-of-Hats/coh-crypto-spec
¿Preguntas o inquietudes?
City of Hats Inc. · Toronto, Canadá · Constituida en Ontario