INTRODUÇÃO AO ESTUDO DE CRIPTOGRAFIA

Documentos relacionados
O SISTEMA CRIPTOGRÁFICO D.E.S. - DATA ENCRYPTION STANDARD

Números Primos e Criptografia RSA

Álgebra A - Aula 01 Algoritmo da divisão de Euclides e Algoritmo Euclideano estendido

algoritmos de primalidade na criptografia rsa

Mantendo Segredos com a ajuda da Matemática

D OLJHLUD UDSRVD PDUURP VDOWRX VREUH R FDFKRUUR FDQVDGR 1

Criptografia: códigos sem segredos

Complexidade de Algoritmos

Já sabemos como determinar todas as soluções de uma equação diofantina linear, caso esta seja resolúvel. Para conguências temos:

Teoria dos Números e Criptografia

CIFRA DE HILL. Autor: Maycon Pereira de Souza

NÚMEROS INTEIROS E CRIPTOGRAFIA UFRJ

Números primos e Criptografia

CRIVO QUADRÁTICO: UM ESTUDO DA OBTENÇÃO DE UM CONJUNTO DE NÚMEROS COMPLETAMENTE FATORADOS SOBRE UMA BASE DE FATORES

MAT Álgebra I para Licenciatura 2 a Lista de exercícios

11.1) Noções Elementares 11.2) MDCs e algoritmos de Euclides 11.3) Aritmética modular 11.4) Aplics da MD: O sistema criptográfico RSA

CRIVO QUADRÁTICO: IMPLEMENTAÇÃO DA OBTENÇÃO DE UM CONJUNTO DE NÚMEROS COMPLETAMENTE FATORADOS SOBRE UMA BASE DE FATORES

Polos Olímpicos de Treinamento. Aula 9. Curso de Teoria dos Números - Nível 2. O Teorema de Euler. Prof. Samuel Feitosa

O USO DA CRIPTOGRAFIA EM ÁUDIO

, com k 1, p 1, p 2,..., p k números primos e α i, β i 0 inteiros, as factorizações de dois números inteiros a, b maiores do que 1.

1 Congruências e aritmética modular

Desvendando os mistérios do criptossistema RSA. Grasiele Cristiane Jorge. Pós-Doc - IMECC - UNICAMP

Números Primos, Fatores Primos, MDC e MMC

1. O que podemos dizer sobre a imagem da função. f : Z Z, f(x) = x 2 + x + 1?

M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações

Portal da OBMEP. Material Teórico - Módulo de Divisibilidade. MDC e MMC - Parte 1. Sexto Ano

CRIVO QUADRÁTICO: UM ESTUDO DA OBTENÇÃO DE UM QUADRADO PERFEITO

Se mdc(a,m) = 1, como a é invertível módulo m, a equação. ax b (mod m)

Matemática Discreta. Fundamentos e Conceitos da Teoria dos Números. Universidade do Estado de Mato Grosso. 4 de setembro de 2017

Criptografia Pós-Quântica Corretores de Erros

OTES07 Segurança da Informação Módulo 05c: Criptografia Assimétrica RSA e ECC

Dado um inteiro positivo n, definimos U(n) como sendo o conjunto dos inteiros positivos menores que n e primos com n. Não é difícil ver que a

Material Teórico - Sistemas Lineares e Geometria Anaĺıtica. Sistemas com três variáveis - Parte 1. Terceiro Ano do Ensino Médio

TOCI08 Segurança em Redes de Computadores Módulo 08: Criptografia Assimétrica RSA e ECC

Resumo. Palavras-chave: implementações aritméticas; inverso modular; sistema de restos.

Introdução à Teoria dos Números Notas de Aulas 3 Prof Carlos Alberto S Soares

Números Inteiros Algoritmo da Divisão e suas Aplicações

MA14 - Aritmética Unidade 22 Resumo. Aritmética das Classes Residuais

1 Potências e raízes em Aritmética Modular. Seja p primo e a um inteiro primo com p; a aplicação

ALGORITMO DE EUCLIDES

