Funções de hash criptográfico

Funções de hash criptográfico

A criptografia moderna oferece uma ampla gama de ferramentas e técnicas para proteger dados em trânsito e em repouso. As funções de hash criptográfico pertencem ao tipo de protocolo criptográfico baseado em cifras de bloco. Eles desempenham um papel significativo na obtenção de sistemas de comunicação modernos e funcionam como uma barreira para os intrusos, garantindo a autenticidade dos dados. Salvar e recuperar senhas com segurança e transações criptográficas anônimas são alguns dos muitos aplicativos de função de hash.

O artigo fornece uma ampla visão geral e uso de funções de hash criptográfico. Explicamos propriedades de hash, seu uso em vários domínios, possíveis ataques e fraquezas e, o mais importante, maneiras de fortalecer hashes e melhorar as funções de hash.

O que é uma função de hash?

É uma função unidirecional ou um identificador exclusivo que, dada uma entrada de comprimento variável, produz um resumo de hash de comprimento fixo. No entanto, a duração da saída depende do algoritmo de hashing. Em geral, os algoritmos mais populares têm um comprimento de hash de 160-512 bits.

Mas, para produzir os dados para um comprimento fixo, as funções de hash levam primeiro em um bloco predefinido de dados conhecido como blocos de dados. O tamanho do bloco de dados varia de um algoritmo para outro, mas é sempre o mesmo para um algoritmo. Por exemplo, a função SHA-1 Hash aceita um tamanho de bloco de 512 bits e, se a entrada for do mesmo tamanho, ela é executada apenas uma vez, ou seja, 80 rodadas. Se o tamanho da entrada for 1024, o algoritmo será executado duas vezes.

Realisticamente, o tamanho da entrada raramente é um múltiplo de 512 bits. Nesses casos, empregamos uma técnica conhecida como preenchimento que divide a mensagem/dados em blocos de dados do mesmo comprimento. De modo que a função seja executada com base em um número total de blocos de dados e processa cada bloco de dados por vez. Ele leva a saída do primeiro bloco como uma entrada com o segundo bloco e assim por diante. Portanto, o hash final é o valor combinado de todos os valores de saída.

Hashing vs. Criptografia

Hashing e criptografia são processos únicos e separados, com seu próprio conjunto de recursos, propriedades e procedimentos.

A criptografia é um processo bidirecional/reversível, pois incorpora o uso de uma chave que é compartilhada ou está matematicamente relacionada, mas não idêntica, chaves públicas e privadas. Ao contrário da criptografia, os hashes são fáceis de calcular e difíceis de reverter para o texto simples original.

Hashing fornece integridade dos dados. A criptografia, por outro lado, torna a confidencialidade dos dados.

O bem de hashes

Embora o hash não seja criptografia, é uma forma de criptografia que fornece:

  • proteção de senha
  • Integridade de dados / verificação de arquivos
  • assinaturas digitais e
  • assinaturas de vírus.

Proteção de senha

Sempre que um usuário insere uma senha para autenticação, o hash de senha é comparado com o arquivo que contém hashes do sistema no computador. O sistema apenas permite o acesso após a autenticação bem -sucedida. Por exemplo, o Windows Stores Password Hashes no arquivo gerenciador de contas de segurança (SAM), enquanto o Linux armazena Hashes de senha no arquivo /etc /Shadow.

Verificação do arquivo

Da mesma forma, alguns sites compartilham um valor de hash para verificar a integridade do software baixado que garante que não seja corrupto ou alguém não adultei o arquivo durante o download.

Por exemplo, o site para baixar o Linux Mint 20.2 “Uma” -Cinnamon (64 bits) A imagem ISO compartilha seu hash sha256 no sha256sum.arquivo txt. Para verificar a integridade da imagem, cd no diretório de imagem baixado e gerar a soma sha256 da seguinte maneira:

ubuntu@ubuntu: ~ $ sha256sum -b *.ISO

O SHA256SUM.TXT O arquivo contém quatro hashes, dependendo dos diferentes lançamentos de desktop. Compare o valor de hash gerado com o hash de imagem ISO da Cinnamon Desktop no arquivo para verificar sua integridade se eles corresponderem; Isso significa que a imagem ISO está pronta para usar.

