Há uma variedade de inovações que contribuíram para a tecnologia blockchain, uma das mais importantes é o hashing. Mas o que é hash no blockchain? Sem ele, os blockchains seriam inseguros e totalmente inutilizáveis. Com isso, eles tornam a criptomoeda segura e confiável.
Se você não deseja se formar em ciência da computação e gostaria de saber os detalhes dessa primitiva criptográfica, fique por aqui. Você descobrirá que entender o hash não é tão difícil.
A palavra criptografia vem da palavra grega kryptos, que significa oculto. É o estudo e aplicação de métodos para comunicação segura diante de atividades hostis. Em essência, é o ato de codificar mensagens. A criptografia moderna é centrada no computador, mas remonta aos tempos antigos.
Os hieróglifos egípcios são um ótimo exemplo de criptografia. O Antigo Egito desenvolveu as primeiras mensagens criptografadas como uma série de hieróglifos desordenados, para evitar que os não iniciados aprendessem os segredos de várias escolas de mistérios. Esse método de criptografia era muito simples, contando com uma técnica conhecida como substituição simples.
Suspeitando de seus mensageiros, o imperador romano Júlio César enviou mensagens criptografadas a seus generais. Nomeado postumamente, Júlio César popularizou a Cifra de César. A Cifra de César também é uma técnica de substituição simples.
Hashing é uma forma de criptografia. Uma função hash é qualquer função que pode mapear dados de tamanho arbitrário para valores de tamanho fixo. Os valores retornados por uma função hash são chamados de valores hash, códigos hash, resumos ou simplesmente hashes.
Por exemplo, pegue o texto simples “Hello World”. Usando a função hash do Ethereum, função hash Keccak-256, converteremos o texto simples no hash “592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba”. Da mesma forma, a saída se assemelha a um endereço Ethereum.
As pessoas, sem saber, encontram hashes em suas vidas cotidianas. Você pode encontrar hashes diariamente usando senhas. Quando você cria uma conta em um aplicativo, é provável que o provedor não salve sua senha; eles salvam um hash da sua senha. Quando você faz login em sua conta, o aplicativo faz o hash da senha inserida e compara esse hash com o hash salvo no arquivo.
Simplificando, nem todas as funções são criadas igualmente. As funções hash devem satisfazer requisitos específicos para funcionar corretamente. Eles devem ter as seguintes propriedades:
Os computadores devem ser capazes de retornar o hash rapidamente; a maioria pode processar uma função hash em uma fração de segundo.
Por exemplo, usando a função hashing Keccak-256, alteraremos a mensagem “Hello World” para “hello World”. Isso retorna o valor “079813c47d3d4ab9abf0c0747f5b5cdf90e0e264ae09ea44fb2509c559b72ac1”. Como você pode ver, nossa função hash diferencia maiúsculas de minúsculas e altera drasticamente o resultado do nosso hash retornado.
O valor exato do hash deve ser produzido sempre para um determinado valor de entrada. Você deve se lembrar que hash é uma forma de enviar uma mensagem com segurança. Se este não fosse o caso, você poderia alterar a entrada para um hash, sem o conhecimento do receptor.
Um ataque de pré-imagem ocorre quando a saída de um hash é conhecida e a tarefa é encontrar alguma entrada. Um ataque de pré-imagem a uma função hash criptográfica busca uma mensagem com um valor hash específico. Uma função hash criptográfica deve ser resistente a ataques de pré-imagem (conjunto de entradas possíveis).
Você não gostaria de usar a pré-imagem (ou seja, texto simples) como senha em nosso exemplo “Hello World”. Como o texto simples “Hello World” é extremamente simples e fácil de verificar. Existem bancos de dados que mantêm registros de entradas conhecidas até mesmo para proteger funções hash, como SHA-256.
Uma propriedade esperada de uma função hash criptográfica na qual encontrar uma segunda pré-imagem de um resumo de mensagem conhecido é computacionalmente impossível.
Deve ser extremamente difícil ou impossível encontrar dois insumos que produzam o mesmo resultado. Como o valor de entrada pode ter qualquer comprimento e qualquer caractere, as possibilidades para esse valor são infinitas. Os resultados têm um comprimento fixo e — por essa razão — um número fixo de possibilidades.
Portanto, é possível que mais de um valor de entrada produza a mesma saída. Se a resistência à colisão não for forte o suficiente, as colisões poderão ser encontradas através de um “ataque de aniversário”. Você deve ter notado que a resistência da segunda pré-imagem e a resistência à colisão são muito semelhantes. Tenha certeza de que eles são separados e bastante simples.
Com a segunda resistência de pré-imagem, uma entrada é conhecida e o invasor é capaz de encontrar uma segunda entrada com hash do mesmo valor. Com a resistência à colisão, ambas as entradas são desconhecidas e o invasor é capaz de encontrar ambas as entradas com hash do mesmo valor. A resistência à colisão implica resistência à pré-imagem.
Este é um ataque que explora a matemática por trás da teoria das probabilidades. Você provavelmente já ouviu falar do exemplo do aniversário; Se você tem uma sala para 27 pessoas, embora pareça improvável, há na verdade 50% de chance de duas pessoas fazerem aniversário no mesmo dia.
Por que é isso? Uma pessoa tem probabilidade de 1/365 de fazer o aniversário “certo”. A chance de uma segunda pessoa fazer aniversário no mesmo dia também é de 1/365. Para determinar a probabilidade de ambos fazerem aniversário no mesmo dia, temos que multiplicar as suas probabilidades. Então, ampliando, se você tem 365 aniversários diferentes e, portanto, 365 possibilidades, você precisa da raiz quadrada de 365, que é 23 pessoas escolhidas aleatoriamente para uma chance de 50% de pessoas combinarem.
Aplicando essa teoria ao hashing, percebemos isso tecnicamente; nenhuma função hash é livre de colisões, mas com ela deve demorar muito para que isso ocorra!
Taxa total de hash do Bitcoin: Blockchain.com
Bitcoin funciona em um blockchain e usa o algoritmo de hash ‘SHA-256’ (Secure Hashing Algorithm 256). Para bitcoin, funções hash são usadas para três funções principais:
Mineiros correm para resolver um quebra-cabeça; cada minerador pega informações de blocos que já conhece, faz hash e constrói um bloco a partir deles. Se a saída do algoritmo for menor que o número alvo, ela será considerada válida e poderá ser aceita pelo restante da rede. Eles então têm o direito de criar o próximo bloco.
Para maior segurança; cada bloco do blockchain está vinculado ao anterior. Isto é conseguido com um ponteiro hash (variáveis que armazenam o endereço de outra variável). Basicamente, cada bloco contém o resultado hash do bloco anterior na blockchain. Isso garante que o histórico do blockchain possa ser facilmente rastreado e elimina a possibilidade de adição de um bloco malicioso.
Para enviar ou receber criptomoedas, você precisa de uma chave privada e uma pública. Essas duas chaves estão conectadas entre si por meio de uma função hash. Este é um componente essencial para garantir que ninguém possa descobrir a sua chave privada com base na sua chave pública.
A função hash confere à criptomoeda um alto nível de segurança. Embora, em teoria, nada online seja imune a hackers; a função hash fornece o nível de dificuldade máximo disponível atualmente.
Há uma variedade de inovações que contribuíram para a tecnologia blockchain, uma das mais importantes é o hashing. Mas o que é hash no blockchain? Sem ele, os blockchains seriam inseguros e totalmente inutilizáveis. Com isso, eles tornam a criptomoeda segura e confiável.
Se você não deseja se formar em ciência da computação e gostaria de saber os detalhes dessa primitiva criptográfica, fique por aqui. Você descobrirá que entender o hash não é tão difícil.
A palavra criptografia vem da palavra grega kryptos, que significa oculto. É o estudo e aplicação de métodos para comunicação segura diante de atividades hostis. Em essência, é o ato de codificar mensagens. A criptografia moderna é centrada no computador, mas remonta aos tempos antigos.
Os hieróglifos egípcios são um ótimo exemplo de criptografia. O Antigo Egito desenvolveu as primeiras mensagens criptografadas como uma série de hieróglifos desordenados, para evitar que os não iniciados aprendessem os segredos de várias escolas de mistérios. Esse método de criptografia era muito simples, contando com uma técnica conhecida como substituição simples.
Suspeitando de seus mensageiros, o imperador romano Júlio César enviou mensagens criptografadas a seus generais. Nomeado postumamente, Júlio César popularizou a Cifra de César. A Cifra de César também é uma técnica de substituição simples.
Hashing é uma forma de criptografia. Uma função hash é qualquer função que pode mapear dados de tamanho arbitrário para valores de tamanho fixo. Os valores retornados por uma função hash são chamados de valores hash, códigos hash, resumos ou simplesmente hashes.
Por exemplo, pegue o texto simples “Hello World”. Usando a função hash do Ethereum, função hash Keccak-256, converteremos o texto simples no hash “592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba”. Da mesma forma, a saída se assemelha a um endereço Ethereum.
As pessoas, sem saber, encontram hashes em suas vidas cotidianas. Você pode encontrar hashes diariamente usando senhas. Quando você cria uma conta em um aplicativo, é provável que o provedor não salve sua senha; eles salvam um hash da sua senha. Quando você faz login em sua conta, o aplicativo faz o hash da senha inserida e compara esse hash com o hash salvo no arquivo.
Simplificando, nem todas as funções são criadas igualmente. As funções hash devem satisfazer requisitos específicos para funcionar corretamente. Eles devem ter as seguintes propriedades:
Os computadores devem ser capazes de retornar o hash rapidamente; a maioria pode processar uma função hash em uma fração de segundo.
Por exemplo, usando a função hashing Keccak-256, alteraremos a mensagem “Hello World” para “hello World”. Isso retorna o valor “079813c47d3d4ab9abf0c0747f5b5cdf90e0e264ae09ea44fb2509c559b72ac1”. Como você pode ver, nossa função hash diferencia maiúsculas de minúsculas e altera drasticamente o resultado do nosso hash retornado.
O valor exato do hash deve ser produzido sempre para um determinado valor de entrada. Você deve se lembrar que hash é uma forma de enviar uma mensagem com segurança. Se este não fosse o caso, você poderia alterar a entrada para um hash, sem o conhecimento do receptor.
Um ataque de pré-imagem ocorre quando a saída de um hash é conhecida e a tarefa é encontrar alguma entrada. Um ataque de pré-imagem a uma função hash criptográfica busca uma mensagem com um valor hash específico. Uma função hash criptográfica deve ser resistente a ataques de pré-imagem (conjunto de entradas possíveis).
Você não gostaria de usar a pré-imagem (ou seja, texto simples) como senha em nosso exemplo “Hello World”. Como o texto simples “Hello World” é extremamente simples e fácil de verificar. Existem bancos de dados que mantêm registros de entradas conhecidas até mesmo para proteger funções hash, como SHA-256.
Uma propriedade esperada de uma função hash criptográfica na qual encontrar uma segunda pré-imagem de um resumo de mensagem conhecido é computacionalmente impossível.
Deve ser extremamente difícil ou impossível encontrar dois insumos que produzam o mesmo resultado. Como o valor de entrada pode ter qualquer comprimento e qualquer caractere, as possibilidades para esse valor são infinitas. Os resultados têm um comprimento fixo e — por essa razão — um número fixo de possibilidades.
Portanto, é possível que mais de um valor de entrada produza a mesma saída. Se a resistência à colisão não for forte o suficiente, as colisões poderão ser encontradas através de um “ataque de aniversário”. Você deve ter notado que a resistência da segunda pré-imagem e a resistência à colisão são muito semelhantes. Tenha certeza de que eles são separados e bastante simples.
Com a segunda resistência de pré-imagem, uma entrada é conhecida e o invasor é capaz de encontrar uma segunda entrada com hash do mesmo valor. Com a resistência à colisão, ambas as entradas são desconhecidas e o invasor é capaz de encontrar ambas as entradas com hash do mesmo valor. A resistência à colisão implica resistência à pré-imagem.
Este é um ataque que explora a matemática por trás da teoria das probabilidades. Você provavelmente já ouviu falar do exemplo do aniversário; Se você tem uma sala para 27 pessoas, embora pareça improvável, há na verdade 50% de chance de duas pessoas fazerem aniversário no mesmo dia.
Por que é isso? Uma pessoa tem probabilidade de 1/365 de fazer o aniversário “certo”. A chance de uma segunda pessoa fazer aniversário no mesmo dia também é de 1/365. Para determinar a probabilidade de ambos fazerem aniversário no mesmo dia, temos que multiplicar as suas probabilidades. Então, ampliando, se você tem 365 aniversários diferentes e, portanto, 365 possibilidades, você precisa da raiz quadrada de 365, que é 23 pessoas escolhidas aleatoriamente para uma chance de 50% de pessoas combinarem.
Aplicando essa teoria ao hashing, percebemos isso tecnicamente; nenhuma função hash é livre de colisões, mas com ela deve demorar muito para que isso ocorra!
Taxa total de hash do Bitcoin: Blockchain.com
Bitcoin funciona em um blockchain e usa o algoritmo de hash ‘SHA-256’ (Secure Hashing Algorithm 256). Para bitcoin, funções hash são usadas para três funções principais:
Mineiros correm para resolver um quebra-cabeça; cada minerador pega informações de blocos que já conhece, faz hash e constrói um bloco a partir deles. Se a saída do algoritmo for menor que o número alvo, ela será considerada válida e poderá ser aceita pelo restante da rede. Eles então têm o direito de criar o próximo bloco.
Para maior segurança; cada bloco do blockchain está vinculado ao anterior. Isto é conseguido com um ponteiro hash (variáveis que armazenam o endereço de outra variável). Basicamente, cada bloco contém o resultado hash do bloco anterior na blockchain. Isso garante que o histórico do blockchain possa ser facilmente rastreado e elimina a possibilidade de adição de um bloco malicioso.
Para enviar ou receber criptomoedas, você precisa de uma chave privada e uma pública. Essas duas chaves estão conectadas entre si por meio de uma função hash. Este é um componente essencial para garantir que ninguém possa descobrir a sua chave privada com base na sua chave pública.
A função hash confere à criptomoeda um alto nível de segurança. Embora, em teoria, nada online seja imune a hackers; a função hash fornece o nível de dificuldade máximo disponível atualmente.