Hashing é o processo de geração de uma saída de tamanho fixo a partir de uma entrada de tamanho variável. Este processo é realizado através de uma fórmula matemática chamada "função hash" (implementada como um algoritmo hash).

Nem todas as funções hash envolvem o uso de criptografia, mas as “funções hash criptográficas” estão no centro das criptomoedas. Graças às funções criptográficas de hash, altos níveis de integridade e segurança de dados podem ser alcançados em blockchain e outros sistemas distribuídos.

Tanto as funções hash tradicionais quanto as funções hash criptográficas são determinísticas. O determinismo se refere ao fato de que um algoritmo de hash sempre produzirá a mesma saída (também chamada de "resumo" ou "valor de hash"), desde que a entrada não mude.

Normalmente, os algoritmos de hash de criptomoeda são projetados para serem funções unilaterais, o que significa que não podem ser facilmente recuperados sem tempo e recursos de computação significativos. Em outras palavras, é extremamente fácil criar uma saída a partir de uma entrada, mas é relativamente difícil criar uma entrada a partir de uma saída ao contrário. Em geral, quanto mais difícil for encontrar a entrada, mais seguro será o algoritmo de hash.


Como funciona uma função hash?

Diferentes funções hash produzem saídas de tamanhos diferentes, mas o tamanho da saída de cada algoritmo de hash é sempre o mesmo. Por exemplo, o algoritmo SHA-256 só pode produzir uma saída de 256 bits, enquanto o SHA-1 sempre produz um resumo de 160 bits.

Para ilustrar isso, executamos as palavras “Binance” e “binance” através do algoritmo de hash SHA-256 (o algoritmo usado no Bitcoin).

SHA-256

digitar

Saída (256 bits)

Binância

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binância

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Observe que uma pequena alteração na capitalização da primeira letra produzirá um valor de hash completamente diferente. Independentemente do comprimento do valor de entrada, a saída usando SHA-256 tem sempre um comprimento fixo de 256 bits (ou 64 caracteres). Além disso, não importa quantas vezes o algoritmo execute essas duas palavras, a saída de ambas permanece a mesma.

Por outro lado, se você executar a mesma entrada por meio do algoritmo de hash SHA-1, obterá os seguintes resultados:

SHA-1

digitar

Saída (160 bits)

Binância

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binância

e58605c14a76ff98679322cca0eae7b3c4e08936


Observe que "SHA" é o acrônimo para Secure Hash Algorithms. O algoritmo refere-se a um conjunto de funções hash criptográficas, que inclui os algoritmos SHA-0 e SHA-1, bem como os conjuntos SHA-2 e SHA-3. SHA-256, juntamente com SHA-512 e outras variantes, fazem parte do grupo SHA-2. Atualmente apenas os grupos SHA-2 e SHA-3 são considerados seguros.


Qual é a importância das funções hash?

As funções hash tradicionais têm uma variedade de casos de uso, incluindo pesquisas em bancos de dados, análise de arquivos grandes e gerenciamento de dados. As funções de hash criptográfico são amplamente utilizadas em aplicações de segurança da informação, como autenticação de mensagens e impressão digital. No caso do Bitcoin, as funções criptográficas de hash são parte integrante do processo de mineração, afetando tanto o novo endereço quanto a geração de chaves.

As operações hash são verdadeiramente poderosas ao processar grandes quantidades de informações. Por exemplo, execute um arquivo grande ou conjunto de dados por meio de uma função hash e, em seguida, use sua saída para verificar rapidamente a precisão e integridade dos dados. As funções hash funcionam porque são determinísticas: uma entrada sempre produz uma saída compactada e simplificada (ou seja, um valor hash). Esta tecnologia elimina a necessidade de armazenar e “lembrar” grandes quantidades de dados.

As operações hash são particularmente úteis no campo da tecnologia blockchain. O blockchain Bitcoin possui muitas operações envolvendo operações de hash, a maioria das quais faz parte do processo de mineração. Na verdade, quase todos os protocolos de criptomoeda dependem de hashing para conectar grupos de transações e compactá-los em blocos, enquanto geram links criptográficos entre blocos individuais, criando efetivamente um blockchain.


função hash criptográfica

Da mesma forma, funções hash que implementam técnicas criptográficas podem ser definidas como funções hash criptográficas. De modo geral, quebrar uma função hash criptográfica requer inúmeras tentativas de força bruta. Para "restaurar" uma função hash criptográfica, adivinhe a entrada por tentativa e erro até que a saída correspondente seja gerada. No entanto, também é possível que diferentes entradas produzam exactamente a mesma saída, pelo que ocorre um “conflito”.

Tecnicamente falando, uma função hash criptográfica precisa possuir três propriedades para ser considerada eficaz na garantia da segurança. Os três principais atributos são anticolisão, antipré-imagem e anti-segunda pré-imagem.

Antes de discutir cada atributo individualmente, vamos resumir brevemente a lógica de cada atributo.

  • Resistência à colisão: é impossível que duas entradas diferentes gerem a mesma saída de valor hash.

  • Anti-imageabilidade: É impossível "restaurar" uma função hash (ou seja, a entrada não pode ser encontrada em uma determinada saída).

  • Segunda resistência de pré-imagem: É impossível encontrar outra entrada que entre em conflito com uma entrada específica.


