Cómo protege LifeVeil tus archivos
En esta página te explicamos con palabras sencillas lo que hace LifeVeil y también lo que no puede hacer. Preferimos que conozcas los límites a que confíes en una promesa demasiado grande.
En resumen
- Todo el cifrado se hace en tu teléfono. No hay ningún servidor de LifeVeil ni ninguna cuenta.
- Tus archivos se cifran con una clave aleatoria. Solo tu patrón, tu frase de recuperación o tu huella digital pueden desbloquear esa clave.
- Nosotros, los desarrolladores, nunca tenemos tu patrón, tu frase ni tus claves. No podemos abrir tus archivos ni restablecer tu patrón.
- Usamos el cifrado integrado en Android y la conocida biblioteca libsodium. No hemos creado nuestro propio cifrado.
- LifeVeil aún no ha pasado una auditoría de seguridad independiente.
De tu patrón a una clave
Dibujas un patrón en una cuadrícula de 5×5, con al menos 6 puntos y sin repetir ninguno. LifeVeil convierte el patrón en una clave con Argon2id, de libsodium (versión 1.0.20 en Android).
- Parámetros: 64 MiB de memoria, 3 pasadas, 1 carril, clave de 256 bits.
- Argon2id es lento a propósito y necesita mucha memoria para cada intento. Así, adivinar con tarjetas gráficas sale mucho más caro.
- En nuestros teléfonos de prueba, cada desbloqueo tarda entre 0,6 y 0,9 segundos aproximadamente.
- El patrón se combina con una sal del dispositivo aleatoria de 16 bytes. La sal se guarda en la aplicación, cifrada con una clave que se conserva en el Android Keystore y que no se puede copiar fuera del teléfono.
- No se guarda ninguna copia del patrón. La aplicación comprueba un patrón intentando desbloquear la clave.
- Tras 5 patrones incorrectos seguidos, tienes que esperar 30 segundos. La espera se duplica con cada error más, hasta 16 minutos.
Cómo se cifran los archivos
- Cada caja fuerte tiene una clave maestra aleatoria de 256 bits. La clave de tu patrón y la clave de recuperación solo "envuelven" (cifran) esta clave maestra.
- Los archivos, las miniaturas y la lista de tus elementos (nombres de archivo originales, fechas, tamaños) se cifran con AES-256-GCM, mediante el cifrado integrado en Android. GCM también detecta si un archivo se ha modificado o sustituido.
- Los archivos dentro de la aplicación tienen nombres aleatorios. Los archivos grandes se cifran en fragmentos de 1 MiB, de modo que los vídeos se reproducen sin escribir nunca una copia sin cifrar en el almacenamiento.
- En las fotos JPEG, los datos ocultos (EXIF, como la cámara y la fecha) se guardan aparte, también cifrados.
- Cuando la aplicación se bloquea, sobrescribe con ceros las claves que tiene en memoria.
Frase de recuperación
- Cuando creas una caja fuerte, el generador seguro de números aleatorios del teléfono elige 9 palabras en inglés. Salen de dos listas de 1024 palabras comunes, en uno de 4 órdenes fijos. Eso son 92 bits de aleatoriedad. Las palabras están en inglés en todos los idiomas de la aplicación.
- La frase pasa por los mismos parámetros de Argon2id y desbloquea la clave maestra por sí sola. No necesita la sal del dispositivo, así que funciona incluso cuando el patrón ya no sirve.
- En el teléfono se guarda una copia de la frase cifrada dos veces: una con la clave maestra y otra con una clave del Android Keystore. Puedes verla en Ajustes después de volver a dibujar tu patrón.
- Cuando cambias tu patrón o usas la frase para volver a entrar, recibes una frase nueva. La antigua deja de funcionar.
Huella digital
El desbloqueo con huella digital es opcional. Quien comprueba la huella es Android, no LifeVeil; la aplicación nunca recibe tu huella. Una clave del Android Keystore que solo funciona justo después de una verificación biométrica segura desbloquea la clave maestra. Si alguien añade una huella nueva al teléfono, esta clave deja de funcionar y tienes que volver a usar tu patrón.
Archivo de copia de seguridad
- Una copia de seguridad es un único archivo
.lvb. Contiene tus elementos tal como ya están cifrados, más dos copias envueltas de la clave maestra: una para el patrón que dibujaste al hacer la copia y otra para la frase de recuperación que tenías entonces. - La copia del patrón usa una sal aleatoria nueva en cada copia de seguridad, no la sal del dispositivo. Eso es lo que te permite abrir la copia en un teléfono nuevo.
- La cabecera del archivo está protegida para que se detecten cambios o partes sustituidas.
- Tú eliges dónde guardarlo con la propia pantalla de guardado de Android. Nunca pasa por nosotros.
- Para restaurarla, abre el archivo con su patrón o su frase. Después dibujas un patrón nuevo y recibes una nueva frase de recuperación.
Otras protecciones de la aplicación
- Las capturas de pantalla, la grabación de pantalla y la vista previa en la lista de aplicaciones recientes están bloqueadas en todas las pantallas.
- De forma predeterminada, la aplicación se bloquea en cuanto sales de ella. Si lo prefieres, puedes elegir 30 segundos o 1 minuto.
- La copia de seguridad en la nube y la transferencia entre teléfonos de Android no incluyen los datos de LifeVeil. Usa el archivo de copia de seguridad.
- La aplicación no pide acceso a la ubicación, a los contactos ni a "todos los archivos".
- Caja fuerte vacía con un patrón incorrecto. Un patrón que no abre ninguna caja fuerte muestra una caja fuerte vacía en lugar de un error, así quien te obligue a abrir la aplicación no sabe qué más hay. Los intentos fallidos se siguen contando, se siguen tomando fotos de intrusos y las esperas se siguen aplicando. Puedes desactivarlo en Ajustes > Seguridad > Caja fuerte vacía con un patrón incorrecto.
La IA y los intentos de adivinar el patrón
- La IA no puede saltarse las matemáticas. Cada intento sigue teniendo que ejecutar Argon2id con 64 MiB de memoria. La IA no rompe Argon2id ni AES, así que ningún intento sale más barato.
- Lo que cambia la IA es el orden de los intentos. Puede aprender las formas que gustan a la gente (letras, cuadrados, esquinas de inicio favoritas) y probarlas primero. También puede ayudar a leer un patrón a partir de un vídeo grabado por encima de tu hombro o de las marcas de los dedos en la pantalla.
- Por eso las defensas se centran en el patrón, no en las matemáticas. El indicador de seguridad avisa de las formas habituales. Patrón + PIN añade un PIN de 4–6 dígitos, así que un patrón visto en un vídeo no basta. Ocultar línea del patrón no deja ninguna línea que grabar. La sal del dispositivo en el Android Keystore impide adivinar fuera del teléfono.
Límites que debes conocer
Ninguna aplicación puede protegerte de todo. Estos son, con sinceridad, los límites de LifeVeil.
Los patrones sencillos se pueden adivinar
Las formas cortas o habituales (una L, una Z, una línea recta) se pueden adivinar observándote, por las marcas de los dedos en la pantalla o en pocos intentos. Los patrones reales son mucho más fáciles de adivinar de lo que sugiere el número de patrones posibles. Usa más puntos y más giros. La aplicación te avisa de los patrones muy sencillos.
Cuánto se podría tardar en adivinarlo
Dentro de la aplicación, cada intento tarda aproximadamente un segundo y las esperas aumentan tras 5 errores. Pero quien tenga tu archivo de copia de seguridad, o haya sacado la sal del dispositivo de un teléfono rooteado, puede intentarlo en un ordenador, sin esperas. Argon2id lo ralentiza, pero un patrón tiene muchas menos posibilidades que una contraseña larga. Estimaciones aproximadas para una tarjeta gráfica de gama alta (tipo RTX 4090) a unos 1000 intentos por segundo:
| Qué se intenta adivinar | Posibilidades | Tiempo con una tarjeta gráfica |
|---|---|---|
| Los 10 000 patrones más habituales | 104 | unos 10 segundos |
| Todos los patrones de 6 puntos | 1,28 × 108 | unos 1,5 días |
| Todos los patrones de 7 puntos | 2,42 × 109 | unos 28 días |
| Todos los patrones de 8 puntos | 4,36 × 1010 | unos 1,4 años |
| Frase de recuperación (92 bits) | 4,95 × 1027 | unos 1,6 × 1017 años |
Son estimaciones, no mediciones. Los números de patrones son límites superiores; los patrones reales son muchos menos. Con más hardware o hardware más rápido, se adivina proporcionalmente más rápido.
Mantén tu archivo de copia de seguridad en privado
El archivo de copia de seguridad no contiene la sal del dispositivo, así que quien lo consiga puede probar patrones sin conexión, como se muestra arriba. Guárdalo solo donde únicamente tú tengas acceso, como tu propia cuenta en la nube, y usa un patrón más largo.
Teléfonos rooteados o infectados
Si alguien puede ejecutar código con los permisos de la aplicación (por ejemplo, en un teléfono rooteado o con malware que tenga control total), puede desbloquear la sal del dispositivo e intentar adivinar sin conexión. Mientras la caja fuerte está abierta, las claves están en memoria y se pueden leer con acceso root o con un depurador. Algunas copias que se hacen dentro de Android y Flutter, y las fotos que se muestran en pantalla, no se pueden borrar de la memoria al instante.
Hay información que se ve
No se ocultan el número de archivos cifrados en el almacenamiento de la aplicación, su tamaño aproximado ni cuándo se crearon o modificaron. Tampoco el hecho de que LifeVeil esté instalada.
La caja fuerte vacía solo engaña a la pantalla
Quien pueda leer los archivos de la aplicación (por ejemplo, en un teléfono rooteado) puede contar las carpetas de las cajas fuertes y ver que este ajuste está activado. Además, tras 5 patrones incorrectos la aplicación te hace esperar, lo que muestra que los patrones anteriores no abrieron nada.
El disfraz solo cambia la pantalla de inicio
- Solo cambian el icono y el nombre del launcher. La lista de Ajustes > Aplicaciones del teléfono, la información de la aplicación y las pantallas de almacenamiento siguen mostrando LifeVeil.
- Los lectores de pantalla pueden seguir diciendo "LifeVeil". Por ejemplo, el launcher de Samsung One UI le da a TalkBack el nombre real de la aplicación, y la aplicación no puede cambiarlo.
- El menú para compartir de Android siempre muestra el nombre real de la aplicación, así que LifeVeil sale de él cuando cambias el icono. Puedes volver a activarlo.
- Las solicitudes de permisos de Android muestran el nombre real, así que la aplicación pide los permisos antes de que cambies el icono.
- Mientras el icono está cambiado, la aplicación no envía notificaciones.
- El código del disfraz (de 4 a 8 dígitos) solo muestra la pantalla de bloqueo. No abre tus archivos. Se guarda como hash con sal, pero con tan pocas posibilidades es fácil de averiguar si alguien consigue el archivo.
La huella digital es una vía más débil
El desbloqueo con huella digital se salta Argon2id. Su seguridad depende del sensor de huellas y del Android Keystore de tu teléfono. Puedes desactivarlo en Ajustes en cualquier momento.
Fotos de intrusos
La aplicación no reproduce sonido de obturador, pero los teléfonos vendidos en algunos países, como Japón y Corea, siempre lo reproducen. No se hace ninguna foto si otra aplicación está usando la cámara o si no hay cámara frontal. Hasta que desbloquees la primera caja fuerte que creaste, las fotos quedan protegidas con una clave del Android Keystore.
Datos de las fotos
- En las fotos HEIC, PNG y WebP, los datos ocultos (EXIF) se quedan dentro del archivo. El archivo completo sigue estando cifrado.
- En Android 10 y versiones posteriores, Android quita la ubicación GPS de las fotos que lee LifeVeil, porque la aplicación no pide acceso a la ubicación. Cuando se borra el original de la galería, esa ubicación desaparece.
- Las fotos añadidas con el selector de fotos de Android reciben nombres nuevos basados en la fecha, porque el selector no proporciona el nombre original.
El bloqueo se pausa durante las pantallas del sistema
Mientras hay abierta una pantalla del sistema (solicitud de permiso, confirmación de borrado, selector de fotos o archivos, solicitud de huella digital) y mientras se está importando o exportando, la aplicación espera para bloquearse. Si has salido de la aplicación, se bloquea 2 segundos después de que termine.
Las cajas fuertes comparten una misma sal del dispositivo
Todas las cajas fuertes de un teléfono usan la misma sal del dispositivo. Si alguien tiene esa sal, un solo intento prueba todas las cajas fuertes a la vez. El coste de atacar una sola caja fuerte es el mismo.
Lo que ninguna aplicación puede impedir
Que alguien te mire mientras dibujas tu patrón, o que una cámara grabe tu pantalla.
Si pierdes ambos, nadie puede ayudarte
Si pierdes tu patrón y también tu frase de recuperación, nadie podrá recuperar tus archivos. Ni siquiera nosotros.