Sei que você quer entender essa tal função hash. Então, vamos logo para a definição:

 

O que é a função hash?

 

A função hash é um algoritmo matemático para a criptografia, na qual ocorre uma transformação do dado (como um arquivo, senha ou informações) em um conjunto alfanumérico com comprimento fixo de caracteres.

Para você ter uma noção, o hash da palavra “voitto” utilizando a função MD5 é: 494009d6ad36e1caa1b05e7cc98ab48f.

A criptografia hash é utilizada para resumir dados, verificar integridade de arquivos e garantir a segurança de senhas dentro de um servidor.

Neste artigo, você vai entender como funciona o hashing, saber o que é esse MD5 que acabou de ler, conhecer as aplicações e outros assuntos envolvendo essa função de criptografia. Confere o que você vai ler a seguir:

  • Como funciona essa função?
  • Propriedades e características da função criptográfica;
  • Principais algoritmos das funções hash;
  • A relação entre hash e o blockchain;
  • Aplicações no cotidiano.

 

Como funciona o hash?

 

A função hash é conhecida como uma função matemática criptográfica, na qual você possui dados de entrada e, após passar pela criptografia, eles apresentam valores de saída “padronizados”, ou seja, as saídas devem possuir o mesmo tamanho (geralmente entre 128 e 512 bits) e o mesmo número de caracteres alfanuméricos.

A função hash criptográfica é utilizada, principalmente, para resumir uma grande quantidade de informações em arquivos.

Imagine um banco de dados com muitas informações podendo ser resumido em uma única sequência de letras e números! Isso traz uma praticidade gigantesca dentro do mundo digital e da tecnologia da informação.

No início do artigo, você viu que o  hash da palavra “voitto” é: 494009d6ad36e1caa1b05e7cc98ab48f. Não parece que essa informação foi resumida, certo?

Porém, esse artigo aqui sobre blockchain: "O que é, como surgiu e como funciona o blockchain? Decifrando os principais conceitos dessa tecnologia!", possui aproximadamente 2000 palavras.

Usando a mesma função usada no exemplo anterior, temos que o hash do artigo completo é: 48ceeae4dc7dceb0e3d591c08ba9ed06. Resumindo a explicação, o funcionamento do hash pode ser visualizado na imagem abaixo:

Como funciona a função criptográfica hash?

 

O processo de criptografia da função hash é bastante complexo. Se quiser aprender sobre o desenvolvimento dessa função, você precisa entender o modelo matemático por trás dela e aprender a programar.

O modelo matemático você pode conferir nesse artigo aqui do Instituto de Matemática e Estatística da USP (IME-USP): [Estrutura de dados e hashing]

A linguagem de programação você pode aprender aqui, no nosso curso gratuito de Python que preparamos especialmente para você:

Curso de Fundamentos Essenciais em Python

 

Agora que você entendeu o básico sobre o funcionamento do hash e recebeu esse curso incrível gratuitamente, vamos conhecer as propriedades e características dessa função criptográfica.

 

Propriedades e características da função hash

 

Uma função hash é caracterizada por:

  • Saída de tamanho fixo: independente do valor de entrada, as saídas possuem a mesma quantidade de letras e números. Lembre dos exemplos acima da palavra “voitto” e do artigo de blockchain, as saídas dos dois possuíam 32 caracteres alfanuméricos;
  • Eficiência de operação: a função não pode ser complexa ao ponto de comprometer a velocidade de processamento;
  • Determinística: um valor de entrada sempre possuirá a mesma saída.

Além disso, é interessante você saber que existem vários tipos de funções hash e vamos falar sobre isso no tópico a seguir.

Independente do tipo de função, 3 propriedades são essenciais em um função criptográfica. São elas:

 

1. Unidirecional

 

Essa propriedade diz respeito à não invertibilidade desse tipo função. Ou seja, deve ser praticamente impossível pegar um valor de hash, aplicar uma função inversa e obter o dado de entrada.

Dizemos que é praticamente impossível porque pode haver a possibilidade de se encontrar o dado de entrada, porém a probabilidade deve ser muito pequena.

Se eu lhe pedir a sequência de números cuja a divisão por 10 resulta na seguinte sequência: 1-7-2, você poderia dizer: 11-17-12; o leitor seguinte: 21-17-42; o outro leitor uma sequência diferente e no final a resposta ser, na verdade: 1901-1017-22.

Percebeu que existem infinitas possibilidades de responder a esse pequeno  desafio?

A mesma ideia acontece com as funções que tentam descriptografar um hash. Elas tentam achar o valor de entrada, mas se torna um trabalho muito árduo à medida que a complexidade da criptografia aumenta, o que torna a função praticamente invertível.

 

2. Resistência à segunda pré-imagem

 

A resistência à segunda pré-imagem significa que não podem existir dois valores de entrada com a mesma saída. Mesmo em dados “semelhantes” isso não ocorre. Observe o hash dessas duas palavras:

voitto: 494009d6ad36e1caa1b05e7cc98ab48f.

Voitto: 9c316fd682936ef2b7a7a8716e44eecf.

Mesmo a informação sendo “igual”, as saídas apresentam diferentes valores de hash.

 