Álgebra A - Aula 12 Sistemas de congruências

Criptografia no MSX Fulswrjudild qr PVZ

TEOREMA FUNDAMENTAL DA ARITMÉTICA: APLICAÇÕES

MATEMÁTICA 1 MÓDULO 2. Divisibilidade. Professor Matheus Secco

Introdução à Teoria dos Números Notas de Aulas 3 Prof Carlos Alberto S Soares

Existem infinitos números de Carmichael, mas não provaremos isso neste curso.

MA14 - Aritmética Unidade 20 Resumo. Teoremas de Euler e de Wilson

NÚMEROS INTEIROS. Álgebra Abstrata - Verão 2012

Pode-se mostrar que da matriz A, pode-se tomar pelo menos uma submatriz quadrada de ordem dois cujo determinante é diferente de zero. Então P(A) = P(A

Números Primos: onde estão? Por que encontrá-los? Ana Cristina Vieira MAT/UFMG. Primos

parciais primeira parte

1 bases numéricas. capítulo

Definição. Diremos que um número inteiro d é um divisor de outro inteiro a, se a é múltiplo de d; ou seja, se a = d c, para algum inteiro c.

Congruências I. Por exemplo, 7 2 (mod 5), 9 3 (mod 6), 37 7 (mod 10) mas 5 3 (mod 4). Veja que a b (mod m) se, e somente se, m a b.

Universidade Federal de Uberlândia Faculdade de Matemática. FAMAT em Revista ISSN DEZEMBRO 2009 NÚMERO 13

Cálculo Numérico BCC760

MATEMÁTICA DISCRETA ARITMÉTICA RACIONAL (6/6) Carlos Luz. EST Setúbal / IPS Maio 2012

Álgebra A - Aula 02 Teorema da fatoração única, Propriedade fundamental dos primos, números primos

Álgebra I Israel. Bárbara Lopes Amaral. 19 de novembro de Universidade Federal de Minas Gerais. Fatoração de Polinômios. Lagrange.

Teorema Chinês dos Restos. Tópicos Adicionais

Matemática para Ciência de Computadores

Universidade do Minho

Avaliação de Segurança em Curvas Eĺıpticas Usando o Corpo dos Números p-ádicos

Soma de Quadrados. Faculdade de Matemática, UFU, MG

Algoritmos. OBMEP Teoria dos números - Parte I. Algoritmo da divisão:

13 AULA. Relações de Equivalência LIVRO. META: Introduzir o conceito de relações de equivalência e suas propriedades.

PTC Aula 20. (Kurose, p ) (Peterson, p ) 14/06/ Princípios de criptografia

Autenticação por par de. chaves assimétricas. Bruno Follmann

Equações Diofantinas + = polinómios conhecidos polinómios desconhecidos

Engloba os criptossistemas clássicos. Outros nomes: (Criptografia...)

Aritmética Racional MATEMÁTICA DISCRETA. Patrícia Ribeiro. Departamento de Matemática, ESTSetúbal 2018/ / 42

5 Congruências lineares. Programa. 1 Parte 1 - Conjuntos e Aplicações. 1 Conjuntos. 4 Indução matemática e divisibilidade

Critérios de divisibilidade Para alguns números como o dois, o três, o cinco e outros, existem regras que permitem verificar a divisibilidade sem se

Sistemas Digitais Módulo 3 Codificações BCD, Gray e ASCII e Números Fracionários

4.1 Cálculo do mdc: algoritmo de Euclides parte 1

MA14 - Aritmética Unidade 15 - Parte 1 Resumo. Congruências

ANDRÉ VINÍCIUS SPINA NÚMEROS PRIMOS E CRIPTOGRAFIA

Transcrição:

CONVÊNIOS CNPq/UFU & FAPEMIG/UFU Universidade Federal de Uberlândia Pró-Reitoria de Pesquisa e Pós-Graduação DIRETORIA DE PESQUISA COMISSÃO INSTITUCIONAL DE INICIAÇÃO CIENTÍFICA 2008 UFU 30 anos INTRODUÇÃO AO ESTUDO DE CRIPTOGRAFIA Adriele Giareta Biase 1 Faculdade de Matemática - Universidade Federal de Uberlândia, MG Av. João Naves de Ávila, 2121, Bloco 1F, Santa Mônica, Uberlândia, MG, CEP 38400-902 adrilegbiase@yahoo.com.br Edson Agustini 2 agustini@ufu.br Resumo: O objetivo deste trabalho é uma apresentação clara dos resultados matemáticos envolvendo Criptografia RSA bem como a prova de sua segurança. A base teórica dessa criptografia assenta-se sobre a Teoria dos Números, mais precisamente, na manipulação de máximos divisores comuns, fatorações e congruências, além de métodos probabilísticos para determinação de números primos. A Criptografia RSA é composta por duas fases: ciframento e deciframento, nas quais utilizamos n = pq, com p e q números primos muito grandes. A conclusão sobre a boa segurança da Criptografia RSA baseia-se na dificuldade de se fatorar n para obter p e q, a qual é devida à inexistência de bons algoritmos computacionais que realizem essa fatoração em um tempo razoável. Além da Criptografia RSA, apresentamos aplicações em assinaturas digitais. Palavras-chave: criptografia, congruência, fatoração, números primos, ciframento. 1. INTRODUÇÃO Nas últimas décadas a necessidade de se proteger informações, de modo que alguém indesejável não tenha acesso ao seu conteúdo, tem sido imperiosa. Uma das maneiras de se criar essa desejada proteção para mensagens é a criptografia. O uso corrente da criptografia é encontrado, por exemplo, em transações bancárias via Internet ou em compras on-line com cartões de crédito. Dessa forma, a criptografia torna-se um agente de segurança em um sistema de comunicações. Criptografia é o estudo de métodos para cifrar (ou modificar) uma mensagem a ser enviada de tal forma que apenas o receptor legítimo consiga interpretá-la. A base da criptografia moderna é a Teoria dos Números, uma vez que o estudo das propriedades dos números inteiros; mais precisamente, a manipulação de máximos divisores comuns, fatorações, congruências e métodos para determinar números primos são fundamentais para se entender criptografia. O método mais conhecido de criptografia é o chamado RSA (Rivest, Shamir, Adleman), ao qual daremos ênfase nesse trabalho. Para implementar esse método, precisamos escolher dois números primos muito grandes p e q e, na fase de ciframento de uma mensagem, usamos n = pq. Já, para o deciframento da mensagem, precisamos conhecer p e q. A segurança do método está justamente na dificuldade de se fatorar n, que é público, para obter p e q, que são privados. Podemos dizer que há dois objetivos nesse trabalho. O primeiro consiste no estudo dos principais resultados de Teoria dos Números, principalmente congruências, que são necessários ao estudo de criptografia em geral. O segundo é o estudo do algoritmo da Criptografia RSA, a demonstração de sua funcionalidade e segurança e uma aplicação em assinaturas digitais. 1 Acadêmica do curso de Licenciatura em Matemática. 2 Orientador. 1

2. MATERIAIS E MÉTODOS Devido ao caráter apenas teórico deste artigo, visando apenas resultados matemáticos, o método empregado foi constituído pelo estudo das referências bibliográficas citadas, discussão da Criptografia RSA, resolução de exercícios e verificação da funcionabilidade e segurança da Criptografia RSA. 3. CRIPTOGRAFIA RSA 3.1 Pré-Codificação Para usarmos o método RSA, devemos converter uma mensagem em uma seqüência de números. Chamaremos essa etapa de pré-codificação. Para efeito de exemplificação, tomemos a seguinte tabela de conversão na pré-codificação: a b c d e f g h i j k l m n o p q r s 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 t u v w x y z 0 1 2 3 4 5 6 7 8 9 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 O espaço entre palavras será substituído pelo n o. 36. Faremos a conversão sem considerar acentos e letras maiúsculas. Por exemplo, a frase Famat 2007 é convertida no número 15102210293639373744 A vantagem de se utilizar 2 dígitos para representar uma letra reside no fato de que tal procedimento evita a ocorrência de ambigüidades. Por exemplo, se a fosse convertido em 1 e b em 2, teríamos que ab seria 12, mas l também seria 12. Logo, não poderíamos concluir se 12 seria ab ou l. Precisamos determinar 2 primos distintos, que denotaremos por p e q, que são denominados parâmetros RSA. Seja n = pq, que é chamado de módulo RSA. A última etapa da pré-codificação consiste em separar o número acima em blocos cujos valores sejam menores que n. A mensagem cuja conversão foi feita acima pode ser separada nos seguintes blocos: 15 10 22 10 29 36 39 37 37 44. A maneira de escolher os blocos não é única e não precisa ser homogênea (todos os blocos com o mesmo número de dígitos), mas devemos tomar alguns cuidados como, por exemplo, não começar um bloco com zero, pois isto traria problemas na hora de montar a seqüência recebida (o zero no início do bloco pode não aparecer!). 3.2 Codificação e Decodificação Passemos ao processo de codificação. Da subseção acima, temos n = pq com p e q primos. Tomemos Φ (n) = (p 1) (q 1). Seja e < Φ (n) inteiro positivo inversível módulo Φ(n), ou seja, mdc (e, Φ(n)) = 1. 2

Esse número e é chamado de expoente de enciframento. O par (n, e) é denominado chave pública de codificação do sistema RSA. Agora, codifiquemos cada bloco obtido na pré-codificação (subseção anterior). Após a codificação, os blocos não poderão ser reunidos de modo que não possamos distinguí-los, pois isto tornaria impossível a decodificação da mensagem. A codificação de um bloco b será denotada por C(b). Temos que C(b) é o resto da divisão de b e por n, isto é, C(b) b e (mod n). Por exemplo, se p = 29 e q = 67, então n = 1943. Logo, Φ(n) = 1848. Tomemos e = 701 (observe que mdc (701, 1848) = 1). Assim, o último bloco, 44, da mensagem anterior é codificado como o resto da divisão de 44 701 por 1943. Convertendo 701 em binário e utilizando o método dos quadrados repetidos, temos 1317 44 701 (mod 1943). Codificando toda a mensagem, obtemos a seguinte seqüência de blocos: 595 155 1849 155 841 384 1344 1168 1168 1317. Para decodificar uma mensagem codificada, precisamos de n e do inverso de e módulo Φ(n), que chamaremos de d, ou seja ed 1 (mod Φ (n)). O par (n, d) é denominado chave privada de decodificação do sistema RSA. Seja a = C (b) um bloco da mensagem codificada, então D(a) será o resultado da decodificação. Temos que D(a) é o resto da divisão de a d por n, isto é, D(a) a d (mod n). Esperamos que, decodificando os blocos da mensagem codificada, possamos encontrar a mensagem original, ou seja, D (C(b)) = b. Para decodificarmos, não é necessário conhecermos p e q, basta conhecer n e d. No exemplo que estamos acompanhando, temos que n = 1943 e e = 701. Usando o Algoritmo Euclidiano Estendido, temos d = 29. Assim, para decodificar o bloco 1317 recebido, devemos calcular o resto da divisão de 1317 29 por 1943 (utilizando, por exemplo, o Método dos Quadrados Repetidos), ou seja, 44: Logo, a seqüência decodificada será 44 1317 29 (mod 1943). 15 10 22 10 29 36 39 37 37 44, que corresponde, via tabela de conversão, à frase Famat 2007. E quando encontramos d negativo? Pode ocorrer que no cálculo de d, pelo Algoritmo Euclidiano Estendido, encontremos um valor negativo. No entanto, é sempre possível tomar um valor positivo de d utilizando o Teorema da Solução Geral de uma Equação Diofantina, dado abaixo. Chamamos de equação diofantina a uma equações polinomial (com qualquer número de incógnitas), com coeficientes inteiros. Em uma equação diofantina, interessa apenas soluções inteiras. 3

Teorema. (Solução geral de equação diofantina linear com duas incógnitas) Sejam a e b inteiros positivos e d = mdc(a, b). Se d c, então a equação diofantina ax + by = c não possui nenhuma solução inteira. Se d c ela possui infinitas soluções e se x = x 0 e y = y 0 é uma solução particular, então todas as soluções são dadas por: com k Z. ( ) b x = x 0 + k d ( a y = y 0 k d) Vejamos um exemplo de d negativo na criptografia RSA com p = 31 e q = 47. Na codificação: Φ (n) = (p 1) (q 1) = (30) (46) = 1380 n = pq = (31) (47) = 1457 Se tomarmos e = 1001 (pois temos mdc(1001, 1380) = 1) e o primeiro bloco da mensagem anterior, cujo o número associado é 15, então a decodificação desta mensagem será o resto da divisão de 15 1001 por 1457. Convertendo 1001 em um binário e utilizando o Método dos Quadrados Repetidos, temos C (b) 15 1001 (mod 1457) 1100 15 1001 (mod 1457) Na decodificação: O par (n, d) é a chave privada da decodificação do sistema RSA. Seja a = C (a) a mensagem codificada, então D(a) será o resultado da decodificação. Mas temos que D (a) é o resto da divisão de a d por n, ou seja, D (a) a d (mod n). Calculando o valor de d a partir do Algoritmo Euclidiano Estendido encontramos d = 619. Mas não nos interessa trabalhar com valores de d negativos. Para encontrar um d positivo, temos um algoritmo derivado do Teorema da Solução Geral de uma Equação Diofantina. Algoritmo para reverter valores de d negativos: Etapa 1) Calcule o valor de d pelo Algoritmo Euclidiano Estendido. Etapa 2) Se d < 0, então tome t inteiro tal que d + Φ(n)t > 0 e faça d = d + Φ(n)t. Etapa 3) Faça d = d. 4

