Buscar

06-Funções Hash

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Funções Hash
APRESENTAÇÃO
Atualmente, existe uma infinidade de dados circulando nas redes de computadores, como nunca 
antes visto. Por esse motivo, é muito importante garantir que os usuários, tanto pessoas 
quanto empresas, tenham seus dados importantes e sigilosos a salvo de atacantes. Nesse sentido, 
as funções de hash têm sua importância, pois são ferramentas mais simples, que asseguram a 
integridade das informações.
Nesta Unidade de Aprendizagem, você vai estudar o conceito de função de hash, a estrutura do 
código hash e os tipos de ataque.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Conceituar uma função de hash.•
Compreender a estrutura do código hash.•
Identificar os tipos de ataque.•
DESAFIO
Um algoritmo de hash consiste em uma função matemática, aplicada em um conjunto de dados, 
que vai gerar um outro número aleatório, bem menor, conhecido como hash ou resumo. As 
funções de hash mais utilizadas ultimamente são algoritmos que geram resumos de 16 bytes ou 
de 128 bits. Os mais comuns são os algoritmos da família MD e, também, os algoritmos da 
família SHA. 
 
Qual algoritmo de hash você utilizaria para fazer esse tipo de operação em seu 
site? Como funciona?
INFOGRÁFICO
A cada dia surgem novas maneiras para que indivíduos maliciosos roubem ou extraviem dados 
de pessoas ou de empresas. Por isso, é importante assegurar que os dados mais essenciais, como 
as senhas, não possam ser descobertos facilmente por atacantes. 
 
Neste Infográfico, veja o conceito de função de hash e sua utilização.
Confira.
CONTEÚDO DO LIVRO
Devido à grande quantidade de dados que circulam na rede mundial de computadores, é comum 
que servidores e bancos de dados sejam invadidos, roubados ou que tenham suas informações 
comprometidas de alguma forma.
Portanto, é fundamental assegurar que os dados importantes para usuários e empresas, tais como 
senhas e dados confidenciais de clientes, não sejam descobertos por indivíduos maliciosos. As 
funções hash são relevantes, pois se apresentam como ferramentas simplificadas para garantir a 
integridade das informações.
No capítulo Funcões hash, da obra Fundamentos de segurança da informação, base teórica para 
esta Unidade de Aprendizagem, você vai estudar o conceito de função de hash, a estrutura do 
código hash e os tipos de ataques.
Boa leitura.
FUNDAMENTOS DE 
SEGURANÇA DA 
INFORMAÇÃO
Jeanine dos Santos 
Barreto
Funções hash
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Conceituar uma função hash.
  Compreender a estrutura do código hash.
  Identificar os tipos de ataques mais comuns às funções hash.
Introdução
Existe uma infinidade de dados circulando nas redes de computadores 
atualmente, como nunca antes visto.
Por esse motivo é muito importante garantir que os usuários, se-
jam pessoas ou empresas, tenham seus dados importantes e sigilosos 
a salvo de atacantes. É nesse sentido que as funções hash têm sua im-
portância, pois são ferramentas simples que asseguram a integridade 
das informações.
Neste capítulo, você vai estudar o conceito de função hash, a estrutura 
do código hash e os tipos de ataques mais comuns a tais funções.
Função hash
A cada dia surgem novas maneiras de indivíduos maliciosos roubarem ou 
extraviarem dados de indivíduos ou empresas. Por isso, é importante asse-
gurar que dados mais importantes, como senhas, não possam ser descobertos 
facilmente por atacantes.
Nesse sentido, uma função hash (conhecida também como função de 
resumo) é um algoritmo matemático que possibilita a transformação de uma 
grande quantidade de dados com tamanho variável em pequenos dados de 
tamanho fixo. Os resultados da função hash podem ser chamados de resumo, 
código hash, ou simplesmente hash. As funções de hash são conhecidas por 
resumirem os dados, e seu principal objetivo é a comparação de dados grandes 
ou sigilosos. As funções de hash são muito utilizadas para (NAKAMURA; 
GEUS, 2007):
  Efetuar buscas de elementos em bancos de dados e em estruturas de 
