Arquitetura de segurança do Cryptile, camada a camada
O Cryptile encripta todos os ficheiros, miniaturas e índices com AES-256-GCM, usando chaves criadas no seu telemóvel a partir do padrão que desenha. Não há conta nem servidor, e o programador nunca tem as chaves.
O resumo em linguagem simples está na página de segurança.
O que preciso de saber?
- O seu padrão é a origem de todas as chaves. Nada legível fica guardado sem ele.
- Os tamanhos e o número de cofres ficam esbatidos. Os ficheiros são preenchidos com dados extra e ranhuras de engodo escondem quantos cofres existem.
- Pode verificar. O núcleo de encriptação está publicado para auditoria (código-fonte disponível), com um modelo de ameaças e vetores de teste: github.com/jasonbrelsford/cryptile-core.
Como é que um padrão se transforma numa chave?
- O padrão é escrito como o tamanho da grelha seguido das células que tocou, por ordem.
- É misturado com um segredo do dispositivo de 32 bytes, guardado no Porta-chaves do iPhone apenas para este dispositivo.
- O PBKDF2-HMAC-SHA512 é executado 600 000 vezes sobre o resultado. Cada tentativa custa esse trabalho todo.
- O HKDF-SHA256 divide o resultado numa chave de procura e numa chave de envolvimento.
- A chave de procura dá nome ao ficheiro de índice do cofre. A chave de envolvimento abre-o.
Dentro do índice está a chave mestra aleatória de 256 bits do cofre. O HKDF deriva dela subchaves separadas para ficheiros, miniaturas e índice. Nenhuma chave é usada para dois fins.
Como são encriptados os ficheiros?
Os itens pequenos, como as miniaturas e o índice, são selados numa só peça com AES-256-GCM e um nonce aleatório.
Os ficheiros grandes usam uma estrutura STREAM em blocos de 1 MB. Cada bloco tem o seu próprio nonce e regista a sua posição e se é o último. Cortar, reordenar ou trocar blocos faz a desencriptação falhar.
O GCM também autentica todos os cabeçalhos, pelo que um ficheiro alterado é rejeitado em vez de ser mostrado.
Como se ocultam os tamanhos e o número de cofres?
Cada pequeno bloco de dados e cada bloco final de ficheiro é preenchido até um múltiplo de 64 KiB. Quem copiar os dados vê tamanhos aproximados, não exatos.
Não existe lista de cofres. A aplicação mantém pelo menos 8 ranhuras com o formato de um índice, reais e de engodo, e volta a sortear os engodos em cada escrita. Um padrão que não corresponda a nenhuma ranhura abre um cofre vazio.
Como funciona a recuperação?
Cada cofre recebe uma frase de recuperação de 9 palavras, o que equivale a 96 bits de aleatoriedade. Esta abre uma cópia de recuperação separada do cofre, selada com uma chave criada a partir da frase.
A cópia de segurança no iCloud espelha os ficheiros encriptados tal como estão. Por predefinição, o segredo do dispositivo não vai nela, pelo que uma cópia de segurança sozinha não pode ser usada para adivinhar padrões.
O que está encriptado e o que não está?
Encriptado: fotografias, vídeos, ficheiros, notas, miniaturas, nomes, pastas, favoritos, texto reconhecido e localizações das fotografias. O pequeno ficheiro que regista os engodos e as contagens do plano gratuito é selado com uma chave do dispositivo.
Não encriptado pelo Cryptile:
- Definições. O tempo de bloqueio automático, a ordem de ordenação e o interruptor da cópia de segurança não contêm segredos.
- Itens partilhados à espera de serem adicionados. Ficam sob a proteção de ficheiros do iOS até abrir um cofre.
- O tamanho total do contentor e as horas de escrita. Um cofre de 10 GB não parece um de 10 MB.
- Tudo o que exportar. Uma cópia guardada em Fotografias ou Ficheiros fica fora do cofre.
Contra o que é que isto protege?
- Alguém que copie os ficheiros da aplicação sem o seu Porta-chaves. Obtém texto cifrado e não consegue experimentar padrões.
- A Apple, ou uma falha de segurança na Apple. O iCloud guarda texto cifrado e nenhuma chave.
- Adulteração. Dados alterados ou reordenados não se desencriptam.
- Nós. Não temos servidor nem chaves, por isso não podemos repor o acesso.
Contra o que é que isto não protege?
- Padrões curtos. Um padrão é mais fraco do que uma frase-passe. Com os seus ficheiros e o seu Porta-chaves, um padrão de 6 células numa grelha 4×4 cai em minutos num GPU. Use 8 ou mais células.
- Software malicioso num telemóvel desbloqueado. Código que leia a memória enquanto um cofre está aberto está para além do alcance de qualquer aplicação.
- Alguém a observá-lo enquanto desenha. Desenhe onde ninguém veja a sua mão.
- Perder o telemóvel e a frase. O cofre perde-se. Não há reposição.
O padrão de pânico no Plus destrói o segredo do dispositivo, pelo que nenhum cofre do telemóvel abre até ser restaurado.