Uma função hash é um algoritmo matemático que mapeia dados de tamanho arbitrário para um valor de saída de tamanho fixo. O valor de saída, conhecido como código hash, valor hash ou message digest, é tipicamente uma representação única dos dados de entrada. A principal função de um hash é verificar a integridade dos dados, detectar modificações acidentais ou intencionais e optimizar a recuperação e o armazenamento de dados.
Propriedades de uma função de hash Uma função de hash deve ser eficiente, determinística e segura. Eficiência refere-se à capacidade de uma função hash de processar dados de entrada rapidamente e com o mínimo de recursos. Determinismo significa que os mesmos dados de entrada devem produzir o mesmo código hash todas as vezes, independentemente do ambiente ou contexto. Segurança refere-se à capacidade de uma função hash de resistir a ataques como colisão, pré-imagem e ataques de aniversário, que podem comprometer a integridade e a confidencialidade dos dados.
Funções de hash comuns
As duas funções de hash mais comuns são MD5 (Message Digest 5) e SHA (Secure Hash Algorithm). O MD5 é uma função de hash amplamente utilizada que produz um código de hash de 128 bits, que é menos seguro que o SHA, mas mais rápido de calcular. SHA, por outro lado, é uma família de funções de hash desenvolvida pelo National Institute of Standards and Technology (NIST). As funções SHA mais comumente usadas são SHA-1, SHA-2 e SHA-3, que produzem códigos hash de 160, 224, 256, 384 e 512 bits.
Uma tabela de hash é uma estrutura de dados que usa uma função de hash para mapear chaves para valores. A função de hash é usada para determinar o índice de uma matriz, onde o valor associado à chave é armazenado. As tabelas de hash são normalmente utilizadas na informática para implementar matrizes associativas, bases de dados e caches. A principal vantagem das tabelas de hash é a sua complexidade de tempo constante para a maioria das operações, tais como inserção, eliminação e recuperação.
Propriedades de uma boa cifra Uma boa cifra deve ter duas propriedades principais: confidencialidade e integridade. A confidencialidade refere-se à capacidade de uma cifra impedir o acesso não autorizado aos dados, o que é conseguido através da cifragem e da decifragem. A integridade refere-se à capacidade de uma cifra para impedir a modificação não autorizada dos dados, o que se consegue através de funções de hash e assinaturas digitais. Uma boa cifra também deve ser eficiente, segura e fácil de usar.
Propriedades de uma função de hash criptográfica Uma função de hash criptográfica deve ter duas propriedades principais: resistência à colisão e unidireccionalidade. Resistência à colisão significa que é computacionalmente inviável encontrar duas entradas distintas que produzam o mesmo código hash. A unidireccionalidade significa que é computacionalmente inviável encontrar os dados de entrada que produzem um determinado código hash. Estas propriedades são essenciais para garantir a segurança e a fiabilidade das assinaturas digitais, dos códigos de autenticação de mensagens e de outras aplicações criptográficas.
Em conclusão, a função de um hash é fornecer uma representação única e segura dos dados, que pode ser utilizada para validação, recuperação e armazenamento de dados. Uma boa função de hash deve ser eficiente, determinística e segura, enquanto uma boa cifra deve ter confidencialidade, integridade, eficiência, segurança e facilidade de utilização. As tabelas de hash e as funções de hash criptográficas são ferramentas essenciais para a implementação de estruturas de dados, algoritmos e protocolos em ciência da computação e segurança da informação.
Uma função hash precisa de ter as seguintes propriedades para autenticar mensagens:
1. Determinística: A mesma mensagem de entrada deve produzir sempre o mesmo valor de hash.
2. Unidirecional: Deve ser praticamente impossível fazer engenharia reversa da mensagem de entrada a partir do valor de hash.
3. resistente a colisões: deve ser extremamente difícil encontrar duas mensagens diferentes que produzam o mesmo valor de hash.
4. seguro: Deve ser muito difícil adulterar a mensagem de entrada sem alterar o valor do hash.
Desculpe, mas o artigo intitulado “The Function of a Hash: Propriedades, funções e aplicações” não menciona especificamente os dois métodos que garantem a confidencialidade. O artigo discute principalmente as propriedades e funções das funções de hash e as suas várias aplicações, tais como assinaturas digitais, armazenamento de palavras-passe e verificação da integridade dos dados.
A função de hash usada pelo Bitcoin é chamada SHA-256 (Secure Hash Algorithm 256-bit). Esta é uma função de hash criptográfica amplamente utilizada que produz uma saída de tamanho fixo (256 bits) a partir de uma mensagem de entrada de tamanho arbitrário. É utilizada na mineração de Bitcoin para garantir que as transacções são adicionadas à cadeia de blocos de uma forma segura e inviolável.