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 (
rekeypara 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 emDevice.homeFoldernã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?Obrigado pelo feedback!