Há uma variedade de inovações que contribuíram para a tecnologia blockchain, uma das mais importantes é o hashing. Mas o que é o hashing na blockchain? Sem isso, os blockchains seriam inseguros e completamente inutilizáveis. Com isso, tornam a criptomoeda segura e fiável.
Se não quer obter um diploma de ciência da computação e gostaria de saber os meandros desta primitiva criptográfica, então fique por aqui. Vai descobrir que entender o hashing 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 uma comunicação segura face à atividade hostil. 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 encriptadas como uma série de hieróglifos desordenados, para evitar que os não iniciados aprendam os segredos de várias escolas de mistério. Este método de encriptação era muito simples, contando com uma técnica conhecida como substituição simples.
Desconfiado dos seus mensageiros, o imperador romano Júlio César enviou mensagens encriptadas aos seus generais. Nomeado postumamente, Júlio César popularizou a Cifra de César. A Cifra César também é uma técnica de substituição simples.
Hashing é uma forma de criptografia. Uma função hash é qualquer função que possa mapear dados de tamanho arbitrário para valores de tamanho fixo. Os valores retornados por uma função hash são chamados valores de hash, códigos de hash, digests ou simplesmente hashes.
Por exemplo, tome o texto simples “Olá Mundo”. Usando a função de hash do Ethereum, a função de hash Keccak-256, converteremos o texto simples no hash “592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba.” Correspondentemente, a saída assemelha-se a um endereço Ethereum.
As pessoas, sem saber, encontram hashes na sua vida quotidiana. Pode encontrar hashes diariamente usando palavras-passe. Quando cria uma conta numa aplicação, o fornecedor provavelmente não guarda a sua palavra-passe; guardam um hash da sua palavra-passe. Quando inicia sessão na sua conta, a aplicação faz o hashing da palavra-passe introduzida e compara este hash com o hash que guardou no ficheiro.
Simplificando, nem todas as funções são criadas igualmente. As funções de hashing devem satisfazer requisitos específicos, para funcionarem corretamente. Devem ter as seguintes propriedades:
Os computadores devem ser capazes de devolver o hash rapidamente; a maioria pode processar uma função hash numa fração de segundo.
Por exemplo, usando a função de hash Keccak-256, alteraremos a mensagem “Hello World” para “hello World”. Isto devolve o valor “079813c47d3d4ab9abf0c0747f5b5cdf90e0e264ae09ea44fb2509c559b72ac1.” Como pode ver, a nossa função de hash faz sensível a maiúsculas e minúsculas e altera drasticamente o resultado do nosso hash devolvido.
O valor exato do hash deve ser produzido sempre para um determinado valor de entrada. Deve lembrar-se que o hashing é uma forma de enviar uma mensagem com segurança. Se não fosse esse o caso, 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 procura uma mensagem com um valor de hash específico. Uma função hash criptográfica deve ser resistente a ataques de pré-imagem (conjunto de entradas possíveis).
Não gostaria de usar a pré-imagem (i.e. texto simples) como uma palavra-passe no nosso exemplo “Hello World”. Como o texto simples “Hello World” é extremamente simples e fácil de determinar. Existem bases de dados que mantêm registos de entradas conhecidas para proteger funções hash, como o SHA-256.
Uma propriedade esperada de uma função hash criptográfica em que encontrar uma segunda pré-imagem de um digest de mensagem conhecido é computacionalmente impossível.
Deve ser extremamente difícil ou impossível encontrar duas entradas que produzam a mesma saída. Uma vez que o valor de entrada pode ter qualquer comprimento e quaisquer caracteres, as possibilidades para este valor são infinitas. As saídas têm um comprimento fixo e — por esse motivo — 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 suficientemente forte, as colisões podem ser encontradas através de um “ataque de aniversário”. Pode ter notado que a resistência da segunda pré-imagem e a resistência à colisão são muito semelhantes. Tenha a certeza de que são separados e bastante simples.
Com a segunda resistência de pré-imagem, uma entrada é conhecida e o atacante é capaz de encontrar uma segunda entrada que faz hashes com o mesmo valor. Com a resistência à colisão, ambas as entradas são desconhecidas e o atacante é capaz de encontrar ambas as entradas que têm o 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 da probabilidade. Provavelmente já ouviu falar do exemplo de aniversário; Se tem um quarto de 27 pessoas, embora pareça improvável, há 50% de hipóteses de duas pessoas terem o mesmo aniversário.
Porquê isso? Uma pessoa tem 1/365 de probabilidade de ter o aniversário “certo”. A hipótese de uma segunda pessoa ter o mesmo aniversário também é 1/365. Para encontrar a probabilidade de ambos terem o mesmo aniversário, temos de multiplicar as suas probabilidades. Então, para aumentar a escala, se tem 365 aniversários diferentes e, portanto, 365 possibilidades, precisa da raiz quadrada de 365, que é 23 pessoas escolhidas aleatoriamente para ter 50% de chance de as pessoas se igualarem.
Aplicando esta teoria ao hashing, percebemos que tecnicamente; nenhuma função hash é livre de colisão, mas com ela deve levar muito tempo para que isto ocorra!
Taxa de Hash Total Bitcoin: Blockchain.com
O Bitcoin funciona numa cadeia de blocos e utiliza o algoritmo de hash 'SHA-256' (Secure Hashing Algorithm 256). Para o bitcoin, as funções hash são utilizadas para três funções principais:
Os mineiros competem para resolver um puzzle; cada mineiro pega informações de blocos que já conhece, hash e constrói um bloco a partir deles. Se a saída do algoritmo for menor que o número de destino, será considerada válida e poderá ser aceita pelo resto da rede. Têm então o direito de criar o próximo bloco.
Para maior segurança; cada bloco na cadeia de blocos está ligado 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 de hash do bloco anterior na cadeia de blocos. Isso garante que o histórico da blockchain possa ser facilmente rastreado e elimina a possibilidade de um bloco malicioso ser adicionado.
Para enviar ou receber criptomoeda, precisa de uma chave privada e uma chave pública. Estas duas chaves estão ligadas entre si através de uma função hash. Este é um componente essencial para garantir que ninguém possa elaborar a sua chave privada com base na sua chave pública.
A função hash dá à criptomoeda um elevado nível de segurança. Embora, em teoria, nada online esteja imune a pirataria; a função hash fornece o nível máximo de dificuldade atualmente disponível.
Há uma variedade de inovações que contribuíram para a tecnologia blockchain, uma das mais importantes é o hashing. Mas o que é o hashing na blockchain? Sem isso, os blockchains seriam inseguros e completamente inutilizáveis. Com isso, tornam a criptomoeda segura e fiável.
Se não quer obter um diploma de ciência da computação e gostaria de saber os meandros desta primitiva criptográfica, então fique por aqui. Vai descobrir que entender o hashing 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 uma comunicação segura face à atividade hostil. 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 encriptadas como uma série de hieróglifos desordenados, para evitar que os não iniciados aprendam os segredos de várias escolas de mistério. Este método de encriptação era muito simples, contando com uma técnica conhecida como substituição simples.
Desconfiado dos seus mensageiros, o imperador romano Júlio César enviou mensagens encriptadas aos seus generais. Nomeado postumamente, Júlio César popularizou a Cifra de César. A Cifra César também é uma técnica de substituição simples.
Hashing é uma forma de criptografia. Uma função hash é qualquer função que possa mapear dados de tamanho arbitrário para valores de tamanho fixo. Os valores retornados por uma função hash são chamados valores de hash, códigos de hash, digests ou simplesmente hashes.
Por exemplo, tome o texto simples “Olá Mundo”. Usando a função de hash do Ethereum, a função de hash Keccak-256, converteremos o texto simples no hash “592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba.” Correspondentemente, a saída assemelha-se a um endereço Ethereum.
As pessoas, sem saber, encontram hashes na sua vida quotidiana. Pode encontrar hashes diariamente usando palavras-passe. Quando cria uma conta numa aplicação, o fornecedor provavelmente não guarda a sua palavra-passe; guardam um hash da sua palavra-passe. Quando inicia sessão na sua conta, a aplicação faz o hashing da palavra-passe introduzida e compara este hash com o hash que guardou no ficheiro.
Simplificando, nem todas as funções são criadas igualmente. As funções de hashing devem satisfazer requisitos específicos, para funcionarem corretamente. Devem ter as seguintes propriedades:
Os computadores devem ser capazes de devolver o hash rapidamente; a maioria pode processar uma função hash numa fração de segundo.
Por exemplo, usando a função de hash Keccak-256, alteraremos a mensagem “Hello World” para “hello World”. Isto devolve o valor “079813c47d3d4ab9abf0c0747f5b5cdf90e0e264ae09ea44fb2509c559b72ac1.” Como pode ver, a nossa função de hash faz sensível a maiúsculas e minúsculas e altera drasticamente o resultado do nosso hash devolvido.
O valor exato do hash deve ser produzido sempre para um determinado valor de entrada. Deve lembrar-se que o hashing é uma forma de enviar uma mensagem com segurança. Se não fosse esse o caso, 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 procura uma mensagem com um valor de hash específico. Uma função hash criptográfica deve ser resistente a ataques de pré-imagem (conjunto de entradas possíveis).
Não gostaria de usar a pré-imagem (i.e. texto simples) como uma palavra-passe no nosso exemplo “Hello World”. Como o texto simples “Hello World” é extremamente simples e fácil de determinar. Existem bases de dados que mantêm registos de entradas conhecidas para proteger funções hash, como o SHA-256.
Uma propriedade esperada de uma função hash criptográfica em que encontrar uma segunda pré-imagem de um digest de mensagem conhecido é computacionalmente impossível.
Deve ser extremamente difícil ou impossível encontrar duas entradas que produzam a mesma saída. Uma vez que o valor de entrada pode ter qualquer comprimento e quaisquer caracteres, as possibilidades para este valor são infinitas. As saídas têm um comprimento fixo e — por esse motivo — 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 suficientemente forte, as colisões podem ser encontradas através de um “ataque de aniversário”. Pode ter notado que a resistência da segunda pré-imagem e a resistência à colisão são muito semelhantes. Tenha a certeza de que são separados e bastante simples.
Com a segunda resistência de pré-imagem, uma entrada é conhecida e o atacante é capaz de encontrar uma segunda entrada que faz hashes com o mesmo valor. Com a resistência à colisão, ambas as entradas são desconhecidas e o atacante é capaz de encontrar ambas as entradas que têm o 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 da probabilidade. Provavelmente já ouviu falar do exemplo de aniversário; Se tem um quarto de 27 pessoas, embora pareça improvável, há 50% de hipóteses de duas pessoas terem o mesmo aniversário.
Porquê isso? Uma pessoa tem 1/365 de probabilidade de ter o aniversário “certo”. A hipótese de uma segunda pessoa ter o mesmo aniversário também é 1/365. Para encontrar a probabilidade de ambos terem o mesmo aniversário, temos de multiplicar as suas probabilidades. Então, para aumentar a escala, se tem 365 aniversários diferentes e, portanto, 365 possibilidades, precisa da raiz quadrada de 365, que é 23 pessoas escolhidas aleatoriamente para ter 50% de chance de as pessoas se igualarem.
Aplicando esta teoria ao hashing, percebemos que tecnicamente; nenhuma função hash é livre de colisão, mas com ela deve levar muito tempo para que isto ocorra!
Taxa de Hash Total Bitcoin: Blockchain.com
O Bitcoin funciona numa cadeia de blocos e utiliza o algoritmo de hash 'SHA-256' (Secure Hashing Algorithm 256). Para o bitcoin, as funções hash são utilizadas para três funções principais:
Os mineiros competem para resolver um puzzle; cada mineiro pega informações de blocos que já conhece, hash e constrói um bloco a partir deles. Se a saída do algoritmo for menor que o número de destino, será considerada válida e poderá ser aceita pelo resto da rede. Têm então o direito de criar o próximo bloco.
Para maior segurança; cada bloco na cadeia de blocos está ligado 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 de hash do bloco anterior na cadeia de blocos. Isso garante que o histórico da blockchain possa ser facilmente rastreado e elimina a possibilidade de um bloco malicioso ser adicionado.
Para enviar ou receber criptomoeda, precisa de uma chave privada e uma chave pública. Estas duas chaves estão ligadas entre si através de uma função hash. Este é um componente essencial para garantir que ninguém possa elaborar a sua chave privada com base na sua chave pública.
A função hash dá à criptomoeda um elevado nível de segurança. Embora, em teoria, nada online esteja imune a pirataria; a função hash fornece o nível máximo de dificuldade atualmente disponível.