24 / 736HASH

Hash

impressão digital criptográfica

Uma impressão digital curta que ajuda a comparar dados e detectar alterações.

Um hash é o resultado de um cálculo sobre dados, como um arquivo ou uma transação de Bitcoin. Os mesmos dados e procedimento produzem a mesma impressão digital. Um hash criptográfico busca dificultar a descoberta de outros dados com o mesmo resultado ou de uma entrada para um resultado dado. Não é uma cópia criptografada dos dados.

Você baixa um instalador. O responsável publicou uma impressão digital de controle, e você calcula a da sua cópia com o mesmo algoritmo. Se forem diferentes, os dados não são iguais: o arquivo pode ter sido danificado, substituído ou alterado. Já a correspondência com uma referência confiável dá forte segurança de que a cópia está correta. Não é necessário comparar manualmente o arquivo inteiro. SHA-256, por exemplo, produz um resultado de 256 bits, geralmente escrito em 64 caracteres hexadecimais, tanto para uma mensagem curta quanto para um arquivo grande. [1] [3]

A questão é de onde veio a referência. Se um invasor trocar em um site tanto o arquivo quanto seu hash publicado, ambos vão corresponder. Calcular um hash não exige chave secreta: qualquer pessoa pode fazê-lo com dados públicos. Isso o distingue de uma assinatura digital, pela qual o detentor de uma chave atesta dados. Na verificação do Bitcoin Core, além do hash do arquivo, são conferidas as assinaturas da lista de hashes e a confiabilidade das chaves usadas. Um hash sozinho não prova autoria, segurança do programa ou veracidade de um documento. [3]

O cálculo de hash não tem um passo inverso de “descriptografar”. O resultado de tamanho fixo não contém todo o arquivo, portanto não funciona como backup. Mas isso não significa que esconda qualquer entrada com segurança. Se alguém calcular o hash de uma senha curta e comum, um invasor pode testar senhas prováveis e comparar as impressões. Não precisa inverter a função: basta adivinhar a entrada. Um hash rápido, sozinho, não substitui uma senha forte nem um método próprio para armazenar senhas com segurança. [1] [5]

Na busca por preimage, parte-se de um hash definido para encontrar dados que o produzam. Em uma colisão, bastam quaisquer duas entradas diferentes com o mesmo hash. Colisões existem matematicamente, pois há mais entradas possíveis do que resultados de tamanho fixo. A segurança criptográfica está em tornar sua descoberta impraticável, não impossível. Além disso, “hash” não é o nome de um único algoritmo: nem toda função hash se destina à segurança criptográfica. [1]

O Bitcoin usa hashes para identificar transações, conectar blocos e verificar o trabalho de mineração. Mas a receita varia. O hash de um cabeçalho de bloco aplica SHA-256 duas vezes; HASH160 combina SHA-256 com RIPEMD-160. Um tagged hash também separa diferentes finalidades por meio de uma etiqueta. Para verificar um resultado por conta própria, é preciso usar o algoritmo correto e os bytes exatos da entrada, as unidades básicas de dados. O texto “61” tem bytes diferentes do único byte de valor hexadecimal 61, que representa a letra a em ASCII. Calcular o hash da representação exibida em vez dos dados é, portanto, outro cálculo. [2] [4]

Para ter uma visão mais completa, leia este verbete junto com SHA-256, Proof of Work, Block Header, Transação, Merkle Tree, Bitcoin. Também há referências a este verbete em SHA-256, Nonce, HTLC, Hashcash.

DOC · 001NIST FIPS 180-4: Secure Hash StandardFonte primária DOC · 002Bitcoin Core v29.0: hash constructionsFonte primária DOC · 003Bitcoin Core: Verify your downloadFonte primária DOC · 004BIP340: tagged hashesFonte primária DOC · 005NIST SP800-63B: Password verifiersFonte primária
Revisto em: Fontes em primeiro lugar · Não é recomendação de investimento