Como funciona a criptografia no against.
Uma explicação em português claro da criptografia AES no dispositivo que deixa seus dados do against. ilegíveis para qualquer pessoa que não seja você.
against. criptografa cada campo sensível no seu dispositivo com AES-256, usando uma chave gerada na primeira execução e armazenada no enclave seguro do seu celular. Nada sai do seu dispositivo. Veja exatamente como isso funciona e o que isso garante para você.
O que “criptografado no dispositivo” significa na prática
Quando você registra uma nota de recaída, o texto que você digita não é enviado pela rede. Ele tampouco é gravado em texto puro no armazenamento do seu celular. Antes de a linha do banco de dados ser salva, o texto passa pelo AES (o Advanced Encryption Standard, uma cifra que é o padrão global há mais de vinte anos) usando uma chave de 256 bits. O resultado é ilegível para qualquer pessoa que não possua essa chave.
A chave é gerada na primeira vez que você abre o app. São 32 bytes aleatórios, extraídos do gerador de números aleatórios criptográficos do seu celular (o mesmo que protege o app do seu banco e suas mensagens). A chave é armazenada no enclave seguro do seu celular: Keychain no iOS, EncryptedSharedPreferences no Android. Nunca a vemos. Nunca a recebemos. Não há botão de “redefinir senha”, porque não há senha a redefinir.
O que criptografamos e o que não criptografamos
Criptografamos os campos onde isso importa: notas de recaída, anotações de gatilho, qualquer coisa que você possa escrever e que seja pessoal. Não criptografamos campos que não precisam disso: timestamps, IDs internos, versões de schema. Criptografar timestamps não melhoraria sua privacidade e tornaria o app visivelmente mais lento em dispositivos de menor desempenho.
Você pode auditar isso por conta própria no código aberto. Publicamos o schema (veja Privacidade e Segurança) e os helpers de criptografia. Sem surpresas.
Por que o modo CBC
Usamos AES no modo CBC (Cipher Block Chaining) com um vetor de inicialização aleatório e único para cada registro. O CBC é bem compreendido, não tem vulnerabilidades conhecidas contra o modelo de ameaça que importa aqui (acesso offline ao armazenamento de um dispositivo), e é compatível em todas as plataformas móveis sem precisar de extensões criptográficas específicas de plataforma. Consideramos o GCM, que também é amplamente utilizado e adiciona autenticação; para o nosso caso de uso (dispositivo único, usuário único, sem dados em trânsito) a complexidade adicional não se justificou. Podemos rever isso em uma versão futura.
Contra o que isso protege
Se seu celular for perdido ou roubado com a tela desbloqueada, against. não é diferente de qualquer outro app que o ladrão abre: ele vê o que você vê. É um risco que não podemos corrigir no nível do app; por isso o app oferece bloqueio biométrico opcional e sobreposição de tela de privacidade.
Se seu celular for perdido ou roubado com a tela não desbloqueada, o banco de dados criptografado no seu dispositivo é ilegível sem a chave, e a chave fica no enclave seguro, que é protegido por hardware. Um atacante motivado com acesso físico e equipamento de laboratório é uma ameaça que não afirmamos derrotar, mas para os riscos realistas (furto do celular, acesso oportunista por alguém que você conhece), a criptografia está fazendo seu trabalho.
Contra o que isso protege, mais importante ainda
A outra coisa contra a qual a criptografia no dispositivo protege somos nós. Podemos receber uma intimação judicial. Podemos ser adquiridos por uma empresa com valores diferentes. Podemos ser comprometidos por um atacante. Nenhum desses eventos exporia seus dados, porque não temos seus dados. A criptografia é uma restrição técnica, não uma promessa.
Leitura adicional
- Por que offline-first importa para dados sensíveis
- Privacidade não é a mesma coisa que silêncio
- Privacidade e Segurança
Veja também: Privacidade e Segurança.