Pular para o conteúdo
buybitcoinsmart

Glossário / Mineração e consenso

SHA-256

Outros nomes: SHA256.

O que é SHA-256?
SHA-256 recebe uma entrada de qualquer comprimento e retorna uma impressão digital de 32 bytes que é idêntica toda vez, imprevisível de antemão e impossível de reverter.

O bitcoin se apoia nessa única função em quase todo lugar: hashes de bloco, ids de transação, árvores de merkle, somas de verificação de endereços e a soma de verificação da sua frase de recuperação. A saída tem 256 bits, impressos como 64 caracteres hexadecimais, extraídos de um espaço de aproximadamente 1,2 vezes 10 elevado a 77 valores. É essa a aritmética que detecta um endereço digitado errado antes que seus bitcoins vão a algum lugar.

Como funciona

O SHA-256 divide sua entrada em blocos de 512 bits e mistura cada um ao longo de 64 rodadas de deslocamentos, rotações e adições.

O estado que é misturado são oito palavras de 32 bits, inicializadas com constantes tomadas das partes fracionárias das raízes quadradas dos oito primeiros números primos, enquanto as 64 constantes de rodada vêm das raízes cúbicas dos 64 primeiros primos. Essa origem é o ponto: são números que ninguém poderia ter escolhido por um motivo oculto, e é assim que o projeto argumenta que não tem porta dos fundos. O algoritmo foi produzido pela Agência de Segurança Nacional dos Estados Unidos e publicado pelo NIST em 2001, e a especificação atual é a FIPS 180-4.

Três propriedades são o que o bitcoin de fato compra. A função é determinística, então qualquer máquina em qualquer lugar deriva o mesmo resumo dos mesmos bytes. Ela tem efeito avalanche, então inverter um bit da entrada muda cerca de metade dos bits da saída, sem nenhum padrão ligando os dois. E ela resiste a ser executada ao contrário: ninguém encontrou uma forma de recuperar uma entrada a partir de um resumo, ou de produzir duas entradas que compartilhem um, mais rápido que a força bruta. O SHA-1 caiu diante de uma colisão prática em fevereiro de 2017, o que custou aos pesquisadores uma quantidade enorme de processamento e não se estendeu ao SHA-2 de forma alguma.

O bitcoin raramente a chama uma vez só. Cabeçalhos de bloco, ids de transação, nós de merkle e a soma de verificação de uma mensagem ponto a ponto usam todos uma passada dupla, calculando o hash do resumo uma segunda vez. Os hashes de endereço seguem outro caminho, RIPEMD-160 aplicado a um resumo SHA-256, e é daí que vem a carga útil de 20 bytes de um endereço legado. O Taproot quebrou o padrão de novo: o BIP340 define hashes etiquetados que chamam o SHA-256 uma vez, com um prefixo separador de domínio, para que assinaturas de um propósito não possam ser repetidas em outro.

Onde você o vê

Cada cadeia hexadecimal de 64 caracteres em um explorador de blocos é uma saída do SHA-256. Isso inclui o id de transação que você cola em chamados de suporte e o hash de bloco que começa com uma longa sequência de zeros, que é a aparência de um cabeçalho que superou o alvo.

Dois lugares importam diretamente quando você guarda bitcoins. Uma frase de recuperação carrega uma soma de verificação construída com esta função: 12 palavras codificam 128 bits de aleatoriedade mais 4 bits de soma de verificação tomados do resumo SHA-256 dessa aleatoriedade, então uma frase com uma palavra errada é rejeitada cerca de 15 vezes em 16, em vez de abrir silenciosamente uma carteira vazia. Um endereço legado carrega uma proteção semelhante, uma soma de verificação de 4 bytes de uma passada dupla de SHA-256, o que deixa a probabilidade de um erro de digitação aleatório produzir um endereço válido em cerca de 1 em 4,3 bilhões.

O hardware de mineração não existe para outra coisa. Um ASIC é um chip que calcula esta única função e nenhuma outra, e é por isso que os mineradores de bitcoin não podem ser reutilizados para cadeias construídas sobre um algoritmo diferente, e por isso que a expressão “criptomoeda SHA-256” descreve toda uma família de bifurcações. Note o limite de tudo isso: uma soma de verificação detecta um endereço que você digitou errado, nunca um endereço que um malware trocou por um perfeitamente válido e que não é seu.

Não confundir com

Perguntas frequentes

Computadores quânticos poderiam quebrar o SHA-256?

Não no sentido em que as pessoas costumam dizer. Os algoritmos quânticos conhecidos enfraquecem a busca por hash muito menos do que enfraquecem a criptografia de chave pública, então o esquema de assinatura do bitcoin é considerado a parte exposta, não sua função de hash.

Por que o bitcoin calcula o hash das coisas duas vezes?

O hash duplo foi a precaução de Satoshi Nakamoto contra a extensão de comprimento, uma fraqueza na forma como uma única passada pode ser continuada por alguém que conhece apenas o resumo. Custa quase nada e elimina totalmente essa classe de ataque.

Leia a seguir

Termos relacionados

Mais em Mineração e consenso

Ler esta página em inglês