Consegue guardar um segredo?
Este artigo mostra o básico sobre armazenamento de senhas, pois se há alguma coisa que não mudou em segurança de computadores, essa coisa é a autenticação de usuários.
[ Hits: 16.934 ]
Por: Perfil removido em 22/11/2010
Garantir autenticação
O outro lado da moeda é oferecer serviços de autenticação. A menos que seja um serviço público somente leitura, há a probabilidade de que os usuários tenham de se registrar de alguma forma e ser autenticados para prevenir abuso/spam/ataques/etc.
Em ordem do menos seguro para o mais seguro estão: armazenamento de senhas em formato de texto, armazenamento de hashes descartáveis de senhas salt junto com um valor e uso de um serviço externo (e esperamos, seguro) de autenticação como LDAP, Kerberos, OpenID etc.
Senhas em formato texto: inacreditavelmente, alguns programas ainda armazenam as senhas de usuários em um formato desprotegido. Um invasor que consiga acesso ao sistema pode copiar e usar essas credenciais, o que é particularmente perigoso, pois vários usuários adotam a mesma senha em vários sites e serviços. A única justificativa para as senhas em texto puro é que é possível informá-las aos usuários no caso de elas serem esquecidas. Então, se um provedor consegue recuperar sua senha, isso significa que um invasor também conseguiria.
Senhas com hashes descartáveis: uma hash descartável, mesmo uma poderosa como a SHA512, ainda permite que o invasor faça ataques contra a senha hashed. Toda senha mais fraca será descoberta, e, caso o invasor tenha acesso a um poder computacional suficiente (um botnet, por exemplo), um serviço de exame com valores pré-computados ou tabelas rainbow (hashes descartáveis parcialmente computadas), é relativamente fácil recuperar a senha.
No caso de discos de estado sólido, essas tabelas de exame podem ser acessadas mais rapidamente, facilitando a vida dos invasores. Hash descartável com Salt: esse é atualmente o padrão campeão para armazenamento de senhas. Pegue uma senha e transforme em hash usando a função descartável (como Crypt SHA512 etc) com um valor salt aleatório.
Repare que o comando de criptografia UNIX já faz isso desde os anos 70. Os três aspectos principais do valor salt são: sua extensão (quanto maior, melhor), onde o valor é armazenado (o mais longe possível do banco de dados de senhas e do modo mais seguro possível) e se o mesmo valor será usado para todas as senhas ou se novos serão gerados.
Apesar de ser possível usar mais de um valor salt, a menos que cada um deles esteja armazenado em um método separado, ainda será fácil para o invasor roubar alguns deles. Virtualmente todas as linguagens de programação que possuem a função hash() suportam um valor salt. Caso haja alguma que não suporte o valor salt, eu gostaria de saber.
Serviços de autenticação: um dos métodos de lidar com a segurança de autenticação é remover do seu aplicativo as funções de armazenamento das senhas e nomes dos usuários e usar um serviços de autenticação como o LDAP ou o Kerberos. Esses sistemas têm a vantagem de escalonar e oferecer serviços de autenticação a um grande número de aplicativos. A desvantagem é quando precisamos configurar e manter esses sitemas, que são bem mais complicados que a autenticação embarcada.
Página anterior Próxima página
Páginas do artigo
1.
Autenticar alguma coisa
2. Garantir autenticação
3.
Terceirizar a autenticação e conclusão
Outros artigos deste autor
Ocomon - Instalação e configuração
Instalando o Gentoo Linux através do live-cd do Ubuntu
Instalando o CVS no Ubuntu Linux
Mozilla Firefox: um guia de instalação para iniciantes
É possível ganhar dinheiro com Software Livre?
Leitura recomendada
Detectando vulnerabilidades com o Nessus
SECtool - Análise Local para Linux
From Deploy WAR (Tomcat) to Shell (FreeBSD)
Checando vulnerabilidades com o Nikto
Biometria facial na autenticação do usuário root
Comentários
Nenhum comentário foi encontrado.