Senhas armazenadas em um sistema bem projetado e seguro deve
sempre ser criptografado (com mais precisão, * hash * usando uma forte função unidirecional). No entanto, o mecanismo e o tempo dessa criptografia variam dependendo do contexto.
Aqui está um colapso e alguns exemplos comuns:
*
senhas do sistema operacional (Windows, MacOS, Linux): Quando você cria ou altera sua senha de login para o sistema operacional do seu computador, o sistema operacional hashes automaticamente (criptografa) a senha * antes de * armazená -la. A senha de texto simples nunca toca no meio de armazenamento.
*
Contas do site (por exemplo, Google, Facebook, Amazon): Quando você cria uma conta em um site ou altera sua senha, o site * deve * imediatamente a sua senha no lado do servidor antes de salvá-la em seu banco de dados. Sites respeitáveis seguem essa prática. O processo acontece de forma transparente; você não vê isso. Um site * bom * nunca armazena sua senha em texto simples.
* bancos de dados
: Muitos sistemas de banco de dados fornecem mecanismos para criptografar automaticamente dados, incluindo senhas, mediante criação ou modificação. Os administradores de banco de dados podem definir essas configurações.
*
Senhas específicas do aplicativo: Se um aplicativo (como um gerenciador de senhas, um programa de software etc.) armazenar senhas, ele deve * criptografar -as automaticamente na criação/modificação.
Considerações importantes: *
Criptografia vs. Hashing: O termo "criptografia" é frequentemente usado vagamente, mas no contexto da segurança de senha,
hashing é o termo mais preciso. Hashing é uma função * de ida *. Você não pode facilmente reverter um hash para obter a senha original. A criptografia, por outro lado, é geralmente * reversível * (com a chave direita). O armazenamento de senhas como hashes é muito mais seguro, porque mesmo que um banco de dados esteja comprometido, os atacantes não podem recuperar facilmente as senhas originais. Eles são reduzidos a ataques de força bruta (tentando muitas senhas e o hash para ver se correspondem ao hash armazenado).
*
salga: Além do hash, um valor aleatório de "sal" é normalmente adicionado a cada senha antes da hash. Isso torna significativamente mais difícil para os invasores usarem "mesas de arco-íris" pré-computadas ou outras técnicas de racking de senha.
*
A importância de hashes fortes: Nem todos os algoritmos de hash são criados iguais. Os sistemas modernos devem usar algoritmos fortes e computacionalmente caros de hash como:
* Argon2
* BCRYPT
* Scrypt
* PBKDF2 (frequentemente usado em conjunto com HMAC-SHA256 ou outras funções de hash seguras)
*
A suposição de "deve": É crucial entender que, embora todos os sistemas acima *devam *criptografar (hash) senhas automaticamente, elas não são *garantidas *. As violações de segurança acontecem devido a práticas ruins.
em resumo: Embora nem todas as senhas sejam * garantidas para serem criptografadas automaticamente, os sistemas projetados adequadamente sempre devem (e geralmente fazem) criptografos (hash) após a criação para proteger a segurança do usuário. Os logins do sistema operacional, contas de sites e sistemas de banco de dados são exemplos excelentes de lugares onde você espera que ocorra hash de senha automática.