Como o LifeVeil protege os seus ficheiros
Esta página explica, em palavras simples, o que o LifeVeil faz e também o que não consegue fazer. Preferimos que conheça os limites a que confie numa promessa demasiado grande.
Em resumo
- Toda a encriptação acontece no seu telemóvel. Não existe nenhum servidor LifeVeil nem nenhuma conta.
- Os seus ficheiros são encriptados 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 programadores, nunca temos o seu padrão, a sua frase nem as suas chaves. Não conseguimos abrir os seus ficheiros nem repor o seu padrão.
- Usamos a encriptação incorporada no Android e a conhecida biblioteca libsodium. Não escrevemos a nossa própria encriptação.
- O LifeVeil ainda não foi alvo de uma auditoria de segurança independente.
Do seu padrão a uma chave
Desenha um padrão numa grelha de 5×5, com pelo menos 6 pontos e sem repetir nenhum ponto. O LifeVeil transforma o padrão numa 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 para cada tentativa. Isto torna muito mais caro adivinhar com placas gráficas.
- Nos nossos telemóveis de teste, cada desbloqueio demora cerca de 0,6 a 0,9 segundos.
- O padrão é combinado com um sal do dispositivo aleatório de 16 bytes. O sal é guardado na app, encriptado com uma chave mantida na Android Keystore, que não pode ser copiada para fora do telemóvel.
- Não é guardada nenhuma cópia do padrão. A app verifica um padrão tentando desbloquear a chave.
- Após 5 padrões errados seguidos, tem de esperar 30 segundos. A espera duplica a cada novo erro, até 16 minutos.
Como os ficheiros são encriptados
- Cada cofre tem uma chave mestra aleatória de 256 bits. A chave do seu padrão e a chave de recuperação apenas "embrulham" (encriptam) esta chave mestra.
- Os ficheiros, as miniaturas e a lista dos seus itens (nomes originais dos ficheiros, datas, tamanhos) são encriptados com AES-256-GCM, usando a encriptação incorporada no Android. O GCM também deteta se um ficheiro foi alterado ou trocado.
- Os ficheiros dentro da app têm nomes aleatórios. Os ficheiros grandes são encriptados em partes de 1 MiB, para que os vídeos sejam reproduzidos sem nunca escrever uma cópia não encriptada no armazenamento.
- Nas fotos JPEG, os detalhes ocultos (EXIF, como a câmara e a data) são guardados à parte, também encriptados.
- Quando a app bloqueia, substitui por zeros as chaves que tem em memória.
Frase de recuperação
- Quando cria um cofre, o gerador seguro de números aleatórios do telemóvel escolhe 9 palavras em inglês. Vêm de duas listas de 1024 palavras comuns, numa de 4 ordens fixas. Isso dá 92 bits de aleatoriedade. As palavras são em inglês em todos os idiomas da app.
- A frase passa pelos mesmos parâmetros do Argon2id e desbloqueia sozinha a chave mestra. Não precisa do sal do dispositivo, por isso funciona mesmo quando o padrão já não funciona.
- Uma cópia da frase é guardada no telemóvel, encriptada duas vezes: uma com a chave mestra e outra com uma chave da Android Keystore. Pode vê-la nas Definições depois de desenhar novamente o seu padrão.
- Quando muda o padrão ou usa a frase para voltar a entrar, recebe uma frase nova. A antiga deixa de funcionar.
Impressão digital
O desbloqueio por impressão digital é opcional. É o Android que verifica a impressão digital, não o LifeVeil; a app nunca recebe a sua impressão digital. A chave mestra é desbloqueada por uma chave da Android Keystore que só funciona logo após uma verificação biométrica forte. Se alguém adicionar uma nova impressão digital ao telemóvel, esta chave deixa de funcionar e tem de voltar a usar o seu padrão.
Ficheiro de cópia de segurança
- Uma cópia de segurança é um único ficheiro
.lvb. Contém os seus itens exatamente como já estão encriptados, mais duas cópias embrulhadas da chave mestra: uma para o padrão que desenhou quando fez a cópia de segurança e outra para a frase de recuperação que tinha nessa altura. - A cópia do padrão usa um sal aleatório novo em cada cópia de segurança, e não o sal do dispositivo. É isso que lhe permite abrir a cópia de segurança num telemóvel novo.
- O cabeçalho do ficheiro está protegido, para que alterações ou partes trocadas sejam detetadas.
- Escolhe onde o guardar no próprio ecrã de gravação do Android. Nunca passa por nós.
- Para restaurar, abra o ficheiro com o respetivo padrão ou a respetiva frase. Depois, desenha um novo padrão e recebe uma nova frase de recuperação.
Outras proteções na app
- As capturas de ecrã, a gravação de ecrã e a pré-visualização na lista de apps recentes estão bloqueadas em todos os ecrãs.
- Por predefinição, a app bloqueia assim que sai dela. Em alternativa, pode escolher 30 segundos ou 1 minuto.
- A cópia de segurança na nuvem e a transferência entre telemóveis do próprio Android não incluem os dados do LifeVeil. Em vez disso, use o ficheiro de cópia de segurança.
- A app não pede acesso à localização, aos contactos nem a "todos os ficheiros".
- Cofre vazio para padrões errados. Um padrão que não abre nenhum cofre mostra um cofre vazio em vez de um erro, por isso quem o obrigar a abrir a app não sabe o que mais existe. As tentativas erradas continuam a contar, as fotos de intrusos continuam a ser tiradas e as esperas continuam a aplicar-se. Pode desativar isto em Definições > Segurança > Cofre vazio para padrões errados.
IA e adivinhação do padrão
- A IA não consegue saltar a matemática. Cada tentativa continua a ter de executar o Argon2id com 64 MiB de memória. A IA não quebra o Argon2id nem o AES, por isso nenhuma tentativa fica mais barata.
- O que a IA muda é a ordem das tentativas. Pode aprender as formas de que as pessoas gostam (letras, quadrados, cantos de partida preferidos) e experimentá-las primeiro. Também pode ajudar a ler um padrão a partir de um vídeo gravado por cima do seu ombro ou das marcas de dedos no ecrã.
- Por isso, as defesas dizem respeito ao padrão, não à matemática. O indicador de força avisa sobre formas comuns. Padrão + PIN acrescenta um PIN de 4–6 dígitos, para que um padrão visto num vídeo não chegue. Ocultar linha do padrão não deixa nenhuma linha para filmar. O sal do dispositivo na Android Keystore impede que se adivinhe fora do telemóvel.
Limites que deve conhecer
Nenhuma app consegue proteger contra tudo. Estes são, com honestidade, os limites do LifeVeil.
Os padrões simples podem ser adivinhados
Formas curtas ou comuns (um L, um Z, uma linha reta) podem ser adivinhadas observando-o, pelas marcas de dedos no ecrã 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 mudanças de direção. A app avisa-o sobre padrões muito simples.
Quanto tempo pode demorar a adivinhar
Dentro da app, cada tentativa demora cerca de um segundo, e as esperas aumentam após 5 erros. Mas alguém que tenha o seu ficheiro de cópia de segurança, ou que tenha retirado o sal do dispositivo de um telemóvel com root, pode tentar adivinhar num computador, sem esperas. O Argon2id torna isto mais lento, mas um padrão tem muito menos possibilidades do que uma palavra-passe longa. Estimativas aproximadas para uma placa gráfica topo de gama (da classe RTX 4090), a cerca de 1000 tentativas por segundo:
| O que se adivinha | Possibilidades | Tempo, uma placa gráfica |
|---|---|---|
| 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 dias |
| 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 anos |
| Frase de recuperação (92 bits) | 4,95 × 1027 | cerca de 1,6 × 1017 anos |
São estimativas, não medições. As contagens de padrões são limites máximos; os padrões reais são muito menos. Hardware em maior quantidade ou mais rápido torna a adivinhação proporcionalmente mais rápida.
Mantenha o seu ficheiro de cópia de segurança privado
O ficheiro de cópia de segurança não contém o sal do dispositivo, por isso quem o obtiver pode experimentar padrões offline, como mostrado acima. Guarde-o apenas num local a que mais ninguém tenha acesso, como a sua própria conta na nuvem, e use um padrão mais longo.
Telemóveis com root ou infetados
Se alguém conseguir executar código com as permissões da app (por exemplo, num telemóvel com root ou com malware que tenha controlo total), pode desbloquear o sal do dispositivo e tentar adivinhar offline. Enquanto o cofre está aberto, as chaves estão em memória e podem ser lidas com acesso root ou com um depurador. Algumas cópias feitas dentro do Android e do Flutter, bem como as fotos mostradas no ecrã, não podem ser apagadas da memória de imediato.
Algumas informações são visíveis
O número de ficheiros encriptados no armazenamento da app, os respetivos tamanhos aproximados e quando foram criados ou alterados não estão ocultos. O facto de o LifeVeil estar instalado também não.
O cofre vazio só engana o ecrã
Quem conseguir ler os ficheiros da app (num telemóvel com root, por exemplo) pode contar as pastas dos cofres e ver que esta definição está ativada. Além disso, após 5 padrões errados a app obriga-o a esperar, o que mostra que os padrões anteriores não abriram nada.
O disfarce só muda o ecrã principal
- Só mudam o ícone e o nome no launcher. A lista Definições > Apps do telemóvel, as informações da app e os ecrãs de armazenamento continuam a mostrar LifeVeil.
- Os leitores de ecrã podem continuar a dizer "LifeVeil". Por exemplo, o launcher Samsung One UI dá ao TalkBack o nome real da app, e a app não consegue alterar isso.
- O menu de partilha do Android mostra sempre o nome real da app, por isso o LifeVeil sai desse menu quando muda o ícone. Pode voltar a ativá-lo.
- Os pedidos de permissão do Android mostram o nome real, por isso a app pede as permissões antes de mudar o ícone.
- Enquanto o ícone estiver alterado, a app não envia notificações.
- O código do disfarce (de 4 a 8 dígitos) apenas mostra o ecrã de bloqueio. Não abre os seus ficheiros. É guardado como um hash com sal, mas, com tão poucas possibilidades, é fácil de descobrir se alguém obtiver o ficheiro.
A impressão digital é um caminho mais fraco
O desbloqueio por impressão digital não passa pelo Argon2id. A sua robustez depende do sensor de impressões digitais do seu telemóvel e da Android Keystore. Pode desativá-lo nas Definições a qualquer momento.
Fotos de intrusos
A app não reproduz som de obturador, mas os telemóveis vendidos em alguns países, como o Japão e a Coreia, reproduzem-no sempre. Não é tirada nenhuma foto se outra app estiver a usar a câmara ou se não houver câmara frontal. Até desbloquear o primeiro cofre que criou, as fotos ficam seladas com uma chave da Android Keystore.
Detalhes das fotos
- Nas fotos HEIC, PNG e WebP, os detalhes ocultos (EXIF) ficam dentro do ficheiro. O ficheiro inteiro continua encriptado.
- No Android 10 e posterior, o Android remove a localização GPS das fotos que o LifeVeil lê, porque a app não pede acesso à localização. Quando o original é eliminado da galeria, essa localização perde-se.
- As fotos adicionadas através do seletor de fotos do Android recebem nomes novos baseados na data, porque o seletor não fornece o nome original.
O bloqueio fica em pausa durante os ecrãs do sistema
Enquanto um ecrã do sistema estiver aberto (pedido de permissão, confirmação de eliminação, seletor de fotos ou de ficheiros, pedido de impressão digital) e enquanto uma importação ou exportação estiver em curso, a app espera para bloquear. Se tiver saído da app, esta bloqueia 2 segundos depois de isso terminar.
Os cofres partilham um único sal do dispositivo
Todos os cofres de um telemóvel usam o mesmo sal do dispositivo. Se alguém tiver esse sal, uma única tentativa testa todos os cofres ao mesmo tempo. O custo de atacar um único cofre é o mesmo.
O que nenhuma app consegue impedir
Alguém que o veja desenhar o seu padrão ou uma câmara a filmar o seu ecrã.
Se perder ambos, ninguém pode ajudar
Se perder o padrão e também a frase de recuperação, ninguém consegue recuperar os seus ficheiros. Nem nós.