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.
- Los archivos de cada bóveda se encriptan con una clave aleatoria. Solo el patrón de esa bóveda (con su PIN en el nivel máximo), su frase de recuperación si agregaste una, o tu huella digital si la activaste, pueden desbloquear esa clave.
- Cada patrón abre una bóveda. Un patrón que no coincide con ninguna bóveda guardada abre una vacía, y no se escribe nada hasta que le agregas 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 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, 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. 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, salvo la que se conserva con una frase de recuperación (ver abajo). La app 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 la clave que el patrón. Si la casilla está vacía, cuenta solo el patrón.
Niveles de seguridad
Cada bóveda tiene un nivel. Lo eliges al empezar y puedes cambiarlo después en Configuración > Bóveda > 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, ambos solo en tu cabeza. Seguro incluso contra intentos de adivinar con IA. Si olvidas cualquiera de los dos, la bóveda no se puede recuperar.
- Nivel 1 (recomendado): solo patrón. Seguro si evitas las formas comunes. Si lo olvidas, la bóveda 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 bóveda.
- Nivel 3: patrón y huella digital. Es el más cómodo, pero alguien podría forzar tu dedo sobre el sensor. La huella digital funciona solo para una bóveda.
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
- La frase de recuperación es opcional. Una bóveda solo tiene una si eliges el Nivel 2, y se guarda después de que pasas un breve cuestionario.
- 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 guardan en el teléfono una copia de la frase y una copia del patrón de la bóveda (y del PIN), cada una encriptada dos veces: una con la clave maestra y otra con una clave de Android Keystore. Cuando la frase abre la bóveda, la app muestra el patrón una vez. Se olvida cuando la app se bloquea.
- La frase sigue siendo la misma cuando cambias el patrón. Una bóveda 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 bóveda. 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 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, si la bóveda tenía una. - 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. La bóveda restaurada empieza sin frase de recuperación.
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".
- Una bóveda vacía para cada patrón nuevo. Una bóveda sin archivos se ve igual tanto si se guardó como si no, así quien te obligue a abrir la app no sabe qué más hay. Puedes desactivarlo en Configuración > Seguridad; 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 bóveda, adivinar se ve como muchas bóvedas vacías que se abren. LifeVeil lo hace más lento sin indicarlo en pantalla, y la espera es la misma para cualquier patrón, incluido el correcto.
- En 24 horas, 10 aperturas de bóvedas sin archivos agregan 10 segundos a cada desbloqueo, 20 agregan 60 segundos y 30 agregan 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 bóveda vacía, se reduce un nivel. Atrasar el reloj del teléfono no lo acorta.
- Esto solo funciona dentro de la app. No frena los intentos de adivinar en una computadora 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 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. La app avisa sobre las formas comunes. El nivel de seguridad máximo agrega un PIN de 6 a 8 dígitos, así que un patrón visto en video no basta. Ocultar la línea 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, y antes de guardar una bóveda cuyo patrón tiene menos de 6 puntos.
Cuánto podría tardar adivinarlo
Dentro de la app, cada intento tarda alrededor de un segundo, y los intentos repetidos hacen más lento cada desbloqueo, hasta 5 minutos. 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. Un PIN en el nivel máximo multiplica estas cifras hasta por 108.
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.
La frase de recuperación también muestra el patrón
Quien tenga la frase de recuperación de una bóveda puede abrirla, y la app le muestra entonces su patrón y su PIN. Si usas el mismo patrón en otro lugar, como el bloqueo de pantalla de tu teléfono, también lo descubre. Guarda el papel con el mismo cuidado que los archivos.
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. La ralentización cuenta por igual las bóvedas vacías guardadas y las no guardadas, así que la espera en sí no permite distinguirlas.
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.
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.
Sin frase, nadie puede ayudarte
Si olvidas el patrón de una bóveda que no tiene frase de recuperación, o pierdes tanto el patrón como la frase, nadie puede recuperar sus archivos. Ni siquiera nosotros.