CONCEITOS MATEMÁTICOS ENVOLVIDOS NO FUNCIONAMENTO DA CRIPTOGRAFIA RSA Cristiane Moro1 Raquel Cerbaro2 Andréia Beatriz Schmid3 Resumo: A criptografia visa garantir que somente pessoas autorizadas tenham acesso a informações reservadas. Para enviar uma mensagem com dados sigilosos a uma pessoa é preciso codificar a mensagem e torná-la ilegível para qualquer pessoa interceptar. A pessoa que recebe a mensagem deve possuir o mesmo sistema criptográfico, para assim decodificar o texto, e assim poder lê-lo. O RSA é um sistema criptográfico de chave pública, criado em 1978 por Ron Rivesti, Adi Shamir e Len Adleman. O seu funcionamento consiste na multiplicação de dois números primos muito grandes gerando um terceiro número. Para quebrar essa criptografia, seria necessária a fatoração desse número para encontrar os dois números primos que o geraram, porém, para isso é necessário um poder muito alto de processamento, o que acaba inviabilizando a tarefa, pois atualmente não existem algoritmos de fatoração eficientes para números primos grandes. A segurança deste método baseiase na complexidade dos conceitos matemáticos inseridos na teoria dos números. Têm-se como objetivo descrever o funcionamento da criptografia RSA, compreendendo a importância da matemática para a segurança deste algoritmo. Trata-se de uma pesquisa bibliográfica, fundamentada em livros, trabalhos, monografias e artigos. Aborda-se as etapas do processo criptográfico RSA, que inicia na pré-codificação, passa pela codificação da mensagem até a sua decodificação, onde retorna a mensagem original, mostrando após, por que o método funciona. Conclui-se, que o RSA é uma aplicação da matemática, baseada na utilização de conceitos de congruência, fatoração e primalidade, que por sua vez garante a segurança do método pela complexidade matemática envolvida. Palavras-chave: Criptografia RSA. Fatoração. Primos. Segurança. 1 Universitária do Curso de [email protected]. Matemática- Licenciatura plena/ACEA/UNOCHAPECÓ. E-mail: Universitária do Curso de Matemá[email protected]. Licenciatura plena/ACEA/UNOCHAPECÓ. E-mail: 2 3 Mestra em modelagem matemática. Professora do curso de Matemática- UNOCHAPECÓ. E-mail: [email protected]. 1. Introdução Apresentar-se-á uma conceituação geral da criptografia, donde será abordado exclusivamente o método criptográfico assimétrico, que é atualmente um dos mais utilizados na segurança de dados, o RSA. Enfatiza-se, assim, o método criptográfico RSA, apresentando seus conceitos, mostrando as etapas utilizadas para o uso do método, abordando os conceitos matemáticos inseridos em seu funcionamento, que promovem então a sua segurança. A criptografia é uma área de extrema importância nos dias atuais, pela necessidade da segurança de dados. Ela pode ser simétrica ou assimétrica. Abordase neste trabalho a criptografia assimétrica. A criptografia tem por objetivo principal garantir a circulação e armazenamento de mensagens com segurança. Convertendo dados legíveis em algo sem sentido, com a capacidade de recuperar os dados originais a partir desses dados sem sentido. Segundo Cavalcante (2004, p.1) A criptografia é a ciência que estuda as formas de se escrever uma mensagem em código. Trata-se de um conjunto de técnicas que permitem tornar incompreensível uma mensagem originalmente escrita com clareza, de forma a permitir que apenas o destinatário a decifre e compreenda. Na criptografia de chave assimétrica utiliza-se duas chaves, a pública e a privada. A chave pública é acessível a todos que desejam manter informações, com ela é feita a codificação da mensagem. Já para a decodificação é necessária a chave privada, que deve ser secreta, pois só quem possui essa chave poderá ler a mensagem. 2. Materiais e métodos Este trabalho apresenta-se como uma pesquisa bibliográfica, conceituando as principais características da criptografia RSA. Foram realizadas leituras e discussões acerca do tema criptografia RSA, objetivando perceber a importância da criptografia RSA como segurança de redes e os conceitos matemáticos inseridos nela. Realizando pesquisas que abordassem o assunto de forma geral, tendo a matemática como instrumento do processo criptográfico. Sendo a pesquisa na área da matemática aplicada e ter como tema a criptografia RSA, tem-se que ela pode ser estendida a todos os estudantes de matemática e sistemas de informação, bem como interessados em segurança de dados em redes. 3. Resultado e discussão Criptografia RSA A criptografia RSA foi inventada em 1978 por Ron Rivesti, Adi Shamir e Len Adleman que na época trabalhavam no Massachussets Institute Of technology. As letras RSA correspondem as inicias dos sobrenomes dos inventores do algoritmo. Segundo Gimenez (p.16) O algoritmo RSA constitui um exemplo de aplicação de várias teorias matemáticas em uma solução bastante elegante para o problema de criptografia assimétrica, ou de chave pública, onde as partes não possuem uma chave secreta previamente definida e dependem de um canal inseguro para se comunicar, como é o caso da internet. Desta forma, esse algoritmo se aplica perfeitamente em transações eletrônicas envolvendo negócios e/ou comércio pela internet. O RSA é muito utilizado em aplicações comerciais e a segurança desse método se dá pela complexidade matemática, encontrada na Teoria dos números. Para a implementação do RSA necessita-se de dois números primos grandes, que vamos chamar aqui de p e q. O produto desses dois números primos será chamado de n, que é a chave usada para a codificação da mensagem, ou seja, é a chave pública. Para a decodificação basta apenas fatorar n para encontrar p e q. Assim, a ideia principal teoricamente é simplória, porém atualmente não existem algoritmos de fatoração eficientes para números primos grandes, pois geralmente esses primos possuem mais de 150 algarismos, garantindo então a segurança do método. Na sequência apresenta-se o processo do método criptográfico RSA. Conceitos matemáticos envolvidos na criptografia RSA Agora será feito um estudo sobre alguns princípios básicos da Teoria dos números para a compreensão da criptografia RSA. Números primos Desde a antiguidade até os tempos atuais, os números primos tem atraído a atenção de muitos estudiosos. Foram criados diversos métodos para testar a primalidade de um número, como crivo de Eratóstenes. Atualmente, a primalidade de números está recebendo mais atenção, pelo fato de ser usado em diversos métodos criptográficos, como o RSA. Definição 1. Um número p IN se diz primo se: i) p 0 e p 1; ii) Os únicos divisores de p são 1 e p. Um número a IN, e é chamado composto se a não é primo. Proposição 1. Se p é primo e p/ab, então p/a ou p/b. Operações com congruências Teorema 1: Se a b(mod m) e se c d(mod m) então i) a+c b+d(mod m) ii) a-c b-d(mod m) iii) ac bd(mod m) Corolário: Se a b(mod m) e se c é um inteiro qualquer, então: Teorema 2: Se ac i) a+c b+c(mod m) ii) a-c b-c(mod m) iii) ac bc(mod m) bc(mod m) e se mdc(c,m)=1 então a b(mod m). Teorema de fermat II Se p é um primo e se p não divide a, então (mod p). Demostração: Tomamos os p – 1, primeiros múltiplos positivos de a, isto é, os inteiros a, 2a, 3a,..., (p - 1)a Como p a e p 2, 3, ..., (p - 1) e p é primo, nenhum destes números é múltiplo de p. Sejam r, s tal que onde (mod p) p / ra – as (r - s) p / (r – s) O que é um absurdo pela afirmação anterior. Logo, tal que temos que (mod p) Então ra e sa deixam restos diferentes quando divididos por p, ( ). Logo, cada um desses p – 1 números são congruentes a 1, 2, ..., p -1 módulo p. Então: a. 2a . 3a... (p – 1)a 1. 2. 3...(p - 1) (mod p) (p - 1)! Como p é primo, p ( p -1)! Corolário: Se p é primo, então (p - 1)! (mod p) mdc (p, (p -1)!)= 1 1 (mod p) (mod p) , qualquer que seja os inteiros a. Teorema chinês do resto Sejam inteiros positivos entre si, dois a dois, isto é, tais que o mdc( ) = 1 se i j Nestas condições, o sistema de congruências lineares: Tem uma única solução módulo Demonstração: Seja Como os inteiros mdc ( . o produto de todos os inteiros , exceto são primos entre si, dois a dois, o mdc ( ) = 1, ) = 1, pois de modo que a congruência linear (mod ) (1) Tem uma única solução (mod ). Posto isso, mostra-se que o inteiro .. É uma solução do sistema considerado. Com efeito, se , então e (mod ) o que implica .. E como o inteiro é uma solução da congruência linear (1) temos: e Logo, é a solução do sistema. Teorema de Euler Definição 1: A função de Euler de um inteiro positivo m, denotada por ( m), é definida como o número de inteiros positivos menores ou iguais a m que são relativamente primos com m. Teorema de Euler: Se m é um inteiro positivo e a é um inteiro tal que mdc(a,m)=1, então 1 (mod m) Prova: Escrevendo (m)= { , , , ..., , tem-se: ( ... (mod m) Logo, ... Como mdc( (mod m) ) =1, pode-se cortar o termo comum dos dois lados, então: 1 (mod m) Processo da criptografia RSA Após conhecidos os principais conceitos matemáticos envolvidos na criptografia RSA, mostrar-se-á as etapas necessárias para a codificação e decodificação de uma mensagem. Pré-codificação Nessa etapa deve-se converter a mensagem em uma seqüência de números. Ira-se supor que a mensagem original é um texto que não possui números e todas as letras são maiúsculas. Logo, a mensagem é constituída pelas letras que formam as palavras e pelos espaços entre palavras. Na pré-codificação converte-se as letras em números usando uma tabela de conversão: Quadro 1: Tabela de conversão. A B C D E F G H I J K L M 10 11 12 13 14 15 16 17 18 19 20 21 22 N O P Q R S T U V W X Y Z 23 24 25 26 27 28 29 30 31 32 33 34 35 O espaço entre duas palavras será substituído pelo número 99, quando for feita a conversão. Por exemplo, a frase AMO VOCÊ é convertida no número 1022249931241214. Precisa-se então escolher os parâmetros do sistema RSA, que são dois números primos distintos p e q. E temos a multiplicação deles n. Logo, n= pq. Agora tem-se que dividir o grande número em blocos. Sendo que, esses blocos devem ser menores que n, porém o bloco não pode iniciar com o número zero. Por exemplo, escolhendo p= 17 e q= 23, então n= 391. Logo a mensagem convertida será dividida em tais blocos: 102 – 224 – 99 – 312 – 41 – 214. Codificação No processo de codificação precisa-se de n=p.q e de um número inteiro positivo e tal que: Mdc (e, (p-1)(q-1))=1 O par (n,e) é chamado de chave de codificação do sistema RSA, é a chave pública. O bloco codificado: C(b) = resto da divisão de por n. Onde b é o bloco. Ou seja, C No exemplo, temos: (mod n) Mdc (e, (p-1)(q-1))=1 Mdc (e, 16.22)=1 Mdc (e, 352)=1 , menor número é o 3. Logo, e=3. Codificando os blocos da mensagem anterior tem-se: o bloco 102 da mensagem deve ser codificado com o resto da divisão de 102³ por 391. Fazendo as contas, obtêm-se: C(102) = 34. Procede-se da mesma maneira com os outros blocos, conforme segue no quadro 2: Quadro 2: Codificação de AMO VOCÊ. b 102 224 99 312 41 214 e 3 3 3 3 3 3 C 34 129 228 12 105 320 n 391 391 391 391 391 391 Desta forma a mensagem codificada será: 34-129-228-12-105-320. Decodificação Como p= 17, q= 23 e e = 3 tem-se: n= p.q= 391 (p-1)(q-1)= 16. 22= 352 ed 1 (mod 352) Pelo algoritmo euclidiano 352= 3._+1 1= 352+ (-117). 3 Logo o inverso de 3 módulo 352 é -117. Mas d deve ser >0, logo d= 352-117= 235 Então, a decodificação dos blocos será feita da seguinte maneira: D (34) = resto da divisão de Pelo teorema chinês do resto: por 391 Utilizando o Teorema de Fermat II: 11 -12 -3.4 (mod 23) ². 256 3 (mod 23) 12 (mod 23) -3. 12 Então: Da última congruência segue que Substituindo na anterior Como -36 -13 10 (mod 23) Como o inverso de 6 módulo de 17 é 3, tem-se: Substituindo: Obtendo: Veja no quadro 3 os seguintes resultados gerados pela decodificação: Quadro 3: Decodificação dos blocos. C 34 129 228 12 105 320 d 235 235 235 235 235 235 n 391 391 391 391 391 391 b 102 224 99 312 41 214 Logo a mensagem decodificada é: 102 – 224 – 99 – 312 – 41 – 214. Voltando então para a mensagem original. Por que o método funciona Todo método criptográfico só é válido se decodificando um bloco codificado obtêm-se novamente o bloco inicial. No caso do sistema RSA, isto se verifica se D(c(b)) =b. Será que isto sempre acontece? A igualdade pode ser mostrada provando que D(c(b)) b (mod n), Pois tanto D(c(b)) quando b estão entre 1 e n-1, e desta forma só podem ser congruentes módulo n se forem iguais (isto significa o fato de escolher b menor que n). Lembrando que C(b) (mod n) D(c) (mod n) Tem-se: D(c(b)) D( ) Como n=pq, vamos calcular (mod n) (mod p) e (mod q). Sabe-se que d é o inverso de e módulo (p-1)(q-1), logo ed 1(mod (p-1)(q-1)) ed= 1+k(p-1)(q-1) (mod n) Supondo que p b, pelo teorema de Fermat II: (mod p) (mod p) Se p b, temos que b 0 (mod p) ou seja, Analogamente, b(mod q). b(mod p), qualquer que seja b. Daí tem-se que - b é divisível por p e q. Como p e q são primos distintos, isto é, mdc(p,q)=1, temos que pq . Como n=pq, conclui-se que b(mod n), para todo b Conclusão: . D(c(b))= b. 4. Considerações finais O artigo produzido procurou conceituar a matemática que fundamenta a criptografia RSA, salientando sua importância e definindo seus conceitos. Foram realizadas leituras e discussões acerca do tema criptografia, objetivando perceber a importância da criptografia como segurança de redes e os conceitos matemáticos inseridos nela, em seguida, foram realizadas pesquisas que abordassem o assunto de forma geral, tendo a matemática apenas como instrumento do processo criptográfico. Tendo em vista a questão de segurança e privacidade, na criptografia RSA, encontra-se uma inteligência capaz de garantir essas questões, de tal forma que é possível fazer um estudo e compreender o método a partir de conceitos matemáticos, inseridos na Teoria dos Números. Assim, visto a explosão do comércio eletrônico e a consequente necessidade de assegurar dados nos dias atuais, vê-se a importância do estudo da criptografia, e aprofundamento da matemática que é base do funcionamento desse método. Apesar do estudo de números primos ser bastante antigo, merece a atenção dos matemáticos pelo fato de a segurança do RSA estar na dificuldade em fatorar um número composto, o que é no mínimo curioso. Pelo fato de a pesquisa ser desenvolvida na área da matemática aplicada e por ter como tema a criptografia, entende-se que ela pode ser estendida a todos os estudantes de matemática e sistemas de informação, bem como interessados em segurança de dados em redes. 5. Referências BUCHMANN, Johannes. Indução à criptografia. São Paulo: Berkeley Brasil, 2002. BURNET, Steve. Criptografia e segurança. Rio de Janeiro: Campos, 2002. CAVALCANTE, André L.B. Teoria dos números e Criptografia. Disponível em: http://system7.upis.br/revistavirtual/Cavalcante_%20Teoria%20dos%20N%FAmeros %20e%20Criptografia_2005_UPIS.pdf. Acesso em: 23 nov.2010. COUTINHO, S.C. Números inteiros e criptografia RSA. 2.ed. Rio de Janeiro: IMPA/SBM, 2000. COUTINHO, Severino Collier. Criptografia. Programa de iniciação científica OBMEP. DOMINGUES, Hygino H.. Fundamentos da Aritmética. São Paulo: Atual, 1991. GIMENEZ, José Roberto Bollis. Implementação do algoritmo RSA. Disponível em: http://www.unesp.br/ ~jroberto/rsa.pdf. Acesso em: 01 mai. 2011. OLIVEIRA, Ednei Rodrigues. Criptografia RSA. Disponível em: http://www.ime.unicamp.br.torres/ENSINO/MONOGRAFIAS/ednei_RSA.pdf. Acesso em: 18 set. 2010. PIMENTEL, Elaine Gouvêa. Teoria dos números e criptografia RSA. Minas Gerais: Abril, 2006. SILVA, Elen Viviane Pereira da. Introdução a criptografia RSA. Disponível em: http://www.impa.br/opencms/pt/eventos/downloads/jornadas_2006/trabalhos/jornada s_elen_pereira.pdf. Acesso em: 15 out. 2010. STALLINGS, William. Criptografia e segurança de redes: princípios e práticas. 4. ed. São Paulo: Pearson Prentice Hall, 2008.