3. Resistência à colisão

 

Esta propriedade é basicamente uma redundância da propriedade anterior. A colisão ocorre quando duas entradas diferentes possuem o mesmo hash. Quanto mais criteriosa uma análise é feita na função para verificar se dados distintos geram uma saída igual, mais podemos afirmar que a função é resistente à colisão.

 

Principais algoritmos da função criptográfica hash

 

Os algoritmos mais populares e utilizados atualmente são:

  • Message Digest (MD): Essa função é tem foco na verificação da integridade de arquivos. As versões mais comuns são: MD2, MD3, MD4 e MD5, que foi utilizada nos exemplos anteriores, lembra?

  • Secure Hash Function (SHA): Utilizada em transmissão de dados entre servidor e cliente;

  • RIPEMD: É uma versão melhorada das funções MD. As saídas do RIPEMD possuem 160 bits de tamanho, enquanto as saídas MD possuem 128 bits;

  • Whirlpool: É um algoritmo de criptografia de código livre desenvolvido por dois professores (um do Brasil e outro da Bélgica). Esse algoritmo é usado pela Organização Internacional de Padronização (ISO) e Comissão Eletrotécnica Internacional (IEC).

Agora que você conhece as características e as principais funções hash, vamos ver onde essa criptografia é aplicada. Vamos começar com uma bastante popular: o blockchain!

 

A relação entre hash e blockchain

 

Antes de mais nada, é preciso que você conheça o conceito de blockchain. Essa é uma tecnologia que é aplicada, principalmente, no registro de transações envolvendo moedas digitais, como o bitcoin.

O blockchain é uma cadeia de blocos de dados criptografados. E adivinha quem é a função envolvida na criptografia desses dados? Isso mesmo, o hash.

Dentro da rede dessa cadeia de blocos, existem pessoas que fornecem capacidade computacional, para que as transações financeiras sejam registradas e validadas, ou seja, verificar o nível de honestidade das informações dentro do bloco, evitando fraudes.

Os usuários mineram a rede, registrando as transações e gerando um hash seguro. 

Um detalhe interessante: um bloco recebe informações durante um tempo de aproximadamente 10 minutos. Depois disso, ele é criptografado utilizando o hash de um bloco validado na rede. Dessa forma, os novos blocos estão “ligados” aos blocos antigos, formando a cadeia.

Funcionamento da blockchain

Aplicações da função hash

 

O hash nosso de cada dia…

Quando falamos de hash, blockchain e criptografia, achamos que tudo isso pode estar muito distante de nós, o que não é verdade.

Lembra das três principais utilidades dessa função citadas do início do artigo? Se não, vou lhe lembrar aqui:

  • Resumir dados;
  • Verificar integridade de arquivos;
  • Segurança de senhas em servidores.

Bem, as situações do cotidiano, nas quais o hash está por trás, estão diretamente ligadas a essas utilidades:

 

Download de um arquivo

Quando você está baixando algum arquivo na rede, seu telefone ou computador está solicitando do banco de dados do servidor um arquivo que possui um hash associado. 

Geralmente, a solicitação do download é rápida, certo? Isso ocorre porque o armazenamento desses arquivos dentro do servidor é feito por meio de funções criptográficas. Então, o servidor consegue procurar rapidamente no banco de dados o arquivo que está sendo solicitado.

 

Antivírus

O principal trabalho de um antivírus, dentro de um computador ou telefone, é verificar a integridade de um arquivo por meio do hash.

Quando você solicita um download, a antivírus verifica se o arquivo que está chegando ao seu dispositivo possui o mesmo hash que o servidor forneceu. Se sim, o download é seguro. Caso contrário, pode indicar que algum invasor corrompeu o arquivo e por isso o hash foi alterado.

Interessante, não acha?

 

Recuperação de senhas

Os servidores mais seguros armazenam as senhas dos usuários de modo criptografado. Então, sua senha “doguinho2020” não fica explícita dentro do banco de dados.

Quando você solicita a recuperação, por exemplo, é difícil o servidor descriptografar o hash da sua senha e por isso, ele lhe manda um código para criar uma nova.

Se você já tentou recuperar uma senha e recebeu um código no e-mail para criar uma senha nova, sabe do que estou falando.

 

Agora que o artigo terminou, uma dica especial para você!

 

Você acabou de ler sobre as situações do dia a dia onde o hash está presente e não damos conta. Conhecer como o mundo a nossa volta funciona sempre abre nossa mente nos tornando pessoas mais críticas e criativas. Espero que esse artigo tenha gerado um pouco de conhecimento em você.

Para lhe gerar mais conhecimento ainda, já oferecemos um curso de python totalmente gratuito. E agora, convidamos você a conhecer o nosso curso de Formação Master em Excel.

Depois de concluir esse curso, você será capaz de:

  • Formatar células para organizar dados;

  • Automatizar cálculos e funções;

  • Utilizar o MS Excel como ferramenta de estratégia;

  • Criar planilhas mais visuais e gerar relatórios.

Você vai aprender isso aí e muito mais. Gostou? Clique no botão, se inscreva e já pode aproveitar essa oportunidade!

Curso de Formação Master em Excel