Criptografia Numaboa
O que é um hash?
Ter 20 Set 2005 19:56 |
- Detalhes
- Categoria: Funções Hash
- Atualização: Terça, 14 Abril 2009 13:42
- Autor: vovó Vicki
- Acessos: 49692
Vulnerabilidades
Pelo que foi visto até agora, o cenário parece perfeito: usando métodos que produzam hashes de 128 bits, o número de hashes possíveis atinge um valor astronômico. São, nada mais, nada menos do que 2128 = 3,4 x 1038 possíveis. Mais exatamente, as possibilidades somam
340.282.366.920.938.463.463.374.607.431.768.211.456 hashes de 128 bits
Apesar deste valor enorme, como o número de conjuntos de dados é praticamente infinito, a possibilidade de que dois conjuntos de dados diferentes produzam o mesmo hash não pode ser ignorada. Esta coincidência de resultados é conhecida como colisão. Existem duas formas básicas de se diminuir a ocorrência de colisões: aumentando o número de bits do resultado hash e criando algoritmos que produzam hashes menos vulneráveis. Existem algumas medidas que avaliam as vulnerabilidades. As principais são mostradas a seguir.
Resistência a colisões
A resistência a colisões mede a dificuldade de encontrar duas entradas que produzam o mesmo resultado hash. O valor hash pode ser qualquer um, o objetivo é encontrar duas entradas diferentes que forneçam um resultado idêntico.
Se for possível obter o mesmo resultado hash para duas entradas diferentes, as assinaturas digitais deixam de ser confiáveis. Imagine um "compromisso de compra" que possa ser substituído por outro sem que o valor hash se modifique. Se os documentos forem trocados por alguém com más intenções poderemos ter surpresas bastante desagradáveis. Um dos ataques mais conhecidos para encontrar colisões é o ataque do aniversário. Se você estiver interessado, leia o texto Paradoxo do Aniversário que se encontra no Almanaque da Aldeia.
Neste caso, a assinatura digital também não pode garantir a autenticidade do documento. Pior do que isto, a assinatura digital coloca nossa anuência no documento! Como já foi visto, a alteração de um simples bit costuma alterar substancialmente o resultado hash. Vai aqui uma sugestão: antes de colocar a sua assinatura digital, faça uma pequena alteração "cosmética" no documento que será assinado. Basta adicionar um espaço ou retirar uma vírgula. Como os dois documentos, o correto e o fraudulento, precisam ser preparados com antecedência para produzirem o mesmo hash, pegamos o fraudador de calças curtas se alterarmos o documento e, consequentemente, seu valor hash no último instante
Resistência de pre-imagem
A resistência de pre-imagem mede a dificuldade de criar um conjunto de dados que resulte num determinado valor hash, sem conhecer o texto que o originou.
Se a resistência de pre-imagem for pequena, será mais fácil criar um texto qualquer cujo hash seja igual a um conhecido. Imagine o caso das senhas. Se, conhecendo o valor hash de uma delas, for possível criar uma senha qualquer que resulte num hash idêntico, a segurança de um sistema que faça a autenticação exclusivamente com hashes de senhas estará seriamente comprometido. Mesmo digitando a senha "fabricada", o resultado será aceito.
Resistência de segunda pre-imagem
A resistência de segunda pre-imagem mede a dificuldade de criar um conjunto de dados que resulte num determinado valor hash, conhecendo o texto que o originou.
Assim como a resistência de pre-imagem, se a resistência de segunda pre-imagem for baixa, a criação de um conjunto de dados que resulte num hash conhecido torna-se mais fácil. É comum encontrarmos software para download acompanhado de seus valores hash, portanto, é fácil obter a matéria prima que pode ser fraudada. Se alguém com más intenções alterar o software, mas conseguir preservar seu resultado hash, os usuários que fizerem o download do "safadoware" não terão como identificar o software adulterado e potencialmente perigoso!
Fontes
- << Anterior
- Próximo