A função hash criptográfica (CHF) existe desde a década de 1980 e tem ampla utilidade na criptografia, na verificação da integridade dos dados, na indexação de bancos de dados e em vários outros domínios.
Ao calcular uma função de hash criptográfica, os dados de comprimento arbitrário são inseridos e a função correspondente os transforma em um valor de saída de comprimento fixo. Essa transformação envolve a aplicação de várias operações a diferentes segmentos dos dados de entrada, comumente chamados de Hash. A saída resultante é conhecida como valor de hash, e a operação em si é denominada função de hash.
Um exemplo ilustrativo é o Algoritmo MD5, usado com frequência em downloaders P2P, caracterizado por um comprimento de 128 bits. Os usuários podem comparar o valor de hash de um arquivo baixado com o valor fornecido pela fonte; uma correspondência indica a provável integridade do arquivo.
Outra aplicação predominante é a autenticação de senhas em sites. Para proteger as senhas dos usuários, a maioria das plataformas armazena senhas com hash em vez de entradas de texto simples. Quando um usuário faz login, o sistema calcula a função hash da senha inserida e a compara com o valor armazenado associado ao nome de usuário. A natureza irreversível da função de hash criptográfico protege contra a descriptografia de senhas, mesmo que os hackers obtenham os valores de hash do banco de dados.
A pesquisa "SHA256 Generator" revela que diferentes sites que utilizam o mesmo algoritmo geram consistentemente valores de hash idênticos para textos de entrada semelhantes.
Além disso, a alteração do caso do texto de entrada resulta em valores de hash de saída totalmente distintos, conhecidos como Efeito Avalanche. As seguintes características medem a segurança de uma função hash criptográfica:
No exemplo mencionado acima, a reconstrução da senha de um usuário a partir de valores de hash roubados apresenta uma dificuldade significativa. As operações complexas e a compactação de informações nas funções de hash criptográficas dificultam a engenharia reversa, enfatizando sua natureza unidirecional.
Segunda resistência à pré-imagem: É difícil identificar outro valor de entrada que produza o mesmo valor de hash com uma entrada inicial. **Esse recurso é chamado de resistência fraca à colisão.
Resistência à colisão: Descobrir dois valores distintos que produzem valores de hash idênticos é um desafio e é chamado de colisão de hash criptográfico. Essa propriedade denota uma forte resistência à colisão.
Tomando o MD5 mencionado como exemplo, é possível que arquivos diferentes gerem o mesmo valor de hash? A resposta é sim, mas a probabilidade é extremamente baixa. Esse fenômeno é conhecido como colisão de hash criptográfico, que pode ocorrer acidentalmente ou por meio de um ataque deliberado. A probabilidade de colisão padrão do algoritmo MD5 é de aproximadamente 1/2¹²⁸, o que torna as ocorrências acidentais muito improváveis. No entanto, o MD5 é considerado vulnerável a ataques deliberados de colisão, pois produzir o mesmo valor de hash para dois textos simples diferentes é relativamente fácil. Portanto, embora o algoritmo MD5 ainda possa ser usado para tarefas que não envolvam segurança, ele não é mais adequado para tarefas de autenticação de segurança (como autenticação de chaves ou assinaturas digitais).
O Ethereum usa a função de hash criptográfico KECCAK-256, que muitas pessoas identificam erroneamente como SHA-3 (inclusive na tese de doutorado do fundador da Celestia) porque essa função foi originalmente escrita como 'sha3' no Solidity. Devido à confusão, ele foi posteriormente renomeado para Keccak256.
A MetaMask utiliza várias funções de hash criptográficas em suas operações:
O Bitcoin utiliza a função de hash criptográfico SHA-256. Aqui, elucidaremos o processo pelo qual os mineradores de Bitcoin se envolvem com funções de hash criptográficas durante as atividades de mineração.
Na mineração de Bitcoin, os mineradores amalgamam os dados da transação com um cabeçalho de bloco, que inclui detalhes da transação juntamente com metadados como carimbos de data e hora e números aleatórios. Os mineradores se esforçam para produzir um hash SHA-256 específico, ajustando iterativamente os números aleatórios (chamados de "nonce") no cabeçalho do bloco com o objetivo de atender a critérios específicos, geralmente começando com um número definido de zeros à esquerda. Dada a natureza da função hash SHA-256, o único método para descobrir um hash compatível é por meio de experimentos contínuos com diferentes números aleatórios.
Ao encontrar um hash que atenda aos requisitos, os mineradores podem anexar o bloco ao blockchain da rede Bitcoin e receber uma quantidade designada de Bitcoins como recompensa. Esse processo, conhecido como "mineração", envolve a execução contínua de funções de hash para identificar um valor de hash que atenda aos critérios especificados.
Além da mineração, as funções de hash criptográficas são fundamentais para estabelecer vínculos entre blocos e rastrear alterações de transações nos sistemas de blockchain. Os ponteiros de hash servem como estruturas de dados que facilitam a indexação, a recuperação e a verificação de modificações nos dados. Cada transação dentro do blockchain passa por um processo de hashing antes de ser organizada em blocos. Em seguida, um ponteiro de hash conecta cada bloco ao seu antecedente, armazenando um hash dos dados do bloco anterior. A natureza interconectada dos blocos garante a imutabilidade dentro da blockchain; qualquer modificação em uma transação resulta em um valor de hash distinto, alterando, consequentemente, os hashes de todos os blocos subsequentes. Por exemplo, considere um blockchain composto por dois blocos:
Bloco 1: engloba os hashes das transações T1, T2 e T3.
Bloco 2: apresenta os hashes das transações T4, T5 e T6, juntamente com o hash do Bloco 1.
Se um indivíduo tentar adulterar a transação T1 no Bloco 1, ele precisará recalibrar o valor de hash do Bloco 1 e atualizar o novo valor no Bloco 2. Entretanto, devido à natureza unidirecional e de resistência à pré-imagem das funções de hash criptográficas, reverter a transação T1 no Bloco 1 com base no valor de hash do Bloco 2 é um desafio.
Além disso, como o Bloco 2 incorpora o valor de hash do Bloco 1, a adulteração do Bloco 1 consequentemente alteraria o valor de hash do Bloco 2. Isso exige a adulteração simultânea de todos os blocos subsequentes para quaisquer modificações no blockchain - uma tarefa formidável. Consequentemente, as funções de hash criptográficas mantêm de forma eficaz a coerência e a integridade dos dados do blockchain.
No âmbito do blockchain, a função hash criptográfica cumpre várias funções essenciais:
Vinculação de blocos: O cabeçalho de cada bloco contém o valor de hash do bloco anterior, facilitando uma cadeia conectada de blocos que garante a integridade inviolável.
Validação da transação: Os dados da transação são submetidos a hashing, com o valor de hash resultante incluído no bloco, validando a autenticidade e a integridade da transação.
Mecanismo de consenso: No mecanismo de consenso Proof of Work (PoW), os mineradores devem identificar um valor nonce que atenda aos requisitos de dificuldade executando funções hash.
Em 2 de setembro de 2022, Vitalik publicou uma pergunta no Twitter (X), perguntando qual função hash criptográfica permaneceria segura se um computador quântico usando o algoritmo de Shor fosse inventado.
Fonte: Vitalik tweet
Ele indicou que um computador quântico capaz de utilizar o algoritmo de Shor poderia quebrar o RSA (um criptossistema de chave pública de longa data) ou qualquer coisa baseada em fatoração, curvas elípticas e grupos de ordem desconhecida. No entanto, os valores de hash (como o SHA-256) se saem bem no contexto da computação quântica, embora sua segurança seja um pouco reduzida, o que recomenda o uso de valores de hash mais longos.
Qual é a robustez das funções de hash criptográficas, como a SHA-256? O "256" em SHA-256 representa 2 elevado à potência de 256, um número tão grande que é difícil de entender concretamente.
Fonte: 3Blue1Brown
No entanto, 3Blue1Brown apresentou uma analogia vívida para ajudar a compreender a segurança das funções de hash criptográficas: imagine um cenário em que 4 bilhões de pessoas na Terra possuam um computador com recursos de computação excepcionais, equivalente a 1.000 vezes o poder de computação do Google em todo o mundo. Ao mesmo tempo, imagine um cosmos com 4 bilhões de planetas e 4 bilhões de galáxias semelhantes à Via Láctea! Mesmo sob essas condições extremas, seriam necessários mais de 500 bilhões de anos para que houvesse uma chance de 1 em 4 bilhões de adivinhar com precisão "a entrada específica necessária para gerar o valor de hash de saída SHA-256".
A função hash criptográfica (CHF) existe desde a década de 1980 e tem ampla utilidade na criptografia, na verificação da integridade dos dados, na indexação de bancos de dados e em vários outros domínios.
Ao calcular uma função de hash criptográfica, os dados de comprimento arbitrário são inseridos e a função correspondente os transforma em um valor de saída de comprimento fixo. Essa transformação envolve a aplicação de várias operações a diferentes segmentos dos dados de entrada, comumente chamados de Hash. A saída resultante é conhecida como valor de hash, e a operação em si é denominada função de hash.
Um exemplo ilustrativo é o Algoritmo MD5, usado com frequência em downloaders P2P, caracterizado por um comprimento de 128 bits. Os usuários podem comparar o valor de hash de um arquivo baixado com o valor fornecido pela fonte; uma correspondência indica a provável integridade do arquivo.
Outra aplicação predominante é a autenticação de senhas em sites. Para proteger as senhas dos usuários, a maioria das plataformas armazena senhas com hash em vez de entradas de texto simples. Quando um usuário faz login, o sistema calcula a função hash da senha inserida e a compara com o valor armazenado associado ao nome de usuário. A natureza irreversível da função de hash criptográfico protege contra a descriptografia de senhas, mesmo que os hackers obtenham os valores de hash do banco de dados.
A pesquisa "SHA256 Generator" revela que diferentes sites que utilizam o mesmo algoritmo geram consistentemente valores de hash idênticos para textos de entrada semelhantes.
Além disso, a alteração do caso do texto de entrada resulta em valores de hash de saída totalmente distintos, conhecidos como Efeito Avalanche. As seguintes características medem a segurança de uma função hash criptográfica:
No exemplo mencionado acima, a reconstrução da senha de um usuário a partir de valores de hash roubados apresenta uma dificuldade significativa. As operações complexas e a compactação de informações nas funções de hash criptográficas dificultam a engenharia reversa, enfatizando sua natureza unidirecional.
Segunda resistência à pré-imagem: É difícil identificar outro valor de entrada que produza o mesmo valor de hash com uma entrada inicial. **Esse recurso é chamado de resistência fraca à colisão.
Resistência à colisão: Descobrir dois valores distintos que produzem valores de hash idênticos é um desafio e é chamado de colisão de hash criptográfico. Essa propriedade denota uma forte resistência à colisão.
Tomando o MD5 mencionado como exemplo, é possível que arquivos diferentes gerem o mesmo valor de hash? A resposta é sim, mas a probabilidade é extremamente baixa. Esse fenômeno é conhecido como colisão de hash criptográfico, que pode ocorrer acidentalmente ou por meio de um ataque deliberado. A probabilidade de colisão padrão do algoritmo MD5 é de aproximadamente 1/2¹²⁸, o que torna as ocorrências acidentais muito improváveis. No entanto, o MD5 é considerado vulnerável a ataques deliberados de colisão, pois produzir o mesmo valor de hash para dois textos simples diferentes é relativamente fácil. Portanto, embora o algoritmo MD5 ainda possa ser usado para tarefas que não envolvam segurança, ele não é mais adequado para tarefas de autenticação de segurança (como autenticação de chaves ou assinaturas digitais).
O Ethereum usa a função de hash criptográfico KECCAK-256, que muitas pessoas identificam erroneamente como SHA-3 (inclusive na tese de doutorado do fundador da Celestia) porque essa função foi originalmente escrita como 'sha3' no Solidity. Devido à confusão, ele foi posteriormente renomeado para Keccak256.
A MetaMask utiliza várias funções de hash criptográficas em suas operações:
O Bitcoin utiliza a função de hash criptográfico SHA-256. Aqui, elucidaremos o processo pelo qual os mineradores de Bitcoin se envolvem com funções de hash criptográficas durante as atividades de mineração.
Na mineração de Bitcoin, os mineradores amalgamam os dados da transação com um cabeçalho de bloco, que inclui detalhes da transação juntamente com metadados como carimbos de data e hora e números aleatórios. Os mineradores se esforçam para produzir um hash SHA-256 específico, ajustando iterativamente os números aleatórios (chamados de "nonce") no cabeçalho do bloco com o objetivo de atender a critérios específicos, geralmente começando com um número definido de zeros à esquerda. Dada a natureza da função hash SHA-256, o único método para descobrir um hash compatível é por meio de experimentos contínuos com diferentes números aleatórios.
Ao encontrar um hash que atenda aos requisitos, os mineradores podem anexar o bloco ao blockchain da rede Bitcoin e receber uma quantidade designada de Bitcoins como recompensa. Esse processo, conhecido como "mineração", envolve a execução contínua de funções de hash para identificar um valor de hash que atenda aos critérios especificados.
Além da mineração, as funções de hash criptográficas são fundamentais para estabelecer vínculos entre blocos e rastrear alterações de transações nos sistemas de blockchain. Os ponteiros de hash servem como estruturas de dados que facilitam a indexação, a recuperação e a verificação de modificações nos dados. Cada transação dentro do blockchain passa por um processo de hashing antes de ser organizada em blocos. Em seguida, um ponteiro de hash conecta cada bloco ao seu antecedente, armazenando um hash dos dados do bloco anterior. A natureza interconectada dos blocos garante a imutabilidade dentro da blockchain; qualquer modificação em uma transação resulta em um valor de hash distinto, alterando, consequentemente, os hashes de todos os blocos subsequentes. Por exemplo, considere um blockchain composto por dois blocos:
Bloco 1: engloba os hashes das transações T1, T2 e T3.
Bloco 2: apresenta os hashes das transações T4, T5 e T6, juntamente com o hash do Bloco 1.
Se um indivíduo tentar adulterar a transação T1 no Bloco 1, ele precisará recalibrar o valor de hash do Bloco 1 e atualizar o novo valor no Bloco 2. Entretanto, devido à natureza unidirecional e de resistência à pré-imagem das funções de hash criptográficas, reverter a transação T1 no Bloco 1 com base no valor de hash do Bloco 2 é um desafio.
Além disso, como o Bloco 2 incorpora o valor de hash do Bloco 1, a adulteração do Bloco 1 consequentemente alteraria o valor de hash do Bloco 2. Isso exige a adulteração simultânea de todos os blocos subsequentes para quaisquer modificações no blockchain - uma tarefa formidável. Consequentemente, as funções de hash criptográficas mantêm de forma eficaz a coerência e a integridade dos dados do blockchain.
No âmbito do blockchain, a função hash criptográfica cumpre várias funções essenciais:
Vinculação de blocos: O cabeçalho de cada bloco contém o valor de hash do bloco anterior, facilitando uma cadeia conectada de blocos que garante a integridade inviolável.
Validação da transação: Os dados da transação são submetidos a hashing, com o valor de hash resultante incluído no bloco, validando a autenticidade e a integridade da transação.
Mecanismo de consenso: No mecanismo de consenso Proof of Work (PoW), os mineradores devem identificar um valor nonce que atenda aos requisitos de dificuldade executando funções hash.
Em 2 de setembro de 2022, Vitalik publicou uma pergunta no Twitter (X), perguntando qual função hash criptográfica permaneceria segura se um computador quântico usando o algoritmo de Shor fosse inventado.
Fonte: Vitalik tweet
Ele indicou que um computador quântico capaz de utilizar o algoritmo de Shor poderia quebrar o RSA (um criptossistema de chave pública de longa data) ou qualquer coisa baseada em fatoração, curvas elípticas e grupos de ordem desconhecida. No entanto, os valores de hash (como o SHA-256) se saem bem no contexto da computação quântica, embora sua segurança seja um pouco reduzida, o que recomenda o uso de valores de hash mais longos.
Qual é a robustez das funções de hash criptográficas, como a SHA-256? O "256" em SHA-256 representa 2 elevado à potência de 256, um número tão grande que é difícil de entender concretamente.
Fonte: 3Blue1Brown
No entanto, 3Blue1Brown apresentou uma analogia vívida para ajudar a compreender a segurança das funções de hash criptográficas: imagine um cenário em que 4 bilhões de pessoas na Terra possuam um computador com recursos de computação excepcionais, equivalente a 1.000 vezes o poder de computação do Google em todo o mundo. Ao mesmo tempo, imagine um cosmos com 4 bilhões de planetas e 4 bilhões de galáxias semelhantes à Via Láctea! Mesmo sob essas condições extremas, seriam necessários mais de 500 bilhões de anos para que houvesse uma chance de 1 em 4 bilhões de adivinhar com precisão "a entrada específica necessária para gerar o valor de hash de saída SHA-256".