Antes do SHA256, o algoritmo de hash do MD5 foi usado para verificar a integridade de um arquivo baixado, mas não é mais um verdadeiro algoritmo de hash criptográfico, pois não é resistente a colisões (mais sobre isso mais tarde).

Assinaturas digitais

Uma assinatura digital autentica o remetente anexando a mensagem original com a mensagem criptografada Digest. O remetente criptografa com a chave privada para garantir a não repudiação enquanto o hash protege contra adulteração de dados e fornece integridade I.e., assinatura digital = chave privada do remetente (hash (mensagem)).

O receptor descriptografa a mensagem Digest com a chave pública do remetente e leva o hash da mensagem original para comparar com o hash descriptografado.

Assinaturas de vírus

As soluções antivírus usam várias abordagens para identificar malware; Um deles é a combinação de hash. Eles pegam uma parte ou bloco de um executável para criar um hash e compará -lo com os hashes de malware armazenados em seus bancos de dados.

Propriedades de hashes

O conjunto de propriedades que fazem as funções de hash desempenham um papel crítico na criptografia de chave pública é a seguinte:

  • Um bom algoritmo de hash retorna um valor de hash de tamanho/comprimento fixo, independentemente do tamanho da entrada.
  • Oferece resistência à pré-imagem, o que significa que é impossível recuperar o valor original revertendo o hash.
  • Um forte algoritmo de hash garante resistência à colisão. Isto é, não há duas entradas diferentes.
  • Uma pequena mudança na entrada gera mudanças significativas na saída. Esta propriedade dos hashes ajuda a garantir a integridade do arquivo/dados.
  • A velocidade computacional das funções de hash criptográfica é outra propriedade ideal. No entanto, é subjetivo e varia com base no objetivo e na área de aplicação.

Modos de hashes

As funções de hash mais conhecidas são o algoritmo de digestão de mensagens (MDA), algoritmo de hash seguro (sha), ntlm, etc.

  • MD5: MD5 é a quinta versão dos algoritmos de dignidade de mensagens que têm um comprimento de saída de 128 bits. Foi o algoritmo de hash mais conhecido até que se tornou propenso a ataques de colisão (mais sobre isso mais tarde). Por exemplo, antes dos algoritmos seguros de hash (SHA), o algoritmo de hash do MD5 era o método mais comumente usado para verificação de integridade do arquivo.
  • Sha: O algoritmo de hash seguro foi introduzido pela NSA. É um conjunto de algoritmos contendo quatro funções variantes SHA-224, SHA-256, SHA-384 e SHA-512. Cada nome variante representa o tamanho de sua saída. É um algoritmo de hash mais seguro, pois nenhum compromisso dos algoritmos de hash é tão conhecido.
  • Ntlm: O algoritmo de hash do NT LAN Manager é usado para senhas de hash. O NTLM usa verificações de redundância cíclica e digestões de mensagens, mas sua única desvantagem é que se baseia na cifra RC4, que, ao contrário dos novos protocolos criptográficos, AES e SHA-256 foram alvo de um ataque bem-sucedido. NTLMV2 resolve esses problemas usando o sistema HMAC-MD5 de 128 bits.

O ruim dos hashes

Como discutido anteriormente, grandes hashes de tamanho de bloco podem desacelerar os atacantes, e a engenharia reversa de um hash criptográfico pode ser difícil, mas não é impossível. Todos os invasores exigem é um tempo que eles podem gerenciar facilmente usando hardware rápido e criando colisões ou ataques de canal lateral. A seção discute alguns dos caminhos da exploração de hash.

Colisão
A colisão na hash ocorre quando duas entradas retornam o mesmo valor de saída. Funções confiáveis ​​de hash são projetadas para fornecer resistência a colisão. Mas é inevitável devido a um efeito de pombo. De acordo com o efeito Pigeohole, há um número definido de valores de saída contra a entrada de qualquer tamanho. Isso significa que, uma vez que sempre haverá mais insumos do que a saída, a colisão é um evento inevitável.

Tabelas arco-íris
Como mencionado anteriormente, os sistemas operacionais não armazenam senhas em texto simples. Portanto, as mesas de arco-íris são bancos de dados ou tabelas de pesquisa pré-computados que mapeiam hashes para a senha de texto simples. O site Crackstation, por exemplo, fornece um banco de dados enorme para quebrar hashes para senhas sem salgar. No entanto, as mesas do arco -íris negociam tempo para quebrar hashes com uma grande quantidade de espaço de armazenamento.

