Pular para o conteúdo
CrossFly é 100% open sourceSiga no GitHub
CrossFlyCrossFly
Começar

Segurança

Dois pilares práticos para proteger dados no dispositivo: banco criptografado e biometria como porta de acesso.

Banco criptografado (SQLite3MC)

Abra o SQLite com uma chave — cifra ChaCha20-Poly1305 por padrão (ou SQLCIPHER):

byte[] chave = derivarChaveDaSenha(senhaUsuario);   // ⚠️ derive de senha com KDF — NUNCA hardcode
try (SqliteDb db = SqliteDb.open("cofre.db", chave)) {
   // … dados cifrados de forma transparente …
   db.rekey(novaChave);                              // troca a chave (ex.: ao usuário mudar a senha)
}
  • Custo-zero sem chave, cifra transparente com chave — sem chave é SQLite normal; com chave, tudo é cifrado/decifrado no acesso, sem mudar o seu SQL.
  • Nunca faça hardcode da chave. Derive de uma senha do usuário com um KDF; guarde só o material necessário no keystore da plataforma.
  • Cuidado ao remover a cifra (rekey para desproteger) — o arquivo passa a ser legível em claro.

Biometria como porta de acesso

Antes de uma área sensível (financeiro, dados pessoais), exija biometria:

if (Biometry.isAvailable()) {
   Biometry.authenticate("Acessar cofre", "Cancelar", false,
      (res, msg) -> Component.onUI(() -> {
         if (res == Biometry.AuthResult.SUCCESS) abrirCofre();
         else loginPorSenha();                 // fallback sempre
      }));
} else {
   loginPorSenha();
}
  • Os dados biométricos nunca saem do dispositivo — o app só recebe SUCCESS/FAILURE/etc.
  • Biometria é autenticação local: ela complementa, não substitui, a autenticação da aplicação (login no servidor).

Outros cuidados

  • Clipboard: não copie segredos para a área de transferência (Device.clipboardCopy) — fica acessível a outros apps.
  • Arquivos/homeFolder: dados em Device.homeFolder não são cifrados por padrão — use o banco cifrado para o que é sensível.
  • Logs: não registre senhas/tokens com Debug.log.

Boas práticas

  • Dados sensíveis → SQLite cifrado; chave derivada de senha (KDF), nunca no código.
  • Biometria como gate local + sempre um fallback de aplicação.
  • Nada de segredo em clipboard, arquivo em claro ou log.

Erros comuns

  • Chave hardcoded no código (qualquer um extrai do binário).
  • Tratar biometria como se substituísse o login do servidor.
  • Guardar token/senha em arquivo não cifrado no homeFolder.

Veja também

Esta página foi útil?