dados em memória — a busca de elementos por meio de resumos de 
dados é baseada na construção de índices, como se fossem o sumário 
de um livro, onde se encontra a página em que determinado assunto 
é tratado, e isso possibilita ir direto até essa página para ler o que se 
deseja. Nas funções hash, não é a partir do dado que ele é encontrado, 
e sim por meio do seu resumo de dado, ou seja, é feito o cálculo do 
resumo do dado e por meio dele é possível encontrar onde o dado está.
A integridade é o atributo da segurança da informação que consiste em uma mensagem 
sair do seu destinatário e chegar ao seu destino, sem que tenha havido inclusão, 
alteração ou exclusão no seu conteúdo, ou seja, a mensagem chega intacta ao destino.
  Fazer a verificação da integridade de arquivos baixados — utilizam-se 
as funções de hash diretamente sobre o dado, salvando-se o resumo 
do dado que foi gerado. Depois que o dado é transmitido para o seu 
receptor, ele calcula o resumo do dado que foi recebido e, assim, adquire 
um novo resumo do dado. Se os resumos de dados forem iguais, então 
o dado é igual, é íntegro. Se os resumos de dados forem diferentes, 
é preciso que o arquivo seja baixado novamente, para que haja nova 
verificação de integridade.
  Fazer o armazenamento e a transmissão de senhas de usuários — aqui 