A vantagem das tabelas de arco-íris contra forçantes brutos é uma simples pesquisa e comparação em contraste com as tentativas automatizadas de tentativa e erro com um problema de computação de hash. Além disso, ele não requer uma correspondência exata de senha, o que significa que, se o hash corresponde a qualquer senha/frase, o sistema permite a autenticação.

João o Estripador
John é uma ferramenta poderosa e versátil que ajuda a quebrar os hashes. É semelhante a um ataque de dicionário automatizado que usa uma lista de palavras ou um dicionário para calcular o hash e comparar. Portanto, permite força bruta em uma variedade de modos de hash. Um exemplo da lista de palavras é uma rockyou.arquivo txt que contém senhas de uma brecha no rockyou.com site. A lista de palavras está disponível na Github Seclists sob /Senhas/dados vazados.

A maneira mais simples de quebrar o hash é usar o John comando com a opção de formato para especificar o tipo de hash, caminho para a lista de palavras e o arquivo com o valor de hash. Em Kali Linux, o caminho para o Rouckyou.O arquivo txt é /usr/share/wordlists.

ubuntu@ubuntu: ~ $ john - -format = - -wordlist =/usr/share/wordlists/rockyou.txt hash.TXT

Passe o hash
Pass-the-Hash é um roubo de credencial que tem o potencial de escalada de privilégio horizontal. Embora o ataque possa ocorrer em sistemas Linux/Unix, é mais prevalente no Windows. O Windows autentica um usuário legítimo, combinando o hash da senha inserida, que é estática e isso só muda quando a senha muda. Além disso, as senhas estão disponíveis em vários locais no Windows, como SAM e SUM e Memória do Processo Subsistema de Autoridade de Segurança Local (LSASS), etc.

Portanto, os atacantes manipulam o modelo de desafio e resposta do protocolo de segurança NTLM que lhes permite se autenticar como usuários válidos. O invasor despeja os hashes de um sistema de destino e usa a ferramenta 'Pass-the-hash' para se passar por um usuário autêntico. Portanto, o invasor não precisa entrar ou forçar bruto a senha ou engenheiro reverso o valor do hash. Encontre mais detalhes sobre o ataque daqui.

Ataque de aniversário
O ataque pertence à classe de ataque de força bruta e é baseado em um paradoxo de aniversário na teoria da probabilidade. Ele usa o problema de aniversário para enviar duas mensagens diferentes com o mesmo protocolo de hash criptográfico para causar uma colisão. O ataque geralmente visa manipular a comunicação. Mais detalhes sobre o ataque de aniversário estão disponíveis aqui.

Power Up Hashes

Existem várias maneiras de proteger contra ataques a hashes e limitá -los contra funções de hash criptográfico.

Hashes salgados
Salga é o processo de adição de dados gerados aleatoriamente (sal) à entrada de uma função de hash. O processo ajuda a proteger contra ataques de mesa do arco -íris. Os usuários podem incluir o valor do sal no início ou no final da senha antes de criar um hash que gera saídas diferentes, mesmo que as senhas sejam semelhantes. Além disso, um usuário pode manter o sal de sal.

Hashes com chave
O HMAC é um exemplo de hashes com chave que usa chaves criptográficas e funções de hash para melhorar as limitações do algoritmo de código de autenticação (MAC) de mensagem. Ajuda a alcançar a confidencialidade e a integridade da informação ao mesmo tempo.

Função de hash adaptável
As funções adaptativas de hash são projetadas para reiterar seu trabalho interno, pois o nome sugere que o usuário pode ajustar o número de iterações. A tendência das chaves é uma técnica que leva uma chave fraca como uma entrada, a processa e itera o processo para produzir uma poderosa chave de tamanho grande. O processo pode aumentar o tamanho da chave até 128 bits, o que é difícil para ataque de força bruta. PBKDF2 e BCRYPT são exemplos de funções de hash adaptativas.

Conclusão

O artigo fornece uma extensa visão geral dos protocolos criptográficos de hash. Ele demonstra como verificar a integridade do arquivo e fornece uma visão geral de como é possível quebrar hashes de senha através da ferramenta João o Ripper. Também discutimos uma série de ataques e medidas para gerar hashes inocentes por meio de salga, hashes com chave e funções de hash adaptativas.