Criptografia II Problemas de segurança As técnicas clássicas de criptografia são inseguras porque não supunham a existência de computadores nas mãos dos criptoanalistas. Além do mais, o segredo das técnicas clássicas estavam nos algoritmos, que eram secretos, não nas chaves. “A segurança de um criptossistema não deve da manutenção de um criptoalgoritmo em segredo. A segurança depende apenas de manter em segredo a chave” – Auguste Kerckhoff Porquê não usar algoritmos secretos? Nunca na história da criptografia alguém foi capaz de manter um algoritmo em segredo. Como o cliente irá comprar algo sem que vejam o que estão comprando? O fato de um algoritmo ser secreto não garante que ela seja seguro. Algoritmos publicamente conhecidos são mais seguros. Grandes mentes se esforçam para encontrar defeitos em sistemas criptográficos públicos. Criptografia de chave Simétrica Mesma chave utilizada para cifrar é utilizada para decifrar a mensagem. O principal desafio deste método é garantir que ninguém mais saiba esta chave além do transmissor e receptor. Criptografia de chave Simétrica A geração, transmissão e armazenamento de chaves é denominado Gerência de Chaves. O grande segredo da criptografia simétrica é o sigilo a respeito da chave criptográfica que foi utilizada. Daí a denominação de Criptografia de chave secreta. Por sua vez, a grande vantagem da criptografia de chave secreta é que ela é muito mais rápida que a criptografia de chave pública. DES - Data Encryption Standard O Primeiro método moderno foi proposto em meados da década de 70, conhecido como D.E.S. A IBM criou o primeiro rascunho do algoritmo, chamando-o de LUCIFER. Adotado como padrão nos Estados Unidos em 1977. Seu funcionamento básico consiste na criptografia de blocos de 64 bits de entrada com uma chave de 56 bits, gerando blocos de 64 bits como saída. Para obter o texto original novamente, reverte-se o processo usando a mesma chave. DES - Data Encryption Standard Devido ao pequeno tamanho da chave, esse algoritmo já não é considerado seguro, pois ele poderia ser quebrado com “certa facilidade” pela força bruta, ou seja, pelo teste de todas as chaves existentes até que se ache aquela que foi usada para criptografar o documento. Outro ponto que gera certa apreensão é o fato de existirem blocos internos ao DES cujo critério de arquitetura não foi explicitado, levando muitos a crer que existiriam falhas internas não reveladas pelo autor. A figura a seguir mostra um esquema genérico do funcionamento do DES. O texto cifrado é gerado a partir de 16 interações entre as permutações do texto inicial e da chave. DES - Data Encryption Standard DES - Data Encryption Standard O diagrama de como são feitas as interações do algoritmo é mostrado a seguir: Primeiramente o texto plano foi dividido em dois blocos de 32 bits É feita uma expansão e, em seguida, uma permutação no bloco da direita. Após este passo, é feito um XOR entre um subproduto da chave, e os dados permutados anteriormente. Logo depois, é feita uma nova permutação, segundo uma outra tabela, que juntamente com o bloco da direita entrará em um novo XOR, resultando no bloco da direita final A chave que será utilizada na operação XOR passa antes também por processos de rotação e permutação. DES - Data Encryption Standard Decifragem do DES A decifragem consiste de um processo semelhante ao da cifragem. Para se obter o dado decriptografado, basta que se façam as interações utilizando as chaves com ordem invertida, ou seja, partindo da 16a chave na primeira interação, e assim em diante, até chegar na décima sexta interação com a 1a chave. DES - Data Encryption Standard Por muitos anos, esse criptossistema foi o padrão de criptografia no Estados Unidos e era usado em todo o mundo. Hoje, o DES é considerado inseguro, apesar de permitir cerca de 72 quadrilhões de combinações. Isto se deve principalmente a pequena chave de 56-bit, que foi quebrada por "força bruta" em 1997 em um desafio lançado na Internet.. 3DES Uma maneira encontrada pelos especialistas de se aumentar a segurança ao utilizar o DES é usar o 3DES. O Triplo DES é um padrão de criptografia baseado no algoritmo de criptografia DES, porém utiliza 3 ou 2 chaves de 64 bits. 3DES Os dados são encriptados em três ciframentos sucessivos. Isto faz do 3DES ser mais lento que o DES original, mas oferece maior segurança. AES Numa proposta de substituir o DES, os E.U.A promoveu uma competição que durou 4 anos para que fosse feito um algoritmo de criptografia robusto. Em 2001 o AES foi adotada pelo governo dos Estados Unidos como padrão de criptografia simétrica. O AES suporta tamanhos de chave e bloco variando entre 128, 160, 192, 224 e 256 bits. É um protocolo mais rápido que o 3DES. Criptografia Simétrica - protocolos Outros protocolos de criptografia simétrica são o IDEA, Blowfish, RC-4, RC-5, RC-6.... Diffie-Hellman Diffie-Hellman é um método de criptografia desenvolvido por Whitfield Diffie e Martin Hellman. Até 1975 se alguém falasse em trocar informações criptografadas entre 2 partes, sem que houvesse uma troca de chaves secretas entre ambas seria tachado de maluco. Mas em 1976, a partir de profundo desenvolvimento da teoria dos números, o algoritmo Diffie-Hellman foi inventado. Diffie-Hellman Criptografia de chave Assimétrica A criptografia de chave pública ou assimétrica é um método de criptografia que utiliza um par de chaves: uma chave pública e uma chave privada. A chave pública é distribuída livremente para todos os correspondentes via e-mail ou outras formas. A chave privada deve ser conhecida apenas pelo seu dono. Criptografia de chave Assimétrica Num algoritmo de criptografia assimétrica, uma mensagem cifrada com a chave pública pode somente ser decifrada pela sua chave privada correspondente. Passo 1: Alice envia sua chave pública para Bob. Passo 2: Bob cifra a mensagem com a chave pública de Alice e envia para Alice, que recebe e decifra o texto utilizando sua chave privada. Criptografia de chave Assimétrica Os algoritmos de chave pública podem ser utilizados para autenticidade e confidencialidade. Para confidencialidade, a chave pública é usada para cifrar mensagens. Com isso apenas o dono da chave privada pode decifrá-la. Para autenticidade, a chave privada é usada para cifrar mensagens com isso garante-se que apenas o dono da chave privada poderia ter cifrado a mensagem que foi decifrada com a 'chave pública'. Criptografia de chave Assimétrica A principal vantagem da criptografia baseada em chave pública é a sua maior segurança em relação a criptografia baseada em chave secreta. No sistema baseado em chave pública as chaves privadas nunca precisam ser transmitidas ou recebidas a ninguém. Assim a chave não será interceptada por um intruso. Porém.... O método de chave pública é muito mais lento na cifragem do que o método de criptografia simétrica. (60 a 70 vezes + lento) RSA RSA é um algoritmo de criptografia de chave pública , que leva o nome dos 3 professores do Instituto MIT que inventaram este algoritmo. Ron Rivest Len Adleman Adi Shamir RSA O RSA é a mais bem sucedida implementação de sistemas de chaves assimétricas, e fundamenta-se em teorias clássicas dos números. É considerado o algoritmo de criptografia mais seguro, já que mandou por terra todas tentativas de quebrá-lo. Fonte: Wikipedia RSA 1.º Passo Escolher dois números primos grandes (100 dígitos), sendo eles associados às letras A e B. A=3 2.º Passo B = 11 Calcula-se: Usaremos números mais simples para facilitar o entendimento n=A*B n = 3 * 11 z = (A-1) * (B-1) z = (3-1) * (11-1) n = 33 z = 20 RSA 3.º Passo Escolher um número primo em relação a z. Chamaremos de d. 4.º Passo d=7 Foi escolhido o número 7 porque não existem fatores comuns entre 7 e 20. Encontrar um número e através da seguinte fórmula: (e * d) mod z = 1 Substituindo d e z pelos valores que já temos: (e * 7) mod 20 = 1 e=3 RSA Pronto, já temos os valores das chaves pública e privada! Ambas as chaves são compostas de dois valores: Chave Pública: valores “e” e “n” Chave Privada: valores “d” e “n” Para cifrar o a mensagem usamos: Texto Criptografado = Texto Original ^ e mod n Para decifrar o a mensagem: Texto Original = Texto cifrado ^ d mod n RSA Exemplo Texto Original = 4 Texto Criptografado = 4 ^ e mod n Texto Criptografado = 4 ^ 3 mod 33 Texto Criptografado = 31 Texto Criptografado 4 Texto Original = 31 ^ d mod n Texto Original = 31 ^ 7 mod 33 Texto Original = 4 RSA – mais robusto O desafio dos números primos. A partir da análise do conteúdo das chaves, tem-se previamente conhecido o valor de n. Sabe-se que o “n” é resultante do produto de dois números primos. Chave Pública: valores “e” e “n” Chave Privada: valores “d” e “n” Se encontrarmos os dois primos que geraram “n”, repetindo as operações anteriores poderíamos chegar também ao valor de “d” na chave privada Deste modo, a segurança do processo reside na facilidade ou dificuldade com que podemos fatorar “n” ou em outras palavras, identificar quais os dois números primos que multiplicados um pelo outro resultam exatamente no valor de “n”. RSA – mais robusto O desafio dos números primos. Parece fácil, mas com dois números com muitos algarismos esta tarefa torna-se extremamente complexa. A RSA lançou inclusive desafios com prémios em dinheiro para quem descobrir A e B primos, tal que o seu produto resulte no número n. O número n ficou inclusive conhecido como número RSA. O detalhe é que n tem de 100 (RSA-100 / 330bits) a 617 (RSA-2048 / 2048 bits) algarismos. RSA – mais robusto O desafio dos números primos. Alguém se habilita a encontrar os dois números primos cujos valores multiplicados resultam no RSA-2048? RSA-2048 = 25195908475657893494027183240048398571429282126204032027777137836043662020 70759555626401852588078440691829064124951508218929855914917618450280848912 00728449926873928072877767359714183472702618963750149718246911650776133798 59095700097330459748808428401797429100642458691817195118746121515172654632 28221686998754918242243363725908514186546204357679842338718477444792073993 42365848238242811981638150106748104516603773060562016196762561338441436038 33904414952634432190114657544454178424020924616515723350778707749817125772 46796292638635637328991215483143816789988504044536402352738195137863656439 1212010397122822120720357 Sistema Híbrido Os dois tipos de Chaves (Simétrica e Assimétrica) apresentam vantagens e desvantagens. Idéia: combinar os pontos fortes dos dois sistemas: usar Criptografia Assimétrica para estabelecer uma canal seguro e compartilhar em seguida uma chave comum, chamada chave de sessão. usar Criptografia Simétrica para transferir dados, usando um algoritmo de encripção convencional com a chave de sessão com maior velocidade Sistema Híbrido Compensado o problema de segredo da chave simétrica e a grande necessidade de processamento computacional na chave assimétrica: As entidades são autenticadas utilizado a criptografia assimétrica (mais robusta). Depois é acordado o uso de uma chave secreta para troca de mensagens utilizando a criptografia simétrica. O algoritmo de chave pública garante que a negociação foi realizada em um canal seguro, não havendo a necessidade da troca periódica da chave. Todo o restante do processo pode passar a ser realizado utilizando algoritmos de chave simétrica, o que diminui a necessidade do poder computacional. Aplicações com Criptografia Híbrida • PGP • SSL = Secure Socket Layer – definido por Netscape, compatível com IE. – https, cadeado no browser. • SSH – problema de telnet/rlogin: password na rede sem proteção • IPSec PGP - Pretty Good Privacy O PGP (Muito Boa Privacidade) é um programa de criptografia de chave pública altamente seguro. Nos últimos anos o PGP conquistou milhares de entusiastas em todo o mundo e tornou-se de fato um padrão para a criptografia de correio eletrônico (email) na Internet. O PGP pode, ainda, ser utilizado como um sistema à prova de falsificações de assinaturas digitais permitindo, desta forma, a comprovação de que arquivos ou e-mails não foram modificados. PGP - Pretty Good Privacy O PGP foi originalmente escrito por Philip Zimmermann. "Se todos os computadores pessoais no mundo (260 milhões) fossem colocados para trabalhar em uma única mensagem codificada por PGP, ainda levaria um tempo estimado de 12 milhões de vezes a idade do universo, em média, para quebrar uma única mensagem." — William Crowell, Diretor Adjunto, Agência de Segurança Nacional ("National Security Agency", NSA), 20 de março de 1997.