O que é uma função hash criptográfica?

Índice:

O que é uma função hash criptográfica?
O que é uma função hash criptográfica?
Anonim

Uma função hash criptográfica (CHF) é um algoritmo que pode ser executado em dados como um arquivo individual ou uma senha para produzir um valor chamado soma de verificação.

O principal uso de um CHF é verificar a autenticidade de um dado. Dois arquivos podem ser considerados idênticos somente se as somas de verificação geradas de cada arquivo, usando a mesma função de hash criptográfica, forem idênticas.

Algumas funções de hash criptográficas comumente usadas incluem MD5 e SHA-1, embora muitas outras também existam. Estas são muitas vezes referidas como "funções de hash", mas isso não é tecnicamente correto. Uma função de hash é um termo genérico que engloba CHFs juntamente com outros tipos de algoritmos, como verificações de redundância cíclica.

Funções de hash criptográfico: um caso de uso

Diga que você baixou a versão mais recente do navegador Firefox. Por alguma razão, você precisava baixá-lo de um site que não fosse o da Mozilla. Como ele não está hospedado em um site que você aprendeu a confiar, você gostaria de ter certeza de que o arquivo de instalação que você acabou de baixar é exatamente o mesmo que o Mozilla oferece.

Usando uma calculadora de checksum, você calcula um checksum usando uma função hash criptográfica específica, como SHA-2, e então compara com a publicada no site da Mozilla. Se eles forem iguais, você pode ter certeza de que o download que você tem é o que a Mozilla pretendia que você tivesse.

Image
Image

As funções criptográficas de hash podem ser revertidas?

Funções de hash criptográfico são projetadas para evitar a capacidade de reverter as somas de verificação que elas criam de volta aos textos originais. No entanto, embora sejam praticamente impossíveis de reverter, eles não são 100% garantidos para proteger os dados.

Hackers podem usar uma tabela de arco-íris para descobrir o texto simples de uma soma de verificação. As tabelas arco-íris são dicionários que listam milhares, milhões ou até bilhões de somas de verificação ao lado de seu valor de texto simples correspondente.

Embora isso não seja tecnicamente reverter o algoritmo de hash criptográfico, pode muito bem ser, já que é tão simples de fazer. Na realidade, como nenhuma tabela de arco-íris pode listar todas as somas de verificação possíveis existentes, elas geralmente são úteis apenas para frases simples como senhas fracas.

Aqui está uma versão simplificada de uma tabela arco-íris para mostrar como funcionaria ao usar a função hash criptográfica SHA-1:

Exemplo de Tabela Arco-Íris
Texto Simples SHA-1 Checksum
12345 8cb2237d0679ca88db6464eac60da96345513964
senha1 e38ad214943daad1d64c102faec29de4afe9da3d
ilovemydog a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

Um hacker deve saber qual algoritmo de hash criptográfico foi usado para gerar as somas de verificação para descobrir os valores.

Para proteção adicional, alguns sites que armazenam senhas de usuários executam funções adicionais no algoritmo de hash criptográfico após o valor ser gerado, mas antes de ser armazenado. Este processo produz um novo valor que apenas o servidor web entende e que não corresponde à soma de verificação original.

Por exemplo, depois que uma senha é inserida e a soma de verificação gerada, ela pode ser separada em várias partes e reorganizada antes de ser armazenada no banco de dados de senhas, ou certos caracteres podem ser trocados por outros. Ao tentar autenticar na próxima vez que o usuário fizer logon, o servidor reverterá essa função adicional e a soma de verificação original será gerada novamente para verificar se a senha de um usuário é válida.

Seguir esses passos limita a utilidade de um hack onde todas as somas de verificação são roubadas. A ideia é executar uma função desconhecida, portanto, se o hacker conhece o algoritmo de hash criptográfico, mas não o personalizado, saber as somas de verificação da senha não ajuda.

Senhas e funções de hash criptográfico

