hash function

termo

criptografiaprogramação

Uma função de mão única que transforma qualquer entrada em uma impressão digital de tamanho fixo.

Um hash criptográfico mapeia dados para um resumo curto que é praticamente impossível de reverter e muda por completo à menor alteração na entrada. Sustenta verificações de integridade, armazenamento de senhas (com sal) e assinaturas; um bom hash torna inviável achar duas entradas com a mesma saída (uma colisão).

Uma função de hash criptográfico transforma entrada de qualquer tamanho num resumo de tamanho fixo, e as propriedades úteis estão no que ela torna difícil, não no que ela calcula. Dado um resumo, você não deve conseguir achar uma entrada que o produza; dada uma entrada, não deve achar uma segunda que case com ela; e não deve conseguir achar quaisquer duas entradas em colisão.

Essa última propriedade é o elo mais fraco, por causa do problema do aniversário: colisões se tornam encontráveis por volta da raiz quadrada do espaço de saída, então um resumo de 128 bits oferece cerca de 64 bits de resistência a colisão, e não 128. Essa aritmética explica por que MD5 e SHA-1 caíram para ataques práticos de colisão enquanto ainda pareciam adequados pelo comprimento de saída.

O mau uso mais comum é recorrer a um hash rápido para guardar senhas. Velocidade é todo o propósito de um hash de uso geral e todo o problema no armazenamento de senhas, onde o atacante testa bilhões de candidatas por segundo. Hash de senha quer lentidão deliberada e dureza de memória, que é o que bcrypt, scrypt e Argon2 oferecem e o que o SHA-256 enfaticamente não oferece.

Também conhecido como: hash, hashing, digest, message digest

Todos os verbetes do glossário