This article has been translated from English to Portuguese.

Qual é o objetivo do hashing?

O principal objetivo do hashing é verificar a integridade de um dado.

Uma vez que o hash gerado é ÚNICO para os dados de entrada, actua como uma "impressão digital" única dos dados de entrada.

Isto faz com que um hash seja útil para verificar a integridade dos dados enviados através de canais de comunicação inseguros, como a Internet. A integridade dos dados significa apenas que os dados não foram alterados de uma forma não aprovada.

O valor de hash dos dados recebidos pode ser comparado com o valor de hash dos dados antes de serem enviados para determinar se os dados foram alterados.

Se eu publicar a mensagem e o valor de hash que gerei a partir dela, podes gerar um valor de hash a partir da mensagem que recebeste e comparar os valores de hash.

Usando um exemplo muito simples, digamos que estamos prestes a encontrar-nos para almoçar e, mesmo antes de sair pela porta, lembro-me da última vez que estivemos juntos...

Body odor

Embora a tua personalidade fosse muito simpática, o teu cheiro não era nada agradável. 😬

Por isso, quero enviar-te uma mensagem: "Por favor, usa desodorizante."

Mas, antes de te enviar esta mensagem, passo-a por uma função de hash (SHA-256). O hash é:

33ebb528eab107766343d0ac591952bb68ee959d45b7a8b399628e662f3bc1ef

Primeiro envio-te este hash.

E depois envio-te a mensagem de texto.

Quando receberes a minha mensagem, pensas: "WTF? Ele acabou mesmo de me dizer isso? Ou será que a mensagem foi interceptada durante o trânsito e a mensagem original foi alterada?".

Armpit stinks

Então, passa a mensagem pela mesma função hash.

33ebb528eab107766343d0ac591952bb68ee959d45b7a8b399628e662f3bc1ef

Compara então o teu hash com o hash que veio antes da mensagem de texto.

Se ambos os valores de hash forem os mesmos, então prova que:

  1. A mensagem foi enviada corretamente.
  2. Que os teus sovacos cheiram mesmo mal!
  3. A mensagem não foi deliberadamente alterada por alguém entre o momento em que a enviei para ti e o momento em que a recebeste.

Claro que, no mundo real, são os nossos computadores que fazem tudo isto por nós.

E, com sorte, tu manténs os teus sovacos a cheirar a fresco. 😅

*Tecnicamente, antes de te enviar o hash, ele deve ser protegido de alguma forma, mas eu quis manter o exemplo simples. A forma como o hash fica protegido durante o trânsito será abordada numa lição posterior.

Exemplo real de hashing: senhas online

Isto pode surpreender-te, mas provavelmente encontras hashing na tua vida diária....sempre que fazes login para verificar o teu email. 📧

Email uses hashing

Quando crias um endereço de correio eletrónico e uma palavra-passe, o teu fornecedor de correio eletrónico provavelmente não guarda a tua palavra-passe real.

Em vez disso, o teu fornecedor de e-mail executa a palavra-passe através de uma função de hash e guarda o hash da tua palavra-passe.

Sempre que tentas iniciar sessão na tua conta de correio eletrónico, o teu fornecedor de correio eletrónico faz um has h da palavra-passe que introduziste e compara esse hash com o hash que guardou.

quando os dois hashes coincidem é que estás autorizado a aceder ao teu correio eletrónico.

Vejamos por que razão NÃO guardam a tua palavra-passe real...

Password in Plaintext

Se as palavras-passe reais forem guardadas e os piratas informáticos entrarem no sistema, podem roubá-las. Isto não é nada bom para os utilizadores que utilizam a mesma palavra-passe para vários sites!

Uma solução é fazer o hash da palavra-passe...

Hash Pasword

Ao fazer o hash da palavra-passe, a empresa protege a informação do utilizador. Mesmo que um hacker invada o sistema, não terá acesso às palavras-passe reais, apenas aos hashes.

Lembra-te de que os hashes são irreversíveis, pelo que é impossível para o hacker descobrir qual é a palavra-passe real apenas olhando para o hash. O hashing garante que os dados são armazenados num estado codificado, pelo que é mais difícil de roubar.
Password Hashed and Protected

Sempre que inicias sessão, o teu fornecedor de correio eletrónico não guarda a palavra-passe em texto simples, apenas precisa do hash.

Quando introduzes a tua palavra-passe, esta é executada através da função de hash.

O resultado é comparado com o hash que está guardado na base de dados.

Se os valores do hash forem iguais, a palavra-passe está correta.

Se introduzires uma palavra-passe errada, o resultado será um hash diferente do que foi guardado. Os hashes NÃO corresponderiam, pelo que a tua tentativa de início de sessão falharia.

Como podes ver, uma função de hash distorce os dados e torna-os ilegíveis. Mesmo que um hacker tenha acesso ao servidor do teu fornecedor de e-mail, os detalhes armazenados não podem ser descodificados.