Um hash é o resultado de uma função de hash, que é uma operação criptográfica que gera identificadores únicos e irrepetíveis a partir de uma determinada informação. Hashes são uma peça chave da tecnologia blockchain e são amplamente utilizados.

O nome de hash é usado para identificar uma função criptográfica muito importante no mundo da informática. Estas funções têm como objetivo principal codificar dados para formar uma cadeia de caracteres exclusiva. Tudo isto, independentemente da quantidade de dados inseridos inicialmente na função. Estas funções servem para garantir a autenticidade dos dados, armazenar senhas com segurança e assinar documentos eletrónicos.

As funções hash são amplamente utilizadas em tecnologia blockchain para adicionar segurança. Bitcoin é um exemplo claro de como os hashes podem ser usados ​​para tornar possível a tecnologia de criptomoedas.

Histórico das funções Hash

A aparência da primeira função de hash data do ano 1961. Wesley Peterson criou a função Verificação cíclica de redundância. Foi criado para verificar a correção dos dados transmitidos nas redes (como a Internet) e no sistema de armazenamento digital. Fácil de implementar e muito rápido, ganhou aceitação e hoje é um padrão do setor. Com a evolução da informática e dos computadores, estes sistemas tornaram-se cada vez mais especializados.

Isto permitiu a criação de novas e melhores funções de hash, entre as quais podemos destacar:

  1. MD2: É uma das primeiras funções hash criptográficas. Criadas por Ronald Rivest, no ano de 1989. Com um alto nível de eficiência e segurança no momento, era essencial na segurança da Internet. A sua consequente evolução levou à criação da função hash MD5. A qual é usada em ambientes onde a segurança não é uma alta prioridade.
  2. RIPEMD: é uma função hash criptográfica criada pelo projeto europeu RIPE no ano de 1992. A sua principal função era substituir o padrão atual, a função hash MD4. Atualmente ainda é considerada muito seguro, principalmente nas suas versões. RIPEMD-160RIPEMD-256 y RIPEMD-320.
  3. SHA: o padrão atual para hashes criptográficos. Criado pela NSA en 1993, como parte do seu projeto interno para autenticar documentos eletrónicos. O SHA e os seus derivados são considerados as funções de hash mais seguras até ao momento. É de especial interesse, SHA-256 por ser fundamental na tecnologia que tornou possível o Bitcoin.

Funções Hash - Como funcionam?

As funções hash funcionam graças a uma série de processos matemáticos e lógicos complexos. Estes processos são transferidos para o software do computador para serem utilizados no próprio computador. A partir daí, podemos pegar qualquer série de dados, inseri-la na função e processá-la. Isto procura obter uma cadeia de caracteres de comprimento fixo e exclusivo para os dados inseridos. Ao mesmo tempo, é praticamente impossível realizar o processo oposto. Por outras palavras, é praticamente impossível obter os dados originais de um hash já formado. Isto ocorre porque o processo de criação de hashes é um processo unidirecional.

Um exemplo simples e do dia a dia deste processo seria; o fabrico de um bolo. Cada um dos ingredientes do bolo seria o equivalente da entrada de dados. O processo de preparação e fabrico do bolo seria o processo de codificação dos referidos dados (ingredientes) pela função. No final, obtemos um bolo com características únicas e irrepetíveis, dadas pelos seus ingredientes. Enquanto o processo oposto (levar o bolo ao seu estado inicial de ingrediente) é praticamente impossível.

Um exemplo visual do processo pode ser mostrado usando as funções MD5 e SHA-256, em dois casos de uso diferentes.

  • Exemplo de como codificar uma função MD5
  • Exemplo de como codificar uma função SHA-256

Uma explicação mais profunda

Observando os dois casos de uso, podemos observar o seguinte:

A primeira entrada de dados resulta num único hash, para os casos MD5 e SHA-256. Resultados ajustados à realidade de cada uma dessas funções. Na segunda entrada, uma pequena modificação foi feita no texto. Embora seja mínima, alterou completamente o resultado dos hashes para MD5 e SHA-256.

Isto prova que os hashes serão únicos em qualquer caso. O que nos permite ter certeza de que nenhum ator malicioso pode facilmente forçar hashes. Embora isto não seja impossível, um hacker pode passar centenas de anos processando dados para atingir o seu objetivo.

São estas duas observações que nos dão a segurança de usar este método em diferentes áreas sensíveis. Certificados digitais, assinaturas exclusivas de documentos sensíveis ou secretos, identificação digital e armazenamento de chaves são alguns casos de uso. Mas não pára por aí, pois a flexibilidade e a segurança desta tecnologia tornam-a ideal em muitas áreas.

Características das funções hash

Entre as principais características das funções de hash, pode ser mencionado o seguinte:

  1. São fáceis de calcular. Os algoritmos de hash são muito eficientes e não exigem grande capacidade de computação para serem executados.
  2. É compressível. Isso significa que, independentemente do tamanho da entrada de dados, o resultado sempre será uma string de comprimento fixo. No caso do SHA-256, a string terá 64 caracteres.
  3. Funcionamento tipo avalanche. Qualquer pequena alteração na entrada de dados resulta num hash diferente da entrada de dados original.
  4. Resistência fraca e forte a colisões. Refere-se ao facto de que é impossível calcular um hash, que permita encontrar outro hash igual. Mais conhecido como pré-imagem y segunda pré-imagem, é o conceito básico de segurança de hash.
  5. São irreversíveis. Ter um hash e obter os dados que o originaram, na prática é impossível. Este é um dos princípios que tornam os hashes seguros.

