Buscar

Técnicas Criptográficas

Prévia do material em texto

1 
 
 
 
UNIVERSIDADE PAULISTA 
CURSO DE CIÊNCIA DA COMPUTAÇÃO 
 
 
DP Atividade Prática Supervisionada 
(76B8) 
 
 
 
 
 
“AS TÉCNICAS CRIPTOGRÁFICAS, CONCEITOS, USOS E APLICAÇÕES” 
 
 
João Paulo Soares de Brito – D9642A-5 
 
 
 
 
 
 
 
 
 
BRASILIA-DF
2 
 
Índice 
 
 
1 – Objetivo Do Trabalho--------------------------------------------------------------------------03 
1.1 – Objetivo Geral---------------------------------------------------------------------------------03 
1.2 – Objetivos Específicos-----------------------------------------------------------------------03 
2 – Introdução----------------------------------------------------------------------------------------04 
3 – O que é Criptografia ---------------------------------------------------------------------------06 
3.1 – Proteção De Usuários De Computadores Na Conexão e Nos Dados ---------07 
3.2 – Por Que Usar a Criptografia?-------------------------------------------------------------07 
4 – Técnicas criptográficas mais utilizadas---------------------------------------------------08 
4.1 – Chave simétrica------------------------------------------------------------------------------08 
4.1.1 – DES (Data Encryption Standard)------------------------------------------------------08 
4.1.2 – IDEA (International Data Encryption Algorithm)-----------------------------------09 
4.1.3 – Blowfish--------------------------------------------------------------------------------------09 
4.1.4 – RC (Ron’s Code ou Rivest Cipher)----------------------------------------------------09 
4.2 – Chave Assimétrica---------------------------------------------------------------------------10 
4.2.1 – RSA (Rivest, Shamir And Adleman)-------------------------------------------------10 
4.2.2 – ElGamal--------------------------------------------------------------------------------------10 
4.3 – Redes Sem Fio-------------------------------------------------------------------------------11 
4.3.1 – WEP-------------------------------------------------------------------------------------------11 
4.3.2 – WPA e WPA2-------------------------------------------------------------------------------11 
4.4 – Certificação Digital---------------------------------------------------------------------------11 
4.5 – Criptografia Quântica------------------------------------------------------------------------11 
4.6 – PGP---------------------------------------------------------------------------------------------11 
5 – Dissertação (Funções Hash e Whirlpool)------------------------------------------------12 
5.1 – Hash -------------------------------------------------------------------------------------------12 
5.2 – Função Hash --------------------------------------------------------------------------------13 
5.3 – Whirlpool ---------------------------------------------------------------------------------------14 
5.4 – Implementações ----------------------------------------------------------------------------15 
5.5 – Função ----------------------------------------------------------------------------------------15 
5.6 – Programas Que Utilizam o Whirlpool----------------------------------------------------16 
5.7 – Vantagens Em Se Utilizar Hash No Programa--------------------------------------18 
5.8 – Vulnerabilidades------------------------------------------------------------------------------19 
6 – Projeto Do Programa---------------------------------------------------------------------------20 
7 – Relatório Com Linhas De Código Do Programa---------------------------------------23 
8 – Programa Funcionando em um Computador-------------------------------------------25 
9 – Bibliografia ---------------------------------------------------------------------------------------28 
 
 
 
3 
 
 
1 – Objetivos Do Trabalho 
 
1.1 – Objetivo Geral 
 
 Este trabalho tem por objetivo central expor uma análise acerca da criptografia, 
abordando o tema focado nas técnicas de criptografia, além de explicar como esse 
tema surgiu e falar a importância de se utilizar esse conceito, e também à elaboração 
de um programa sobre o tema citado utilizando como base o aprendizado adquirido 
durante o primeiro e segundo semestres de 2019. 
 
1.2 – Objetivos Específicos 
 
 Alguns objetivos específicos deste trabalho são: 
• Pesquisar e dissertar sobre a Criptografia; 
• Pesquisar e dissertar sobre como a Criptografia nos protege; 
• Pesquisar e dissertar sobre o porquê utilizar a Criptografia; 
• Pesquisar e dissertar sobre as principais técnicas de Criptografia; 
• Desenvolver um programa para o tema citado. 
 
4 
 
 
2 – Introdução 
 
 Ganhando grande notoriedade durante a Segunda Guerra Mundial a criptografia 
ficou conhecida pela máquina enigma por ser uma máquina eletromecânica de 
criptografia com rotores, utilizada tanto para criptografar como para descriptografar 
códigos de guerra, usada de várias formas sendo adaptada pela maior parte das forças 
militares alemãs a partir de cerca de 1930. 
 Nos últimos anos com o crescente uso das redes de computadores por 
organizações para conduzir seus negócios e a massificação do uso da Internet, surgiu 
à necessidade de se utilizar melhores mecanismos para proteger as informações. Um 
exemplo visto diariamente por qualquer usuário e o whatsapp que utiliza a criptografia 
de ponta a ponta. Que significa que apenas os usuários envolvidos na conversa terão 
acesso às mensagens, já que para descriptografá-las é necessário possuir uma chave 
particular, que somente eles possuirão. Utilizando um sistema de criptografia 
Assimétrica. 
 Os algoritmos da criptografia computacional podem ser divididos em simétricos 
e assimétricos. Algoritmos simétricos são aqueles em que a mesma chave é usada para 
encriptar e descriptar um exemplo desse método são senhas de celular, logins, etc.. 
Assimétricos são aqueles que requerem duas chaves, uma para cada operação. 
 Há duas maneiras básicas de se criptografar mensagens: através de códigos ou 
cifras. 
 A criptografia por código procura esconder o conteúdo da mensagem através de 
códigos predefinidos entre as partes envolvidas na troca de mensagens. Imagine o 
exemplo onde em uma batalha, uma guarnição tem duas opções de ação contra o 
inimigo: atacar pelo centro do inimigo ou não atacar. A decisão depende da avaliação 
de um comandante posicionado em um local distante da posição de ataque desta 
guarnição. É acertado que se for enviado uma mensagem com a palavra "ctriker", o 
exército deverá atacar pelo centro; se for enviada uma mensagem com a palavra 
"araçagy", o ataque deve ser pela direita. Com isso, mesmo que a mensagem caia em 
mãos inimigas, nada terá significado coerente. 
 O problema deste tipo de solução é que com o uso constante dos códigos, eles 
são facilmente decifrados. Outro problema é que só é possível o envio de mensagens 
predefinidas. Por exemplo: não há como o general mandar seu exército atacar pela 
esquerda. 
 O outro método usado para criptografar mensagens é a cifra, técnica na qual o 
conteúdo da mensagem é cifrado através da mistura e/ou substituição das letras da 
mensagem original. A mensagem é decifrada fazendo-se o processo inverso ao 
ciframento. 
 
 
 
5 
 
 A criptografia surgiu séculos atrás, e tinha como único objetivo proteger o 
conteúdo de mensagens trocadas. Hoje, a criptografia moderna vai mais além, e tem 
como premissa não apenas a garantia da confidencialidade dos dados, mas também 
garantir a integridade e a autenticidade dos mesmos, que, por sinal, são considerados 
um dos pilares da Segurança da Informação (além destes pilares, temos 
a disponibilidade, que não pode ser garantida pela criptografia). 
 Basicamente, um sistema para ser considerado seguro precisa satisfazer estes 
pilares. E para garantir a confidencialidadee a integridade, é bem provável que a 
criptografia será utilizada. 
 
6 
 
 
3 – O que é Criptografia 
 
 Criptografia é um sistema de algoritmos matemáticos que codificam dados do 
