Os hashes: Elementos fundamentais em criptomoedas

O processo de hash implica gerar uma saída de tamanho constante a partir de uma entrada variável. Isso é alcançado através de uma fórmula matemática denominada função hash, implementada como um algoritmo.

Embora nem todas as funções hash estejam relacionadas à criptografia, as funções hash criptográficas são essenciais no mundo das criptomoedas. Graças a elas, as blockchains e outros sistemas distribuídos podem alcançar altos níveis de integridade e segurança de dados.

Tanto as funções hash convencionais como as criptográficas partilham uma característica chave: são deterministas. Isto significa que, enquanto a entrada não mudar, o algoritmo hash sempre produzirá a mesma saída ( também conhecida como digest ou hash).

Em particular, o algoritmo hash utilizado em criptomoedas é projetado como uma função unidirecional, o que implica que é praticamente impossível revertê-lo sem uma quantidade massiva de tempo e recursos computacionais. Em outras palavras, é simples obter resultados a partir de inputs, mas extremamente complexo fazer o contrário. Geralmente, quanto mais difícil for deduzir a entrada, mais seguro será o algoritmo hash.

Funcionamento da função hash

Diferentes funções hash produzem resultados de tamanhos distintos, mas o tamanho de saída de cada algoritmo hash é sempre constante. Por exemplo, o algoritmo SHA-256 sempre gerará uma saída de 256 bits, enquanto o SHA-1 produzirá invariavelmente um digest de 160 bits.

Para ilustrar isso, apliquemos o algoritmo hash SHA-256 ( utilizado no Bitcoin ) às palavras "Gate" e "Gate".

SHA-256

Entrada

Output (256 bits)

Gate

9e14f90f0831e9d9c9f4f90df9e9f90c9f4f90df9e9f90c9f4f90df9e9f90c9

Gate

1e9d9c9f4f90df9e9f90c9f4f90df9e9f90c9f4f90df9e9f90c9f4f90df9e9f

Observe como pequenas variações (como a mudança de maiúsculas para minúsculas) resultam em valores hash completamente diferentes. No entanto, ao utilizar SHA-256, a saída terá sempre um tamanho fixo de 256 bits (ou 64 caracteres), independentemente do tamanho da entrada. Além disso, não importa quantas vezes processemos essas duas palavras com o algoritmo, ambas as saídas permanecerão constantes.

Por outro lado, se aplicarmos o algoritmo hash SHA-1 às mesmas entradas, obteremos os seguintes resultados:

SHA-1

Entrada

Output (160 bits)

Gate

c9f4f90df9e9f90c9f4f90df9e9f90c9f4f90df

Gate

f90df9e9f90c9f4f90df9e9f90c9f4f90df9e9

As siglas SHA significam Secure Hash Algorithms, referindo-se a um conjunto de funções hash criptográficas que incluem os algoritmos SHA-0 e SHA-1, juntamente com os grupos SHA-2 e SHA-3. SHA-256 pertence ao grupo SHA-2, juntamente com SHA-512 e outras variantes. Atualmente, apenas os grupos SHA-2 e SHA-3 são considerados seguros.

Relevância das funções hash

As funções hash convencionais têm uma ampla gama de aplicações, incluindo buscas em bases de dados, análise de big data e gestão de informação. Por sua vez, as funções hash criptográficas são utilizadas extensivamente em aplicações de segurança da informação, como autenticação de mensagens e geração de impressões digitais. No contexto do Bitcoin, as funções hash criptográficas são fundamentais no processo de mineração e contribuem para a geração de novos endereços e chaves.

O verdadeiro potencial do hashing evidencia-se ao lidar com grandes volumes de informação. Por exemplo, é possível processar um arquivo extenso ou um conjunto de dados através de uma função hash e utilizar a saída para verificar rapidamente a precisão e integridade dos dados. Isso é viável devido à natureza determinística das funções hash: a entrada sempre produz uma saída simples e concisa (hash). Técnicas como esta eliminam a necessidade de armazenar e "lembrar" grandes quantidades de informação.

Em particular, o hashing é extremamente útil na tecnologia blockchain. A cadeia de blocos do Bitcoin envolve vários processos que utilizam hashing, principalmente no processo de mineração. De fato, praticamente todos os protocolos de criptomoedas baseiam-se no hashing para agrupar transações em blocos e gerar ligações criptográficas entre blocos individuais, criando efetivamente uma cadeia de blocos.

Funções hash criptográficas

Uma função hash que implementa técnicas criptográficas é definida como função hash criptográfica. Em geral, quebrar uma função hash criptográfica requer um esforço considerável de força bruta. Se alguém tentar "reverter" uma função hash criptográfica, deve adivinhar a entrada por meio de tentativa e erro até obter a saída correta. No entanto, também é possível que diferentes entradas produzam exatamente a mesma saída, o que é conhecido como "colisão".

Tecnicamente, uma função hash criptográfica deve cumprir três propriedades para ser considerada segura e eficaz. Podemos descrevê-las como resistência a colisões, resistência a pré-imagem e resistência a segunda pré-imagem.

Resumamos esta lógica em três frases concisas:

  • Resistência a colisões: É difícil encontrar duas entradas diferentes que produzam o mesmo hash como saída.

  • Resistência à pré-imagem: É difícil "inverter" uma função hash ( deduzir a entrada a partir da saída disponível ).

  • Resistência à segunda pré-imagem: É difícil encontrar uma segunda entrada que colida com uma entrada específica.

Resistência a colisões

Uma colisão ocorre quando entradas diferentes produzem o mesmo hash. Portanto, considera-se que uma função hash é resistente a colisões até que uma colisão ocorra. Vale ressaltar que essas colisões sempre existirão para qualquer função hash, uma vez que as entradas possíveis são infinitas, enquanto as saídas possíveis são limitadas.

Em outras palavras, diz-se que uma função hash é resistente a colisões quando a probabilidade de encontrar uma colisão é extremamente baixa, requerendo milhões de anos de cálculo. Assim, embora não existam funções hash livres de colisões, algumas são muito potentes e podem ser consideradas robustas (exemplo: SHA-256).

Entre os diversos algoritmos SHA, os grupos SHA-0 e SHA-1 já não são considerados seguros, uma vez que foram descobertas colisões. Atualmente, os grupos SHA-2 e SHA-3 são considerados resistentes a colisões.

Resistência a pré-imagem

A propriedade de resistência a pré-imagem está relacionada com o conceito de funções unidireccionais. Considera-se que uma função hash é resistente a pré-imagem quando a probabilidade de alguém encontrar uma entrada que resulte numa saída particular é muito baixa.

É importante notar que esta propriedade difere da anterior, uma vez que aqui o atacante tenta adivinhar a entrada observando a saída disponível. Uma colisão, por outro lado, ocorre quando alguém encontra duas entradas diferentes que produzem a mesma saída, não importando qual seja utilizada.

A propriedade de resistência a pré-imagem é muito útil para proteger dados, uma vez que um simples hash de uma mensagem pode demonstrar sua autenticidade sem revelar a informação. Na prática, muitos fornecedores de serviços e aplicações web armazenam e utilizam os hashes resultantes das senhas em vez das senhas em texto plano.

Resistência à segunda pré-imagem

Em resumo, podemos dizer que a resistência a segunda pré-imagem está entre as duas propriedades mencionadas anteriormente. Um ataque de segunda pré-imagem ocorre quando alguém consegue encontrar uma entrada particular que produz a mesma saída que outra entrada diferente já conhecida.

Em outras palavras, o ataque de segunda pré-imagem consiste em encontrar colisões, mas em vez de procurar duas entradas aleatórias que produzam o mesmo hash, procura-se entradas que produzam o mesmo hash gerado por outra entrada específica.

Portanto, qualquer função hash resistente a colisões também é resistente a ataques de segunda pré-imagem. No entanto, ainda é possível realizar um ataque de pré-imagem a uma função resistente a colisões, uma vez que isso implica encontrar uma única entrada a partir de uma única saída.

Mineração

Existem numerosos passos na mineração de bitcoins que envolvem funções hash, como verificar saldos, vincular transações de entrada e saída, e hashear transações dentro de um bloco para formar uma árvore de Merkle. Mas uma das principais razões pelas quais a cadeia de blocos do Bitcoin é segura é o fato de que os mineradores devem realizar uma grande quantidade de operações de hash para, em última instância, encontrar a solução correta para o próximo bloco.

Especificamente, um minerador deve testar várias entradas diferentes ao gerar valores hash para os seus blocos candidatos. Essencialmente, só pode validar o seu bloco se produzir um hash de saída que comece com uma certa quantidade de zeros. A quantidade de zeros determina a dificuldade da mineração, e isso varia de acordo com a taxa de hash específica da rede.

Neste contexto, a taxa de hash representa quanta potência computacional é utilizada para a mineração de Bitcoin. Se a taxa de hash da rede aumentar, o protocolo Bitcoin ajustará automaticamente a dificuldade de mineração, de modo que o tempo médio necessário para minerar um bloco se mantenha próximo a 10 minutos. Por outro lado, se alguns mineradores decidirem abandonar a atividade, provocando uma diminuição drástica na taxa de hash, a dificuldade de mineração será ajustada, tornando-a mais fácil (até que o tempo médio de bloco volte a 10 minutos).

É importante entender que os mineradores não precisam encontrar colisões, uma vez que há muitos hashes que podem produzir como saída válida ( começando com uma certa quantidade de zeros ). Portanto, existem várias soluções possíveis para um bloco em particular, e os mineradores só precisam encontrar uma solução que cumpra com o limiar determinado pelo nível de dificuldade da mineração.

Uma vez que a mineração de Bitcoin é uma tarefa cara, os mineradores não têm incentivos para enganar o sistema, o que resultaria em perdas financeiras significativas. Quanto mais mineradores se juntarem à cadeia de blocos, maior e mais robusta se tornará.

Reflexão final

Não há dúvida de que as funções hash são uma ferramenta fundamental em informática, especialmente quando se trata de grandes volumes de dados. Quando combinadas com a criptografia, os algoritmos hash podem ser versáteis e oferecer segurança e autenticidade de diversas formas. Portanto, as funções hash criptográficas são essenciais para praticamente todas as redes de criptomoedas, por isso compreender suas propriedades e funcionamento é extremamente útil para qualquer pessoa interessada na tecnologia blockchain.

Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • Comentário
  • Repostar
  • Compartilhar
Comentário
0/400
Sem comentários
  • Marcar
Negocie criptomoedas a qualquer hora e em qualquer lugar
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)