Pular para o conteúdo
ecdsa.com

Função de hash criptográfica

Uma função que mapeia uma entrada de qualquer tamanho para um digest de tamanho fixo, de modo que encontrar uma pré-imagem, uma segunda pré-imagem ou qualquer colisão seja computacionalmente inviável.
Também escrito comohash functioncryptographic hashhash

Três propriedades importam: resistência a pré-imagem (dado um digest, encontrar alguma entrada correspondente), resistência a segunda pré-imagem (dada uma entrada, encontrar outra com o mesmo digest) e resistência a colisões (encontrar duas entradas quaisquer que colidam). Para um digest de n bits, os custos genéricos são de cerca de 2ⁿ, 2ⁿ e 2ⁿᐟ², este último por causa do paradoxo do aniversário, e é por isso que o SHA-256 oferece 128 bits de resistência a colisões.

Funções padronizadas: o SHA-2 (do SHA-224 ao SHA-512, FIPS 180-4) e o SHA-3 com as funções de saída extensível SHAKE (FIPS 202) são aprovados; o BLAKE2 (RFC 7693) é amplamente usado fora de contextos do NIST; o MD5 e o SHA-1 estão quebrados quanto a colisões e não devem ser usados onde um atacante possa escolher as entradas. As construções Merkle–Damgård (MD5, SHA-1, SHA-2) permitem a extensão de comprimento; as esponjas (SHA-3) e as construções HAIFA (BLAKE2), não.

Um hash não é um MAC, nem um hash de senha, nem criptografia: use HMAC ou KMAC para integridade com chave, Argon2id, scrypt ou PBKDF2 para senhas e um AEAD para confidencialidade. Os computadores quânticos quase não afetam os hashes: o algoritmo de Grover dá, no máximo, um ganho de raiz quadrada na busca de pré-imagens, e o plano preliminar de transição do NIST mantém o SHA-256 e o SHA-3 em uso.

Padrões e referências

Todos os termos