resistência ao conflito

Conforme mencionado antes, as colisões ocorrem quando entradas diferentes geram exatamente o mesmo valor de hash. Portanto, uma função hash é considerada resistente a colisões desde que ninguém detecte uma colisão. Observe que como as entradas possíveis são infinitas e as saídas possíveis são finitas, sempre há colisões com funções hash.

Supondo que a probabilidade de encontrar uma colisão seja tão baixa quanto milhões de anos, pode-se dizer que uma função hash é resistente a colisões. Portanto, embora na realidade não existam funções hash livres de colisão, algumas delas (como SHA-256) são consideradas resistentes a colisões, desde que sejam fortes o suficiente.

Entre vários algoritmos SHA, os grupos SHA-0 e SHA-1 apresentam conflitos, portanto não são mais seguros. Atualmente os conjuntos SHA-2 e SHA-3 são considerados resistentes a colisões.


Anti-imagens

A propriedade anti-icônica está relacionada ao conceito de funções unidirecionais. Diz-se que uma função hash é anti-imagem, assumindo que a probabilidade de encontrar uma entrada que produza uma saída específica é extremamente baixa.

Observe que um invasor analisa uma determinada saída para adivinhar a entrada; portanto, essa propriedade é diferente da resistência à colisão. Além disso, duas entradas diferentes produzindo a mesma saída entrarão em conflito, mas realmente não importa qual entrada é usada.

As propriedades antiimagebilidade são valiosas para proteger dados porque um simples hash de uma mensagem pode provar sua autenticidade sem divulgar as informações. Na prática, muitos provedores de serviços e aplicações web armazenam e usam hashes gerados a partir de senhas em vez da senha em texto não criptografado.


Resistência à segunda pré-imagem

Em suma, a resistência às segundas pré-imagens situa-se algures entre as duas propriedades mencionadas acima. Um segundo ataque de pré-imagem ocorre se alguém conseguir encontrar uma entrada específica que produza uma saída igual a outra entrada conhecida.

Em outras palavras, o segundo ataque de pré-imagem está relacionado à localização de conflitos, mas em vez de procurar duas entradas aleatórias que geram o mesmo valor de hash, você procura outra entrada que gera o mesmo valor de hash dada a entrada específica.

Um segundo ataque de pré-imagem geralmente significa que há um conflito. Portanto, qualquer função hash resistente a colisões também é resistente a ataques de segunda pré-imagem. No entanto, ser resistente a colisões significa que uma única entrada pode ser encontrada a partir de uma única saída, de modo que um invasor ainda pode lançar um ataque de pré-imagem contra uma função resistente a colisões.


Mineração de criptomoeda

As funções hash são usadas em várias etapas na mineração de Bitcoin, como verificação de saldos, concatenação de entradas e saídas de transações e hash de transações dentro do mesmo bloco para formar uma árvore Merkle. No entanto, uma das principais razões pelas quais a blockchain Bitcoin é segura é que os mineradores precisam realizar inúmeras operações de hashing antes de finalmente encontrarem uma solução válida para o próximo bloco.

Especificamente, os mineradores devem tentar várias entradas diferentes ao criar hashes de blocos candidatos. Essencialmente, os mineiros só podem validar um bloco se o hash de saída gerado começar com um certo número de zeros. O número de zeros determina a dificuldade de mineração e muda com a taxa de hash dedicada à rede.

Neste caso, a taxa de hash representa a quantidade de poder computacional investido na mineração de Bitcoin. Se a taxa de hash da rede aumentar, o protocolo Bitcoin ajustará automaticamente a dificuldade de mineração para que o tempo médio necessário para gerar um bloco permaneça próximo de 10 minutos. Pelo contrário, se muitos mineradores decidirem parar de minerar, fazendo com que a taxa de hash caia significativamente, a dificuldade de mineração será reduzida até que o tempo médio de bloqueio retorne a 10 minutos.

Observe que os mineradores podem gerar vários hashes como saída válida (começando com um certo número de zeros), portanto, não precisam procurar colisões. Existem múltiplas soluções possíveis para um bloco, mas dependendo do limite de dificuldade de mineração, os mineradores só precisam encontrar uma das soluções.

A mineração de Bitcoin é uma tarefa de alto custo e não há necessidade de os mineradores enganarem o sistema, o que causaria perdas financeiras significativas. Quanto mais mineradores aderem ao blockchain, maior e mais poderoso o blockchain se torna.


Resumir

Não há dúvida de que as funções hash são uma ferramenta essencial na ciência da computação e sua capacidade de processar grandes quantidades de dados é particularmente notável. Combinados com a criptografia, os algoritmos de hash podem ser usados ​​de diversas maneiras para fornecer segurança e autenticação de diversas maneiras. Para quase todas as redes de criptomoedas, as funções de hash criptográfico são cruciais. Portanto, se você estiver interessado na tecnologia blockchain, será de grande benefício compreender as propriedades e o mecanismo operacional das funções hash criptográficas.