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.925 ]
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
Jabberd2 - Completo e sem mistérios
Migrando para Linux sem medo
Introdução ao Conceito de Hardening
Instalação básica do FreeBSD 6.1 (passo a passo)
Desknotes e Walkpcs
Leitura recomendada
Lynis: Sistema de auditoria e segurança para Linux
Nmap do início ao fim (parte 1)
ProFTPD + ClamAV - FTP livre de vírus
Encapsulando BIND 9 e Apache 2 para obter maior segurança
Os Vírus e o Linux
Comentários
Nenhum comentário foi encontrado.