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.
- Os arquivos de cada cofre são criptografados com uma chave aleatória. Só o padrão desse cofre (com o PIN, no nível máximo), a frase de recuperação dele, se você adicionou uma, ou a sua impressão digital, se você a ativou, podem desbloquear essa chave.
- Cada padrão abre um cofre. Um padrão que não corresponde a nenhum cofre salvo abre um cofre vazio, e nada é gravado até você adicionar um arquivo a ele.
- Nós, os desenvolvedores, nunca temos seu padrão, seu PIN, 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, sem repetir nenhum ponto. Um padrão novo que você configura precisa de pelo menos 6 pontos. 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, exceto a que fica junto com uma frase de recuperação (veja abaixo). O app confere um padrão tentando desbloquear a chave.
- O que você digitar no campo de PIN acima dos pontos entra na mesma derivação de chave que o padrão. Um campo vazio significa só o padrão.
Níveis de segurança
Cada cofre tem um nível. Você o escolhe ao começar e pode mudá-lo depois em Configurações > Cofre > Nível de segurança, depois de desenhar o padrão novamente.
- Segurança máxima (Ultra): padrão e um PIN de 6 a 8 dígitos, ambos só na sua cabeça. Seguro até contra tentativas de adivinhação com IA. Se você esquecer qualquer um dos dois, o cofre não pode ser recuperado.
- Nível 1 (recomendado): só o padrão. Seguro se você evitar formas comuns. Se você o esquecer, o cofre não pode ser recuperado.
- Nível 2: padrão e uma frase de recuperação anotada no papel. Você consegue entrar de novo se esquecer o padrão, mas quem encontrar o papel também pode abrir o cofre.
- Nível 3: padrão e impressão digital. O mais prático, mas alguém pode forçar seu dedo no sensor. A impressão digital funciona para um único cofre.
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
- A frase de recuperação é opcional. Um cofre só recebe uma quando você escolhe o Nível 2, e ela é salva depois que você passa por um teste rápido.
- 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 e uma cópia do padrão do cofre (e do PIN) ficam guardadas no celular, cada uma criptografada duas vezes: uma com a chave mestra e outra com uma chave do Android Keystore. Quando a frase abre o cofre, o app mostra o padrão uma vez. Ele é esquecido quando o app é bloqueado.
- A frase continua a mesma quando você muda o padrão. Um cofre sem frase não tem como ser recuperado se o padrão for esquecido.
Impressão digital
O desbloqueio por impressão digital é opcional e funciona para um cofre. 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 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, se o cofre tinha uma. - 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. O cofre restaurado começa sem 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".
- Um cofre vazio para cada padrão novo. Um cofre sem arquivos parece igual tendo sido salvo ou não, então quem obrigar você a abrir o app não sabe o que mais existe. Você pode desativar isso em Configurações > Segurança; aí, um padrão que não abre nada mostra um erro.
Como as tentativas de adivinhação são retardadas
Como cada padrão abre um cofre, tentar adivinhar parece com muitos cofres vazios sendo abertos. O LifeVeil retarda isso sem avisar na tela, e a espera é a mesma para qualquer padrão, inclusive o certo.
- Em 24 horas, 10 aberturas de cofres sem arquivos adicionam 10 segundos a cada desbloqueio, 20 adicionam 60 segundos e 30 adicionam 5 minutos, o máximo.
- Sinais de automação levam direto ao máximo: padrões concluídos com menos de 2 segundos de intervalo três vezes seguidas, ou toques que vêm de serviços de acessibilidade ou de entrada injetada em vez de um dedo.
- Cada período de 24 horas sem abertura de cofre vazio reduz a espera em um nível. Atrasar o relógio do celular não a encurta.
- Isso só funciona dentro do app. Não retarda tentativas em um computador com um arquivo copiado (veja os limites abaixo).
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 app avisa sobre formas comuns. O nível máximo de segurança adiciona um PIN de 6 a 8 dígitos, então um padrão visto em vídeo não basta. Ocultar a 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 e antes de salvar um cofre cujo padrão tem menos de 6 pontos.
Quanto tempo levaria para adivinhar
Dentro do app, cada tentativa leva cerca de um segundo, e tentativas repetidas deixam cada desbloqueio mais lento, até 5 minutos. 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. Um PIN no nível máximo multiplica esses números por até 108.
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.
A frase de recuperação também mostra o padrão
Quem tiver a frase de recuperação de um cofre pode abrir esse cofre, e o app então mostra o padrão e o PIN dele. Se você usa o mesmo padrão em outro lugar, como no bloqueio de tela do celular, essa pessoa também fica sabendo. Guarde o papel com o mesmo cuidado que os próprios arquivos.
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. A desaceleração conta da mesma forma os cofres vazios salvos e não salvos, então a própria espera não os diferencia.
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.
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.
Sem frase, ninguém poderá ajudar
Se você esquecer o padrão de um cofre sem frase de recuperação, ou perder o padrão e a frase, ninguém poderá recuperar os arquivos dele. Nem nós.