é utilizado um procedimento parecido para o caso do armazenamento 
de senhas de usuários, pois é armazenado apenas o resumo da senha do 
usuário no servidor. Quando o usuário dá entrada com a sua senha, uma 
função hash calcula o resumo da senha, e o servidor faz a comparação 
com o resumo que está armazenado. Se os resumos das senhas forem 
iguais, o usuário será autenticado, caso contrário, ele deverá fazer uma 
nova tentativa de digitação de senha.
Funções hash2
Existem muitos tipos de funções hash, e a complexidade do código do 
seu algoritmo vai depender de qual característica pretende-se garantir com 
a função. Normalmente, a característica mais requerida para uma função 
hash é a unidirecionalidade. Essa característica significa que não é possível 
recuperar um dado original partindo do resumo do dado que foi gerado pela 
função, isso porque diversos dados são mapeados em um mesmo resumo 
(CABRAL; CAPRINO, 2015).
A unidirecionalidade é uma das principais diferenças entre uma função 
hash e uma função comum de criptografia, pois a função hash opera em uma 
única direção. A criptografia tem como princípio básico a reversibilidade, ou 
seja, é possível retornar ao dado original, o que não é permitido em uma função 
hash. A unidirecionalidade tem, como um exemplo comum, o resto de uma 
divisão, o que pode ser visto na Figura 1. Na divisão dos números 1, 11, 21, 
31, 41, 51, 61 e 71, por 10, por exemplo, o resto sempre será 1. É impossível, 
por meio do resto 1, saber qual número estava sendo dividido por 10, ou seja, 
essa operação é unidirecional.
Figura 1. Exemplo de geração de resumo com o resto de divisão.
DIVIDENDO DIVISOR RESTO OU
RESUMO
1
11
21
31
41
51
61
71
1
10
10
10
10
10
10
10
10
A segunda característica desejável para as funções hash é a resistência à 
colisão, que acontece quando dados originais geram o mesmo resumo, ao ser 
aplicada a função. Quem elabora uma função hash tem como objetivo reduzir 
a colisão ao menor nível possível. Resistir à colisão não significa evitar a sua 
existência ou fazer com que nenhuma colisão aconteça. Resistir à colisão 
significa elaborar um algoritmo preocupado em minimizar a sua ocorrência 
e, melhor do que isso, saber lidar com as colisões que venham a acontecer.
3Funções hash
A terceira característica necessária para as funções hash é a recorrência. 
Essa característica diz que sempre que uma função hash for aplicada sobre 
os mesmos dados originais serão gerados os mesmos resumos para os dados. 
Somente funções hash que obedeçam à característicada recorrência podem ser 
utilizadas para fazer buscas de elementos em bancos de dados ou verificações 
de integridade em arquivos baixados, ou ainda fazer o armazenamento e a 
transmissão de senhas de usuários em aplicações. A explicação é simples: 
sempre que o resumo de um dado estiver salvo e precisar ser comparado com 
outro resumo de dado (gerado por uma função) os resumos deverão coincidir, 
ou seja, deverão ser calculados e chegarem ao mesmo resumo, pois essa é a 
única forma de recuperar um dado que está armazenado.
Outra característica importante para as funções hash é a resistência à pré-
-imagem, que envolve a tentativa de encontrar um determinado valor de hash 
que seja igual ao valor do dado original. Esse atributo pode ser comparado 
à resistência à colisão, quando é matematicamente inviável encontrar dados 
originais diferentes que gerem os mesmos resumos.
Essas características são muito importantes, mas não são as únicas que as 
funções hash precisam ter. Uma função hash deve ter também uma grande 
quantidade de resumos possíveis, pois uma forma de ataque muito comum 
é buscar dados que gerem os mesmos resumos. É por esse motivo que as 
funções de hash mais seguras geram resumos que não são muito pequenos, 
como o resto 1 que foi utilizado no exemplo. Hoje em dia, as funções de hash 
são capazes de gerar resumos de até 512 bits, o que quer dizer que possuem 
1048 possibilidades de resumo.
Para aumentar ainda mais a segurança das funções de hash, é possível 
adicionar uma chave no momento da geração do resumo. Dessa forma, somente 
aquele que conhecer a chave será capaz de gerar o resumo de um determinado 
dado. Essa maneira é muito utilizada na verificação de arquivos baixados.
Um ataque em uma transmissão de arquivos ocorreria da seguinte forma: 
como um arquivo transmitido carrega o seu resumo junto, se um atacante 
interceptasse a transmissão, bastaria alterar o arquivo e inserir um novo resumo 
para que o receptor entendesse que o arquivo não havia sido alterado. No caso 
da utilização da chave para a geração do resumo, o atacante não tem condições 
de gerar um resumo que seja válido para a chave utilizada.
Funções hash4
O termo hash, em inglês, pode ser traduzido como a transformação de uma grande 
quantidade de dados em uma pequena quantidade de dados.
Uma função hash recebe um valor de um tipo específico e retorna um código, um 
resumo para que esse dado possa ser identificado.
O código hash
A função hash tem um funcionamento relativamente fácil de compreender. Um 
algoritmo de hash consiste em uma função matemática que é aplicada em um 
conjunto de dados e que gera outro número aleatório, bem menor, conhecido 
como hash (STALLINGS; BROWN, 2014.).
A transformação de um dado original em um hash envolve o cálculo do 
valor da função que vai colocar em prática essa transformação. O bloco de 
dados gerado pela função hash tem um comprimento fixo, enquanto os dados 
de entrada possuem tamanho variável. Qualquer que seja o comprimento 
dos dados de entrada, o hash de saída vai ser sempre um hash com o mesmo 
comprimento.
A geração de números aleatórios faz com que as funções hash gerem iden-
tificadores com baixa probabilidade de colisões, mas não existe uma função 
hash que seja perfeita, que não apresente colisão nenhuma, assim como em 
todos os assuntos tratados pela segurança da informação. Existem funções 
hash cuja taxa de colisão é bem pequena e esse é o propósito de uma função 
hash: diminuir a taxa de colisão ao mínimo possível.
Levando em consideração que provavelmente vários dados vão dar origem 
ao mesmo hash, é preciso haver um método para trabalhar com as colisões 
encontradas. Ou seja, independentemente da função hash que estiver sendo 
utilizada, dificilmente não irão ocorrer colisões, e elas precisam ser trabalhadas 
de alguma forma. 
5Funções hash
O termo colisão diz respeito ao fato de uma função hash, partindo de dados originais, 
gerar resumos (hash) iguais.
O ataque do aniversário é um bom exemplo de colisão, pois diz respeito ao fato de 
haver, em um grupo de pessoas, duas ou mais que tenham nascido na mesma data 
e, por isso, aplicando-se uma função hash sobre o seu nascimento, o resumo gerado 
seria idêntico.
As funções de hash mais utilizadas atualmente são algoritmos que geram 
resumos de 16 bytes, ou 128 bits. Os mais conhecidos são os algoritmos da 
família MD e os algoritmos da família SHA. É possível encontrar na Internet 
sites que apresentam o funcionamento online desses algoritmos, para gerar 
resumos de sequências de caracteres (CABRAL; CAPRINO, 2015).
Para conhecer o resultado da função hash para os algoritmos mais conhecidos, basta 
acessar o link a seguir:
https://goo.gl/Ms0cj
Como exemplo, foi inserida a sequência de caracteres “professor” e foram gerados 
os seguintes resumos (hash):
  Com o algoritmo MD4 � 2014ba362622d30e69edb755d387825a
  Com o algoritmo MD5 � 3f9cd3c7b11eb1bae99dddb3d05da3c5
  Com o algoritmo SHA-1 � 68d5fef94c7754840730274cf4959183b4e4ec35