Nível de segurança das funções hash

As atuais funções hash têm um alto nível de segurança, embora isto não signifique que sejam infalíveis. Um bom exemplo disto é;a função hash MD5. Em princípio, as especificações da mesma prometiam uma segurança muito alta. O seu uso espalhou-se na Internet devido à necessidade de um sistema de hash para manter a sua segurança. Mas em 1996, a segurança da função pôde ser interrompida. Isto tornou-a obsoleta e foi recomendado abandonar o seu uso.

Por outro lado, funções como RIPEMD-160 e SHA-256 são tão complexas que a sua segurança ainda é garantida. Por exemplo, para o SHA-256, estima-se que levaria milhares de anos para quebrar a sua segurança usando os atuais supercomputadores. O mesmo aplica-se no caso de RIPEMD-160 e nas suas consequentes evoluções. Isto significa que ambas as funções ainda oferecem um alto nível de segurança e podem ser usadas sem problemas.

Mas, embora essas funções sejam muito seguras, isso não significa que mais opções não sejam investigadas e desenvolvidas. Essa evolução constante nos diz que sempre teremos ferramentas seguras disponíveis para uso em qualquer caso.

Quanto sabes, criptonauta?

Os hashes são seguros de usar?

VERDADEIRO!

As funções de hash são construídas sob o uso de poderosas funções matemáticas e lógicas que garantem altos níveis de segurança. Em primeiro lugar, um hash já gerado não pode ser retornado para um estado anterior. Em segundo lugar, cada hash é único e qualquer pequena alteração nos dados de entrada gerará um novo hash diferente. Sob estas duas premissas, os hashes oferecem, portanto, um nível muito alto de segurança capaz de lidar com qualquer tipo de necessidade.

As funções hash no mundo Blockchain

Por serem rápidas, eficientes, económicas em termos de computação e exclusivas, as funções de hash são amplamente usadas na tecnologia blockchain. QuandoSatoshi Nakamoto publicou o seu whitepaper de Bitcoin, explicou porque e como usar o SHA-256 e ​​RIPEMD-160 no Bitcoin. Desde então, a tecnologia blockchain evoluiu muito, mas as bases permanecem as mesmas. Fazer uso de criptografia forte e hashes para tornar a tecnologia muito segura, privada e até anónima.

De todos os usos das funções hash na blockchain, os seguintes casos podem ser destacados:

Criação de endereço (Carteira de Endereços)

Os endereços das carteiras de criptomoedas são uma representação segura das chaves públicas da carteira. As chaves públicas geralmente são muito longas e complexas. É por esse motivo; que blockchains usam funções de hash para originar um endereço mais curto. Este processo é usado repetidamente para reduzir o endereço e adicionar uma camada extra de segurança.

No Bitcoin, o processo de criação de um endereço de carteira usa funções de hash RIPEMD-160 e SHA-256. Ambas são usadas ​​para melhorar a segurança do processo e torná-las únicas e irrepetíveis.

Processo de Mineração

O processo de mineração, é outro estágio importante da tecnologia blockchain em que as funções de hash são usadas. No Bitcoin, a mineração faz uso intensivo do cálculo de hash SHA-256 distribuído em cada um dos seus nós. Os mineradores são responsáveis ​​pelo cálculo de milhões de hashes para criar novos blocos de Bitcoin. O processo também é utilizado para verificar as transações que são feitas na rede.

Embora o processo de cálculo de hashes seja muito rápido, seu uso intensivo dificulta drasticamente o processo. Isso leva os mineradores a usar alto poder de computação para resolver quebra-cabeças de Bitcoin. Ao resolvê-los, os mineiros são recompensados ​​com 6,25 BTC por bloco. Este é um valor próximo a $ 96.875 (novembro de 2020). Esse incentivo econômico é o que mantém a operação e a segurança de toda a rede Bitcoin.

Contratos inteligentes (Smart Contracts)

Essa é outra área em que as funções de hash são muito usadas. Blockchains como Bitcoin , Ethereum, NEO o TRON fazer uso de contratos inteligentes para promover diferentes aplicações. Esses aplicativos são gerenciados por um contrato público entre as partes. Porém, muitos desses dados são muito sensíveis, ou é simplesmente muita informação para ser armazenada em uma blockchain. Portanto, a melhor maneira de resolver esses cenários é através de funções de hash. Desta maneira, o contrato inteiro é público, mas as informações vinculadas ou que você deseja manter em sigilo não são publicadas. Esses dados podem incluir nomes, endereços, endereços de carteira, dados de participantes de terceiros. Quer dizer; informações privilegiadas e apenas de interesse entre as partes.

Os hashes também são usados ​​para versão de contratos. Isto é, um contrato público possui um hash exclusivo, fornecido pelo que o contrato estabelece. Se o contrato for modificado, o contrato anterior é terminado e um novo é gerado com um novo hash. Desta forma, o hash determina o contrato correto a ser usado num aplicativo descentralizado, facilitando o seu controlo. Outro uso de hashes em contratos inteligentes é; para marcar a validade e autenticidade do mesmo. Um exemplo pode ser; um contrato feito para a venda de uma casa com um pagamento feito em criptomoedas. A conclusão do contrato e o seu hash serão testemunhas inalteráveis ​​da venda feita entre as partes.