Prévia do material em texto
WBA0456_v1.0 FUNÇÃO DE CRIPTOGRAFIA HASH APRENDIZAGEM EM FOCO 2 APRESENTAÇÃO DA DISCIPLINA Autoria: Marcelo Ferreira Zochio Leitura crítica: José Eugênio de Mira Olá, alunos! Bem vindos à disciplina! Desde que começou a era da informação, um requisito muito importante para a sobrevivência das empresas no mercado tem merecido destaque: segurança da informação. Dos três pilares dos quais ela é composta, confidencialidade, integridade e disponibilidade, dois serão abordados nesta disciplina. Ela tem como objetivo não só ensinar o funcionamento dos algoritmos de hashes, mas fornecer a você os fundamentos da criptografia como um todo. Você aprenderá técnicas clássicas de criptografia, criptografia simétrica e assimétrica, funções de hash e como são feitas autenticação e assinaturas digitais usando criptografia. Também compreenderá o funcionamento das principais técnicas de criptografia, será capaz de diferenciar as essas técnicas a partir de suas características, sugerir modelos de criptografia adequados à aplicação. Compreenderá a operação de algoritmos de autenticação de mensagens e de usuários, e saberá como a assinatura digital contribui para a autenticidade de documentos e mensagens digitais. Entre as atividades propostas na disciplina, você terá o desafio de aplicar os conhecimentos adquiridos em uma situação prática, em que você proporá uma solução baseada em uma situação muito semelhante à que encontrará no mercado de trabalho. 3 Espero que você absorva o conhecimento que será disponibilizado para sua formação e que tenha sucesso em seu aprendizado. Vejo você nas aulas! INTRODUÇÃO Olá, aluno (a)! A Aprendizagem em Foco visa destacar, de maneira direta e assertiva, os principais conceitos inerentes à temática abordada na disciplina. Além disso, também pretende provocar reflexões que estimulem a aplicação da teoria na prática profissional. Vem conosco! TEMA 1 Teoria dos números e criptografia clássica ______________________________________________________________ Autoria: Marcelo Ferreira Zochio Leitura crítica: José Eugênio de Mira 5 DIRETO AO PONTO Matemática e criptografia estão estreitamente ligadas. É preciso conhecer alguns conceitos matemáticos antes de prosseguir nos estudos de criptografia. Entre os principais, está a teoria dos números. Vamos aos principais tópicos: Os números primos são aqueles divisíveis somente por eles mesmos e pelo número um. Eles são importantes para a criptografia por causa da sua característica conhecida como fatoração. Esse processo é uma regra matemática que diz que todos os inteiros podem ser decompostos por números primos. Quanto maior o número, mais difícil é fatorá-lo. Não há um método eficiente de fatorar números grandes de forma rápida; a força bruta, que é a usada nesses casos, é muito lenta, pois testa todas as possibilidades. Para fatorar um número de 800 dígitos usando o mesmo algoritmo para fatorar um de 8 dígitos, pode demorar anos para completar a operação, mesmo com o poder computacional convencional atual. Para você ter uma ideia, um computador pessoal atual leva, em média, seis dias para fatorar um número de 23 dígitos. A cada dígito acrescentado, a demora na fatoração cresce exponencialmente. Você faz ideia do tamanho de números usados na criptografia RSA, que usa números primos para compor suas chaves? Sabia que o número resultante da multiplicação desses números primos pode chegar facilmente a 600 dígitos? Com isso, nota-se que criar um número muito grande é fácil, em termos computacionais. Basta multiplicar dois números primos enormes para chegar a um algarismo não primo maior que os dois e, 6 tecnicamente, impossível de fatorar, pois, fatorando-os, descobrem- se os números primos que o compõem. Conhecer esses dois números usados inicialmente fará com que você quebre a criptografia assimétrica, por exemplo, no caso do algoritmo RSA. Operações modulares também são importantes. Como você notou, os algoritmos clássicos de criptografia operam em mod 26 (módulo 26), pois abrangem todas as letras do alfabeto. A cifra de César pode ser escrita em notação matemática da seguinte maneira: Cifragem: C=(N+3) mod 26 Decifragem: N=(C-3) mod 26 Onde: C = texto cifrado. 3 = deslocamento. N = texto original. No caso da cifra de Vigenère, podemos aplicar os princípios da modularidade e da congruência, também vistos em nossa aula. A cifra de Vigenère pode ser escrita matematicamente da seguinte forma, quando cifra uma mensagem: (mod26)i i iC P K 7 E quando decifra uma mensagem: O conceito de one-time pad, que usa senhas descartáveis, traz segurança máxima a uma cifra criptográfica, pois torna impossível sua quebra, devido ao fato de não haver comportamento cíclico em sua chave, uma vez que ela é do tamanho da mensagem e não possui sequências repetidas, porém, a quantidade de chaves a serem criadas e a distribuição delas torna o one-time pad inviável para uso em larga escala, sendo usado apenas para situações em que se exige segurança total na transmissão de mensagens. Em relação à Enigma, você sabe quanto tempo se levava para decifrar uma mensagem alemã codificada com ela, usando a bomba de Turing? Em muitos casos, menos de uma hora! Como os alemães trocavam a configuração das máquinas todos os dias, o código descoberto valia apenas para aquele dia. No dia seguinte, o trabalho de quebra da criptografia era feito de novo. Para a configuração da bomba, eram feitas montagem de grafos, a partir dos quais era feita a configuração da bomba de Turing, para começar as análises para a quebra do código. Um grafo é uma estrutura de dados formada por um conjunto não vazio de vértices e por outro conjunto de arestas (ou arcos), ligando esses vértices. Veja um exemplo de grafo resultante de um cálculo de probabilidade de combinação para montagem dos rotores na bomba de Turing: (mod26)i i iP C K 8 Figura 1 – Exemplo de grafo Fonte: elaborada pelo autor. Referências bibliográficas STALLINGS, W. Criptografia e segurança de redes. 6. ed. São Paulo: Prentice Hall Brasil, 2015. 492 p. ZOCHIO, M. F. Introdução à criptografia. São Paulo: Novatec, 2016. 206 p. PARA SABER MAIS Além dos algoritmos criptográficos clássicos que você viu até aqui, existem outros dignos de nota. Vamos a eles. Há algoritmos que usam transposições geométricas. Uma delas é a transposição colunar simples. A entrada do texto original é feita em linha e a saída em coluna usando uma matriz. Veja o exemplo a seguir com a string “os rapazes são audazes”: 9 Tabela 1 – Transposição colunar simples o s r a p a z e s s a o a u d a z e s Fonte: elaborada pelo autor. A mensagem cifrada será: oaaaszozreaeasuspsd. Outro algoritmo desse tipo é a transposição linear simples, que é o contrário do anterior: entrada por coluna e saída por linha. Tabela 2 – Transposição linear simples o p s a z s a s u e r z a d s a e o a Fonte: elaborada pelo autor. A mensagem cifrada será: opsazsasuerzadsaeoa. Há também o rail fence (paliçada), que segue um padrão zigue- zague: Tabela 3 – Transposição rail fence com duas linhas o r p z s a a d z s s a a e s o u a e Fonte: elaborada pelo autor. A mensagem cifrada será: orpzsaadzssaaesouae. 10 Lorem ipsum dolor sit amet Autoria: Nome do autor da disciplina Leitura crítica: Nome do autor da disciplina Referências bibliográficas STALLINGS, W. Criptografia e segurança de redes. 6. ed. São Paulo: Prentice Hall Brasil, 2015. 492 p. ZOCHIO, M. F. Introdução à criptografia. São Paulo: Novatec, 2016. 206 p. TEORIA EM PRÁTICA Você é o novo gerente de segurança da informação de uma empresa que trabalha como terceirizada para o governo federal. Como a empresa trabalha com informações sensíveis, foi-lhe solicitado que resolvesse o seguinte problema: implementar a codificação OTP (one-time pad) na empresa, nas mensagens governamentais sigilosas, para que qualquer informação fosse transcrita jácriptografada para os agentes de sua empresa transmitirem seu conteúdo para seus destinatários, mantendo o sigilo desse conteúdo. A cifra deve ser feita usando apenas uma operação lógica XOR (“ou exclusivo”), fornecer a saída da mensagem já criptografada e em hexadecimal, para depois ser decifrada pelo destinatário, que usará a mesma solução. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. 11 LEITURA FUNDAMENTAL Indicação 1 Este capítulo do livro de Stallings aborda sobre “técnicas clássicas de criptografia” que você viu neste tema. Você encontrará outros exemplos e mais material sobre o assunto. Para realizar a leitura, acesse a plataforma Biblioteca Virtual 3.0 Pearson, na Biblioteca Virtual da Kroton, e busque pelo título da obra. STALLINGS, W. Criptografia e segurança de redes. 6. ed. São Paulo: Prentice Hall Brasil, 2015. p. 25-39. 492 p. Indicação 2 Esta obra traz os princípios da segurança da informação e, no trecho indicado, os principais tipos de criptografia usados hoje. Para realizar a leitura, acesse a plataforma Biblioteca Virtual 3.0_ Pearson, na Biblioteca Virtual da Kroton, e busque pelo título da obra. GALVÃO, M. C. (Org.) Fundamentos da segurança da informação. São Paulo: Pearson, 2015. p. 41-43. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Indicações de leitura 12 Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. Quanto à fatoração aplicada à criptografia, é correto afirmar: a. Quanto maior o número, mais difícil é fatorá-lo. b. Há um método eficiente de fatorar números grandes de forma rápida, mas ele tem alto custo computacional. c. Dependendo do algoritmo usado, pode-se fatorar um número de 8 dígitos e outro de 800 dígitos no mesmo tempo. d. Um computador atual leva, em média, seis minutos para fatorar um número de 23 dígitos. e. Os números não primos resultantes da multiplicação de fatores primos usados em algoritmos criptográficos como RSA, normalmente, chegam a 60 dígitos. 2. À cifra de Vigenère podem ser aplicados os princípios de _____. a. Congruência e média. b. Congruência e modularidade. c. Modularidade e convencionabilidade. d. Congruência e superioridade. e. Substituição e sistemas monoalfabéticos. 13 GABARITO Questão 1 - Resposta A Resolução: A dificuldade de fatoração de um número é diretamente proporcional ao seu tamanho: quanto maior o número, mais difícil de fatorá-lo. Questão 2 - Resposta B Resolução: A fórmula matemática da cifra de Vigenère combina os princípios da congruência e modularidade em sua composição. TEMA 2 Criptografia de chave pública ______________________________________________________________ Autoria: Marcelo Ferreira Zochio Leitura crítica: José Eugênio de Mira 15 DIRETO AO PONTO Os algoritmos criptográficos se classificam em dois tipos principais: simétrico e assimétrico. Falemos um pouco mais do tipo simétrico. Você sabia que ele possui dois modos de funcionamento? Vejamos quais são (ZOCHIO, 2016): Cifra de fluxo: neste caso, os bits da mensagem original são combinados previamente com bits vindos de um gerador de dígitos pseudoaleatórios, ou diretamente com os bits da chave. Normalmente, a cifração é feita por meio de operação XOR (Ou- Exclusivo). A decifração também. Nesse tipo de cifra, não se deve usar a mesma chave mais que uma vez, pois isso causa enfraquecimento da segurança. Se a cifra de fluxo for do tipo XOR sem um IV (vetor de início), o resultado da operação XOR entre as duas mensagens cifradas com a mesma chave é o mesmo que a operação XOR entre essas mesmas mensagens sem passar pelo processo de cifra. Cifra de bloco: neste caso, blocos de determinado tamanho da mensagem original devem ser cifrados um de cada vez até o final da mensagem a ser transmitida. A decifração ocorre com o mesmo método. A força da criptografia simétrica está no tamanho de sua chave. Quanto maior a chave, mais seguro se torna o algoritmo criptográfico simétrico. Isso se dá porque, quanto maior a chave, mais possibilidade de combinações de chaves teremos a nosso dispor. Para fazer esse cálculo, basta elevar o número de bits da chave na base 2. Por exemplo: 16 Chave de 56 bits: 256 = 72.057.594.037.927.936 chaves possíveis. Chave de 128 bits: 2128 = 340.282.366.920.938.463.374.607.431.768.21 1.456 chaves possíveis. Chave de 256 bits: 2256 = 115.792.089.237.316.195.423.570.985.008. 687.907.853.269.984.665.640.564.039.457.584.007.913.129.639.936 chaves possíveis. Abordaremos agora a estrutura algoritmo AES (Advanced Encryption Standard). Ele é um algoritmo de cifra simétrica, que usa cifra de bloco, tendo cada bloco o tamanho de 128 bits, ou 16 bytes, e sua chave tem os tamanhos de 16, 24 ou 32 bytes (ou 128 bits, 192 bits ou 256 bits). Veja sua estrutura na Figura 1 a seguir: 17 Figura 1 – Estrutura do AES Fonte: adaptada de Stallings (2015, p.105). 18 Agora falemos um pouco sobre a criptografia assimétrica, que trabalha com dois tipos de chave: pública e privada. A chave pública, você divulga a quem quiser manter comunicações sigilosas, para que esse emissor cifre o conteúdo a ser enviado com sua chave pública, de modo que você consiga abrir tal conteúdo com sua chave privada, pois elas são matematicamente relacionadas: o que você cifra com uma, a outra abre. O conteúdo cifrado com sua chave pública só pode ser decifrado com sua chave privada e vice-versa. A chave privada, você mantém bem guardada, não deve ser divulgada a ninguém. Se você cifrar algo com sua chave privada, não garantirá sigilo, pois quem tiver sua chave pública poderá ter acesso ao conteúdo; mas isso garante outra característica: autenticidade. Não há como negar a autoria do que você cifrar com sua chave privada, pois, em tese, só você poderia ter gerado tal conteúdo. Assim funciona a assinatura digital. Referências bibliográficas STALLINGS, W. Criptografia e segurança de redes. 6. ed. São Paulo: Prentice Hall Brasil, 2015. 492 p. ZOCHIO, M. F. Introdução à criptografia. São Paulo: Novatec, 2016. 206 p. PARA SABER MAIS Já ouviu falar da falha Heartbleed? 19 Ela é um bug na OpenSSL (Open Secure Socket Layer, em português, algo como “camada segura de socket de uso aberto”), biblioteca de criptografia muito conhecida e difundida. A falha permite o roubo de informação criptografada usando o protocolo SSL. Este protocolo fornece comunicação criptografada na internet, e é usado em aplicações web, e-mail, mensagens instantâneas e redes de comunicação privadas (VPNs). A falha explora um bug na implementação do OpenSSL, presente nas versões 1.0.1 até 1.0.1f, permitindo que um cracker consiga ler uma área de memória RAM com 64 KB de extensão a cada requisição feita ao servidor, acessando informações privilegiadas, tais como chaves privadas, senhas, logins, números de cartão de crédito e várias outras informações. Como esse acesso se dá antes da cifração do conteúdo, nada adianta cifrá-los, pois a informação é acessada antes da cifra. Veja a seguir, na Figura 2, a tela de um computador executando um ataque bem-sucedido explorando a falha Heartbleed. Note que o atacante conseguiu o login (sandrovaldo) e a senha (1234) no sistema acessado pelo alvo, que estão circundados por uma linha vermelha: Figura 2 – Ataque Heartbleed bem-sucedido Fonte: adaptada de Zochio (2016, p. 107). Para não sofrer esse ataque, substitua o protocolo SSL pelo TLS (Transport Layer Security, ou, em português, camada de transporte segura) versão 1.3, pois ele não é vulnerável a essa 20 falha. Háa possibilidade de se substituir por versões do SSL corrigidas, mas o protocolo TLS possui algumas vantagens em relação ao SSL, por ser uma versão melhorada dele, falando de modo resumido. Uma das mudanças mais significativas é que o TLS pode usar portas diferentes (não só a 443) e verifica assinaturas com HMAC (Hashing for Message Authentication Code, ou, em português, código de autenticação de mensagem resumido), ao passo que o SSL usa o Message Authentication Code (MAC), ou, em português, código de autenticação de mensagem. Um detalhe importante sobre essa falha é que o atacante não deixa rastros, pois o ataque é feito dentro do algoritmo do programa e de forma legal, já que o atacante faz uma requisição maliciosa ao servidor, que o atende fornecendo os 64 KB solicitados, tamanho máximo de informação por requisição nesse caso. Referências bibliográficas ZOCHIO, M. F. Introdução à criptografia. São Paulo: Novatec, 2016. 206 p. TEORIA EM PRÁTICA Um cliente lhe pediu para desenvolver um pequeno aplicativo de transmissão de mensagens que use sockets, para que seus funcionários enviassem mensagens que seriam armazenadas em um aplicativo servidor, que gere um log das transmissões recebidas. Só que essa transmissão deve ser criptografada usando o algoritmo AES (Advanced Encryption Standart) no modo de cifra CFB (Cipher Feedback Block), para a segurança 21 na transmissão dessas mensagens. Sua tarefa é desenvolver esse sistema, que usa um aplicativo cliente, que fica com o usuário, e outro servidor, que fica na empresa. Use o recurso de sockets em qualquer linguagem para realizar essa tarefa, desenvolvendo o aplicativo cliente e o aplicativo servidor, fazendo o cliente enviar mensagens criptografadas ao servidor, que as receberá, decifrará e gerará um log das mensagens recebidas e o IP de quem as enviou. Para efeito didático, pode deixar o IV (vetor de início) com valor fixo. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Indicação 1 Este capítulo do livro de Stallings aborda a criptografia de chave pública e o algoritmo RSA. Para realizar a leitura, acesse a plataforma Biblioteca Virtual 3.0 Pearson, na Biblioteca Virtual da Kroton, e busque pelo título da obra. STALLINGS, W. Criptografia e segurança de redes. 6. ed. São Paulo: Prentice Hall Brasil, 2015. p. 199-218. 492 p. Indicação 2 Nestas páginas, os autores Goodrich e Tamassia abordam o algoritmo ElGamal, que usa o conceito do algoritmo de Diffie- Indicações de leitura 22 Hellman. Para realizar a leitura, acesse a plataforma Minha Biblioteca, na Biblioteca Virtual da Kroton, e busque pelo título da obra. GOODRICH, M. T; TAMASSIA, R. Introdução à segurança de computadores. Porto Alegre: Bookman, 2012. p. 406-408. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. Em 2014, foi descoberta uma falha denominada Heartbleed, que afeta a comunicação segura na internet. Como essa falha se caracteriza? a. A falha explora um bug na implementação do OpenGL, presente nas versões 1.0.1 até 1.0.1f, permitindo que um cracker consiga ler uma área de memória RAM com 64 KB de extensão a cada requisição feita ao servidor, acessando informações privilegiadas. b. A falha explora um bug na implementação do TLS versão 1.3, permitindo que um cracker consiga ler uma área de 23 memória RAM com 64 KB de extensão a cada requisição feita ao servidor, acessando informações privilegiadas. c. A falha explora um bug na implementação do OpenSSL, presente nas versões 1.0.1 até 1.0.1f, permitindo que um cracker consiga ler uma área de memória RAM com 64 KB de extensão a cada requisição feita ao servidor, acessando informações privilegiadas. d. A falha explora um bug na implementação do OpenSSL, presente nas versões 1.0.1 até 1.0.1f, permitindo que um cracker consiga acessar o sistema operacional da máquina-alvo. e. A falha explora um bug na implementação do OpenSSL, presente nas versões 2.0.1 até 2.0.1f, permitindo que um cracker consiga ler uma área de memória RAM com 64 KB de extensão a cada requisição feita ao servidor, acessando informações privilegiadas 2. O sistema de criptografia ElGamal se baseia em______ para manter sua _________. a. Logaritmos infinitos; segurança. b. Mangaritmos discretos; estabilidade. c. Mangaritmos indiscretos; estabilidade. d. Logaritmos discretos; segurança. e. Logaritmos indiscretos; segurança. GABARITO Questão 1 - Resposta C Resolução: As versões do OpenSSL que são afetadas pelo bug Heartbleed são as versões 1.0.1 até 1.0.1f. Essa falha permite ao atacante ler 64 KB da memória RAM em cada 24 requisição feita ao servidor, acessando seu conteúdo e, com isso, obter informações que deveriam ficar seguras, como senhas e logins. Questão 2 - Resposta D Resolução: O sistema ElGamal se baseia no princípio do uso de logaritmos discretos para manter sua segurança, pois o problema do logaritmo discreto apresenta dificuldade de solução. TEMA 3 Funções de hash criptográficas ______________________________________________________________ Autoria: Marcelo Ferreira Zochio Leitura crítica: José Eugênio de Mira 26 DIRETO AO PONTO Hash é um resumo criptográfico que gera uma saída de tamanho fixo independente do tamanho da entrada. A esta saída chamamos de hash da mensagem. Essa saída sempre terá caracteres hexadecimais, ou seja, sempre será composta por números de 0 a 9 e as letras a, b, c, d, e, f. Para que seja útil e confiável, um algoritmo de hash deve possuir as seguintes propriedades (ZOCHIO, 2016): • Unidirecionalidade: conhecendo um resumo h(M), deve ser computacionalmente impossível encontrar M a partir desse resumo, ou seja, deve ser impossível reverter o hash. • Compressão: a partir de uma mensagem de qualquer comprimento, o resumo h(M) deve ter um comprimento fixo. Normalmente, o comprimento de h(M) é menor que a da mensagem M, a não ser que a mensagem seja muito curta a ponto de ser menor que o hash gerado. • Facilidade de cálculo: deve ser fácil calcular h(M) a partir de uma mensagem M, ou seja, o cálculo não deve ser tão complexo que demore a ser feito. • Difusão: o resumo h(M) deve ter uma função de dispersão de todos os bits da mensagem M: se modificarmos um só bit da mensagem M, o hash h(M) deve mudar seu valor consideravelmente. • Resistência à colisão: deve ser computacionalmente impossível encontrar duas mensagens ou conteúdos digitais com o mesmo hash. 27 A alteração de um bit da entrada causa grande alteração nos bits de saída, como um efeito avalanche. Não há como prever os bits de saída dados os bits de entrada e nem inverter a função, com o objetivo de obter sua entrada, em qualquer de suas subcadeias. O hash é usado para verificar integridade, e não manter sigilo nas comunicações. Logo, ele não é um algoritmo criptográfico, pois não pode ser revertido para se obter a entrada. Algoritmos de hash possuem caminho de via única. Só é possível verificar se o hash de um arquivo coincide com o outro que alegadamente tem o mesmo conteúdo. Se os arquivos comparados (o original e o recebido) contêm o mesmo hash, não houve alteração no arquivo; do contrário, o arquivo foi alterado. Não importa o tamanho e tipo de arquivo, o resultado final sempre será fixo de acordo com o algoritmo usado. Se você calcular o hash de um HD (hard disk) de um computador usando os algoritmos MD5 e SHA1, você obterá um hash de 16 bytes, no caso do MD5, e um hash de 20 bytes, no caso do SHA1.Se você calcular o hash de um caractere qualquer usando esses mesmos algoritmos, você obterá uma hash de 16 bytes, no caso do MD5, e outro de 20 bytes, no caso do SHA1. Quando você tem dois arquivos completamente diferentes com o mesmo hash, acontece uma colisão de hash. Isso nunca deveria ocorrer, mas ocorre em alguns algoritmos, como o MD5. Ele é tão vulnerável a colisões que é possível forjá-las (WANG; YU, 2009.) Quando se descobre essa falha em algoritmos de hash, ele deixa de ser confiável para algumas tarefas, por exemplo, calcular hashes de imagens forenses computacionais e uso em assinaturas digitais. A seguir, você tem alguns exemplos de algoritmos de cálculo de hashes: 28 Tabela 1 – Exemplos de alguns algoritmos de hash Nome do algoritmo de hash Tamanho da saída em bits Tamanho da saída em bytes MD5 128 16 SHA1 160 20 SHA256 256 32 SHA512 512 64 Whirlpool 512 64 Fonte: elaborada pela autora. Você já deve ter visto sites que “quebram” hashes, mas não é bem isso que eles fazem. Eles possuem um banco de dados gigantesco com hashes calculados previamente, e quando você coloca um hash nos campos de pesquisa para procurar a string à que ele se refere (no caso de tentar descobrir senhas protegidas por hash), ele verifica se possui aquele hash já calculado, e caso tenha, fornece sua entrada. Existem softwares que também fazem essa tarefa, mas trabalham com wordlists, ou listas de palavras, nas quais estão presentes as mais usadas como senha e login, e calculam o hash de cada uma, verificando se são iguais ao hash que você manda-os pesquisar. Uma lista de palavras muito conhecida e usada para esse fim é a rockyou.txt, que possui 136 MB de palavras escritas em texto puro para comparação e cálculo de hash. Há outras listas bem maiores, da ordem de gigabytes. Você pode encontrar facilmente listas de palavras com 2 GB ou até 20 GB por meio de pesquisa na internet. 29 Referências bibliográficas WANG, X.; YU, H. How to break MD5 and other hash functions. Advances in cryptology, lecture notes in computer science 3494. China: Shandong University, 2009. p. 19-35. ZOCHIO, M. F. Introdução à criptografia. São Paulo: Novatec, 2016. 206 p. PARA SABER MAIS Já ouviu falar do “ataque de aniversário”? Ele é usado para testar hashes e também para explorar falhas em algoritmos de hashes. Qual o princípio de seu funcionamento? Ele explora um paradoxo de cálculos estatísticos conhecido por “paradoxo do aniversário”. Ele se baseia em duas perguntas: • Quantas pessoas precisam estar numa sala para que a probabilidade de alguém fazer aniversário no mesmo dia que você seja maior do que 50%? A resposta é: 253 pessoas. • Quantas pessoas precisam estar numa sala para que a probabilidade de que duas delas façam aniversário no mesmo dia seja maior do que 50%? A resposta é: 23 pessoas. Como assim? Expliquemos: considerando o número de dias do ano como 365 e que o número de nascimentos esteja igualmente distribuído em todos os dias do ano, cada um dos presentes na sala tem apenas 364 chances em 365 de não fazer aniversário no mesmo dia que você. Isto representa 364/365 = 0,997260274, ou seja, aproximadamente 99,73%. Como o inverso é verdadeiro, e 30 considerando apenas uma pessoa, a chance de que você e ela façam aniversário no mesmo dia é 1 - 0,997260274 = 0,002739726 ou cerca de 0,27%. À medida que o número de pessoas presentes aumenta, as chances se multiplicam. Se considerarmos duas pessoas, a probabilidade de que nenhuma delas faça aniversário no mesmo dia que você será (364/365) × (364/365) ou (364/365)2 e que pelo menos uma delas faça aniversário junto com você será novamente o inverso 1 - (364/365)2. Aumente este número para três, quatro, cinco pessoas, de modo sucessivo até encontrar uma probabilidade maior que 0,50 ou 50%. Logo, a fórmula para cálculo será: 1 - (364/365)n. Considerando os cálculos com 253 pessoas, o resultado será 1 - (364/365)253 = 0,500477154, praticamente 50,05%. Mas e se pesquisarmos duas pessoas que fazem aniversário na mesma data do ano? Nesse caso, à medida que mais pessoas entram na sala, a fórmula de cálculo muda, pois mudam também as regras de cálculo: (365 - n + 1) / 365, sendo n o número de pessoas na sala. Então, quando n = 23, o resultado obtido é 0,507297234 ou 50,73%. Logo, com essa abordagem se economiza mais tempo e recursos, e o ataque se torna mais eficiente. Se o hash resistir a esse ataque, ele é aprovado. Referências bibliográficas STALLINGS, W. Criptografia e segurança de redes. 6. ed. São Paulo: Prentice Hall Brasil, 2015. 492 p. 31 ZOCHIO, M. F. Introdução à criptografia. São Paulo: Novatec, 2016. 206 p. TEORIA EM PRÁTICA Você é um analista de segurança da informação de uma empresa que está projetando um sistema que será acessado com uma página com senha armazenada em um banco de dados. Porém, essas senhas não estão guardadas de modo seguro no banco, pois estão armazenadas sem criptografia. Você sugeriu que se calculassem os hashes delas e os armazenassem no banco de dados, mas não há um software para isso na empresa. Então seu gerente solicitou a você que fizesse um programa que calculasse os hashes das senhas armazenadas no banco. Como não eram muitas ainda, ele disse que queria um pequeno software que calculasse os hashes das senhas usando o algoritmo Whirlpool, digitando uma por vez e calculando seu hash. O aplicativo pode funcionar na Shell do Windows ou do Linux. Agora não deixe seu gerente esperando. Mãos à obra! Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. 32 LEITURA FUNDAMENTAL Indicação 1 Este capítulo do livro de Stallings aborda o uso de hash na verificação de integridade de mensagens. Para realizar a leitura, acesse a plataforma Biblioteca Virtual 3.0 Pearson, na Biblioteca Virtual da Kroton, e busque pelo título da obra. STALLINGS, W. Criptografia e segurança de redes. 6. ed. São Paulo: Prentice Hall Brasil, 2015. p. 247-250. 492 p. Indicação 2 Este tópico do livro de Routo Terada fala sobre criptografia de curvas elípticas, um algoritmo alternativo de criptografia assimétrica. Para realizar a leitura, acesse a plataforma Minha Biblioteca, na Biblioteca Virtual da Kroton, e busque pelo título da obra. TERADA, R. Segurança de dados – criptografia em redes de computador. São Paulo: Blucher, 2008. p. 160-173. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Indicações de leitura 33 Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. O ataque de aniversário é baseado em um paradoxo estatístico. Segundo esse paradoxo, quantas pessoas precisam estar em uma sala para termos pouco mais de 50% de chances de encontrarmos duas pessoas que façam aniversário no mesmo dia do ano? a. 235. b. 253. c. 233. d. 32. e. 23. 2. O ataque de aniversário é baseado em um paradoxo estatístico. Segundo esse paradoxo, quantas pessoas precisam estar em uma sala para termos pouco mais de 50% de chances de encontrarmos uma pessoa que faça aniversário no mesmo dia que você? a. 235. b. 253. c. 233. d. 32. e. 23. 34 GABARITO Questão 1 - Resposta E Resolução: É provado estatisticamente que só são necessárias 23 pessoas presentes em uma reunião para que se tenha pouco mais de 50% de chances de duas delas fazerem aniversário no mesmo dia do ano. Questão 2 - Resposta B Resolução: É provado estatisticamente que são necessárias 253 pessoas presentes em uma reunião para que se tenha pouco mais de 50% de chances de uma delas fazer aniversário no mesmo dia do ano que você. TEMA4 Autenticação e assinatura digital ______________________________________________________________ Autoria: Marcelo Ferreira Zochio Leitura crítica: José Eugênio de Mira 36 DIRETO AO PONTO Um dos instrumentos usados para a verificação de autenticidade de um documento digital é a assinatura digital. Ela é realizada usando a chave privada do emissor. Veja como funciona esse processo na Figura 1 a seguir: Figura 1 – Funcionamento da assinatura digital Fonte: elaborada pelo autor. Esse processo não garante a confidencialidade do documento, pois ele pode ser aberto pela chave pública de quem o cifrou; mas a assinatura digital garante o não repúdio da autoria do documento, pois somente o dono da chave privada que cifrou tal documento poderia ter feito tal coisa, já que essa chave não deve ser divulgada a ninguém. Segundo Stallings (2015), autenticação de mensagens é um processo para verificarmos se as mensagens recebidas vêm da origem alegada e se não foram modificadas. Esse processo pode também se certificar da veracidade da sequência e do tempo das mensagens recebidas. 37 De modo geral, as funções de autenticação são de dois tipos: • Função de hash: uma função que gera um resumo criptográfico de tamanho fixo que serve como autenticador. Cada conteúdo digital possui um hash único, que assume valores diferentes de acordo com o algoritmo usado, mas em cada algoritmo, esse resultado sempre se repetirá com esse mesmo conteúdo. • Código de autenticação de mensagem (MAC): uma função que produz um valor de tamanho fixo, que serve como autenticador. Por usar uma chave e produzir um valor, é similar à criptografia, mas não pode ser considerada uma técnica criptográfica, pois ela não possui reversão. A autenticação pode ser feita por meio de CRC (Ciclyc Redundance Check), que é baseado em polinômios. Porém, esse método tem a inconveniência de não detectar alteração na ordem dos caracteres da mensagem, diferente do MAC. Há também a possibilidade de fazermos a autenticação por meio de certificados digitais. Um certificado digital é um documento em que há informações sobre seu titular, como nome, chave pública e chave privada pertencentes a este certificado e a este titular, validade, objetivo do certificado, entre outras informações. O modelo X509v3 é o modelo adotado no Brasil e prevê as seguintes informações que devem constar no certificado, ilustradas na Figura 2: 38 Figura 2 – Modelo de certificado digital X509 v3 Fonte: adaptada de Silva et al. (2008, p. 25). A certificação digital no Brasil é gerenciada pela ICP-Brasil e possui uma estrutura hierárquica de autoridades certificadoras e de registro. Referências bibliográficas SILVA, L. G. C. da et al. Certificação digital – conceitos e aplicações. Rio de Janeiro: Ciência Moderna, 2008. ZOCHIO, M. F. Introdução à criptografia. São Paulo: Novatec, 2016. 206 p. 39 PARA SABER MAIS Você sabe quem, no Brasil, é autoridade certificadora na ICP- Brasil? Então aqui vão os nomes de algumas delas: • Caixa Econômica Federal. • IMESP (editora do Diário Oficial do Estado de São Paulo). • Certisign. • Serasa. • Serpro. • Petrobras. Uma autoridade certificadora pode ser também uma autoridade de registro, pois ela vai coletar os dados do titular para a emissão do certificado e esse serviço é feito por uma autoridade de registro. Caso ela não seja, receberá o pedido de certificado de outra autoridade de registro. Quando há perda, roubo ou inutilização do certificado antes de expirar seu período de validade, é necessário comunicar a autoridade certificadora para que ela o revogue. Assim, ele não poderá ser usado por outra pessoa que não seja seu titular. Certificados digitais são classificados também quanto ao seu tempo de uso e hardware usado para ser instalado. Certificados tipo A1 podem ser baixados pela internet quando disponibilizados pela autoridade certificadora, e são instalados em seu computador, normalmente, no navegador de internet. Possuem validade de um ano. Já os certificados modelo A3 possuem hardware próprio, geralmente um token com entrada USB ou 40 cartão com chip. Esse modelo possui três anos de validade e não precisa ser instalado. Só são retirados pessoalmente pelo titular na autoridade certificadora que o emitiu ou na autoridade de registro que a solicitou. A lei que regula a certificação digital no Brasil é a Medida Provisória nº 2.200-2, de 24 de agosto de 2001, que institui a Infraestrutura de Chaves Públicas Brasileira – ICP-Brasil, transforma o Instituto Nacional de Tecnologia da Informação em autarquia, e dá outras providências. Referências bibliográficas BRASIL. Medida Provisoria 2200-2 de 24 agosto 2001. Disponível em: . Acesso em 21 de out. de 2020. SILVA, L. G. C. da et al. Certificação digital – conceitos e aplicações. Rio de Janeiro: Ciência Moderna, 2008. TEORIA EM PRÁTICA Você trabalha em uma empresa que possui uma intranet que, até o momento, os funcionários entram colocando seu login e senha. Porém, a diretoria de TI resolveu mudar o modo de acessar a intranet, que será feito usando certificados digitais gerados e assinados pela própria empresa, a qual terá uma autoridade certificadora interna. Esses certificados só terão validade para acesso à intranet sem a necessidade de se usar login e senha, e serão distribuídos aos funcionários. http://www.planalto.gov.br/Ccivil_03/MPV/Antigas_2001/2200-2.htm http://www.planalto.gov.br/Ccivil_03/MPV/Antigas_2001/2200-2.htm 41 Sua tarefa é fazer um passo a passo de como gerar esses certificados em um servidor Linux para cada funcionário. Qualquer distribuição Linux pode ser usada. Instale uma imagem virtualizada desse Linux no VMWare ou Virtualbox e faça a atividade. Faça um exemplo de geração de apenas um certificado com um funcionário fictício, gerando esse certificado em nome desse funcionário. Para conhecer a resolução comentada proposta pelo professor, acesse a videoaula deste Teoria em Prática no ambiente de aprendizagem. LEITURA FUNDAMENTAL Indicação 1 Esta leitura trará mais alguns detalhes sobre processos de autenticação. Para realizá-la, acesse a plataforma Minha Biblioteca, na Biblioteca Virtual da Kroton, e busque pelo título da obra. MACHADO, F. N. R. Segurança da informação – princípios e controles de ameaças. São Paulo: Érica, 2014. p. 89-92. Indicação 2 Esta leitura trará mais alguns detalhes sobre a constituição da ICP-Brasil. Para realizá-la, acesse a plataforma Minha Biblioteca, na Biblioteca Virtual da Kroton, e busque pelo título da obra. Indicações de leitura 42 BARRETO, J. S. et al. Fundamentos de segurança da informação. Porto Alegre: SAGAH, 2018. p. 92-95. QUIZ Prezado aluno, as questões do Quiz têm como propósito a verificação de leitura dos itens Direto ao Ponto, Para Saber Mais, Teoria em Prática e Leitura Fundamental, presentes neste Aprendizagem em Foco. Para as avaliações virtuais e presenciais, as questões serão elaboradas a partir de todos os itens do Aprendizagem em Foco e dos slides usados para a gravação das videoaulas, além de questões de interpretação com embasamento no cabeçalho da questão. 1. Um dos instrumentos usados para a verificação de autenticidade de um documento digital é a assinatura digital. Ela se caracteriza por: a. Usar a chave pública para cifrar um conteúdo digital. b. Usar a chave privada para cifrar um conteúdo digital. c. Ser capaz de digitalizar uma assinatura em papel para que ela possa ser inserida no documento como se fosse escrita fisicamente. d. Ser capaz de prover confidencialidade ao conteúdo criptografado por ela. e. Ser capaz de garantir repúdio ao conteúdo assinado. 43 2. Certificados digitais são classificados também quanto ao seu tempo de uso e hardware usado para ser instalado. Entre os modelos existentes, há o A1. Esse modelo de certificado caracteriza-se por: a. Ser instaladoem um token ou cartão. b. Possuir a validade de um mês. c. Possuir validade infinita. d. Possuir a validade de um ano. e. Possuir apenas uma chave, a pública. GABARITO Questão 1 - Resposta B Resolução: A assinatura digital criptografa um conteúdo digital com a chave privada. Dessa maneira, quem tiver a chave pública poderá acessar seu conteúdo, e esse vínculo entre as chaves possibilita a garantia de não repúdio à autoria da criação do conteúdo assinado. Questão 2 - Resposta D Resolução: Certificados digitais do tipo A1 possuem um ano de validade e são instalados nos computadores, geralmente no navegador de internet. BONS ESTUDOS! Apresentação da disciplina Introdução TEMA 1 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 2 Direto ao ponto Teoria em prática Leitura fundamental Quiz Gabarito TEMA 3 Direto ao ponto Para saber mais Teoria em prática Leitura fundamental Quiz Gabarito TEMA 4 Direto ao ponto Teoria em prática Leitura fundamental Quiz Gabarito Botão TEMA 5: TEMA 2: Botão 158: Botão TEMA4: Inicio 2: Botão TEMA 6: TEMA 3: Botão 159: Botão TEMA5: Inicio 3: Botão TEMA 7: TEMA 4: Botão 160: Botão TEMA6: Inicio 4: Botão TEMA 8: TEMA 5: Botão 161: Botão TEMA7: Inicio 5: