O hash: Conceito fundamental em criptografia e blockchain

O hashing é um processo que transforma dados de qualquer tamanho em uma cadeia de comprimento fixo. Este procedimento é realizado através de fórmulas matemáticas conhecidas como funções hash, implementadas como algoritmos.

Embora nem todas as funções hash envolvam criptografia, as chamadas funções hash criptográficas são essenciais no mundo das criptomoedas. Graças a elas, as cadeias de blocos e outros sistemas descentralizados conseguem altos níveis de integridade e segurança de dados.

As funções hash, tanto convencionais como criptográficas, são deterministas. Isso significa que, enquanto a entrada não mudar, o algoritmo sempre produzirá a mesma saída ( também chamada de digest ou hash ).

Geralmente, os algoritmos hash em criptomoedas são projetados como funções unidirecionais, o que implica que não podem ser revertidos facilmente sem uma quantidade significativa de tempo e recursos computacionais. Em outras palavras, é relativamente simples gerar a saída a partir da entrada, mas extremamente complexo fazer o contrário. Em termos gerais, quanto mais difícil for encontrar a entrada original, mais seguro se considera o algoritmo hash.

Funcionamento de uma função hash

Funções hash diferentes geram resultados de tamanhos diferentes, mas os tamanhos de saída possíveis para cada algoritmo hash são sempre constantes. Por exemplo, o algoritmo SHA-256 só pode produzir resultados de 256 bits, enquanto o SHA-1 sempre gerará um digest de 160 bits.

Para ilustrar, passemos as palavras "Gate" e "Gate" pelo algoritmo hash SHA-256 ( utilizado no Bitcoin ).

SHA-256

Entrada

Saída (256 bits)

Gate

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Gate

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

Observe que um mínimo de alteração (na maiúscula da primeira letra) resultou em um valor hash completamente diferente. No entanto, ao utilizar SHA-256, as saídas terão sempre um tamanho fixo de 256 bits (ou 64 caracteres), independentemente do tamanho da entrada. Além disso, não importa quantas vezes executemos as duas palavras através do algoritmo, as duas saídas permanecerão constantes.

Em contraste, se executarmos as mesmas entradas através do algoritmo hash SHA-1, obteríamos os seguintes resultados:

SHA-1

Entrada

Saída (160 bits)

Gate

3a7bd3e2360a3d29eea436fcfb7e44c735d117c4

Gate

5df9954f1ca26eabf18c663cc9258ba7f7712c45

É importante mencionar que SHA significa Secure Hash Algorithms. Refere-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. O SHA-256 faz parte do grupo SHA-2, juntamente com o SHA-512 e outras variantes. Atualmente, apenas os grupos SHA-2 e SHA-3 são considerados seguros.

Importância do hashing

As funções hash convencionais têm uma ampla gama de aplicações, incluindo pesquisas em bases de dados, análise de arquivos grandes e gestão de dados. Por outro lado, as funções hash criptográficas são utilizadas extensivamente em aplicações de segurança da informação, como a autenticação de mensagens e a criação de impressões digitais. No contexto do Bitcoin, as funções hash criptográficas são uma parte essencial do processo de mineração e também desempenham um papel crucial na geração de novos endereços e chaves.

O verdadeiro poder do hashing manifesta-se quando se trata de enormes quantidades de informação. Por exemplo, pode-se executar um arquivo ou conjunto de dados grande através de uma função hash e depois usar a sua saída para verificar rapidamente a precisão e integridade dos dados. Isto é possível devido à natureza determinística das funções hash: a entrada sempre produzirá uma saída simplificada e condensada (hash). Esta técnica elimina a necessidade de armazenar e "lembrar" grandes quantidades de dados.

A hash é particularmente útil no contexto da tecnologia blockchain. A cadeia de blocos do Bitcoin tem várias operações que envolvem hash, a maioria delas dentro do processo de mineração. De fato, quase todos os protocolos de criptomoedas são baseados em hash para vincular e condensar grupos de transações em blocos, e também para produzir ligações criptográficas entre cada bloco, criando efetivamente uma cadeia de blocos.

Funções hash criptográficas

Uma função hash que implementa técnicas criptográficas pode ser definida como uma função hash criptográfica. Em geral, quebrar uma função hash criptográfica requer incontáveis tentativas de força bruta. Para que uma pessoa "reverta" uma função hash criptográfica, teria que adivinhar qual foi a entrada por meio de tentativa e erro até que se produza a saída correspondente. No entanto, também existe a possibilidade de que entradas diferentes produzam exatamente o mesmo resultado, caso em que ocorre uma "colisão".

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

Antes de analisar cada propriedade, vamos resumir a sua lógica em três frases curtas:

  • Resistência à colisão: não é viável encontrar duas entradas distintas que produzam o mesmo hash como saída.

  • Resistência prévia à imagem: não é viável "reverter" a função hash ( encontrar a entrada de uma saída determinada ).

  • Resistência à segunda pré-imagem: não é possível encontrar uma segunda entrada que colida com uma entrada específica.

Resistência à colisão

Uma colisão ocorre quando diferentes entradas produzem exatamente o mesmo hash. Portanto, uma função hash é considerada resistente a colisões até que alguém encontre uma colisão. É importante ter em mente que sempre existirão colisões para qualquer função hash, pois as entradas possíveis são infinitas, enquanto as saídas possíveis são finitas.

Em outras palavras, uma função hash é resistente a colisões quando a possibilidade de encontrar uma colisão é tão baixa que exigiria milhões de anos de cálculos. Assim, embora não existam funções hash livres de colisões, algumas delas são robustas o suficiente para serem consideradas resistentes (por exemplo, SHA-256).

Entre os diferentes algoritmos SHA, os grupos SHA-0 e SHA-1 já não são considerados seguros porque foram encontradas colisões. Atualmente, os grupos SHA-2 e SHA-3 são considerados resistentes a colisões.

Resistência anterior à imagem

A propriedade da resistência à pré-imagem está relacionada com o conceito de funções unidireccionais. Uma função hash é considerada resistente à pré-imagem quando existe uma probabilidade muito baixa de que alguém encontre a entrada que gerou uma saída particular.

É importante notar que esta propriedade é diferente da anterior porque um atacante tentaria adivinhar qual foi a entrada ao observar uma saída determinada. Uma colisão, por outro lado, ocorre quando alguém encontra duas entradas diferentes que geram a mesma saída, mas não importa quais entradas foram utilizadas.

A propriedade de resistência à pré-imagem é valiosa para proteger os dados porque um simples hash de uma mensagem pode demonstrar sua autenticidade, sem necessidade de revelar a informação. Na prática, muitos provedores de serviços e aplicações web armazenam e utilizam hashes gerados a partir de senhas em vez de senhas em texto simples.

Resistência à segunda pré-imagem

Para simplificar, podemos dizer que a resistência da segunda pré-imagem está em algum ponto intermédio entre as outras duas propriedades. Um ataque de segunda pré-imagem ocorre quando alguém é capaz de encontrar uma entrada específica que gera a mesma saída de outra entrada que já conhece.

Em outras palavras, um ataque de segunda pré-imagem implica encontrar uma colisão, mas em vez de procurar duas entradas aleatórias que gerem o mesmo hash, procura-se uma entrada que gere o mesmo hash produzido por outra entrada específica.

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

Mineração e hash

O processo de mineração de Bitcoin envolve numerosas operações de hash, como a verificação de saldos, a vinculação de entradas e saídas de transações, e o hashing de transações dentro de um bloco para formar uma árvore de Merkle. No entanto, uma das principais razões pelas quais a cadeia de blocos de Bitcoin é segura é o fato de que os mineradores precisam realizar uma grande quantidade de operações de hash para finalmente encontrar uma solução válida para o próximo bloco.

Especificamente, um minerador deve testar várias entradas diferentes ao criar um valor hash para o seu bloco candidato. Em essência, só poderão validar o seu bloco se gerarem um hash de saída que comece com uma certa quantidade de zeros. A quantidade de zeros é o que determina a dificuldade da mineração e varia de acordo com a taxa de hash dedicada à rede.

Neste contexto, a taxa de hash representa quanta potência computacional é investida na mineração de Bitcoin. Se a taxa de hash da rede aumentar, o protocolo Bitcoin ajustará automaticamente a dificuldade de extração para que o tempo médio necessário para extrair um bloco se mantenha próximo a 10 minutos. Por outro lado, se vários mineradores decidirem parar de minerar, fazendo com que a taxa de hash caia significativamente, a dificuldade de mineração será ajustada, tornando mais fácil minerar (até que o tempo médio de bloco volte a 10 minutos).

É importante destacar que os mineiros não têm que encontrar colisões porque existem múltiplos hashes que podem gerar como saída válida ( começando com uma certa quantidade de zeros ). Portanto, há várias soluções possíveis para um determinado bloco, e os mineiros só têm que encontrar uma delas, de acordo com o limiar determinado pela dificuldade da mineração.

Uma vez que a mineração de Bitcoin é uma tarefa dispendiosa, os mineradores não têm motivos para enganar o sistema, pois isso resultaria em perdas financeiras significativas. Quanto mais mineradores se juntam a uma cadeia de blocos, maior e mais forte ela se torna.

Reflexões finais

Sem dúvida, as funções hash são ferramentas fundamentais em informática, especialmente quando se trata de grandes volumes de dados. Quando combinadas com a criptografia, os algoritmos hash podem ser bastante versáteis e oferecem segurança e autenticação de muitas maneiras diferentes. Como tal, as funções hash criptográficas são vitais para quase todas as redes de criptomoedas, por isso compreender as suas propriedades e mecanismos de funcionamento é sem dúvida útil para qualquer pessoa interessada na tecnologia blockchain.

EL-0.29%
Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
  • Recompensa
  • Comentar
  • Republicar
  • Partilhar
Comentar
0/400
Nenhum comentário
  • Pino
Negocie cripto em qualquer lugar e a qualquer hora
qrCode
Digitalizar para transferir a aplicação Gate
Novidades
Português (Portugal)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)