O algoritmo MD4
O algoritmo MD4 (Message Digest 4) foi desenvolvido pela RSA Data Security 
em 1990, mas teve muitos problemas com a segurança e inúmeros ataques 
bem-sucedidos detectados. Por isso, foi considerado frágil demais e substituído 
pelo algoritmo MD5.
Funções hash6
Esse algoritmo gera um resumo de 128 bits e os dados originais devem ter 
um comprimento múltiplo de 512 bits, ou então serem completados por mais 
1 bit, seguido de zeros até que o total seja um múltiplo de 512 bits. A lógica 
utilizada na construção desse algoritmo foi fundamental para a elaboração 
de outros algoritmos sucessores, como o MD5 e o SHA-1.
O algoritmo MD5
O algoritmo MD5 consiste em uma função hash de dispersão criptográfi ca 
unidirecional, que gera resumos de 128 bits. É muito utilizado para a verifi cação 
da integridade de arquivos baixados da Internet e também para a verifi cação de 
login de usuários. Esse algoritmo foi desenvolvido pela RSA Data Security em 
1991 e tem a característica de ser unidirecional, ou seja, um hash gerado por 
um algoritmo MD5 não pode ser transformado novamente no dado original.
Para fazer a verificação do hash, é feita a comparação entre o hash confiável, 
que foi calculado com o dado original, e o hash gerado com o arquivo ou a 
senha recebida. Isso é feito tanto para arquivos grandes de download, como 
para uma senha digitada por um usuário, por exemplo. O site que disponibiliza 
um arquivo para download possui o hash correto e muitas vezes o divulga, a 
fim de que o usuário que baixou o arquivo possa verificar a sua integridade. 
Da mesma forma, o sistema no qual o usuário digita a senha possui o hash 
correto, assim ocorre a comparação entre o que foi digitado e o esperado.
O algoritmo MD6
O algoritmo MD6 surgiu em 2008 como uma atualização do algoritmo MD5, 
pois trabalha com hash de 224, 256, 384 e até 512 bits.
O algoritmo SHA-0
O algoritmo SHA-0 (Secure Hash Algorithm, ou algoritmo de dispersão seguro) 
foi o primeiro algoritmo da família SHA, publicado pelo National Institute of 
Standards and Technology (NIST), e é baseado no algoritmo MD5.
O algoritmo SHA-1
O algoritmo SHA-1 também foi publicado pelo NIST, em 1995, tendo um 
valor de dispersão de 20 bytes, ou 160 bits. Apesar de ser muito semelhante 
ao SHA-0, ele resolve os problemas de segurança atribuídos ao seu antecessor.
7Funções hash
Esse algoritmo é utilizado em aplicações e protocolos de segurança como 
TLS, SSL, PGP e IPsec, mas as aplicações em que é utilizado também podem 
usar o MD5. Outra aplicação do SHA-1 são os sistemas de controle de revisão, 
como o Git, no qual são identificadas as revisões e detectados dados corrom-
pidos ou adulterados. Uma curiosidade: essa é a função hash utilizada no 
videogame Nintendo Wii, quando é feita a verificação da assinatura enquanto 
o sistema do jogo é inicializado.
O SHA-1 está, aos poucos, sendo retirado de utilização em aplicações 
governamentais para ser substituído pelo SHA-2.
O algoritmo SHA-2A Agência de Segurança Nacional dos EUA criou o algoritmo SHA-2 e ainda 
não foram relatados problemas de segurança nele, apesar de ser semelhante 
ao SHA-1. Esse algoritmo trabalha com resumos de 224, 256, 384 e 512 bits.
Essa função hash é utilizada em substituição ao SHA-1. Exemplos de 
sua implementação ocorrem em aplicações de segurança do governo norte-
-americano, processos de autenticação de pacotes de software, autenticação 
de arquivos do Tribunal Penal Internacional de Ruanda e ainda na verificação 
de transações e cálculos de criptomoedas, como o Bitcoin.
O algoritmo SHA-3
O algoritmo SHA-3 surgiu em 2007 com a proposta de substituir os algoritmos 
SHA-1 e SHA-2, e foi liberado para domínio público em 2015. 
Tipos de ataques às funções hash
Um exemplo de resultado gerado por uma função hash pode ser o dígito verifi -
cador de um boleto bancário. Considerando a numeração do boleto abaixo, na 
Figura 2, pode-se observar que o numeral 8, que encerra a sequência de alga-
rismos, foi calculado levando em consideração todos os algarismos anteriores. 
Figura 2. Numeração de boleto bancário.
Funções hash8
Caso algum dos algarismos sofra algum tipo de modificação, o dígito 
verificador (o hash) será alterado também. Como a instituição bancária espera 
um determinado hash para uma determinada sequência de caracteres, se houver 
algum erro de digitação ou de leitura no código do boleto, ele será rejeitado, 
pois o hash não irá coincidir. Um hash que contenha apenas um caractere é 
significativamente mais simples do que outro que contenha muitos caracteres, 
e é por esse motivo que é aplicado para evitar ataques mais simples, como um 
erro de digitação, exclusão ou modificação de algarismo.
Outra possibilidade de evitar ataques e extravio de informações é utilizar 
as funções de hash para a verificação de downloads de arquivos da Internet. 
Quando um arquivo grande é baixado de um site, normalmente é disponi-
bilizada a informação do hash do arquivo (CABRAL; CAPRINO, 2015). 
Dessa maneira, assim que o download do arquivo for finalizado, é possível 
calcular o seu hash e fazer uma comparação com o hash disponibilizado. Se 
o hash calculado for diferente do hash informado pelo site, é certo que houve 
algum problema, ou que algum indivíduo malicioso conseguiu interceptar o 
download, fazendo modificações.
Muitos ataques que são feitos contra algoritmos de hash são realizados 
simplesmente para provar que a tecnologia que utilizam está obsoleta, que é 
hora de mudar, e que é necessário passar a utilizar outro algoritmo para uma 
determinada aplicação (NAKAMURA; GEUS, 2007).
Ataque do aniversário
Um dos ataques a algoritmos ou funções hash é chamado de ataque do aniver-
sário. É um tipo de ataque criptográfi co contra a matemática que está envolvida 
na teoria da probabilidade entre as datas de aniversário. O sucesso desse tipo 
de ataque vai depender de uma probabilidade maior de encontrar colisões na 
geração de hash, gerados por meio da entrada de dados originais coincidentes. 
Nesse sentido, o objetivo do ataque é encontrar entradas ou dados originais 
iguais, que irão gerar resumos iguais também.
9Funções hash
Para entender como é fácil encontrar dados originais iguais, que servirão para gerar um 
ataque de aniversário, basta imaginar que, em um grupo de mil pessoas, a probabilidade 
de duas ou mais pessoas terem nascido no mesmo dia é bem grande.
Podem ser elaboradas funções matemáticas para encontrar entradas iguais 
em um grupo, ou simplesmente escolher as entradas de maneira aleatória, mas, 
uma vez encontradas as entradas, esse ataque tende a ser eficiente, pois os 
resumos gerados serão iguais. Para evitar esse tipo de ataque, o comprimento 
da função hash empregado para os dados de saída deve ser suficientemente 
grande para que o ataque de aniversário se torne inviável matematicamente.
Ataque de força bruta
Um ataque de força bruta pode também ser conhecido como um ataque de busca 
de chave por exaustão. Esse tipo de ataque pode ser usado contra quaisquer tipos 
de dados codifi cados, de qualquer tamanho, e é usado normalmente quando é 
a última opção do atacante, quando já não há mais nenhuma vulnerabilidade 
para ser explorada e não há nada mais fácil para ser empregado no ataque.
O ataque de força bruta consiste na verificação sistemática em massa de 
todas as combinações possíveis de dados originais e resumos, até que a combi-
nação correta seja encontrada. O sucesso desse ataque envolve o conhecimento 
do tamanho correto dos dados originais e dos resumos gerados.
Ataque do homem do meio
O ataque do homem do meio (ou, em inglês, man in the middle) diz respeito 
ao indivíduo malicioso que faz a interceptação entre os dados de origem e 
destino, como ilustrado na Figura 3. Nesse tipo de ataque, os dados que são 
trocados entre o remetente e o destinatário sofrem interceptação de alguma 
maneira (são registrados e corrompidos ou alterados pelo indivíduo malicioso) 
sem que as vítimas percebam que estão sendo atacadas. 
Quando a mensagem é interceptada pelo atacante, ele a modifica e a retrans-
mite da forma que quiser. Tendo acesso às mensagens, o atacante pode decidir 
Funções hash10
enviá-las para os destinatários verdadeiros em partes alteradas, corrompidas, 
ou com partes excluídas.
Em uma comunicação perfeita e efetiva, o remetente e o destinatário da 
mensagem trocam as informações sem sofrer interferência de nenhum tipo 
através de um canal; entre a Internet e uma rede local de computadores, por 
exemplo. Como as vítimas não percebem que estão sofrendo esse ataque, 
podem até mesmo cumprir ordens do atacante sem ter conhecimento disso.
Figura 3. Esquema do ataque homem do meio.
Fonte: Aurelius (2007). 
Ataque de pré-imagem
Um ataque de pré-imagem em uma função hash envolve a tentativa de achar 
um valor específi co de hash como resultado da função hash. Alguns desses 
ataques já foram relatados, mas não foram efetivos. Caso os ataques desse 
tipo passem a ter sucesso, o funcionamento dos protocolos de Internet estaria 
afetado de maneira importante. Normalmente os ataques de pré-imagem são 
mais difíceis de executar do que os ataques de colisão.
Ataque de colisão
O ataque de colisão é feito por meio da geração de uma colisão no resultado da 
aplicação de um algoritmo de hash. A colisão acontece quando dados originais 
diferentes entre si geram como resultado um hash igual.
11Funções hash
Esse tipo de ataque foi utilizado pela Microsoft para provar a ineficácia do 
algoritmo MD5 com relação a certificados digitais. Nesse ataque, foram gerados 
dois certificados com um mesmo hash. Um dos certificados foi enviado para 
uma autoridade certificadora e, depois que ele foi assinado, essa assinatura 
foi copiada para o outro certificado, que se tornou assinado também, só que 
de maneira inválida. Para o ataque ser mais efetivo, o certificado copiado foi 
configurado como o certificado original, permitindo que ele fosse usado para 
assinar novos certificados. Esse ataque comprovou que é muito importante que 
as entidades certificadoras assinem novos certificados utilizando algoritmos 
de hash diferentes do MD5.
AURELIUS, M. Ataque do homem do meio: o que é? 2017. Disponível em: <http://www.
marcusaurelius.com.br/o-que-e-um-ataque-do-homem-do-meio/>. Acesso em: 04 
ago. 2018.
CABRAL, C.; CAPRINO, W. Trilhas em segurança da informação: caminhos e idéias para 
a proteção de dados. Rio de Janeiro: Brasport, 2015.
NAKAMURA, E. T.; GEUS, P. L. Segurança de redes em ambientes cooperativos. São Paulo: 
Novatec, 2007.
STALLINGS, W.; BROWN, L. Segurança de computadores: princípios e práticas. 2. ed. Rio 
de Janeiro: Elsevier, 2014.
Funções hash12
Encerra aqui o trecho do livro disponibilizado para 
esta Unidade de Aprendizagem. Na Biblioteca Virtual 
da Instituição, você encontra a obra na íntegra.
 
DICA DO PROFESSOR
Muitos ataques contra os algoritmos de hash são realizados simplesmente para provar que a 
tecnologia que utilizam está obsoleta,que é hora de mudar e que é necessário passar a utilizar 
um outro algoritmo para uma determinada aplicação.
Nesta Dica do Professor, conheça os tipos de ataque.
Conteúdo interativo disponível na plataforma de ensino!
EXERCÍCIOS
1) Qual é o conceito de função de hash?
A) Algoritmo matemático que transforma dados de hash, de tamanho variável, em dados 
originais, de tamanho fixo.
B) Algoritmo matemático que ordena dados originais em ordem crescente e compara com 
dados de hash.
C) Algoritmo matemático que transforma dados de resumo, com tamanho fixo, em dados de 
tamanho variável.
D) Algoritmo matemático que transforma dados originais, de tamanho variável, em dados 
menores, de tamanho fixo.
E) Algoritmo matemático que ordena dados de hash em ordem decrescente.
2) São características das funções de hash:
A) direcionalidade, resistência à colisão e diferenciação.
B) bidimensionalidade, resistência à ordenação e recorrência.
C) unidirecionalidade, resistência à colisão e recorrência.
D) bidirecionalidade, resistência à colisão e recorrência.
E) unidirecionalidade, colisão zero e repetência.
3) Como é o funcionamento básico de uma função de hash?
A) Uma função é aplicada nos dados originais e os organiza em ordem crescente.
B) Uma função é aplicada em dados de hash para chegar aos dados originais.
C) Uma função é aplicada nos dados originais e os organiza em ordem decrescente.
D) Uma função é aplicada nos dados de resumo, para ordenar os dados originais em ordem 
crescente. 
E) Uma função é aplicada nos dados originais de tamanho variável, gerando um conjunto de 
dados de hash ou resumo, menor que o original, de tamanho fixo.
4) São conhecidos algoritmos de hash:
A) MB11 e CHA1.
B) MD5 e SHA-1.
C) MD0 d SHA-5.
D) ND5 e CHA-2.
E) ND4 e SHA-1.
5) O principal motivo para os ataques às funções hash é:
A) provar que os algoritmos utilizados estão obsoletos.
B) provar que as funções de hash são infalíveis.
C) provar que não há necessidade de serem elaborados novos algoritmos de hash.
D) provar que não há possibilidade de que existam colisões em funções de hash.
E) provar que as funções de hash são bidirecionais.
NA PRÁTICA
Existem muitos tipos de ataques aos algoritmos de hash realizados com a intenção 
de demonstrar que a tecnologia empregada já está obsoleta, sendo necessário o uso de um outro 
algoritmo para uma determinada aplicação.
Veja um exemplo a seguir, Na Prática.
Conteúdo interativo disponível na plataforma de ensino!
SAIBA +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do 
professor:
Função hash
Assista ao vídeo, para saber mais sobre as funções de hash, seus tipos, sua importância e 
algumas demonstrações.
Conteúdo interativo disponível na plataforma de ensino!
Validação de dados através de hashes criptográficos
Leia, no artigo indicado, sobre a aplicação de funções de hash na área Forense Computacional, 
na tentativa de combater o crime cibernético nesse meio.
Conteúdo interativo disponível na plataforma de ensino!
Assegurando a integridade dos dados com códigos hash
A partir da leitura a seguir, aprenda sobre a maneira de gerar e de verificar códigos de hash, a 
fim de garantir a integridade dos dados.
Conteúdo interativo disponível na plataforma de ensino!
Se você entender a função da hash, você entenderá a blockchain
No artigo recomendado, veja a relação entre as funções de hash e a tecnologia blockchain. 
Aprenda, ainda, que as funções de hash são fundamentais para o sucesso da segurança das 
operações com criptomoedas.
Conteúdo interativo disponível na plataforma de ensino!

Continue navegando