Como o LifeVeil protege seus arquivos
Esta página explica em palavras simples o que o LifeVeil faz e também o que ele não consegue fazer. Preferimos que você conheça os limites a confiar em uma promessa grande demais.
Em resumo
- Toda a criptografia acontece no seu celular. Não existe servidor do LifeVeil nem conta.
- Seus arquivos são criptografados com uma chave aleatória. Só o seu padrão, a sua frase de recuperação ou a sua impressão digital podem desbloquear essa chave.
- Nós, os desenvolvedores, nunca temos seu padrão, sua frase nem suas chaves. Não conseguimos abrir seus arquivos nem redefinir seu padrão.
- Usamos a criptografia integrada ao Android e a conhecida biblioteca libsodium. Não criamos nossa própria criptografia.
- O LifeVeil ainda não passou por uma auditoria de segurança independente.
Do seu padrão a uma chave
Você desenha um padrão em uma grade de 5×5, usando pelo menos 6 pontos e sem repetir nenhum ponto. O LifeVeil transforma o padrão em uma chave com o Argon2id, da libsodium (versão 1.0.20 no Android).
- Parâmetros: 64 MiB de memória, 3 passagens, 1 via, chave de 256 bits.
- O Argon2id é lento de propósito e precisa de muita memória a cada tentativa. Isso deixa muito mais caro tentar adivinhar com placas de vídeo.
- Nos nossos celulares de teste, um desbloqueio leva de 0,6 a 0,9 segundo, aproximadamente.
- O padrão é combinado com um salt do dispositivo aleatório de 16 bytes. O salt fica guardado no app, criptografado com uma chave mantida no Android Keystore, que não pode ser copiada para fora do celular.
- Nenhuma cópia do padrão é guardada. O app confere um padrão tentando desbloquear a chave.
- Depois de 5 padrões errados seguidos, é preciso esperar 30 segundos. A espera dobra a cada novo erro, até 16 minutos.
Como os arquivos são criptografados
- Cada cofre tem uma chave mestra aleatória de 256 bits. A chave do seu padrão e a chave de recuperação apenas "envolvem" (criptografam) essa chave mestra.
- Os arquivos, as miniaturas e a lista dos seus itens (nomes originais dos arquivos, datas, tamanhos) são criptografados com AES-256-GCM, usando a criptografia integrada ao Android. O GCM também detecta se um arquivo foi alterado ou trocado.
- Os arquivos dentro do app têm nomes aleatórios. Arquivos grandes são criptografados em partes de 1 MiB, para que os vídeos sejam reproduzidos sem nunca gravar uma cópia sem criptografia no armazenamento.
- Nas fotos JPEG, os detalhes ocultos (EXIF, como a câmera e a data) são guardados separadamente, também criptografados.
- Quando o app é bloqueado, ele substitui por zeros as chaves que mantém na memória.
Frase de recuperação
- Quando você cria um cofre, o gerador seguro de números aleatórios do celular escolhe 9 palavras em inglês. Elas vêm de duas listas de 1.024 palavras comuns, em uma de 4 ordens fixas. Isso dá 92 bits de aleatoriedade. As palavras ficam em inglês em todos os idiomas do app.
- A frase passa pelos mesmos parâmetros do Argon2id e desbloqueia a chave mestra sozinha. Ela não precisa do salt do dispositivo, então funciona mesmo quando o padrão já não funciona.
- Uma cópia da frase fica guardada no celular, criptografada duas vezes: uma com a chave mestra e outra com uma chave do Android Keystore. Você pode vê-la nas Configurações depois de desenhar seu padrão novamente.
- Quando você muda seu padrão ou usa a frase para entrar de novo, recebe uma nova frase. A antiga deixa de funcionar.
Impressão digital
O desbloqueio por impressão digital é opcional. Quem confere a impressão digital é o Android, não o LifeVeil; o app nunca recebe sua impressão digital. Uma chave no Android Keystore, que só funciona logo após uma verificação biométrica forte, desbloqueia a chave mestra. Se alguém adicionar uma nova impressão digital ao celular, essa chave deixa de funcionar e você precisa usar seu padrão novamente.
Arquivo de backup
- Um backup é um único arquivo
.lvb. Ele contém seus itens exatamente como já estão criptografados, mais duas cópias envolvidas da chave mestra: uma para o padrão que você desenhou ao fazer o backup e outra para a frase de recuperação que você tinha naquele momento. - A cópia do padrão usa um novo salt aleatório para cada backup, não o salt do dispositivo. É isso que permite abrir o backup em um celular novo.
- O cabeçalho do arquivo é protegido, para que alterações ou partes trocadas sejam detectadas.
- Você escolhe onde salvá-lo na própria tela de salvar do Android. Ele nunca passa por nós.
- Para restaurar, abra o arquivo com o padrão ou a frase dele. Depois, você desenha um novo padrão e recebe uma nova frase de recuperação.
Outras proteções no app
- Capturas de tela, gravação de tela e a prévia na lista de apps recentes são bloqueadas em todas as telas.
- Por padrão, o app é bloqueado assim que você sai dele. Se preferir, você pode escolher 30 segundos ou 1 minuto.
- O backup na nuvem do próprio Android e a transferência entre celulares não incluem os dados do LifeVeil. Use o arquivo de backup.
- O app não pede acesso à localização, aos contatos nem a "todos os arquivos".
- Cofre vazio para padrões errados. Um padrão que não abre nenhum cofre mostra um cofre vazio em vez de um erro, então quem obrigar você a abrir o app não sabe o que mais existe. As tentativas erradas continuam sendo contadas, as fotos de intrusos continuam sendo tiradas e as esperas continuam valendo. Você pode desativar isso em Configurações > Segurança > Cofre vazio para padrões errados.
IA e tentativas de adivinhar o padrão
- A IA não consegue pular a matemática. Cada tentativa ainda precisa rodar o Argon2id com 64 MiB de memória. A IA não quebra o Argon2id nem o AES, então nenhuma tentativa fica mais barata.
- O que a IA muda é a ordem das tentativas. Ela pode aprender as formas que as pessoas preferem (letras, quadrados, cantos favoritos para começar) e testá-las primeiro. Também pode ajudar a descobrir um padrão a partir de um vídeo gravado por cima do seu ombro ou das marcas de dedo na tela.
- Por isso, as defesas estão no padrão, não na matemática. O medidor de força avisa sobre formas comuns. Padrão + PIN adiciona um PIN de 4 a 6 dígitos, então um padrão visto em vídeo não basta. Ocultar linha do padrão não deixa nenhuma linha para ser filmada. O salt do dispositivo no Android Keystore impede tentativas fora do celular.
Limites que você deve conhecer
Nenhum app consegue proteger contra tudo. Estes são os limites reais do LifeVeil.
Padrões simples podem ser adivinhados
Formas curtas ou comuns (um L, um Z, uma linha reta) podem ser adivinhadas por alguém que observe você, pelas marcas de dedo na tela ou em poucas tentativas. Os padrões reais são muito mais fáceis de adivinhar do que o número de padrões possíveis sugere. Use mais pontos e mais curvas. O app avisa quando o padrão é muito simples.
Quanto tempo levaria para adivinhar
Dentro do app, cada tentativa leva cerca de um segundo, e as esperas aumentam depois de 5 erros. Mas alguém que tenha seu arquivo de backup, ou que tenha extraído o salt do dispositivo de um celular com root, pode tentar adivinhar em um computador, sem esperas. O Argon2id deixa isso mais lento, mas um padrão tem muito menos possibilidades do que uma senha longa. Estimativas aproximadas para uma placa de vídeo de ponta (classe RTX 4090), a cerca de 1.000 tentativas por segundo:
| O que é adivinhado | Possibilidades | Tempo, uma placa de vídeo |
|---|---|---|
| Os 10.000 padrões mais comuns | 104 | cerca de 10 segundos |
| Todos os padrões de 6 pontos | 1,28 × 108 | cerca de 1,5 dia |
| Todos os padrões de 7 pontos | 2,42 × 109 | cerca de 28 dias |
| Todos os padrões de 8 pontos | 4,36 × 1010 | cerca de 1,4 ano |
| Frase de recuperação (92 bits) | 4,95 × 1027 | cerca de 1,6 × 1017 anos |
São estimativas, não medições. A quantidade de padrões é um limite máximo; os padrões reais são muito menos. Mais hardware ou hardware mais rápido torna as tentativas proporcionalmente mais rápidas.
Mantenha seu arquivo de backup privado
O arquivo de backup não contém o salt do dispositivo, então qualquer pessoa que o obtenha pode testar padrões off-line, como mostrado acima. Guarde-o apenas onde só você tem acesso, como sua própria conta na nuvem, e use um padrão mais longo.
Celulares com root ou infectados
Se alguém conseguir executar código com as permissões do app (por exemplo, em um celular com root ou com um malware que tenha controle total), essa pessoa pode desbloquear o salt do dispositivo e tentar adivinhar off-line. Enquanto o cofre está aberto, as chaves ficam na memória e podem ser lidas com acesso root ou com um depurador. Algumas cópias feitas dentro do Android e do Flutter, e as fotos mostradas na tela, não podem ser apagadas da memória imediatamente.
Algumas informações ficam visíveis
A quantidade de arquivos criptografados no armazenamento do app, o tamanho aproximado deles e quando foram criados ou alterados não ficam ocultos. O fato de o LifeVeil estar instalado também não.
O cofre vazio só engana a tela
Quem consegue ler os arquivos do app (em um celular com root, por exemplo) pode contar as pastas dos cofres e ver que essa configuração está ativada. E, depois de 5 padrões errados, o app faz você esperar, o que mostra que os padrões anteriores não abriram nada.
O disfarce só muda a tela inicial
- Só o ícone e o nome no launcher mudam. A lista em Configurações > Apps do celular, as informações do app e as telas de armazenamento continuam mostrando LifeVeil.
- Os leitores de tela ainda podem dizer "LifeVeil". Por exemplo, o launcher do Samsung One UI informa ao TalkBack o nome real do app, e o app não consegue mudar isso.
- O menu de compartilhamento do Android sempre mostra o nome real do app, então o LifeVeil sai desse menu quando você troca o ícone. Você pode ativá-lo de novo.
- Os pedidos de permissão do Android mostram o nome real, então o app pede as permissões antes de você trocar o ícone.
- Enquanto o ícone está trocado, o app não envia notificações.
- O código do disfarce (de 4 a 8 dígitos) só mostra a tela de bloqueio. Ele não abre seus arquivos. Ele é guardado como um hash com salt, mas, com tão poucas possibilidades, é fácil descobri-lo se alguém conseguir o arquivo.
A impressão digital é um caminho mais fraco
O desbloqueio por impressão digital não passa pelo Argon2id. A força dele depende do sensor de impressão digital e do Android Keystore do seu celular. Você pode desativá-lo nas Configurações a qualquer momento.
Fotos de intrusos
O app não toca som de obturador, mas celulares vendidos em alguns países, como Japão e Coreia, sempre tocam. Nenhuma foto é tirada se outro app estiver usando a câmera ou se não houver câmera frontal. Até você desbloquear o primeiro cofre que criou, as fotos ficam protegidas com uma chave do Android Keystore.
Detalhes das fotos
- Nas fotos HEIC, PNG e WebP, os detalhes ocultos (EXIF) ficam dentro do arquivo. O arquivo inteiro continua criptografado.
- No Android 10 e versões mais recentes, o Android remove a localização GPS das fotos que o LifeVeil lê, porque o app não pede acesso à localização. Quando o original é apagado da galeria, essa localização se perde.
- As fotos adicionadas pelo seletor de fotos do Android recebem nomes novos com base na data, porque o seletor não informa o nome original.
O bloqueio fica em pausa durante telas do sistema
Enquanto uma tela do sistema está aberta (pedido de permissão, confirmação de exclusão, seletor de fotos ou de arquivos, pedido de impressão digital) e enquanto uma importação ou exportação está em andamento, o app espera para se bloquear. Se você tiver saído do app, ele é bloqueado 2 segundos depois que isso termina.
Os cofres compartilham um único salt do dispositivo
Todos os cofres de um celular usam o mesmo salt do dispositivo. Se alguém tiver esse salt, uma única tentativa testa todos os cofres de uma vez. O custo para atacar um único cofre continua o mesmo.
O que nenhum app consegue impedir
Alguém observando você desenhar seu padrão ou uma câmera filmando sua tela.
Se você perder os dois, ninguém poderá ajudar
Se você perder o padrão e a frase de recuperação, ninguém poderá recuperar seus arquivos. Nem nós.