XIUSoft

Seguridad: qué protegemos y qué no

Esta página describe lo que la app hace realmente, sin marketing. También indicamos los límites para no exagerar nada.

El principio básico

LiveSSH se conecta por SSH desde tu dispositivo directamente al servidor que elijas. Tus datos de conexión no pasan por ningún servidor de LiveSSH.

Si activas LiveSSH Cloud (de pago), elementos como hosts, fragmentos y claves SSH se cifran en tu dispositivo antes de sincronizarse. Las claves de descifrado solo pueden derivarse de tu contraseña maestra y de tu clave de recuperación. A este diseño se le llama cifrado de extremo a extremo, o conocimiento cero.

Cómo se cifra la bóveda

Los elementos sincronizados se protegen así:

  • Los elementos se cifran en tu dispositivo con XChaCha20-Poly1305 (cifrado autenticado) usando una clave de datos generada al azar.
  • La clave de datos se envuelve con una clave derivada de tu contraseña maestra mediante Argon2id (64 MiB de memoria, 3 iteraciones).
  • La misma clave de datos se envuelve también por separado con tu clave de recuperación, una cadena base32 de 52 caracteres de la que se deriva una clave con HKDF.
  • Las claves de datos envueltas se guardan en un keyset (JSON) en el servidor.
  • Cambiar la contraseña maestra solo vuelve a envolver el keyset. Tus elementos no cambian y la clave de recuperación sigue funcionando.

La clave de recuperación

Si olvidas la contraseña maestra, la clave de recuperación abre la bóveda y te permite definir una nueva.

Si pierdes la contraseña maestra y la clave de recuperación, nadie puede recuperar tus datos. El servidor no tiene las claves necesarias para descifrarlos, y eso nos incluye a nosotros. Eres tú quien debe guardar la clave de recuperación de forma segura.

Qué guarda el servidor

El servidor de LiveSSH Cloud es un Supabase alojado por nosotros. Esto es lo que contiene:

Se guarda

  • La dirección de correo de tu cuenta de Google o Apple (solo inicias sesión con Google o Apple; no se guarda ninguna contraseña de inicio de sesión)
  • El keyset: la clave de datos envuelta con tu contraseña maestra y con tu clave de recuperación
  • El texto cifrado de los elementos de la bóveda. El servidor ve el tipo de cada elemento (por ejemplo host, fragmento, clave), su ID, las marcas de tiempo y los marcadores de borrado
  • Para push: tokens de dispositivo y tipo de dispositivo, un hash (SHA-256) del token del hook de notificaciones con una etiqueta (el nombre visible del host) y la fecha de vencimiento de tu suscripción
  • Registros de acceso (dirección IP, hora de la solicitud) para seguridad y resolución de incidencias

No se guarda

  • Tu contraseña maestra y tu clave de recuperación
  • Ninguna clave capaz de descifrar tus elementos
  • Contraseñas SSH, claves privadas, direcciones de hosts y nombres de usuario (llegan a la nube solo como texto cifrado)
  • Entrada y salida del terminal, historial de comandos, archivos transferidos por SFTP

La base de datos separa las cuentas mediante control de acceso a nivel de fila, y el tráfico hacia el servidor está protegido con TLS. Los plazos de conservación y los encargados del tratamiento figuran en la política de privacidad.

Fijación de la clave del host (TOFU)

La primera vez que te conectas a un servidor, la app muestra la huella de su clave de host (SHA-256) y, cuando la confirmas, la guarda con ese host (Trust On First Use).

Si la huella cambia más adelante, la app se niega a conectar y te avisa. Puede que el servidor haya sido sustituido, o que alguien esté interceptando la conexión. Puedes restablecer la huella guardada en la pantalla de edición del host.

Tú debes juzgar si la huella de la primerísima conexión es auténtica; TOFU no protege frente a un ataque durante esa primera conexión.

Qué contiene una notificación push

Las notificaciones push siguen un camino distinto al de la bóveda cifrada. Un hook de notificaciones en tu servidor envía el aviso al servidor de LiveSSH, que lo entrega a tu dispositivo mediante Google Firebase Cloud Messaging (en iOS, a través del Apple Push Notification service).

Una notificación contiene un título, un cuerpo (por ejemplo el texto de la petición de confirmación del agente, de hasta 300 caracteres), el nombre de la sesión de tmux y la etiqueta del host. Por este camino no está cifrada de extremo a extremo, así que pasa por el servidor de LiveSSH y por Google o Apple. El servidor está hecho para no escribir el cuerpo de las notificaciones en sus registros. Si las peticiones de confirmación de tu agente pueden contener datos sensibles, no actives las notificaciones.

Informes de fallos

Los informes de fallos se envían a Firebase Crashlytics solo si das tu consentimiento en el primer inicio, y puedes desactivarlos en cualquier momento en Ajustes → Seguridad. Al desactivarlos se eliminan los informes aún no enviados.

Un informe contiene la causa del fallo (traza de pila), la versión del sistema y de la app, y el modelo del dispositivo. Los mensajes de error se recortan a su primera línea, y las direcciones IP, correos, rutas y nombres de host se enmascaran antes de enviarlos. Nunca se incluyen direcciones de hosts, nombres de usuario, comandos, salida del terminal, nombres de archivo ni claves. La app no usa ningún SDK de publicidad ni de análisis de uso.

Lo que este diseño no protege

  • Un dispositivo infectado con malware, o desbloqueado, no puede ser protegido por la app. Mientras la bóveda está abierta, la app trabaja con datos descifrados, y si activas el desbloqueo biométrico, la contraseña maestra se guarda en el almacenamiento seguro del dispositivo.
  • Una contraseña maestra débil es vulnerable a ataques de fuerza bruta. Argon2id ralentiza cada intento; no impide intentar adivinarla.
  • El servidor de LiveSSH puede ver metadatos como los tipos de elemento, los ID, las marcas de tiempo y el número de elementos.
  • La seguridad del lado del servidor SSH (gestión de claves, un servidor comprometido, cómo se conserva allí el token del hook de notificaciones) depende de ti y del administrador de tu servidor.
  • El código fuente de la app no es público y no ha sido auditado por terceros. Las explicaciones de esta página las ha escrito el desarrollador y no se han verificado de forma independiente.

Cómo informar de un problema de seguridad

Si encuentras una vulnerabilidad o un comportamiento distinto al descrito, escribe a contact@xiu.kr.

Última actualización: 2026-10-07