A hash refere-se ao processo de gerar uma saída de tamanho fixo a partir de uma entrada de tamanho variável. Isso é feito por meio de fórmulas matemáticas conhecidas como funções hash ( implementadas como algoritmos hash ).
Embora nem todas as funções hash envolvam criptografia, as chamadas funções hash criptográficas são fundamentais no mundo cripto. Graças a elas, os blockchains e outros sistemas distribuídos alcançam níveis significativos de integridade e segurança de dados, algo que pessoalmente considero fascinante.
As funções hash convencionais e criptográficas são determinísticas. Isso significa que, enquanto a entrada não mudar, o algoritmo sempre produzirá a mesma saída ( também conhecida como resumo ou hash ). Acho incrível como algo tão complexo pode ser tão previsível.
Os algoritmos hash em criptomoedas são projetados como funções unidireccionais, o que significa que não podem ser revertidos facilmente sem enormes recursos computacionais. É bastante simples criar a saída a partir da entrada, mas quase impossível fazer o contrário. Em geral, quanto mais difícil for encontrar a entrada, mais seguro é considerado o algoritmo. E acreditem, alguns desses algoritmos são praticamente impenetráveis.
Como funciona uma função hash?
Diferentes funções hash produzem saídas de tamanhos distintos, mas os tamanhos de saída para cada algoritmo são sempre constantes. Por exemplo, o SHA-256 só pode produzir saídas de 256 bits, enquanto o SHA-1 sempre gerará um resumo de 160 bits.
Para ilustrá-lo, executemos as palavras "Binance" e "binance" através do algoritmo SHA-256 (o usado no Bitcoin).
Vê como uma pequena alteração (a primeira letra em maiúscula) resulta num hash completamente diferente? Fico fascinado com esta sensibilidade. Mas usando SHA-256, as saídas terão sempre um tamanho fixo de 256 bits (64 caracteres) independentemente do tamanho da entrada.
Por outro lado, se executarmos as mesmas entradas pelo SHA-1, obtemos:
SHA significa Secure Hash Algorithms, referindo-se a um conjunto de funções hash criptográficas que incluem SHA-0, SHA-1, SHA-2 e SHA-3. SHA-256 pertence ao grupo SHA-2. Atualmente, apenas SHA-2 e SHA-3 são considerados seguros, o que me leva a questionar por que alguns sistemas ainda utilizam os algoritmos mais antigos.
Por que são importantes?
As funções hash convencionais têm múltiplos usos: buscas em bases de dados, análise de arquivos grandes e gestão de dados. As funções hash criptográficas são amplamente utilizadas em segurança informática, autenticação de mensagens e identificação digital. No Bitcoin, são essenciais para a mineração e a geração de endereços e chaves.
O verdadeiro poder do hashing surge com grandes quantidades de informação. Podes executar um arquivo enorme através de uma função hash e usar a sua saída para verificar rapidamente a precisão e integridade dos dados. Isto elimina a necessidade de armazenar e "lembrar" grandes quantidades de informação, algo que considero brilhante na sua simplicidade.
A hashing é particularmente útil em blockchain. A cadeia de Bitcoin tem inúmeras operações que envolvem hashing, principalmente na mineração. Quase todos os protocolos cripto dependem do hashing para vincular transações em blocos e criar ligações criptográficas entre eles, formando efetivamente uma blockchain.
Funções hash criptográficas
Uma função hash que implementa técnicas criptográficas pode ser definida como função hash criptográfica. Quebrar uma dessas funções requer infinitas tentativas de força bruta. Para "reverter" uma função hash criptográfica, alguém precisaria adivinhar a entrada por tentativa e erro até produzir a saída correspondente. No entanto, existe a possibilidade de que diferentes entradas produzam exatamente a mesma saída, causando uma "colisão".
Tecnicamente, uma função hash criptográfica deve seguir três propriedades para ser considerada segura:
Resistência a colisões: impossível encontrar duas entradas distintas que produzam o mesmo hash
Resistência à pré-imagem: impossível "reverter" a função hash
Resistência à segunda pré-imagem: impossível encontrar outra entrada que colida com uma entrada específica
Resistência a colisões
Uma colisão ocorre quando entradas diferentes produzem exatamente o mesmo hash. Uma função hash é considerada resistente a colisões até que alguém encontre uma. Sempre existirão colisões para qualquer função hash porque as entradas possíveis são infinitas, enquanto as saídas são finitas.
Uma função hash é resistente a colisões quando a probabilidade de encontrar uma colisão é tão baixa que requereria milhões de anos de cálculos. SHA-0 e SHA-1 já não são seguros porque foram encontradas colisões. Atualmente, SHA-2 e SHA-3 são considerados resistentes a colisões.
Resistência a pré-imagem
Esta propriedade está relacionada com o conceito de funções unidirecionais. Uma função hash é resistente a pré-imagem quando há uma probabilidade muito baixa de alguém encontrar a entrada que gerou uma saída específica.
Esta propriedade é valiosa para a proteção de dados porque um simples hash pode provar a autenticidade de uma mensagem sem revelar a informação. Muitos fornecedores web armazenam hashes de palavras-passe em vez de palavras-passe em texto simples, algo que todos deveriam fazer, na minha opinião.
Resistência à segunda pré-imagem
Um ataque de segunda pré-imagem ocorre quando alguém encontra uma entrada específica que gera a mesma saída que outra entrada conhecida. Isso envolve encontrar uma colisão, mas procurando uma entrada que gere o mesmo hash que outra entrada específica.
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 em uma função resistente a colisões.
Mineração
A mineração de Bitcoin envolve muitas operações de hash: verificação de saldos, vinculação de entradas e saídas de transações, e hash de transações dentro de um bloco para formar uma árvore Merkle. Mas o que realmente assegura a blockchain de Bitcoin é que os mineradores devem realizar infinitas operações de hash para encontrar uma solução válida para o próximo bloco.
Um minerador deve testar várias entradas diferentes ao criar um valor hash para o seu bloco candidato. Só poderá validar o seu bloco se gerar um hash que comece com um certo número de zeros. Este número determina a dificuldade de mineração e varia de acordo com o hashrate dedicado à rede.
A hash representa quanta potência computacional é investida na mineração. Se aumentar, o protocolo Bitcoin ajustará automaticamente a dificuldade para manter o tempo médio de mineração em aproximadamente 10 minutos. Se vários mineradores deixarem de minerar, a dificuldade diminuirá.
Os mineradores não precisam encontrar colisões porque existem vários hashes válidos ( que começam com um certo número de zeros ). Existem múltiplas soluções possíveis para um bloco determinado, e os mineradores só precisam encontrar uma.
Como a mineração é cara, os mineradores não têm motivos para enganar o sistema, pois isso causaria perdas financeiras significativas. Quanto mais mineradores houver em uma blockchain, mais forte se torna a rede.
Sem dúvida, as funções hash são ferramentas essenciais na informática, especialmente com grandes quantidades de dados. Combinadas com criptografia, oferecem segurança e autenticação de muitas maneiras. São vitais para quase todas as redes cripto, pelo que compreender as suas propriedades e mecanismos é útil para qualquer pessoa interessada em blockchain.
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.
O que é hash?
A hash refere-se ao processo de gerar uma saída de tamanho fixo a partir de uma entrada de tamanho variável. Isso é feito por meio de fórmulas matemáticas conhecidas como funções hash ( implementadas como algoritmos hash ).
Embora nem todas as funções hash envolvam criptografia, as chamadas funções hash criptográficas são fundamentais no mundo cripto. Graças a elas, os blockchains e outros sistemas distribuídos alcançam níveis significativos de integridade e segurança de dados, algo que pessoalmente considero fascinante.
As funções hash convencionais e criptográficas são determinísticas. Isso significa que, enquanto a entrada não mudar, o algoritmo sempre produzirá a mesma saída ( também conhecida como resumo ou hash ). Acho incrível como algo tão complexo pode ser tão previsível.
Os algoritmos hash em criptomoedas são projetados como funções unidireccionais, o que significa que não podem ser revertidos facilmente sem enormes recursos computacionais. É bastante simples criar a saída a partir da entrada, mas quase impossível fazer o contrário. Em geral, quanto mais difícil for encontrar a entrada, mais seguro é considerado o algoritmo. E acreditem, alguns desses algoritmos são praticamente impenetráveis.
Como funciona uma função hash?
Diferentes funções hash produzem saídas de tamanhos distintos, mas os tamanhos de saída para cada algoritmo são sempre constantes. Por exemplo, o SHA-256 só pode produzir saídas de 256 bits, enquanto o SHA-1 sempre gerará um resumo de 160 bits.
Para ilustrá-lo, executemos as palavras "Binance" e "binance" através do algoritmo SHA-256 (o usado no Bitcoin).
SHA-256 Entrada: Binance Saída: f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191
Entrada: binance Saída: 59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2
Vê como uma pequena alteração (a primeira letra em maiúscula) resulta num hash completamente diferente? Fico fascinado com esta sensibilidade. Mas usando SHA-256, as saídas terão sempre um tamanho fixo de 256 bits (64 caracteres) independentemente do tamanho da entrada.
Por outro lado, se executarmos as mesmas entradas pelo SHA-1, obtemos:
SHA-1 Entrada: Binance Saída: 7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1
Entrada: binance Saída: e58605c14a76ff98679322cca0eae7b3c4e08936
SHA significa Secure Hash Algorithms, referindo-se a um conjunto de funções hash criptográficas que incluem SHA-0, SHA-1, SHA-2 e SHA-3. SHA-256 pertence ao grupo SHA-2. Atualmente, apenas SHA-2 e SHA-3 são considerados seguros, o que me leva a questionar por que alguns sistemas ainda utilizam os algoritmos mais antigos.
Por que são importantes?
As funções hash convencionais têm múltiplos usos: buscas em bases de dados, análise de arquivos grandes e gestão de dados. As funções hash criptográficas são amplamente utilizadas em segurança informática, autenticação de mensagens e identificação digital. No Bitcoin, são essenciais para a mineração e a geração de endereços e chaves.
O verdadeiro poder do hashing surge com grandes quantidades de informação. Podes executar um arquivo enorme através de uma função hash e usar a sua saída para verificar rapidamente a precisão e integridade dos dados. Isto elimina a necessidade de armazenar e "lembrar" grandes quantidades de informação, algo que considero brilhante na sua simplicidade.
A hashing é particularmente útil em blockchain. A cadeia de Bitcoin tem inúmeras operações que envolvem hashing, principalmente na mineração. Quase todos os protocolos cripto dependem do hashing para vincular transações em blocos e criar ligações criptográficas entre eles, formando efetivamente uma blockchain.
Funções hash criptográficas
Uma função hash que implementa técnicas criptográficas pode ser definida como função hash criptográfica. Quebrar uma dessas funções requer infinitas tentativas de força bruta. Para "reverter" uma função hash criptográfica, alguém precisaria adivinhar a entrada por tentativa e erro até produzir a saída correspondente. No entanto, existe a possibilidade de que diferentes entradas produzam exatamente a mesma saída, causando uma "colisão".
Tecnicamente, uma função hash criptográfica deve seguir três propriedades para ser considerada segura:
Resistência a colisões
Uma colisão ocorre quando entradas diferentes produzem exatamente o mesmo hash. Uma função hash é considerada resistente a colisões até que alguém encontre uma. Sempre existirão colisões para qualquer função hash porque as entradas possíveis são infinitas, enquanto as saídas são finitas.
Uma função hash é resistente a colisões quando a probabilidade de encontrar uma colisão é tão baixa que requereria milhões de anos de cálculos. SHA-0 e SHA-1 já não são seguros porque foram encontradas colisões. Atualmente, SHA-2 e SHA-3 são considerados resistentes a colisões.
Resistência a pré-imagem
Esta propriedade está relacionada com o conceito de funções unidirecionais. Uma função hash é resistente a pré-imagem quando há uma probabilidade muito baixa de alguém encontrar a entrada que gerou uma saída específica.
Esta propriedade é valiosa para a proteção de dados porque um simples hash pode provar a autenticidade de uma mensagem sem revelar a informação. Muitos fornecedores web armazenam hashes de palavras-passe em vez de palavras-passe em texto simples, algo que todos deveriam fazer, na minha opinião.
Resistência à segunda pré-imagem
Um ataque de segunda pré-imagem ocorre quando alguém encontra uma entrada específica que gera a mesma saída que outra entrada conhecida. Isso envolve encontrar uma colisão, mas procurando uma entrada que gere o mesmo hash que outra entrada específica.
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 em uma função resistente a colisões.
Mineração
A mineração de Bitcoin envolve muitas operações de hash: verificação de saldos, vinculação de entradas e saídas de transações, e hash de transações dentro de um bloco para formar uma árvore Merkle. Mas o que realmente assegura a blockchain de Bitcoin é que os mineradores devem realizar infinitas operações de hash para encontrar uma solução válida para o próximo bloco.
Um minerador deve testar várias entradas diferentes ao criar um valor hash para o seu bloco candidato. Só poderá validar o seu bloco se gerar um hash que comece com um certo número de zeros. Este número determina a dificuldade de mineração e varia de acordo com o hashrate dedicado à rede.
A hash representa quanta potência computacional é investida na mineração. Se aumentar, o protocolo Bitcoin ajustará automaticamente a dificuldade para manter o tempo médio de mineração em aproximadamente 10 minutos. Se vários mineradores deixarem de minerar, a dificuldade diminuirá.
Os mineradores não precisam encontrar colisões porque existem vários hashes válidos ( que começam com um certo número de zeros ). Existem múltiplas soluções possíveis para um bloco determinado, e os mineradores só precisam encontrar uma.
Como a mineração é cara, os mineradores não têm motivos para enganar o sistema, pois isso causaria perdas financeiras significativas. Quanto mais mineradores houver em uma blockchain, mais forte se torna a rede.
Sem dúvida, as funções hash são ferramentas essenciais na informática, especialmente com grandes quantidades de dados. Combinadas com criptografia, oferecem segurança e autenticação de muitas maneiras. São vitais para quase todas as redes cripto, pelo que compreender as suas propriedades e mecanismos é útil para qualquer pessoa interessada em blockchain.