Vamos a lo técnico.
Todo lo que dice la portada, escrito como aquello de lo que salió: la base de datos real, cómo se crea de verdad un contacto y quién más toca una llamada.
No necesitas esta página para usar Rilo, y nada de lo que hay aquí contradice la versión sencilla — es el mismo producto, descrito con precisión.
La base de datos entera
Todo lo que nuestro servidor sabe de tu familia.
No es un resumen. Estas son las siete tablas, con las columnas que realmente tienen. Cuatro son la cuenta; tres existen para que un teléfono apagado no se pierda nada, y dos de ellas se borran solas.
- idun hash de la clave pública — no un nombre
- public_keyla clave del dispositivo, que es la cuenta
- typeadulto o niño
- type_certla firma que lo demuestra — una cuenta infantil la firma un padre o una madre, así que no hay ninguna casilla que cambiar
- created_at
- last_active
- account_id
- guardian_keyuna clave autorizada a actuar por este niño
- added_at
- removed_at
- account_id
- platformapns o fcm
- tokenun identificador opaco de Apple o Google
- updated_at
- nonce
- expires_at
- edge_hashun hash del par, no de las dos personas
- grantel permiso que se está decidiendo, y las firmas reunidas hasta ahora
- waiting_keyqué firma falta todavía
- requested_by
- originescaneado en persona, o un padre actuando por su hijo
- created_at
- expires_at
- delivered_toqué lados ya lo tienen
- id
- recipient_idel enrutado necesita este en claro
- sender_idpara que el teléfono sepa con qué clave abrirlo
- edge_hashel par, con hash, para que esto no pueda leerse como un mapa de quién habla con quién
- sealedtexto cifrado. No hay columna de texto y nunca la habrá
- sent_at
- expires_at
- edge_hashel par, con hash
- revoked_at
- recordel registro firmado, para que un teléfono que estaba sin conexión pueda verificar el corte por su cuenta en vez de creernos a nosotros
Columnas que no existen
- correo
- nombre
- edad
- foto
- texto de los mensajes
- contenido de las llamadas
- historial de llamadas
- lista de contactos
- ubicación
- modelo del dispositivo
Tu correo se comprueba una vez al registrarte y se destruye en el mismo movimiento — no hay ninguna columna donde ponerlo. Los nombres y las fotos se ponen en cada teléfono y pasan directamente al otro teléfono; nunca llegan hasta nosotros, y por eso también puedes llamar «Yayo» al abuelo sin que lo sepamos jamás. No podríamos enseñarle nada de esto a nadie aunque quisiéramos, y tampoco podrían obligarnos.
Esta sección se genera a partir de server/src/identity/accounts.ts — el archivo que crea la base de datos. Si alguna vez los dos no coinciden, el archivo tiene razón y esta página tiene un error.
Contactos
Cómo se crea de verdad un contacto.
Alguien muestra un código de un solo uso en su teléfono; el otro teléfono lo escanea, en la misma habitación. El código caduca a los diez minutos y sirve una vez. Ese escaneo hace dos cosas a la vez: inicia la presentación y registra la clave pública del otro teléfono, de modo que ambos saben desde entonces exactamente qué clave pertenece a quién. Esa es la parte que hace imposible colarse en una llamada después, también para nosotros.
Todavía no hay nada conectado. Un adulto responsable tiene que firmar el contacto en su propio teléfono, tras una comprobación biométrica hecha en ese momento. Lo que firma es el conjunto — quién, con quién y en qué sentido — y esa firma es lo que comprueba el servidor antes de encaminar nada. El servidor no tiene ninguna clave capaz de firmar, así que no puede crear un contacto, y quien robe la base de datos tampoco.
Cuando los dos teléfonos tienen el contacto terminado, la fila se borra y el contacto solo existe en los dos dispositivos. Cortarlo más tarde escribe una revocación firmada, lo único que se conserva indefinidamente — guardada como un hash del par, de forma que dice que un contacto terminó sin decir quién conocía a quién.
Quién más interviene
Tres empresas tocan una llamada. Ninguna puede oírla.
Hay tres empresas implicadas en que una llamada suene. Esto es lo que cada una puede y no puede ver.
-
Apple y Google
Las notificaciones push, para que una llamada haga sonar un teléfono dormido. Inevitables en ambas plataformas. Llevan un identificador opaco y nada más — sin nombre, sin número, sin contenido.
-
Cloudflare
Más o menos una de cada seis llamadas no consigue conectar los dos teléfonos directamente — wifi de hotel, algunas redes móviles — y se desvía por un relé. El relé reenvía paquetes cifrados que no puede abrir, pero sí ve que dos identificadores anónimos estuvieron conectados, cuándo, cuánto tiempo y desde qué direcciones. Esos son justo los metadatos que estamos orgullosos de no guardar, en manos de otro. Preferimos escribirlo aquí a que lo descubras en una política.
-
Nosotros
La tabla de arriba. Un servidor pequeño en los Países Bajos que presenta dos teléfonos y luego se aparta.