usuário para que só emissor e o receptor consiga decifrá-la. O termo Criptografia surgiu 
da fusão das palavras gregas Kryptós e gráphein, elas significam respectivamente 
“oculto” e “escrever”. 
 Quando os dados são criptografados, é aplicado a eles um algoritmo para 
codificá-los de modo que eles não tenham mais o formato original e, portanto, não 
possam ser lidos. Os dados só podem ser decodificados ao formato original com o uso 
de uma chave de decriptografia específica. As técnicas de codificação constituem uma 
parte importante da segurança dos dados, pois protegem informações confidenciais de 
ameaças que incluem exploração por malware e acesso não autorizado por terceiros. 
A criptografia de dados é uma solução de segurança versátil: pode ser aplicada a um 
dado específico (como uma senha) ou, mais amplamente, a todos os dados de um 
arquivo, ou ainda a todos os dados contidos na mídia de armazenamento. 
 O primeiro uso documentado de criptografia surgiu há cerca de 1900 anos antes 
de Cristo, no Egito, quando foram usados hieróglifos que não correspondiam ao padrão 
existente. 
 O uso de criptografias durante períodos de guerra é comum. As agências de 
inteligência criam suas próprias criptografias para se comunicar, evitando que suas 
mensagens possam ser interceptadas e lidas. 
 Existem dois métodos de criptografia: criptografia simétrica e assimétrica. 
Criptografia simétrica, também conhecida como criptografia de chave secreta, diz 
respeito ao remetente e o destinatário, sendo que a mesma chave é usada para 
criptografar e decodificar uma mensagem. A criptografia assimétrica, ou criptografia de 
chave pública usa o que é chamado de um ‘par de chaves’ – uma chave pública para 
criptografar a mensagem e uma chave privada para decodificá-la. 
 Na computação, a técnica usada são a de chaves, as chamadas "CHAVES 
CRIPTOGRAFICAS", Trata-se de um conjunto de bits? Baseado em um algoritmo 
capaz de codificar e de decodificar informações. Se o receptor da mensagem usar uma 
chave diferente e incompatível com a do emissor ela não conseguirá ter a informação. 
 A primeira técnica de criptografia usava apenas um algoritmo de decodificação, 
assim bastava o receptor de o algoritmo para decifrá-la, porém se um intruso 
conhecesse esse algoritmo poderia decifrar a informações caso capturasse os dados 
criptografados. Ainda existe outro problema imagine: 
 
 Se a pessoa A tivesse que enviar uma informação para a pessoa B, e a pessoa 
C tivesse que receber uma informação da pessoa A, mas a pessoa C não pode saber 
7 
 
a informação passada a pessoa B, mas para a pessoa B e a pessoa C obterem a 
informação precisaria ter o algoritmo, assim teríamos que ter mais que um algoritmo. 
 Com o uso de chaves, um emissor pode usar o mesmo algoritmo (o mesmo 
método) para vários receptores. Basta que cada um receba uma chave diferente. Além 
disso, caso um receptor perca ou exponha determinada chave, é possível trocá-la, 
mantendo-se o mesmo algoritmo. 
 
3.1 – Proteção De Usuários De Computadores Na Conexão e Nos Dados 
 
 Em geral, você geralmente tem contato com a criptografia de dados quando 
precisa inserir informações de identificação pessoal em um formulário da Web. Sites 
financeiros, do governo, de escolas e de compras costumam criptografar seus dados 
para ajudar na proteção contra roubo e fraude. Sempre verifique se os formulários que 
você preenche na Web são seguros e se os seus dados serão criptografados. Observe 
se: 
 O URL da página da Web começa com "https": isso indica que seus dados serão 
criptografados e transferidos por meio de um protocolo seguro. 
 Aparece um ícone de cadeado, geralmente no canto inferior esquerdo ou inferior 
direito da tela do navegador. Ao clicar no ícone de cadeado, você consegue ver os 
detalhes de segurança do site. 
 Assim como você espera que os dados confidenciais que insere em um site de 
terceiros sejam criptografados e protegidos, os dados em seu computador de casa 
também precisam ser protegidos. Arquivos, senhas, e-mails e backups de dados devem 
ser criptografados para que estejam a salvo de hackers e ladrões. Existem soluções de 
segurança versáteis para criptografar e armazenar informações confidenciais. 
 Quando se trata dos seus dados, o objetivo principal de criptografá-los – mesmo 
que você tenha criado um backup ou senhas seguras – é garantir sua privacidade, 
protegê-los e assegurar a propriedade intelectual. Isso também é conhecido como 
criptografia de endpoint que, basicamente, adiciona uma camada extra de proteção 
para as informações confidenciais em seu PC e dispositivos, dados armazenados em 
mídia removível, como USB, CD, DVD ou pastas e arquivos específicos. 
 
3.2 – Por Que Usar a Criptografia? 
 
 Telefonemas, e-mails, compras online, mídia social e navegação em geral são 
atividades online que não podemos dispensar em nossas vidas. Enquanto estamos 
constantemente procurando ou compartilhando informações online, nossos dados 
estão essencialmente armazenados em algum lugar. 
 A maioria das pessoas não tem certeza onde é esse “algum lugar”, mas esses 
dados deveriam estar disponíveis só para o provedor de serviço de intermediação de 
sua conversa. Porém, ela pode estar visível para as empresas de telecomunicação 
transportando seus pacotes de Internet e, assim, suas comunicações supostamente 
privadas e seguras podem ser interceptadas. 
 Como muitos casos provaram, dados de usuários e empresas estão cada vez 
mais sendo alvos de hackers e cibercriminosos, resultando em violações de dados e 
https://canaltech.com.br/software/O-que-e-Backup/
https://canaltech.com.br/hardware/quais-sao-as-diferencas-entre-o-usb-11-20-e-30-639/
8 
 
ataques direcionados. Só essa razão deveria servir como um alerta para os que não 
pensaram em proteger suas comunicações por meio de criptografia. 
 O uso da criptografia, portanto, permite que você: 
1. Proteja os dados sigilosos armazenados em seu computador, como o seu 
arquivo de senhas e a sua declaração de Imposto de Renda; 
2. Crie uma área (partição) específica no seu computador, na qual todas as 
informações que forem lá gravadas serão automaticamente criptografadas; 
3. Proteja seus backups contra acesso indevido, principalmente aqueles enviados 
para áreas de armazenamento externo de mídias; 
4. Proteja as comunicações realizadas pela Internet, como os e-mails 
enviados/recebidos e as transações bancárias e comerciais realizadas. 
 
4 – Técnicas Criptográficas Mais Utilizadas 
 Os diferentes tipos de criptografia são técnicas pelas quais a informação pode 
ser transformada da sua forma original para outra ilegível, de forma que possa ser 
conhecida apenas por seu destinatário (que possui o segredo de como ler a 
mensagem), o que a torna difícil de ser lida por alguém não autorizado. Assim sendo, 
só o receptor da mensagem pode ler a informação com facilidade. 
 A criptografia é algo que vem desde muito antigamente. Existem registros de 
criptografia do ano 1900 a.C., no Egito, quando um escrivão usou hieróglifos fora do 
padrão numa inscrição. Também, foi bastante usada em tempos de guerras, para evitar 
que o inimigo interceptasse as mensagens e pudesse ler as instruções. Muitas mentes 
intelectuais trabalharam na criptografia de mensagens e em maneiras de decifrá-las. 
 Desde então, a criptografia foi ganhando os mais diferentes tipos de dificuldade, 
sempre com o objetivo de transmitir informações de maneira segura. Hoje, existem 
inúmeros algoritmos que realizam a criptografia para tentar esconder os dados de um 
acessopúblico. 
 Vamos falar aqui sobre dois tipos de chaves que são usadas nesse processo de 
criptografar uma mensagem: simétricas e assimétricas. 
 
 
4.1 – Chave Simétrica 
 A mesma chave é utilizada tanto pelo emissor quanto por quem recebe a 
informação. Ou seja, a mesma chave é utilizada para codificação e para a decodificação 
dos dados. Não é recomendado seu uso para guardar informações muito importantes. 
Vamos ver alguns exemplos: 
 
4.1.1 – DES (Data Encryption Standard): 
https://www.oficinadanet.com.br/artigo/443/o_que_e_criptografia
https://www.oficinadanet.com.br/redirect.php?tipo=postout&urlout=..%2Fartigo%2F443%2Fo_que_e_criptografia
9 
 
 Criado em 1977 pela IBM, é considerado inseguro devido a suas chaves de 56-
bits (permite até 72 quatrilhões de combinações). Foi quebrado utilizando o método de 
"força bruta" (tentativa e erro); 
 É uma das primeiras criptografias utilizadas e é considerada uma proteção básica 
de poucos bits (cerca de 56). O seu algoritmo é o mais difundido mundialmente e realiza 
16 ciclos de codificação para proteger uma informação. 
 A complexidade e o tamanho das chaves de criptografia são medidos em bits. 
Quando uma criptografia é feita com 128 bits, significa que 2128 é o número de chaves 
possíveis para decifrá-la. Atualmente, essa quantidade de bits é considerada segura, 
mas quanto maior o número, mais elevada será a segurança. 
 Quando dizemos que um bloco foi criptografado em bits, significa que um conjunto 
de informações passou pelo mesmo processo da chave, tornando-se ilegível para 
terceiros. 
 O DES pode ser decifrado com a técnica de força bruta (o programa testa as 
possibilidades de chave automaticamente durante horas). Por essa razão, os 
desenvolvedores precisam buscar alternativas de proteção mais complexas além do 
DES. 
 
4.1.2 – IDEA (International Data Encryption Algorithm): 
 Criado em 1991 por James Massey e Xuejia Lai. Utiliza chaves 128-bits e possui 
estrutura parecida com a do DES; 
 O Internacional Encryption Algorithm (IDEA) é uma chave simétrica desenvolvida 
em 1991, que opera blocos de informações de 64 bits e usa chaves de 128 bits. 
 O algoritmo utilizado atua de forma diferente, pois usa a confusão e difusão para 
cifrar o texto. Na prática, ele utiliza três grupos algébricos com operações misturadas, 
e é dessa forma que o IDEA consegue proteger as informações. 
 
4.1.3 – Blowfish: 
 Desenvolvido em 1993 por Bruce Schneier, utiliza chaves de 32 a 448-bits. O 
algoritmo não é patenteado, tem sua licença grátis e está à disposição de todos. 
 Esse é outro algoritmo desenvolvido para substituir o DES. É uma cifra 
simétrica que divide as informações em blocos de 64 bits e criptografa cada um deles 
individualmente. 
 O Blowfish é conhecido por sua velocidade de encriptação e efetividade em 
geral. Trata-se de uma tecnologia bastante segura, pois há estudiosos no assunto que 
afirmam que o código não pode ser quebrado. 
 Ele é completamente grátis, e qualquer indivíduo pode conseguir uma cópia de 
seu código-fonte, alterar e utilizá-lo em diferentes programas. De forma geral, 
o Blowfish é usado em plataformas de e-commerce para garantir segurança nos 
pagamentos e proteger senha de acesso dos usuários. 
 
4.1.4 – RC (Ron's Code ou Rivest Cipher): 
http://blog.validcertificadora.com.br/?p=8897
http://blog.validcertificadora.com.br/?p=8897
http://blog.validcertificadora.com.br/?p=9562
10 
 
 Criado por Ron Rivest na empresa RSA Data Security, esse algoritmo é muito 
utilizado em e-mails e faz uso de chaves que vão de 8 a 1024 bits. Possui várias 
versões: RC2, RC4, RC5 e RC6. Essencialmente, cada versão difere da outra por 
trabalhar com chaves maiores. 
 Há ainda outros algoritmos conhecidos, como o AES 
(Advanced Encryption Standard) - que é baseado no DES -, o 3DES, o Twofish e sua 
variante Blowfish, entre outros. 
 O uso de chaves simétricas tem algumas desvantagens, fazendo com que sua 
utilização não seja adequada em situações onde a informação é muito valiosa. 
 Para começar, é necessário usar uma grande quantidade de chaves caso muitas 
pessoas ou entidades estejam envolvidas. Ainda, há o fato de que tanto o emissor 
quanto o receptor precisam conhecer a mesma chave. A transmissão dessa chave de 
um para o outro pode não ser tão segura e cair em "mãos erradas". 
 
4.2 – Chave Assimétrica 
 Também conhecida como "chave pública", a chave assimétrica trabalha com 
duas chaves: uma denominada privada e outra denominada pública. Neste método, um 
emissor deve criar uma chave de codificação e enviá-la ao receptor. Essa é a chave 
pública. Uma outra chave deve ser criada para a decodificação. Esta, a chave privada, 
é secreta. Vamos ver alguns exemplos: 
 
4.2.1 – RSA (Rivest, Shamir and Adleman): 
 Foi um dos pioneiros em relação à criptografia de chave pública, seu nome é 
composto pelos sobrenomes de seus criadores, que são três professores do MIT, que 
também são fundadores da companhia RSA Data Security, é um dos algoritmos mais 
usados e bem-sucedidos. 
 Esse é considerado um dos algoritmos mais seguros do mercado, por essa razão 
também foi o primeiro a possibilitar a criptografia na assinatura digital. 
 O RSA funciona da seguinte forma: ele cria duas chaves diferentes, uma pública 
e outra privada (que deve ser mantida em sigilo). Todas as mensagens podem ser 
cifradas pela pública, mas somente decifradas pela privada. A chave privada são os 
números multiplicados e a chave pública é o valor obtido. 
 Atualmente, essa tecnologia é utilizada em operações rotineiras, como envio de 
e-mails, compras online, assinatura digital, entre outras atividades. 
 
4.2.2 – ElGamal: 
 Criado por Taher ElGamal, esse algoritmo faz uso de um problema matemático 
conhecido por "logaritmo discreto" para se tornar seguro. Sua utilização é freqüente 
em assinaturas digitais. 
 Existem ainda outros algoritmos, como o DSA (Digital Signature Algorithm), o 
Schnorr (praticamente usado apenas em assinaturas digitais) e Diffie-Hellman. 
 
https://www.infowester.com/assincertdigital.php
11 
 
4.3– Redes Sem Fio 
 As senhas da rede sem fio são criptografadas de forma a permitir a navegação 
somente para quem informar a senha correta. Porém, abriram uma grande 
possibilidade de interceptação de dados e roubo de conexões. Veja as técnicas mais 
usadas na criptografia de redes wireless: 
 
4.3.1 – WEP: 
 Utiliza o algoritmo RC4 e uma chave secreta compartilhada. A chave deve ser a 
mesma no roteador e nas estações que se conectam a ele. Porém, se uma chave 
compartilhada estiver comprometida, um invasor poderá bisbilhotar o tráfego de 
informações ou entrar na rede. 
 
4.3.2 – WPA e WPA2: 
 Surgiu em 2003 de um esforço conjunto de membros da Wi-Fi Aliança e de 
membros do IEEE, empenhados em aumentar o nível de segurança das redes wireless. 
A WPA fornece criptografia para empresas, e a WPA2 - considerada a próxima geração 
de segurança sem fio - vem sendo usada por muitos órgãos governamentais em todo 
o mundo. 
 
4.4 – Certificação Digital 
 Um recurso conhecido por certificação digital é muito utilizado com chaves 
públicas. Trata-se de um meio que permite, por exemplo, provar que um certo 
documento eletrônico foi mesmo emitido por uma determinada entidade ou pessoa. O 
receptor da informação usará a chave pública fornecida pelo emissor para se certificar 
da origem. Além disso, a chave fica integrada ao documento de forma que qualquer 
alteração por terceiros imediatamente a invalide. 
 
 
4.5 – Criptografia Quântica 
 Este tipo de codificação de informação difere dos demais métodos 
criptográficos porque não precisa do segredo nem do contatoprévio entre as partes. 
 A criptografia quântica permite a detecção de intrusos e é incondicionalmente 
segura mesmo que o intruso tenha poder computacional ilimitado. Mas o seu custo 
de implantação é muito elevado. 
 Outro fato limitante para a adoção dessa técnica é a taxa de erros na 
transmissão dos fótons, seja por ondas de rádio ou fibra ótica. Até agora, os 
melhores resultados foram obtidos por meio de fibras de altíssima pureza, 
abrangendo uma distância de aproximadamente 70 km. 
 
4.6 – PGP 
 PGP é a sigla para Pretty Good Privacy. Trata-se de um software de criptografia 
criado por Philip Zimmermman em 1991. A intenção de Zimmermman foi a de ajudar 
12 
 
na defesa da liberdade individual nos Estados Unidos e no mundo inteiro, uma vez que 
ele percebeu que o uso do computador seria algo cada vez maior e que o direito à 
privacidade deveria ser mantido nesse meio. Por ser disponibilizado de forma gratuita, 
o PGP acabou se tornando uns dos meios de criptografia mais conhecidos, 
principalmente na troca de e-mails. 
 No PGP, chaves assimétricas são usadas. Além disso, para reforçar a 
segurança, o software pode realizar um segundo tipo de criptografia através de um 
método conhecido como "chave de sessão" que, na verdade, é um tipo de chave 
simétrica. 
 
 
5 – Dissertação (Funções Hash e Whirlpool) 
 
5.1 – Hash 
 Um hash (ou escrutínio) é uma sequência de bits geradas por um algoritmo de 
dispersão, em geral representada em base hexadecimal, que permite a visualização 
em letras e números (0 a 9 e A a F), representando um nibble cada. O conceito teórico 
diz que "hash é a transformação de uma grande quantidade de dados em uma pequena 
quantidade de informações". 
 Essa sequência busca identificar um arquivo ou informação unicamente. Por 
exemplo, uma mensagem de correio eletrônico, uma senha, uma chave criptográfica ou 
mesmo um arquivo. É um método para transformar dados de tal forma que o resultado 
seja (quase) exclusivo. Além disso, funções usadas em criptografia garantem que não 
é possível a partir de um valor de hash retornar à informação original. 
 Como a sequência do hash é limitada, muitas vezes não passando de 512 bits, 
existem colisões (sequências iguais para dados diferentes). Quanto maior for a 
dificuldade de se criar colisões intencionais, melhor é o algoritmo. 
 Uma função de hash recebe um valor de um determinado tipo e retorna um 
código para ele. Enquanto o ideal seria gerar identificadores únicos para os valores de 
entrada, isso normalmente não é possível: na maioria dos casos, o contradomínio de 
nossa função é muito menor do que o seu domínio, ou seja, o tipo de entrada pode 
assumir uma gama muito maior de valores do que o resultado da função de hash. 
 Os algoritmos de hash mais usados são os de 16 bytes (ou 128 bits, tamanho 
do message digest) MD4 e MD5 ou o SHA-1, de 20 bytes (160 bits). Características de 
alguns algoritmos: 
 
1. MD4: Desenvolvido em 1990/91 por Ron Rivest, vários ataques foram 
detectados, o que fez com que o algoritmo fosse considerado frágil. Descrito na 
RFC 1320 
2. MD5: O MD5 (Message-Digest algorithm 5) é um algoritmo de hash de 128 bits 
unidirecional desenvolvido pela RSA Data Security, Inc., descrito na RFC 1321, 
e muito utilizado por softwares com protocolo par-a-par (P2P, ou Peer-to-Peer, 
em inglês), verificação de integridade e logins. Existem alguns métodos de 
ataque divulgados para o MD5 
3. SHA-1 (Secure Hash Algorithm): Desenvolvido pelo NIST e NSA. Já foram 
exploradas falhas no SHA. 
https://pt.wikipedia.org/wiki/Bit
https://pt.wikipedia.org/wiki/Algoritmo_de_dispers%C3%A3o
https://pt.wikipedia.org/wiki/Algoritmo_de_dispers%C3%A3o
https://pt.wikipedia.org/wiki/Hexadecimal
https://pt.wikipedia.org/wiki/N%C3%BAmero
https://pt.wikipedia.org/wiki/Nibble
https://pt.wikipedia.org/wiki/Correio_eletr%C3%B4nico
https://pt.wikipedia.org/wiki/Chave_(criptografia)
https://pt.wikipedia.org/wiki/Arquivo
https://pt.wikipedia.org/wiki/Dados
https://pt.wikipedia.org/wiki/Algoritmo
https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_(matem%C3%A1tica)
https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_(matem%C3%A1tica)#Dom%C3%ADnio,_contradom%C3%ADnio_e_imagem
https://pt.wikipedia.org/wiki/Byte
https://pt.wikipedia.org/wiki/MD4
https://pt.wikipedia.org/wiki/MD5
https://pt.wikipedia.org/wiki/SHA-1
https://pt.wikipedia.org/wiki/MD4
https://pt.wikipedia.org/wiki/Ron_Rivest
https://pt.wikipedia.org/wiki/MD5
https://tools.ietf.org/html/rfc1321
https://pt.wikipedia.org/wiki/P2P
https://pt.wikipedia.org/wiki/SHA-1
https://pt.wikipedia.org/wiki/NIST
https://pt.wikipedia.org/wiki/NSA
13 
 
4. WHIRLPOOL: função criptográfica de hash desenvolvida por Paulo S. L. M. 
Barreto e por Vincent Rijmen (co-autor do AES). A função foi recomendada pelo 
projeto NESSIE (Europeu). Foi também adotado pelo ISO e IEC como parte do 
padrão internacional ISO 10118-3. 
 
 O processo é unidirecional e impossibilita descobrir o conteúdo original a partir 
do Hash. O valor de conferência ("Soma de verificação") muda se um único bit for 
alterado, acrescentado ou retirado da mensagem. 
 
 
 
5.2 – Função Hash 
 Uma função hash é um algoritmo que mapeia dados de comprimento variável 
para dados de comprimento fixo. Os valores retornados por uma função hash são 
chamados valores hash, códigos hash, somas hash (hash sums), checksums ou 
simplesmente hashes. Um uso é uma estrutura de dados chamada de tabela hash, 
amplamente usada em softwares de computador para consulta de dados rápida. 
Funções hash aceleram consultas a tabelas ou bancos de dados por meio da detecção 
de registros duplicados em um arquivo grande. Um exemplo é encontrar trechos 
similares em sequências de DNA. Eles também são úteis em criptografia. Uma função 
hash criptográfica permite verificar facilmente alguns mapeamentos de dados de 
entrada para um valor hash fornecido, mas se os dados de entrada são desconhecidos, 
é deliberadamente difícil reconstruí-lo (ou alternativas equivalentes) conhecendo o 
valor do hash armazenado. Isto é usado para assegurar a integridade de dados 
transmitidos e é o bloco de construção para HMACs, que fornecem autenticação de 
mensagem. 
 Funções hash estão relacionadas a (e frequentemente confundidas com) somas 
de verificação (checksums), dígitos verificadores, impressões digitais, compressão 
com perdas, funções de aleatorização, códigos de correção de erros e cifras. Apesar 
desses conceitos se sobreporem até certo ponto, cada um tem seus próprios usos e 
requisitos e são projetados e otimizados de maneiras diferentes. O banco de 
dados HashKeeper, mantido pelo American National Drug Intelligence Center, por 
exemplo, é mais apropriadamente descrito como um catálogo de arquivos de 
impressões digitais do que de valores de hash. 
 Uma função de dispersão criptográfica ou função hash criptográfica é 
uma função hash considerada praticamente impossível de inverter, isto é, de recriar o 
valor de entrada utilizando somente o valor de dispersão. Essas funções hash 
unidirecionais têm sido chamadas de "os operários da criptografia moderna". Os dados 
de entrada costumam ser chamados de mensagem, e o valor de dispersão mensagem 
resumida ou simplesmente resumo. 
Uma função de dispersão criptográfica deve possuir quatro propriedades principais: 
• Deve ser fácil computar o valor de dispersão para qualquer mensagem 
• Deve ser difícil gerar uma mensagem a partir de seu resumo 
• Deve ser difícil modificar a mensagem sem modificar o seu resumo 
• Deve ser difícil encontrar duas mensagens diferentes com o mesmo resumo. 
 Funções hash criptográficas possuem várias aplicações em segurança da 
informação, principalmente em assinatura digital, código de autenticação de 
mensagem (MACs), e outras formas de autenticação. Elas também podem ser 
https://pt.wikipedia.org/wiki/Whirlpool_(criptografia)
https://pt.wikipedia.org/wiki/Paulo_S._L._M._Barretohttps://pt.wikipedia.org/wiki/Paulo_S._L._M._Barreto
https://pt.wikipedia.org/wiki/Vincent_Rijmen
https://pt.wikipedia.org/wiki/AES
https://pt.wikipedia.org/w/index.php?title=NESSIE&action=edit&redlink=1
https://pt.wikipedia.org/wiki/ISO
https://pt.wikipedia.org/wiki/IEC
https://pt.wikipedia.org/w/index.php?title=ISO_10118-3&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Soma_de_verifica%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Algoritmo
https://pt.wikipedia.org/wiki/Dados_(computa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Tabela_hash
https://pt.wikipedia.org/wiki/Criptografia
https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_hash_criptogr%C3%A1fica
https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_hash_criptogr%C3%A1fica
https://pt.wikipedia.org/wiki/Integridade_de_dados
https://pt.wikipedia.org/wiki/HMAC
https://pt.wikipedia.org/w/index.php?title=Autentica%C3%A7%C3%A3o_de_mensagem&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Autentica%C3%A7%C3%A3o_de_mensagem&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Soma_de_verifica%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Soma_de_verifica%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/D%C3%ADgito_verificador
https://pt.wikipedia.org/wiki/Impress%C3%A3o_digital_(computa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Compress%C3%A3o_com_perda_de_dados
https://pt.wikipedia.org/wiki/Compress%C3%A3o_com_perda_de_dados
https://pt.wikipedia.org/w/index.php?title=Fun%C3%A7%C3%A3o_de_aleatoriza%C3%A7%C3%A3o&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=HashKeeper&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=American_National_Drug_Intelligence_Center&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_hash
https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_de_m%C3%A3o_%C3%BAnica
https://pt.wikipedia.org/wiki/Complexidade_computacional#Intratabilidade
https://pt.wikipedia.org/wiki/Complexidade_computacional#Intratabilidade
https://pt.wikipedia.org/wiki/Complexidade_computacional#Intratabilidade
https://pt.wikipedia.org/wiki/Seguran%C3%A7a_da_informa%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Seguran%C3%A7a_da_informa%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Assinatura_digital
https://pt.wikipedia.org/w/index.php?title=C%C3%B3digo_de_autentica%C3%A7%C3%A3o_de_mensagem&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=C%C3%B3digo_de_autentica%C3%A7%C3%A3o_de_mensagem&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Autentica%C3%A7%C3%A3o
14 
 
utilizadas como funções hash, para indexar dados em tabelas hash, para impressão 
digital, para detectar dados duplicados ou identificar arquivos únicos, e 
como checksum para detectar corrupção de dados acidental. De fato, no contexto da 
segurança da informação, valores de dispersão criptográficos são às vezes conhecidos 
como impressão digital, checksums, ou apenas valores de dispersão, apesar de todos 
esses termos se referirem a funções mais gerais com propriedades e propósitos 
diferentes. 
Aqui está uma foto de cortesia da Wikimedia Commons, ilustrando o mesmo conceito 
para aqueles que preferem a aprendizagem visual: 
 
 Fonte: https://www.kaspersky.com.br/blog/hash-o-que-sao-e-como-funcionam/2773/ 
 
5.3 – Whirlpool 
 Em ciência da computação e criptografia, o Whirlpool (às vezes denominado 
WHIRLPOOL) é uma função hash criptográfica. Ele foi projetado por Vincent Rijmen 
(co-criador do Advanced Encryption Standard) e Paulo S. L. M. Barreto, que o 
descreveu pela primeira vez em 2000. 
 O hash foi recomendado pelo projeto NESSIE. Ele também foi adotado pela 
Organização Internacional para Padronização (ISO) e pela Comissão Eletrotécnica 
Internacional (IEC) como parte da norma internacional ISO / IEC 10118-3. 
 Whirlpool é um hash projetado após a cifra de bloco quadrado e é considerado 
como pertencente a essa família de funções de cifra de bloco. 
 A Whirlpool é uma construção da Miyaguchi-Preneel baseada em um Advanced 
Encryption Standard (AES) substancialmente modificado. 
 Vicent Rijmen (co-autor do algoritmo Rijndael, também conhecido como AES) 
e Paulo Barreto (pesquisador brasileiro) criaram três versões do WHIRLPOOL. 
 
https://pt.wikipedia.org/wiki/Tabelas_hash
https://pt.wikipedia.org/wiki/Impress%C3%A3o_digital_(computa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Impress%C3%A3o_digital_(computa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Checksum
https://www.kaspersky.com.br/blog/hash-o-que-sao-e-como-funcionam/2773/
https://pt.wikipedia.org/wiki/Vicent_Rijmen
https://pt.wikipedia.org/wiki/Paulo_S._L._M._Barreto
https://media.kasperskydaily.com/wp-content/uploads/sites/94/2014/04/06143603/HASH.png
15 
 
WHIRLPOOL-0 
A primeira versão foi submetida para o projeto NESSIE, fundado em 2000 para definir 
padrões seguros de criptografia. 
 
WHIRLPOOL-T 
A segunda versão foi uma versão modificada da primeira (WHIRLPOOL-0) e foi 
escolhida pelo projeto NESSIE como algoritmo de hash. 
 
WHIRLPOOL 
Após sua seleção no NESSIE, dois pesquisadores japoneses, Shirai e Shibutani, 
descobriram uma falha na camada de difusão, motivando a correção e o lançamento 
de uma versão final que foi adotada pelo padrão ISO/IEC 10118-3:2004 (Information 
Technology - Técnicas de Segurança - funções de hash - 7ª. função de hash). 
 
5.4 – Implementações 
 Os autores disponibilizaram implementações do algoritmo Whirlpool em 
linguagem C e Java. Essas implementações de referência foram liberadas para o 
domínio público. 
 Os autores declararam que esse algoritmo "não é, e nunca será, patenteado e 
deve ser usado livre de custos para qualquer propósito. As referências para 
implementações estão em domínio público." 
 Os primeiros programas de criptografia a usarem o Whirlpool 
foram FreeOTFE e TrueCrypt em 2005. 
 
5.5 – Função 
 A WHIRLPOOL usa o reforço Merkle-Damg e o esquema de hash Miyaguchi-
Preneel com uma cifra de bloco de 512 bits chamada W. Isso consiste no seguinte. A 
cadeia de bits a ser hash é preenchida com um '1'-bit, depois com uma sequência de 
'0'-bits e, finalmente, com o comprimento original (na forma de um valor inteiro de 256 
bits), para que o comprimento após o preenchimento é um múltiplo de 512 bits. A 
sequência de mensagens resultante é dividida em uma sequência de blocos de 512 bits 
m1, m2, ... mt, que é usada para gerar uma sequência de valores de hash intermediários 
H0, H1, H2,... Ht. Por definição, H0 é uma sequência de 512 '0'-bits. Para calcular Hi, 
W criptografa mi usando Hi-1 como chave e XORs o texto cifrado resultante com Hi-1 
e mi. Por fim, o resumo da mensagem WHIRLPOOL é Ht. 
 
 Função de compressão Miyaguchi-Preneel: 
 
https://pt.wikipedia.org/wiki/Criptografia
https://pt.wikipedia.org/w/index.php?title=FreeOTFE&action=edit&redlink=1
https://pt.wikipedia.org/wiki/TrueCrypt
16 
 
Fonte: 
https://www.webcitation.org/65p0SttYl?url=http://www.larc.usp.br/~pbarreto/WhirlpoolP
age.html 
 
5.6 - Programas que utilizam o whirlpool 
Os primeiros programas de criptografia a usarem o Whirlpool 
foram FreeOTFE e TrueCrypt em 2005, veja algumas características presentes nesses 
programas: 
 
FreeOTFE 
 O FreeOTFE é um programa de computador de código aberto descontinuado 
para criptografia de disco on-the-fly (OTFE). No Microsoft Windows e Windows Mobile 
(usando o FreeOTFE4PDA), ele pode criar uma unidade virtual em um arquivo ou 
partição, para que qualquer coisa escrita seja criptografada automaticamente antes de 
ser armazenada na unidade de disco rígido ou USB de um computador. É semelhante 
em função a outros programas de criptografia de disco, incluindo TrueCrypt e BitLocker 
da Microsoft. 
 A autora, Sarah Dean, ficou ausente a partir de 2011. O site do FreeOTFE está 
inacessível a partir de junho de 2013 e o nome de domínio agora está registrado por 
um invasor de domínio. O programa original pode serbaixado de um espelho no 
Sourceforge. Em junho de 2014, um fork do projeto agora chamado LibreCrypt 
apareceu no GitHub. 
 O FreeOTFE foi lançado inicialmente por Sarah Dean em 2004 e foi o primeiro 
sistema de criptografia de disco de código-fonte aberto que forneceu uma arquitetura 
modular, permitindo que terceiros implementassem algoritmos adicionais, se 
necessário. O licenciamento mais antigo do FreeOTFE exigia que qualquer modificação 
no programa fosse colocada em domínio público. Isso não está em conformidade 
tecnicamente com a seção 3 da definição de código-fonte aberto. O licenciamento mais 
recente do programa omite essa condição. A licença do FreeOTFE não foi aprovada 
pela Open Source Initiative e não está certificada para ser rotulada com a marca de 
certificação de código aberto. 
 Este software é compatível com volumes criptografados do Linux (por exemplo, 
LUKS, cryptoloop, dm-crypt), permitindo que os dados criptografados no Linux sejam 
lidos (e gravados) livremente. Foi o primeiro sistema de criptografia de disco 
transparente de código aberto a suportar Windows Vista e PDAs. 
 A autenticação de dois fatores opcional usando cartões inteligentes e / ou 
módulos de segurança de hardware (HSMs, também denominados tokens de 
segurança) foi introduzida na v4.0, usando o padrão PKCS # 11 (Cryptoki) desenvolvido 
pela RSA Laboratories. 
 O FreeOTFE também permite que qualquer número de "volumes ocultos" seja 
criado, fornecendo negabilidade plausível e criptografia negável, e também tem a opção 
de criptografar partições ou discos completos (mas não a partição do sistema). 
 
https://www.webcitation.org/65p0SttYl?url=http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
https://www.webcitation.org/65p0SttYl?url=http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
https://pt.wikipedia.org/w/index.php?title=FreeOTFE&action=edit&redlink=1
https://pt.wikipedia.org/wiki/TrueCrypt
17 
 
TrueCrypt 
 TrueCrypt é um aplicativo descontinuado de código 
aberto para Windows, Mac e Linux, usado para criar discos criptografados que podem 
ser montados como unidades virtuais. Esta aplicação era capaz de criar discos virtuais 
encriptados (mesmo em Flashdrives USB) como se de um disco real se tratasse. Podia 
encriptar uma partição do seu disco rígido ou um outro dispositivo de armazenamento 
como um flash drive USB. 
 Encriptava automaticamente em tempo real (on-the-fly) de uma forma 
"transparente". Possibilitava dois níveis de proteção. Caso seja obrigado a revelar a 
senha, haveria uma segunda proteção na qual o acesso aos dados estará preservado. 
 Algoritmos individuais suportados pelo TrueCrypt são AES, Serpent e Twofish. 
Adicionalmente, cinco diferentes combinações de algoritmos cascata estão disponíveis: 
AES-Twofish, AES-Twofish-Serpent, Serpent-AES, Serpent-Twofish-AES e Twofish-
Serpent. Usa RIPEMD-160, SHA-512 e Whirlpool como funções de hashing. 
 Em 28 de maio de 2014, o website oficial do TrueCrypt anunciou que o projeto 
não seria mais mantido pelos seus desenvolvedores, e recomendou que seus usuários 
migrassem para outro aplicativo suportado em seu sistema operacional, pois havia 
brechas de segurança não resolvidas. Na ocasião, foram levantadas suspeitas quanto 
à intervenção do Governo dos Estados Unidos no projeto. 
 Atualmente, a página avisa que o programa não pode mais ser considerado 
seguro, e recomenda passo-a-passo a migração dos dados. É possível criar discos 
virtuais no Windows usando arquivos do tipo. VHD (ou .VHDX para Windows 8 ou 
superior) e depois ligá-los ao BitLocker, tecnologia nativa do Windows que permite 
encriptar e definir uma senha para acesso à unidade. 
 
https://pt.wikipedia.org/wiki/Software_aplicativo
https://pt.wikipedia.org/wiki/C%C3%B3digo_aberto
https://pt.wikipedia.org/wiki/C%C3%B3digo_aberto
https://pt.wikipedia.org/wiki/Microsoft_Windows
https://pt.wikipedia.org/wiki/Mac_OS_X
https://pt.wikipedia.org/wiki/Linux
https://pt.wikipedia.org/wiki/Criptografia
https://pt.wikipedia.org/wiki/USB_Flashdisk
https://pt.wikipedia.org/wiki/Parti%C3%A7%C3%A3o
https://pt.wikipedia.org/wiki/Advanced_Encryption_Standard
https://pt.wikipedia.org/wiki/Serpent
https://pt.wikipedia.org/wiki/Twofish
https://pt.wikipedia.org/wiki/RIPEMD-160
https://pt.wikipedia.org/w/index.php?title=SHA-512&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Whirlpool
https://pt.wikipedia.org/wiki/Sistema_operacional
https://pt.wikipedia.org/wiki/Governo_dos_Estados_Unidos
https://pt.wikipedia.org/wiki/BitLocker
18 
 
5.7 - Vantagens Em Se Utilizar Hash No Programa 
 Um resumo de mensagem também pode servir como um identificador confiável 
de arquivo; diversos sistemas de gerenciadores de código fonte, 
como Git, Mercurial e Monotone, usam o sha1sum de vários tipos de conteúdo 
(conteúdo de arquivo, árvores de diretório, informação ancestral, etc.) para identificá-
los univocamente. Hashes são usados para identificar arquivos em redes 
de compartilhamento de arquivos. Por exemplo, em um link ed2k, uma variação do 
hash MD4 é combinado com o tamanho do arquivo, fornecendo informação suficiente 
para a localização das fontes do arquivo, baixando o arquivo e verificando seus 
conteúdos. Magnet-links são outros exemplos. Tais hashes de arquivo costumam 
aparecer no começo de listas de hash ou em árvores de hash o que propicia ainda mais 
benefícios. 
 Uma das principais aplicações de uma função hash é permitir uma rápida 
visualização dos dados em uma tabela hash. Por serem funções hash com 
propriedades específicas, funções hash criptográficas também podem ser utilizadas 
para essas aplicações. 
 Entretanto, comparadas a funções hash padrão, funções hash criptográficas 
tendem a ser computacionalmente mais caras. Por essa razão, elas costumam ser 
usadas em contextos onde é necessário que usuários protejam a si mesmo contra a 
possibilidade de falsificação (criação de dados com o mesmo resumo que os dados 
esperados) por agentes maliciosos em potencial. 
 Funções hash também podem ser utilizadas para gerar bits pseudo-aleatórios, 
ou para derivar novas chaves ou senhas de uma única e segura chave ou senha. 
 
Resistência a colisão 
 O princípio da resistência a colisão consiste na dificuldade de conseguir encontrar 
dois valores de entrada distintos que resultem em um mesmo valor hash. 
 O benefício de se ter funções hash sem colisões é que elas servem como 
um resumo da informação, já que se soubermos que x e y tem a mesma hash, quer 
dizer que muito provavelmente são a mesma coisa. 
 Pode-se utilizar a hash para verificar se duas coisas são iguais, sem precisar 
passar por todo o conteúdo. Por exemplo, ao receber um arquivo muito grande, é 
possível armazenar sua hash para que na próxima vez que for recebido um arquivo 
supostamente igual fazer a verificação comparando as hashs. 
 
Resistência à pré-imagem 
 Dada a saída de uma função hash h, deve ser muito difícil encontrar qual foi o 
valor de entrada utilizado para gerá-la. 
 Essa propriedade da função hash só se sustenta caso as possibilidades de 
entrada sejam variadas (alta entropia) e não exista algum valor que seja mais provável 
de ter sido utilizado, caso contrário fica mais fácil de descobrir o valor de entrada. 
 Por exemplo, dado um conjunto de entrada, “1”, “2” e “3”, torna-se fácil para um 
computador calcular a hash de cada um dos números, e ao receber uma hash h, 
descobrir qual dos números que foi utilizado como entrada. Essa propriedade pode ser 
utilizada para garantir “compromisso” e “obrigatoriedade”. 
 
https://pt.wikipedia.org/wiki/Git
https://pt.wikipedia.org/wiki/Mercurial
https://pt.wikipedia.org/w/index.php?title=Monotone&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Sha1sum&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Peer-to-peer
https://pt.wikipedia.org/wiki/Ed2khttps://pt.wikipedia.org/wiki/MD4
https://pt.wikipedia.org/w/index.php?title=Magnet-links&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Listas_de_hash&action=edit&redlink=1
https://pt.wikipedia.org/wiki/%C3%81rvores_de_Merkle
https://pt.wikipedia.org/wiki/Pseudoaleatoriedade
19 
 
Resistência à segunda pré-imagem 
 Nesse caso a idéia é que não seja possível descobrir fragilidade na função 
de hash que torne possível descobrir x e y gerando a mesma saída h. Diferente da 
colisão onde o foco esta na entrada, aqui a preocupação é que a função não possibilite 
que se descubra quem gera a saída y de maneira previsível ou com padrões previsíveis. 
 Utilizar entradas aleatórias deve ser o método mais eficiente para descobrir se o 
resultado da função hash pertence ao conjunto de resultados esperados. 
 Essa propriedade é fundamental para a mineração de Bitcoin e para que o 
algoritmo prova de trabalho funcione como esperado. 
 
5.8 – Vulnerabilidades 
 Existem algumas funções do hash como o MD5 (que é uma função de dispersão 
criptográfica), por exemplo, que faz apenas uma passagem sobre os dados, se dois 
prefixos com o mesmo hash forem construídos, um sufixo comum pode ser adicionado 
a ambos para tornar uma colisão mais provável. Deste modo é possível que duas 
strings diferentes produzam o mesmo hash. O que não garante que a partir de uma 
senha codificada em hash específica consiga-se a senha original, mas permite uma 
possibilidade de descobrir algumas senhas a partir da comparação de um conjunto 
grande de hash de senhas através do método de comparação de dicionários. 
 Também existe o WaMM ((Wa)shburn (M)atrix (M)ultplicaton) que possui algumas 
vulnerabilidades como A função de hash WaMM que permite ao critpoanalista muito 
controle sobre o seu estado interno. Um método de recuperação óbvio seria reduzir o 
número de bits processados em cada estágio (ou seja, para realizar a transformação 
WaMM mais frequentemente); 
Se, por exemplo, o algoritmo copiasse apenas 4096 bytes para o estado interno, 
executando antes a transformação (deixando a metade do estado intacto) uma 
mensagem especialmente escolhida não regravaria o estado inteiro. Entretanto, isto 
naturalmente resultaria em perda de desempenho e, além disso, não é 
necessariamente um remédio que resolve todos os problemas, pois vulnerabilidades 
similares ainda existem permitindo controle de uma parte do estado. 
 E no caso do Whirlpool, Após sua seleção no NESSIE, dois pesquisadores 
japoneses, Shirai e Shibutani, descobriram uma falha na camada de difusão, motivando 
a correção e o lançamento de uma versão final que foi adotada pelo padrão ISO/IEC 
10118-3:2004 (Information Technology - Técnicas de Segurança - funções de hash - 
7ª. função de hash). 
 
 
20 
 
6 – Projeto do Programa 
 
 O primeiro passo para a construção de nosso programa foi a escolha e decisão 
do tema, decidimos utilizar um programa que fosse baseado na função hash como a 
principal função do programa. Então decidimos construir um programa que fosse 
integrado com as seguintes funções: 
 
 
 
 Primeiramente você decidiria o que deseja criptografar (podendo ser até mesmo 
arquivos, pendrives e hds) 
 
 
 
 Após isso você seleciona o que deseja (no exemplo utilizamos arquivo então se 
utiliza a primeira opção) 
21 
 
 
 
 Aqui você faz a confirmação 
 
 
 
 Seleciona o arquivo que deseja criptografar e seleciona 
 
 
 
 Aqui temos os tipos de criptografia 
22 
 
 
 
 Antes você seleciona o tamanho para ser criptografado 
 
 
 
 Define um password de até 20 caracteres 
 
 
 
 E por fim clica em formatar 
 
23 
 
7 – Relatório Com Linhas De Código Do Programa 
 
 
Implementação de Whirpool e função de Hash em Java 
 
import java.math.BigInteger; 
import java.nio.charset.StandardCharsets; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 
 
class GFG { 
 public static byte[] getSHA(String input) throws NoSuchAlgorithmException 
 { 
 
 MessageDigest md = MessageDigest.getInstance("SHA-256"); 
 
 
 return md.digest(input.getBytes(StandardCharsets.UTF_8)); 
 } 
 
 public static String toHexString(byte[] hash) 
 { 
 
 BigInteger number = new BigInteger(1, hash); 
 
 
 
 StringBuilder hexString = new StringBuilder(number.toString(16)); 
 
 
 
 while (hexString.length() < 32) 
 { 
 hexString.insert(0, '0'); 
 } 
 
 return hexString.toString(); 
 } 
 
 
24 
 
 
 public static void main(String args[]) 
 { 
 try 
 { 
 System.out.println("As Strings Criptografadas foram :"); 
 
 String s1 = "Teste 1 "; 
 System.out.println("\n" + s1 + " : " + toHexString(getSHA(s1))); 
 
 String s2 = "teste 2 "; 
 System.out.println("\n" + s2 + " : " + toHexString(getSHA(s2))); 
 } 
 
 
 catch (NoSuchAlgorithmException e) { 
 System.out.println("Exception thrown for incorrect algorithm: " + e); 
 } 
 } 
} 
 
 
Criptografia de bando de dados com Whirpool usando PHP 
 
$usuario = 'thiago'; // Nome do usuario (digitado pelo usuario) 
$senha = '12345'; // Senha (digitada pelo usuario) 
// Encripta a senha utilizando Whirlpool 
$whirlpool = hash('whirlpool', $senha); 
$sql = "SELECT * FROM `usuarios` WHERE `usuario` = '{$usuario}' AND BINARY `senha` = '{$whirlpool}'"; 
 
 
 
25 
 
8 – Programa Funcionando em um Computador 
 
TELA 01 
 
 
 
 Utilizamos a plataforma do https://ide.geeksforgeeks.org/index.php para rodar o 
código criado pelo nosso grupo, pois é uma plataforma de fácil acesso e fácil de utilizar 
por qualquer pessoa. 
 
TELA 02 
 
 
 
 Primeira parte dos códigos 
https://ide.geeksforgeeks.org/index.php
26 
 
TELA 03 
 
 
 
 Segunda parte dos códigos 
 
TELA 04 
 
 
 
 Final do código 
 
27 
 
TELA 05 
 
 
 
 Clicamos em run para executar o código 
 
TELA 06 
 
 
 
 E por fim obtemos o código desejado criptografado 
 
28 
 
9 – Bibliografia 
 
https://pcworld.com.br/idgnoticia2007-10-040383475254/ 
 
https://blog.siteblindado.com/8-tipos-de-criptografia-que-voce-deve-conhecer/ 
 
https://medium.com/@felipeclopes/fun%C3%A7%C3%B5es-hash-
criptogr%C3%A1ficas-9ca6ca3fd21d 
 
http://g1.globo.com/tecnologia/blog/seguranca-digital/post/criptografia-entenda-o-que-
e-e-como-funciona.html 
 
http://datasus.saude.gov.br/seguranca-da-informacao/noticias-seguranca-da-
informacao/1011-criptografia-entenda-o-que-e-e-como-funciona 
 
https://canaltech.com.br/seguranca/criptografia-para-iniciantes-o-que-e-como-
funciona-e-por-que-precisamos-dela-46753/ 
 
https://blog.validcertificadora.com.br/tipos-de-criptografia-conheca-os-10-mais-
usados-e-como-funciona-cada-um/ 
 
https://cryptoid.com.br/valid/tipos-de-criptografia-conheca-os-10-mais-usados-e-como-
funciona-cada-um/ 
 
https://www.webcitation.org/65p0SttYl?url=http://www.larc.usp.br/~pbarreto/WhirlpoolP
age.html 
 
https://www.oficinadanet.com.br/post/9424-quais-os-principais-tipos-de-criptografia 
 
http://blog.thiagobelem.net/criptografia-no-php-usando-sha512-whirlpool-e-salsa20 
 
https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_hash_criptogr%C3%A1fica 
 
https://www.kaspersky.com.br/resource-center/definitions/encryption 
 
https://www.kaspersky.com.br/blog/hash-o-que-sao-e-como-funcionam/2773/ 
 
https://www.techtudo.com.br/artigos/noticia/2012/07/o-que-e-hash.html 
 
https://www.gta.ufrj.br/grad/07_1/ass-dig/TiposdeCriptografia.html 
 
https://pcworld.com.br/idgnoticia2007-10-040383475254/
https://blog.siteblindado.com/8-tipos-de-criptografia-que-voce-deve-conhecer/
https://medium.com/@felipeclopes/fun%C3%A7%C3%B5es-hash-criptogr%C3%A1ficas-9ca6ca3fd21dhttps://medium.com/@felipeclopes/fun%C3%A7%C3%B5es-hash-criptogr%C3%A1ficas-9ca6ca3fd21d
http://g1.globo.com/tecnologia/blog/seguranca-digital/post/criptografia-entenda-o-que-e-e-como-funciona.html
http://g1.globo.com/tecnologia/blog/seguranca-digital/post/criptografia-entenda-o-que-e-e-como-funciona.html
http://datasus.saude.gov.br/seguranca-da-informacao/noticias-seguranca-da-informacao/1011-criptografia-entenda-o-que-e-e-como-funciona
http://datasus.saude.gov.br/seguranca-da-informacao/noticias-seguranca-da-informacao/1011-criptografia-entenda-o-que-e-e-como-funciona
https://canaltech.com.br/seguranca/criptografia-para-iniciantes-o-que-e-como-funciona-e-por-que-precisamos-dela-46753/
https://canaltech.com.br/seguranca/criptografia-para-iniciantes-o-que-e-como-funciona-e-por-que-precisamos-dela-46753/
https://blog.validcertificadora.com.br/tipos-de-criptografia-conheca-os-10-mais-usados-e-como-funciona-cada-um/
https://blog.validcertificadora.com.br/tipos-de-criptografia-conheca-os-10-mais-usados-e-como-funciona-cada-um/
https://cryptoid.com.br/valid/tipos-de-criptografia-conheca-os-10-mais-usados-e-como-funciona-cada-um/
https://cryptoid.com.br/valid/tipos-de-criptografia-conheca-os-10-mais-usados-e-como-funciona-cada-um/
https://www.webcitation.org/65p0SttYl?url=http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
https://www.webcitation.org/65p0SttYl?url=http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
https://www.oficinadanet.com.br/post/9424-quais-os-principais-tipos-de-criptografia
http://blog.thiagobelem.net/criptografia-no-php-usando-sha512-whirlpool-e-salsa20
https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_hash_criptogr%C3%A1fica
https://www.kaspersky.com.br/resource-center/definitions/encryption
https://www.kaspersky.com.br/blog/hash-o-que-sao-e-como-funcionam/2773/
https://www.techtudo.com.br/artigos/noticia/2012/07/o-que-e-hash.html
https://www.gta.ufrj.br/grad/07_1/ass-dig/TiposdeCriptografia.html
29 
 
https://www.oficinadanet.com.br/artigo/443/o_que_e_criptografia 
 
https://pt.wikipedia.org/wiki/Whirlpool_(criptografia) 
 
https://pt.wikipedia.org/wiki/MD5#Vulnerabilidade 
 
https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_hash 
 
https://www.ime.usp.br/~wbsouza/hash-wamm.pdf 
 
https://www.infowester.com/criptografia.php 
 
https://pt.wikipedia.org/wiki/Criptografia 
 
https://ecoit.com.br/o-que-e-criptografia/ 
 
https://pt.wikipedia.org/wiki/TrueCrypt 
 
http://truecrypt.sourceforge.net/ 
 
https://www.tiforense.com.br/whirlpool/ 
 
https://cartilha.cert.br/criptografia/ 
 
https://ide.geeksforgeeks.org/index.php 
 
 
https://www.oficinadanet.com.br/artigo/443/o_que_e_criptografia
https://pt.wikipedia.org/wiki/Whirlpool_(criptografia)
https://pt.wikipedia.org/wiki/MD5#Vulnerabilidade
https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_hash
https://www.ime.usp.br/~wbsouza/hash-wamm.pdf
https://www.infowester.com/criptografia.php
https://pt.wikipedia.org/wiki/Criptografia
https://ecoit.com.br/o-que-e-criptografia/
https://pt.wikipedia.org/wiki/TrueCrypt
http://truecrypt.sourceforge.net/
https://www.tiforense.com.br/whirlpool/
https://cartilha.cert.br/criptografia/
https://ide.geeksforgeeks.org/index.php