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

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

Instalando o maravilhoso Arch Linux

Slackware não tem gerenciador de pacotes?! Não tinha!

Instalando o compiz no Arch Linux

JSP - Parte 2

Pesquisa com slocate, locate e updatedb

Leitura recomendada

Protegendo seu Linux de ataques de brute force via ssh

Segurança da Informação na Internet

VPN: IPSec vs SSL

TOR: A Internet sem rastreabilidade

Capturando e-mails da rede com Mailsnarf

  
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