Nossa equipe desenvolveu um aplicativo híbrido baseado no IndexedDB
suporte a plataformas cruzadas. Este aplicativo agora possui um recurso de bate-papo e queremos armazenar bate-papos para legibilidade offline. Mas, como regra geral, podemos armazenar metadados de bate-papos em texto simples, mas não o conteúdo real do texto da mensagem de bate-papo. Então, decidimos criptografá-los.
Problema: Agora o problema surge quando o usuário deseja pesquisar uma mensagem que contenha alguma palavra específica, pode ser qualquer idioma ou texto.
Tentamos pesquisar o que Whatsapp
implementa essa funcionalidade e encontramos vários artigos como https://www.group-ib.com/blog/whatsapp-forensic-artifacts/ e alguns outros, mas mostra para aplicativos nativos, sqlite
bancos de dados (msgstore.db , wa.db etc) na pasta raiz não são criptografados nem mesmo um único campo. Embora existam alguns bancos de dados criptografados msgstore.db.cryptxx
, a maioria deles são backups.
Questões
Devemos presumir que o Whatsapp apenas criptografa mensagens enquanto envia e recebe, não as armazena?
O WhatsApp armazena mensagens em texto simples na
IndexedDB
web? Não encontramos nenhum, exceto metadados .Se o Whatsapp criptografa todas as mensagens, seja
sqlite
IndexedDB para web, como ele realiza a busca por mensagens?Que opções temos? Como devemos armazenar mensagens no IndexedDB que podem ser criptografadas e ainda pesquisáveis?
Há uma pergunta relacionada a isso , mas não tem a resposta adequada nem é perguntada sobre o IndexedDB, que pode ser facilmente visualizado pelos usuários finais.