Cómo LifeVeil protege tus archivos
Esta página explica 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
- Toda la encriptación ocurre en tu teléfono. No hay servidor de LifeVeil ni cuenta.
- Tus archivos se encriptan 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 la encriptación integrada en Android y la conocida biblioteca libsodium. No creamos nuestra propia encriptación.
- LifeVeil todavía 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. Esto hace que adivinar con tarjetas gráficas sea mucho más costoso.
- 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 app, encriptada con una clave que se conserva en Android Keystore, que no se puede copiar fuera del teléfono.
- No se guarda ninguna copia del patrón. La app comprueba un patrón intentando desbloquear la clave.
- Después de 5 patrones incorrectos seguidos, debes esperar 30 segundos. La espera se duplica después de cada error adicional, hasta 16 minutos.
Cómo se encriptan los archivos
- Cada bóveda tiene una clave maestra aleatoria de 256 bits. La clave de tu patrón y la clave de recuperación solo "envuelven" (encriptan) esta clave maestra.
- Los archivos, las miniaturas y la lista de tus elementos (nombres de archivo originales, fechas, tamaños) se encriptan con AES-256-GCM, usando la encriptación integrada en Android. GCM también detecta si un archivo se modificó o se intercambió.
- Los archivos dentro de la app tienen nombres aleatorios. Los archivos grandes se encriptan en partes de 1 MiB, así que los videos se reproducen sin escribir nunca una copia sin encriptar en el almacenamiento.
- En las fotos JPEG, los detalles ocultos (EXIF, como la cámara y la fecha) se guardan por separado, también encriptados.
- Cuando la app se bloquea, sobrescribe con ceros las claves que tiene en la memoria.
Frase de recuperación
- Cuando creas una bóveda, el generador seguro de números aleatorios del teléfono elige 9 palabras en inglés. Provienen de dos listas de 1,024 palabras comunes, en uno de 4 órdenes fijos. Eso equivale a 92 bits de aleatoriedad. Las palabras están en inglés en todos los idiomas de la app.
- 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 funciona.
- Se guarda en el teléfono una copia de la frase, encriptada dos veces: una con la clave maestra y otra con una clave de Android Keystore. Puedes verla en Configuración 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 anterior deja de funcionar.
Huella digital
El desbloqueo con huella digital es opcional. Es Android quien verifica la huella, no LifeVeil; la app nunca recibe tu huella digital. Una clave de Android Keystore que solo funciona justo después de una verificación biométrica segura desbloquea la clave maestra. Si alguien agrega una huella digital nueva al teléfono, esta clave deja de funcionar y debes volver a usar tu patrón.
Archivo de respaldo
- Un respaldo es un solo archivo
.lvb. Contiene tus elementos tal como ya están encriptados, más dos copias envueltas de la clave maestra: una para el patrón que dibujaste al crear el respaldo y otra para la frase de recuperación que tenías en ese momento. - La copia del patrón usa una sal aleatoria nueva para cada respaldo, no la sal del dispositivo. Eso es lo que te permite abrir el respaldo en un teléfono nuevo.
- El encabezado del archivo está protegido para que se detecten cambios o partes intercambiadas.
- Tú eliges dónde guardarlo con la pantalla para guardar propia de Android. Nunca pasa por nosotros.
- Para restaurarlo, abre el archivo con su patrón o su frase. Luego dibujas un patrón nuevo y recibes una frase de recuperación nueva.
Otras protecciones de la app
- Las capturas de pantalla, la grabación de pantalla y la vista previa en la lista de apps recientes están bloqueadas en todas las pantallas.
- De forma predeterminada, la app se bloquea en cuanto sales de ella. Si prefieres, puedes elegir 30 segundos o 1 minuto.
- La copia de seguridad en la nube y la transferencia entre teléfonos propias de Android no incluyen los datos de LifeVeil. Usa el archivo de respaldo en su lugar.
- La app no pide acceso a la ubicación, a los contactos ni a "todos los archivos".
- Bóveda vacía con un patrón incorrecto. Un patrón que no abre ninguna bóveda muestra una bóveda vacía en lugar de un error, así quien te obligue a abrir la app 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 Configuración > Seguridad > Bóveda vacía con un patrón incorrecto.
La IA y los intentos de adivinar el patrón
- La IA no puede saltarse los cálculos. Cada intento tiene que ejecutar Argon2id con 64 MiB de memoria. La IA no rompe Argon2id ni AES, así que ningún intento se vuelve más barato.
- Lo que la IA cambia es el orden de los intentos. Puede aprender las formas que prefiere la gente (letras, cuadrados, esquinas de inicio favoritas) y probarlas primero. También puede ayudar a leer un patrón en un video grabado por encima de tu hombro, o a partir de las marcas de los dedos en la pantalla.
- Por eso, las defensas se centran en el patrón, no en los cálculos. El medidor de seguridad avisa sobre las formas comunes. Patrón + PIN agrega un PIN de 4–6 dígitos, así que un patrón visto en video no basta. Ocultar el trazo del patrón no deja ninguna línea que grabar. La sal del dispositivo en Android Keystore impide adivinar fuera del teléfono.
Límites que debes conocer
Ninguna app puede proteger contra todo. Estos son, con franqueza, los límites de LifeVeil.
Los patrones simples se pueden adivinar
Las formas cortas o comunes (una L, una Z, una línea recta) se pueden adivinar observándote, por las marcas de los dedos en la pantalla o en unos 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 app te avisa si un patrón es muy simple.
Cuánto podría tardar adivinarlo
Dentro de la app, cada intento tarda alrededor de un segundo, y las esperas aumentan después de 5 errores. Pero alguien que tenga tu archivo de respaldo, o que haya obtenido la sal del dispositivo de un teléfono con root, puede intentar adivinar en una computadora, sin esperas. Argon2id lo hace más lento, 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 1,000 intentos por segundo:
| Qué se adivina | Posibilidades | Tiempo, una tarjeta gráfica |
|---|---|---|
| Los 10,000 patrones más comunes | 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. Las cantidades de patrones son límites máximos; los patrones reales son muchos menos. Con más hardware o hardware más rápido, adivinar es proporcionalmente más rápido.
Mantén tu archivo de respaldo en privado
El archivo de respaldo no contiene la sal del dispositivo, así que cualquiera que lo obtenga 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 con root o infectados
Si alguien puede ejecutar código con los permisos de la app (por ejemplo, en un teléfono con root o con malware que tenga control total), puede desbloquear la sal del dispositivo y adivinar sin conexión. Mientras la bóveda está abierta, las claves están en la memoria y se pueden leer con acceso root o con un depurador. Algunas copias que se crean dentro de Android y Flutter, y las fotos que se muestran en pantalla, no se pueden borrar de la memoria de inmediato.
Cierta información es visible
No se ocultan la cantidad de archivos encriptados en el almacenamiento de la app, su tamaño aproximado ni cuándo se crearon o modificaron. Tampoco el hecho de que LifeVeil está instalada.
La bóveda vacía solo engaña a la pantalla
Quien pueda leer los archivos de la app (por ejemplo, en un teléfono con root) puede contar las carpetas de las bóvedas y ver que esta opción está activada. Además, después de 5 patrones incorrectos la app te hace esperar, lo que muestra que los patrones anteriores no abrieron nada.
El disfraz solo cambia la pantalla principal
- Solo cambian el ícono y el nombre en el launcher. La lista de Configuración > Apps del teléfono, la información de la app 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 app, y la app no puede cambiarlo.
- El menú para compartir de Android siempre muestra el nombre real de la app, así que LifeVeil se quita de ese menú cuando cambias el ícono. Puedes volver a activarlo.
- Las solicitudes de permisos de Android muestran el nombre real, así que la app pide los permisos antes de que cambies el ícono.
- Mientras el ícono está cambiado, la app 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 un hash con sal, pero con tan pocas posibilidades es fácil de descubrir si alguien obtiene el archivo.
La huella digital es una vía más débil
El desbloqueo con huella digital no pasa por Argon2id. Su seguridad depende del sensor de huellas de tu teléfono y de Android Keystore. Puedes desactivarlo en Configuración en cualquier momento.
Fotos de intrusos
La app no reproduce sonido de obturador, pero los teléfonos que se venden en algunos países, como Japón y Corea, siempre lo reproducen. No se toma ninguna foto si otra app está usando la cámara o si no hay cámara frontal. Hasta que desbloquees la primera bóveda que creaste, las fotos quedan selladas con una clave de Android Keystore.
Detalles de las fotos
- En las fotos HEIC, PNG y WebP, los detalles ocultos (EXIF) se quedan dentro del archivo. Aun así, todo el archivo está encriptado.
- En Android 10 y versiones posteriores, Android quita la ubicación GPS de las fotos que lee LifeVeil, porque la app no pide acceso a la ubicación. Cuando se borra el original de la galería, esa ubicación desaparece.
- Las fotos que se agregan 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 una pantalla del sistema abierta (solicitud de permisos, confirmación de borrado, selector de fotos o archivos, solicitud de huella digital) y mientras se realiza una importación o exportación, la app espera para bloquearse. Si saliste de la app, se bloquea 2 segundos después de que eso termine.
Las bóvedas comparten una sal del dispositivo
Todas las bóvedas de un teléfono usan la misma sal del dispositivo. Si alguien tiene esa sal, un solo intento prueba todas las bóvedas a la vez. El costo de atacar una sola bóveda es el mismo.
Lo que ninguna app 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 tanto tu patrón como tu frase de recuperación, nadie puede recuperar tus archivos. Ni siquiera nosotros.