Eu olhei em volta e não encontrei informações sobre como o Android consegue armazenar senhas no dispositivo. Especialmente senhas do Gmail. Estou procurando aprender como o Android criptografa e armazena senhas? Qual chave ele usa e onde está armazenada, e qual algoritmo de criptografia usa.
security
gmail
password
gmail-password
asudhak
fonte
fonte
Respostas:
O aplicativo oficial do Gmail não armazena senha no seu dispositivo. Sua senha é 100% segura se você usar este aplicativo.
É assim que funciona: a senha é usada apenas pelos servidores de autenticação do Google pela primeira vez. Após a primeira autenticação bem-sucedida, um
Auth Token
é baixado para o dispositivo armazenado noaccounts.db
arquivo como texto sem formatação. Para todos os logins subsequentes, issoAuth Token
é usado, NÃO sua senha original.Portanto, se o seu dispositivo for roubado, tudo o que alguém puder obter é o
Auth Token
que se torna inválido depois que você altera sua senha. Então, você estará no comando final.Para segurança máxima, recomendo que você ative
2-Factor Authentication
e crieDevice Specific Password
para o seu dispositivo. Depois de perder o dispositivo, tudo o que você precisa é desativar esse dispositivo. Você nem precisa alterar a senha principal.Nota: tudo isso não é verdade se você usar aplicativos de email de terceiros para o Gmail viz. O aplicativo Stock Email, K-9 Mail etc. O protocolo IMAP ou POP precisa de uma senha original para autenticar os usuários sempre. Portanto, a senha simples precisa estar disponível no aplicativo de e-mail antes de enviá-lo ao servidor. Portanto, a maioria dos aplicativos de email armazena senhas em texto simples (hash / criptografia é inútil porque a chave de hash / criptografia precisa ser armazenada localmente). Nesse caso, recomendo que você ative
2-Factor Authentication
e crieDevice Specific Password
para o seu dispositivo. Depois de perder o dispositivo, tudo o que você precisa é desativar esse dispositivo.Atualização:
tecnicamente, é possível armazenar senhas localmente em formato criptografado / hash sem manter a chave de criptografia / chave hash em texto sem formatação localmente. Obrigado a @JFSebastian por apontar isso.
Infelizmente, essa implementação para Android ainda não está disponível.Iniciando o ICS, o Android fornece a API KeyChain usando a qual um aplicativo pode armazenar uma senha localmente de forma segura. Os aplicativos que usam a API KeyChain são raros, mas o aplicativo de email padrão usa-o (obrigado a @wawa por esta informação). Portanto, sua senha estará segura com o aplicativo de e-mail padrão, desde que sua tela esteja bloqueada. Lembre-se, o KeyChain não é seguro se o dispositivo estiver enraizado e não estiver disponível em dispositivos pré-ICS.fonte
As senhas do Android usadas com o aplicativo de email incorporado são armazenadas em texto sem formatação dentro de um banco de dados SQLite. Isso contrasta com o aplicativo Gmail , que usa tokens de autenticação, conforme descrito na resposta de Sachin Sekhar .
Para o Jelly Bean, o local do banco de dados é:
A localização acima varia com a versão do Android
Esse local em um dispositivo não raiz é protegido e protegido pelo sistema operacional.
Em dispositivos enraizados, os usuários já violaram tecnicamente sua própria segurança e, mesmo que não estivesse em texto simples, ainda seria trivial descriptografar, pois a chave precisa existir em algum lugar no dispositivo para fazê-lo.
Um membro da Equipe de Desenvolvimento do Android postou uma explicação que até hoje ainda se aplica:
Além disso, como esse problema parece incomodar muitos usuários do Android, você também pode acompanhar esta discussão em Slashdot - Dados de senha do Android armazenados em texto sem formatação .
fonte
accounts.db
arquivo está protegido contra leitura por outras contas que nãosystem
.