Uma função de hash criptográfico, muitas vezes é conhecida simplesmente como hash – é um algoritmo matemático que transforma qualquer bloco de dados em uma série de caracteres de comprimento fixo. Independentemente do comprimento dos dados de entrada, o mesmo tipo de hash de saída será sempre um valor hash do mesmo comprimento.
De acordo com o gerador online de hash, SHA-1 que foi encontrado na rede (SHA-1 é uma das funções de hash mais utilizadas em computação, juntamente com MD5 e SHA-2), o hash para o meu nome, Brian, seria: 75c450c3f963befb912ee79f0b63e563652780f0. Acontece muito comigo das pessoas errarem meu nome e invés de Brian me chama de “Brain” que em inglês significa “cérebro”. De fato, em minha carteira de motorista oficial me chamo “Brain Donohue”, mas isso é outra história. O hash SHA-1 para “cérebro”, segundo o gerador online de SHA-1 é: 8b9248a4e0b64bbccf82e7723a3734279bf9bbc4.
Como você pode ver, essas duas saídas são bastante diferentes, apesar do fato de que a diferença entre o nome de Brian e Brain são apenas a ordem das vogais. Vamos fazer outra prova: se escrevo meu nome sem a maiúscula, o gerador SHA-1 novamente me dá outro resultado diferente ou seja: r760e7dab2836853c63805033e514668301fa9c47.
Você notará que todos os hashs são de 40 caracteres e surpreende ter um resultado deste tipo para uma palavra de 5 letras como Brian, Brain. No entanto, o mais surpreendente, é que se inserimos cada palavra deste artigo no gerador, vamos ter este hash: db8471259c92193d6072c51ce61dacfdda0ac3d7. Isso é cerca de 1.637 caracteres (com espaços incluídos) condensados em uma produção de 40 caracteres, o mesmo comprimento que tivemos com o meu nome de 5 letras. Você poderia fazer um hash SHA-1 das obras completas de William Shakespeare e ainda acabar com um resultado de 40 caracteres. Além disso, nunca vamos ter 2 hash iguais.
Aqui está uma foto de cortesia da Wikimedia Commons, ilustrando o mesmo conceito para aqueles que preferem a aprendizagem visual:
Para quê serve os hash?
Boa pergunta. Infelizmente, a resposta é que os hash de criptografia são usados para uma série de coisas.
Para mim e para você, a forma mais comum de hashing tem a ver com senhas. Por exemplo, se você esquece sua senha em algum serviço online, você provavelmente vai ter que executar uma redefinição de senha. Quando você redefine sua senha, você geralmente não recebe sua senha de texto simples em troca. Isso porque o serviço online não armazena sua senha em texto plano. Ele armazenam um valor de hash para a senha. Na verdade, esse serviço (a menos que você esteja usando uma senha incrivelmente simples para que o valor de hash seja amplamente reconhecido) não tem nenhuma ideia da sua senha real.
Para ser claro, se para restabelecer a senha você recebe a senha em texto simples, significa que o serviço on-line não usa hash e isso é lamentável.
Você pode testar por você mesmo com um gerador de hash online. Se você gera um valor de hash para uma senha fraca (como “123456”) e o digita em um gerador de hash inversa, é possível que o gerador reconheça o valor de hash e revele a senha. No meu caso, o gerador de hash inversa reconheceu os hashes para “cérebro” e “Brian”, mas não o hash que representa o corpo deste artigo. Assim que a integridade dos hash depende inteiramente dos dados de entrada, que podem ser qualquer coisa.
Segundo um relatório da TechCrunch do final do mês passado, o serviço de armazenamento em nuvem, o Dropbox, bloqueou um dos seus usuários porque ele compartilhava conteúdo protegido pela Digital Millennium Copyright Act (DMCA), a lei estadunidense sobre os direitos do autor. Este usuário logo twittou que ele tinha sido impedido de compartilhar determinado conteúdo. Em seguida as pessoas começaram a comentar a notícia na rede social e muito gente ficou indignada dizendo que o Dropbox tinha acesso às contas dos usuários, apesar de declarar o contrário na política de privacidade.
O Dropbox, é claro, não acessou os contepudos do usuário. Como observou o artigo TechCrunch, o que provavelmente aconteceu aqui é que o detentor do copyright tornou seu arquivo protegido (talvez a composição digital de uma música ou filme) e passou isso através de uma função hash. Eles, então, tomaram o valor de hash de saída e acrescentou uma série de quarenta caracteres para algum tipo de lista ilegal para os hashes de materiais protegidos por direitos autorais. Quando o usuário tentou compartilhar este material protegido por direitos autorais, os scanners automatizados do Dropbox detectaram o hash e bloquearam o compartilhamento.
Assim, você pode criar hash para senhas e arquivos de mídia de forma clara, mas que outras funções tem a hash criptográfica? Como já falamos, as funções de hash servem para muitos propósitos mais até do que eu sei. No entanto, há mais um aplicativo de hashing que nos interessa: as empresas de produtos antivírus como a Kaspersky Lab utilizam as funções hash criptográficas para detectar programas maliciosos.
Mais ou menos da mesma forma que os estúdios de cinema e gravadoras criam listas ilegais de hash para proteger os direitos autorais, existe um monte de números de listas ilegais com hash de malware (a maioria das quais estão disponíveis publicamente). Estas listas ilegais de hash de malwares – ou assinatura de malware – consistem nos valores de hash de malware ou nos valores de hash de componentes menores e reconhecíveis de malware. Por um lado, se um usuário encontra um arquivo suspeito, esse usuário pode digitar o seu valor de hash em um dos muitos registros publicamente disponíveis de hash de malware ou bancos de dados, que vão informar ao usuário se o arquivo é malicioso ou não. Por outro lado, um antivírus pode reconhecer e bloquear malware fazendo uma comparação de arquivos de hashes para sua base de dados (e também públicas).
As funções de hash criptográficas também são usadas para garantir uma coisa chamada integridade da mensagem. Em outras palavras, você pode garantir que alguma comunicação ou um arquivo não seja adulterado através de uma examinação dos has criados antes e depois da transmissão de dados. Se os dois hash são idênticos, então a transmissão é autêntica, significando que não houve adulteração.