Logo, para o nosso exemplo: d = 619 + 1380t > 0 para t = 1 d = 1380 619 d = 761 d = d = 761 Deste modo, após encontrar o novo valor de d (positivo), então continua-se a decodificação usando o Método dos Quadrados Repetidos. Como D (C (b)) = b e para decodificar não é necessário conhecer os valores de p e q, então basta conhecer n e d. Assim, se n = 1457 e e = 1001, basta resolver a equação D (a) 1100 761 (mod 1457) no qual devemos obter que era o resultado esperado. 15 1100 761 (mod 1457), 4. ASSINATURAS DIGITAIS Uma das aplicações da criptografia são as assinaturas digitais, que possuem um importante papel nas transações bancárias, obtendo assim uma maior segurança, tanto para o cliente, quanto para o banco. Suponhamos que uma empresa realiza transações bancárias por computador. É óbvio que tanto a empresa quanto o banco queiram que a mensagem seja codificada. Mas, como o RSA é um sistema de criptografia de chave pública, qualquer pessoa poderia enviar uma mensagem para fazer transações bancárias utilizando esse sistema. Por isso, é necessário que a mensagem esteja assinada eletronicamente. Vejamos como mandar uma assinatura pelo RSA. Chamemos de C e e D e as funções de codificação e decodificação da empresa e C b e D b as mesmas funções, só que do banco. Sendo a um bloco de mensagem que a empresa vai enviar ao banco, a codificação desse bloco seria C b (a). Para que a mensagem vá assinada, ela deve ser C b (D e (a)). Usamos primeiro a função decodificação da empresa ao bloco a e, depois, codificamos o bloco, usando a função codificação do banco. O banco, ao receber a mensagem C b (D e (a)), aplica a sua função de decodificação, obtendo D e (a), e, na seqüência, aplica a função codificação da empresa, que é pública, para obter o bloco original a. Somente a empresa conhece a função D e. Portanto, se a mensagem fizer sentido, tem que ter tido origem na empresa, uma vez que a probabilidade de uma pessoa, sem conhecer D e, mandar uma mensagem que faça sentido, após ser decodificada pelo banco, é praticamente nula. Assim, o banco pode estar seguro de que a mensagem é verdadeira. 5. DISCUSSÃO E CONCLUSÕES Os modernos sistemas de criptografia consistem da principal aplicação de Teoria dos Números, mais especificamente, congruências e números primos. O estudo de números primos é quase tão antigo quanto a própria matemática e teve origem com os antigos gregos. Não obstante, seu estudo ainda é extremamente ativo nos dias atuais, principalmente com o uso de recursos computacionais, e muita pesquisa tem sido desenvolvida por brilhantes matemáticos. O fato da segurança de todo sistema de troca de informações sigilosas estar baseado na dificuldade em se fatorar um número composto é, no mínimo, curioso, uma vez que o conceito de fatoração 5