Um banco de dados salva as senhas dos usuários de maneira semelhante a uma tabela arco-íris. Quando sua senha é inserida, o checksum é gerado e comparado com o registrado com seu nome de usuário. Você terá acesso se os dois forem idênticos.

Dado que um CHF produz uma soma de verificação não reversível, é seguro para você tornar sua senha tão simples quanto 12345, em vez de 12@34 $5, simplesmente porque as próprias somas de verificação não podem ser entendidas? Não, e aqui está o porquê.

Essas duas senhas são impossíveis de decifrar apenas olhando apenas para as somas de verificação:

MD5 para 12345: 827ccb0eea8a706c4c34a16891f84e7b

MD5 para 12@34$5: a4d3cc004f487b18b2ccd4853053818b

À primeira vista, você pode pensar que não há problema em usar qualquer uma dessas senhas. Isso é verdade se um invasor tentar descobrir sua senha adivinhando a soma de verificação MD5, o que ninguém faz, mas não é verdade se for executado um ataque de força bruta ou de dicionário, que é uma tática comum.

Um ataque de força bruta ocorre quando várias tentativas aleatórias são feitas para adivinhar uma senha. Neste caso, seria fácil adivinhar 12345, mas muito difícil descobrir aleatoriamente o outro. Um ataque de dicionário é semelhante, pois o invasor pode tentar cada palavra, número ou frase de uma lista de senhas comuns (e não tão comuns), e 12345 é uma dessas senhas comuns senhas.

Mesmo que as funções de hash criptográfico produzam somas de verificação difíceis a impossíveis de adivinhar, você ainda deve usar uma senha complexa para todas as suas contas de usuário online e locais.

Mais informações sobre funções de hash criptográfico

Pode parecer que as funções criptográficas de hash estão relacionadas à criptografia, mas as duas funcionam de maneiras diferentes.

Criptografia é um processo de duas vias onde algo é criptografado para se tornar ilegível e depois descriptografado para ser usado normalmente novamente. Você pode criptografar os arquivos que armazenou para que qualquer pessoa que os acesse não possa usá-los ou pode usar a criptografia de transferência de arquivos para criptografar arquivos que estão se movendo em uma rede, como aqueles que você envia ou baixa on-line.

Funções de hash criptográfico funcionam de maneira diferente, pois as somas de verificação não devem ser revertidas com uma senha especial de dehashing. A única finalidade dos CHFs é comparar dois dados, como ao baixar arquivos, armazenar senhas e extrair dados de um banco de dados.

É possível que uma função hash criptográfica produza a mesma soma de verificação para diferentes partes de dados. Quando isso acontece, é chamado de colisão, o que é um grande problema, considerando que o objetivo da função é fazer somas de verificação exclusivas para cada entrada de dados nela.

As colisões podem ocorrer porque cada CHF produz um valor de comprimento fixo, independentemente dos dados de entrada. Por exemplo, a função de hash criptográfico MD5 gera 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 e e10adc3949ba59abbe56e057f20f883e para três blocos de dados totalmente diferentes.

A primeira soma de verificação é de 12345. O segundo foi gerado a partir de mais de 700 letras e números, e o terceiro é de 123456. Todas as três entradas são de comprimentos diferentes, mas os resultados são sempre de apenas 32 caracteres, já que a soma de verificação MD5 foi usada.

Não há limite para o número de checksums que podem ser criados porque cada pequena alteração na entrada deve produzir um checksum completamente diferente. Como há um limite para o número de checksums que um CHF pode produzir, sempre há a possibilidade de você encontrar uma colisão.

É por isso que outras funções hash criptográficas foram criadas. Enquanto MD5 gera um valor de 32 caracteres, SHA-1 gera 40 caracteres e SHA-2 (512) gera 128. Quanto maior o número de caracteres da soma de verificação, menor a probabilidade de ocorrer uma colisão.

Recomendado: