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