Como os navegadores da Web atuais (ou clientes de email móvel e qualquer software em geral) salvam as senhas dos usuários? Todas as respostas sobre o armazenamento de senhas dizem que devemos armazenar apenas hashes, não a senha em si. Mas estou com dificuldade para pesquisar na web tentando encontrar as melhores técnicas para armazenar senhas quando sabemos que precisaremos delas em texto sem formatação posteriormente - sem armazená-las em texto sem formatação, sem usar uma criptografia fraca (chave conhecida) e sem solicitar ao usuário uma senha mestra. Alguma ideia?
encryption
passwords
hashing
Marcus
fonte
fonte
Respostas:
localmente, ele é armazenado como texto sem formatação ou criptografado.
quando criptografada, a chave en / descriptografia pode ser corrigida por navegador (codificado no executável), por máquina (gerada na instalação e armazenada no diretório de instalação) ou por usuário (gerada pela primeira vez no gerenciador de senhas e armazenada no
%appdata%
)ou eles podem ser combinados: a chave no nível do usuário é criptografada com a chave no nível da máquina, para que, quando o malware leve o arquivo onde as senhas estão armazenadas, ele seja armazenado, seja inútil sem as chaves no nível do usuário e no nível da máquina
Alguns navegadores também permitem que você use uma senha "mestra", que é combinada com a chave existente para fornecer mais segurança
Quando você usa um (bom) serviço de sincronização, as senhas nunca são armazenadas em texto sem formatação no servidor e nunca são descriptografadas no servidor.
fonte
As senhas são armazenadas em texto sem formatação, a menos que uma senha mestra seja usada.
Quando as pessoas dizem que você deve armazenar apenas hashes de senhas, elas estão falando sobre armazenamento no lado do servidor , não no lado do cliente.
Lado do servidor
Quando você tem seu próprio site, quando os usuários podem registrar / logon com suas senhas, você não precisa (e nunca deve) armazenar as senhas:
Você não precisa armazenar senhas simples , porque você só precisa verificar se a senha usada durante um logon corresponde à senha fornecida pelo usuário durante o registro. Você pode fazer isso com hashes, pois senhas diferentes teriam hashes¹ diferentes.
Você não deve armazenar senhas simples . E se o seu site for invadido? Além disso, muitas pessoas reutilizam as mesmas senhas repetidamente, de modo que você praticamente dá a qualquer hacker a capacidade de acessar a conta do Facebook, a conta de e-mail dos usuários, etc.
Lado do cliente
Navegadores são diferentes. Eles armazenam as senhas na máquina cliente e devem ter uma senha original, não um hash.
Isso significa que essas senhas são armazenadas em texto sem formatação na maioria dos casos.
Em termos de segurança, isso não importa muito. Essas senhas são armazenadas em um diretório que pertence à conta do usuário. Isso significa que cabe ao sistema operacional (e ao usuário) configurar corretamente as permissões para os arquivos dos usuários e restringir o acesso ao arquivo que contém as senhas para o próprio usuário.
Experiência do usuário sábia, esta é a coisa mais fácil de fazer. Outra possibilidade é criptografar essas senhas por uma senha mestra; nesse caso, o usuário precisará fornecer a senha mestra sempre que abrir o navegador . Tenho certeza de que a maioria dos usuários nunca iria gostar disso.
Se a senha mestra estiver armazenada em algum lugar, o mesmo problema surge: se você armazenar a senha mestra em texto sem formatação, qual é o objetivo? Se você o criptografar, deverá ter uma senha mestre-mestre.
Sincronizar
Observe que a maioria dos navegadores permite que os usuários sincronizem seus dados em várias máquinas. A sincronização usa um servidor remoto para armazenar cookies, histórico, favoritos e senhas. Por exemplo, o Chrome usa os servidores do Google para armazenar esses dados.
Nesse caso, as senhas nunca são armazenadas em texto sem formatação nos servidores de sincronização ; caso contrário, isso seria um problema de segurança. No Chrome, você deve escolher a senha mestra para sincronização (ou usar a senha da sua conta do Google). Essa senha mestra será usada para criptografar as senhas (sempre) e outros dados, como o histórico ou os favoritos (opcional).
¹ Por uma questão de simplicidade, você pode imaginar que as senhas diferentes não podem ter os mesmos hashes. Em teoria, isso está errado, pois podem existir colisões. Na prática, se você usar um algoritmo de hash forte, como o SHA-256, poderá negligenciar o risco de colisão em um site, mesmo com milhões de usuários registrados. As coisas são diferentes se você usar um algoritmo de hash obsoleto e depreciado, como MD5.
fonte
Esses programas precisam da senha em texto não criptografado (eles precisam enviá-la quando solicitado). Portanto, é armazenado como texto simples. Muitos navegadores permitem criptografar todas as senhas armazenadas com uma senha mestre (solicitada apenas uma vez).
fonte