em números primos é algo do conhecimento geral de qualquer estudante de ensino fundamental. Mais curioso ainda é o fato de, mesmo com todo recurso tecnológico e computacional disponível, não existir um algoritmo de fatoração de números compostos grandes que seja pelo menos semi-eficiente. A história do ciframento e deciframento da mensagens é, assim como o estudo de números primos, bastante antiga e, sempre houve momentos em que os criadores de crifras estavam à frente dos quebradores de cifras e vice-versa. Mesmo em épocas recentes, como na Segunda Guerra Mundial, temos exemplos de cifras que foram quebradas, [7]. No entanto, a partir da década de 1970, com o surgimento da Criptografia RSA e dos diversos sistemas criptográficos dele derivados ou nele inspirados, os cifradores estão à frente dos quebradores de cifras. 6. AGRADECIMENTOS Os autores agradecem à FAPEMIG - Fundação de Amparo à Pesquisa do Estado de Minas Gerais - pela concessão da bolsa de iniciação científica de março de 2007 a fevereiro de 2008, bem como à Pró-Reitoria de Pesquisa e Pós-Graduação da Universidade Federal de Uberlândia pelo gerenciamento da mesma. 7. REFERÊNCIAS Coutinho, S. C., 1997, Números Inteiros e Criptografia RSA. Rio de Janeiro, RJ: IMPA - SBM. Série de Computação e Matemática. Domingues, H. H., 1982, Álgebra Moderna. São Paulo, SP: Atual Editora. Domingues, H. H., 1991, Fundamentos de Aritmética. São Paulo, SP: Atual Editora. Mollin, R. A., 2001, An Introduction to Cryptography. New York: Chapman & Hall. Rivest, M.; Shamir, A. & Adleman, L., 1978, A method for obtaining digital signatures and public-key cryptosystems. Comm. ACM, 21, pp. 120-126. Santos, J. P. O., 1998, Introdução à Teoria dos Números. Rio de Janeiro, RJ: Publicação do Inst. de Mat. Pura e Aplicada (IMPA). Coleção Matemática Universitária. INTRODUCTION TO THE STUDY OF CRYPTOGRAPHY Adriele Giareta Biase Faculdade de Matemática - Universidade Federal de Uberlândia, MG Av. João Naves de Ávila, 2121, Bloco 1F, Santa Mônica, Uberlândia, MG, CEP 38400-902 adrilegbiase@yahoo.com.br Edson Agustini Faculdade de Matemática - Universidade Federal de Uberlândia, MG Av. João Naves de Ávila, 2121, Bloco 1F, Santa Mônica, Uberlândia, MG, CEP 38400-902 agustini@ufu.br Abstract: The aim of this work is a presentation of mathematical results about RSA Cryptosystem. Its theoretic basis is found in Number Theory, precisely, in manipulation of greatest common divisors, factoring, congruences, and methods for find prime numbers. The RSA Cryptosystem is composed by two parts: enciphering and deciphering, where we use n = pq, with p and q very large prime numbers. The conclusion about the good security of RSA Cryptosystem is based on the hardness of the factorization of n for obtain p and q, wich is due to the non-existence of good computational algorithms that make this factorization in reasonable time. Besides RSA Cryptosystem, we present applications in digital signatures. Keywords: cryptography, congruence, factoring, prime numbers, enciphering. 6