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.920 ]

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

Os segredos dos modems

Instalando Wine no Slackware 14.0

Minha experiência com Linux

Transparência de janelas no KDE

Passos essenciais para configurar sua impressora no Linux

Leitura recomendada

Integrando ModSecurity ao NGINX e Apache

Bom escudo não teme espada: o módulo pam_cracklib

Enjaulamento de usuário no sistema operacional

Vault: SSH com OneTimePassword

Teste de Intrusão com Metasploit

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts