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.
- Los archivos de cada caja fuerte se cifran con una clave aleatoria. Solo el patrón de esa caja fuerte (con su PIN en el nivel máximo), su frase de recuperación si le añadiste una, o tu huella digital si la activaste pueden desbloquear esa clave.
- Cada patrón abre una caja fuerte. Un patrón que no coincide con ninguna caja fuerte guardada abre una vacía, y no se escribe nada hasta que le añades un archivo.
- Nosotros, los desarrolladores, nunca tenemos tu patrón, tu PIN, 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, sin repetir ningún punto. Un patrón nuevo que configures necesita al menos 6 puntos. 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, salvo la que se conserva con una frase de recuperación (ver más abajo). La aplicación comprueba un patrón intentando desbloquear la clave.
- Lo que escribas en la casilla del PIN, encima de los puntos, entra en la misma derivación de clave que el patrón. Si la casilla está vacía, cuenta solo el patrón.
Niveles de seguridad
Cada caja fuerte tiene un nivel. Lo eliges al empezar y puedes cambiarlo después en Ajustes > Caja fuerte > Nivel de seguridad, tras volver a dibujar el patrón.
- Máxima seguridad (Ultra): patrón y un PIN de 6 a 8 dígitos, los dos solo en tu cabeza. Seguro incluso frente a intentos de adivinar con IA. Si olvidas cualquiera de los dos, la caja fuerte no se puede recuperar.
- Nivel 1 (recomendado): solo patrón. Seguro si evitas las formas habituales. Si lo olvidas, la caja fuerte no se puede recuperar.
- Nivel 2: patrón y una frase de recuperación escrita en papel. Puedes volver a entrar si olvidas el patrón, pero quien encuentre el papel también puede abrir la caja fuerte.
- Nivel 3: patrón y huella digital. Es lo más cómodo, pero alguien podría obligarte a poner el dedo en el sensor. La huella digital solo funciona para una caja fuerte.
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
- La frase de recuperación es opcional. Una caja fuerte solo la recibe cuando eliges el Nivel 2, y se guarda después de que superes un breve cuestionario.
- 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 guardan una copia de la frase y una copia del patrón de la caja fuerte (y del PIN), cada una cifrada dos veces: una con la clave maestra y otra con una clave del Android Keystore. Cuando la frase abre la caja fuerte, la aplicación muestra el patrón una vez. Se olvida en cuanto la aplicación se bloquea.
- La frase sigue siendo la misma cuando cambias el patrón. Una caja fuerte sin frase no tiene forma de recuperarse si se olvida el patrón.
Huella digital
El desbloqueo con huella digital es opcional y funciona para una caja fuerte. 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 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, si la caja fuerte tenía una. - 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. La caja fuerte restaurada empieza sin 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".
- Una caja fuerte vacía para cada patrón nuevo. Una caja fuerte sin archivos se ve igual tanto si se ha guardado como si no, así quien te obligue a abrir la aplicación no sabe qué más hay. Puedes desactivarlo en Ajustes > Seguridad, y entonces un patrón que no abre nada muestra un error.
Cómo se frenan los intentos de adivinar
Como cada patrón abre una caja fuerte, intentar adivinar se ve como muchas cajas fuertes vacías que se abren. LifeVeil lo frena sin indicarlo en pantalla, y la espera es la misma para todos los patrones, incluido el correcto.
- En 24 horas, 10 aperturas de cajas fuertes sin archivos añaden 10 segundos a cada desbloqueo, 20 añaden 60 segundos y 30 añaden 5 minutos, el máximo.
- Las señales de automatización llevan directamente al máximo: patrones terminados con menos de 2 segundos de diferencia tres veces seguidas, o toques que vienen de servicios de accesibilidad o de entradas inyectadas en lugar de un dedo.
- Cada 24 horas sin abrir una caja fuerte vacía, se reduce un paso. Atrasar el reloj del teléfono no lo acorta.
- Esto solo funciona dentro de la aplicación. No frena los intentos en un ordenador con un archivo copiado (consulta los límites más abajo).
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. La aplicación avisa de las formas habituales. El nivel de seguridad máximo añade un PIN de 6 a 8 dígitos, así que un patrón visto en un vídeo no basta. Ocultar la 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, y también antes de guardar una caja fuerte cuyo patrón tiene menos de 6 puntos.
Cuánto se podría tardar en adivinarlo
Dentro de la aplicación, cada intento tarda aproximadamente un segundo, y los intentos repetidos hacen más lento cada desbloqueo, hasta 5 minutos. 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. Un PIN en el nivel máximo multiplica estas cifras hasta por 108.
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.
La frase de recuperación también muestra el patrón
Quien tenga la frase de recuperación de una caja fuerte puede abrirla, y la aplicación le muestra entonces su patrón y su PIN. Si usas el mismo patrón en otro sitio, como el bloqueo de pantalla del teléfono, también lo descubre. Guarda el papel con el mismo cuidado que los propios archivos.
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. El freno cuenta por igual las cajas fuertes vacías guardadas y las no guardadas, así que la espera por sí sola no permite distinguirlas.
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.
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.
Sin frase, nadie puede ayudarte
Si olvidas el patrón de una caja fuerte que no tiene frase de recuperación, o pierdes el patrón y también la frase, nadie podrá recuperar sus archivos. Ni siquiera nosotros.