Hash é um conceito fundamental da ciência da computação (Reprodução/Reprodução)
Redação Exame
Publicado em 21 de abril de 2023 às 10h30.
"Qualquer tecnologia suficientemente avançada é indistinguível de mágica."
No mundo acelerado de hoje, a tecnologia se tornou tão enraizada em nosso cotidiano que muitas vezes a damos como certa. Interagimos com uma série de dispositivos e aplicações digitais diariamente, sendo que a maioria de seus funcionamentos internos permanecem ocultos para nós, alimentando silenciosamente nossas experiências digitais. Essas tecnologias operam de maneira harmoniosa, moldando nossas interações sem que sequer percebamos sua existência.
Uma dessas maravilhas tecnológicas que se esconde nos bastidores é o hashing, um conceito fundamental em ciência da computação e criptografia. Embora relativamente desconhecido pelo público em geral, o hashing desempenha um papel vital na proteção de nossos dados e na manutenção da integridade dos sistemas digitais.
Ao mergulharmos no mundo do hashing, desvendaremos a magia que ele traz para nossas vidas digitais, garantindo que nossas interações virtuais permaneçam seguras, confiáveis e confirmando frase de Arthur C. Clarke que iniciou este texto.
O hashing é um processo que pode ser comparado à geração de uma impressão digital única para dados. Assim como nossas impressões digitais agem como identificadores únicos, uma função de hash produz um resultado de tamanho fixo para qualquer entrada, tornando-o uma representação única para esses dados. O hashing é amplamente utilizado na segurança da computação, especialmente na proteção de logins e senhas, pois impede que logins e senhas sejam expostas durante a transmissão pela internet.
Vamos explorar as principais características do hashing através de várias analogias para ajudar a entender melhor esse conceito fundamental da ciência da computação (e do Bitcoin!):
Uma característica essencial das funções de hash é sua natureza unidirecional. Isso significa que é fácil criar um hash a partir de dados de entrada, mas extremamente difícil, senão impossível, reverter o hash para a entrada original. Como analogia, pense numa impressão digital. Uma impressão digital pode ser obtida do dedo de uma pessoa, mas você não pode recriar a pessoa a partir de sua impressão digital.
As funções de hash são determinísticas, ou seja, dada a mesma entrada, sempre produzirá a mesma saída, independentemente do computador ou sistema utilizado. Essa característica pode ser comparada a uma receita. Ao seguir a mesma receita com ingredientes idênticos, você sempre obterá o mesmo prato.
Até a menor alteração nos dados de entrada produzirá uma saída de hash completamente diferente.
Um exemplo:
Se a entrada for: “Olá, eu sou o Matheus”, a saída será:
BE64A1BC3FD60E6D5BA90E87D5D266F0CC3774780C0E0523377C4E9BA10B2A3B
E se apenas removermos a vírgula da entrada: “Olá eu sou o Matheus”, a saída será:
387E37939CC59E0279792E27884D7BB8EAE8855403C035F9DECB8D40967ADF56
Totalmente diferente. Isso mostra como não é possível descobrir a entrada a partir da saída.
O número de possíveis saídas de hash é tão vasto que as chances de gerar o mesmo hash para duas entradas diferentes (colisão) são astronomicamente baixas. Para colocar isso em perspectiva, o número de possíveis saídas de hash da função SHA256 (usada no Bitcoin) é de 10^77 e pode ser comparado ao número estimado de átomos no universo (10^80). Essa imensa variedade ajuda a garantir a singularidade de cada saída de hash.
Possibilidades com SHA256 são comparáveis à quantidade de átomos no universo
Verificar se um hash é a representação correta de uma entrada é um processo simples. Isso pode ser comparado a um cadeado com senha. Uma vez que você sabe a senha correta, é fácil verificar se ela abre o cadeado. Da mesma forma, o hashing permite uma fácil verificação da integridade dos dados sem a necessidade de armazenar ou transmitir os dados originais.
No contexto do Bitcoin, o hashing é usado para manter a dificuldade de mineração de novos blocos. Os mineradores competem para encontrar um valor de hash específico que atenda ao nível de dificuldade exigido, o que ajuda a manter estável a taxa de criação de novos blocos.
E você ainda acredita que minerar blocos na rede Bitcoin é resolver um problema matemático extremamente complexo?
Ouvimos essa explicação quase todos os dias, mas os ASICs (Application-specific integrated circuit), que são os hardwares usados para mineração, são otimizados para realizar uma tarefa específica. E qual é essa tarefa?
Tentativa e erro! Uma boa analogia são aqueles cadeados com sequências de números. Não há uma fórmula matemática que, se resolvida, abrirá o cadeado. A única maneira de abri-lo é descobrir a sequência de números e, para isso, a única possibilidade é tentar e tentar (0000, 0001, 0002 e assim por diante).
Uma vez descoberto, é facilmente verificado pelos outros, bem como pela rede Bitcoin.
Descobrir um hash é um processo de tentativa e erro, assim como descobrir uma senha para um cadeado.
O que o algoritmo da rede Bitcoin faz é indicar uma saída e os mineradores precisam testar várias entradas até alcançar essa saída (indicada pelo número de zeros no início da sequência).
Em outras palavras, tentativa e erro!
Quanto mais mineradores na rede, mais tentativas são feitas, mais rápido a entrada é descoberta e, consequentemente, mais rápido o bloco é minerado. Para que o tempo de mineração de cada bloco permaneça próximo a 10 minutos, a cada duas semanas o algoritmo ajusta a dificuldade (como se estivesse adicionando outro número à sequência do cadeado).
Por meio dessas analogias, podemos obter uma melhor compreensão das características fundamentais e da importância do hashing na ciência da computação e na cibersegurança. Ao servir como uma impressão digital para os dados, as funções de hash fornecem uma maneira segura de verificar a integridade das informações sem expor detalhes sensíveis, tornando-os uma ferramenta indispensável na tecnologia moderna.
O hashing desempenha um papel crítico no protocolo Bitcoin, garantindo a segurança e estabilidade da rede descentralizada. Como componente chave do processo de mineração, ele incentiva os validadores de rede, ou mineradores, a contribuir com seu poder computacional para manter a integridade do blockchain.
Além disso, o hashing garante a integridade dos dados dentro do blockchain ao vincular cada bloco ao seu predecessor por meio de seus respectivos valores de hash. Isso cria uma cadeia imutável, que se tornaria instantaneamente inválida se algum dado fosse adulterado.
No geral, o hashing é um elemento indispensável do protocolo Bitcoin, impulsionando a segurança, transparência e resiliência da rede. Ao incentivar os validadores de rede a priorizar o bem-estar do sistema e desencorajar comportamentos desonestos, o hashing ajuda a manter a robustez e credibilidade da rede Bitcoin, tornando-se uma ferramenta essencial no mundo das moedas digitais.
*Matheus Bombig é engenheiro mecânico pela Unicamp, cofundador da Invenis, do Surf Junkie Club e da Associação Brasileira de Lawtechs e Legaltechs (AB2L).
Cansou de tentar falar com alguém da sua Exchange? Conheça a Mynt, a única no Brasil com atendimento 24 horas e todos os dias, feito por pessoas reais. Abra agora sua conta.
Siga o Future of Money nas redes sociais: Instagram | Twitter | YouTube | Telegram | Tik Tok