Introdução à Criptografia RSA



Documentos relacionados
¹CPTL/UFMS, Três Lagoas, MS,Brasil, ²CPTL/UFMS, Três Lagoas, MS, Brasil.

INE Fundamentos de Matemática Discreta para a Computação

Monografia sobre R ser um Domínio de Fatoração Única implicar que R[x] é um Domínio de Fatoração Única.

MÉTODOS DISCRETOS EM TELEMÁTICA

Resíduos Quadráticos e Fatoração: uma aplicação à criptoanálise do RSA

CONCEITOS MATEMÁTICOS ENVOLVIDOS NO FUNCIONAMENTO DA CRIPTOGRAFIA RSA

Material Teórico - Módulo de Divisibilidade. MDC e MMC - Parte 1. Sexto Ano. Prof. Angelo Papa Neto

MA14 - Aritmética Unidade 24 Resumo

Teoria dos Números. A Teoria dos Números é a área da matemática que lida com os números inteiros, isto é, com o conjunto

UNIVERSIDADE ESTADUAL DE GOIÁS UNIDADE UNIVERSITÁRIA DE JUSSARA LICENCIATURA EM MATEMÁTICA ANA PAULA ALVES MACHADO DE LIMA

Exercícios Teóricos Resolvidos

QUESTÕES COMENTADAS E RESOLVIDAS

Breve referência à Teoria de Anéis. Álgebra (Curso de CC) Ano lectivo 2005/ / 204

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO PROGRAMA DE EDUCAÇÃO TUTORIAL - MATEMÁTICA PROJETO FUNDAMENTOS DE MATEMÁTICA ELEMENTAR

Dicas para a 6 a Lista de Álgebra 1 (Conteúdo: Homomorfismos de Grupos e Teorema do Isomorfismo para grupos) Professor: Igor Lima.

Criptografia e Segurança em Redes Capítulo 9. Quarta Edição William Stallings

Sistemas Distribuídos: Conceitos e Projeto Introdução a Criptografia e Criptografia Simétrica

Aplicações de Combinatória e Geometria na Teoria dos Números

Álgebra A - Aula 11 RSA

Somatórias e produtórias

Notas de Cálculo Numérico

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Polos Olímpicos de Treinamento. Aula 2. Curso de Teoria dos Números - Nível 2. Divisibilidade II. Prof. Samuel Feitosa

Erros. Número Aproximado. Erros Absolutos erelativos. Erro Absoluto

2. Representação Numérica

Capítulo 1. x > y ou x < y ou x = y

Assinatura Digital: problema

Matemática - UEL Compilada em 18 de Março de Prof. Ulysses Sodré Matemática Essencial:

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,...

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?

Sobre Domínios Euclidianos

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

94 (8,97%) 69 (6,58%) 104 (9,92%) 101 (9,64%) 22 (2,10%) 36 (3,44%) 115 (10,97%) 77 (7,35%) 39 (3,72%) 78 (7,44%) 103 (9,83%)

Sistemas de Numeração. Engenharia da Computação 3 Período Alex Vidigal Bastos

8 8 (mod 17) e 3 34 = (3 17 ) 2 9 (mod 17). Daí que (mod 17), o que significa que é múltiplo de 17.

Tópico 2. Conversão de Unidades e Notação Científica

Disciplina: Introdução à Álgebra Linear

Capítulo 2. Álgebra e imagens binárias. 2.1 Subconjuntos versus funções binárias

Nome: Paulo Eduardo Rodrigues de Oliveira Nome: Pedro Thiago Ezequiel de Andrade Nome: Rafael Lucas Gregório D'Oliveira. Rsa

Sociedade Brasileira de Matemática Mestrado Profissional em Matemática em Rede Nacional. n=1

1 Base de um Espaço Vetorial

I Seminário sobre Segurança da Informação e Comunicações CRIPTOGRAFIA

Corpos. Um domínio de integridade finito é um corpo. Demonstração. Seja D um domínio de integridade com elemento identidade

computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação

(a) u D sse u d para todo o d D. (b) Qualquer associado de uma unidade é uma unidade. (c) Qualquer associado de um elemento irredutível é irredutível.

AULA 6 LÓGICA DOS CONJUNTOS

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Estruturas Discretas INF 1631

O que é número primo? Série O que é?

a 1 x a n x n = b,

Dadas a base e a altura de um triangulo, determinar sua área.

Teorema (Algoritmo da Divisão)

POLINÔMIOS. x 2x 5x 6 por x 1 x seja x x 3

Sistemas de Numerações.

Organização e Arquitetura de Computadores I

Universidade Estadual de Santa Cruz. Departamento de Ciências Exatas e Tecnológicas. Especialização em Matemática. Disciplina: Estruturas Algébricas

Raciocínio Lógico Matemático Caderno 1

APLICAÇÕES DA DERIVADA

Fração como porcentagem. Sexto Ano do Ensino Fundamental. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M.

Sistemas de numeração

Análise de Arredondamento em Ponto Flutuante

MA14 - Aritmética Unidade 4. Representação dos Números Inteiros (Sistemas de Numeração)

SISTEMAS DE NUMERAÇÃO

Algoritmos criptográficos de chave pública

Teoremas de Fermat, Wilson, Wolstenholme e Euler. 1 Os teoremas de Wilson e Wolstenholme

Sistemas de Numeração. Professor: Rogério R. de Vargas INFORMÁTICA 2014/2

Exemplo de Subtração Binária

REVISÃO E AVALIAÇÃO DA MATEMÁTICA

Título. Breve descrição da aula. Competência(s) desenvolvida(s) Conteúdo(s) desenvolvido(s).

Contagem I. Figura 1: Abrindo uma Porta.

Parte 2. Polinômios sobre domínios e corpos

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v /15

Auditoria e Segurança da Informação GSI536. Prof. Rodrigo Sanches Miani FACOM/UFU

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto

ARQUITETURA DE COMPUTADORES. Sistemas de Numeração. 1 Arquitetura de Computadores

Uma lei que associa mais de um valor y a um valor x é uma relação, mas não uma função. O contrário é verdadeiro (isto é, toda função é uma relação).

. Determine os valores de P(1) e P(22).

Matemática Financeira Módulo 2

Só Matemática O seu portal matemático FUNÇÕES

por séries de potências

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

EXAME NACIONAL DE QUALIFICAÇÃO GABARITO. Questão 1.

E A D - S I S T E M A S L I N E A R E S INTRODUÇÃO

Modelagem no Domínio do Tempo. Carlos Alexandre Mello. Carlos Alexandre Mello 1

Trabalho compilado da Internet Prof. Claudio Passos. Sistemas Numéricos

1. Sistemas de numeração

Segurança da Informação

AV1 - MA (b) Se o comprador preferir efetuar o pagamento à vista, qual deverá ser o valor desse pagamento único? 1 1, , , 980

1. NÍVEL CONVENCIONAL DE MÁQUINA

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

Conjuntos numéricos. Notasdeaula. Fonte: Leithold 1 e Cálculo A - Flemming. Dr. Régis Quadros

Capítulo UM Bases Numéricas

NIVELAMENTO MATEMÁTICA 2012

Transcrição:

UNIVERSIDADE ESTADUAL PAULISTA "JULIO DE MESQUITA FILHO " U N E S P Faculdade de Engenharia de Ilha Solteira - FEIS Introdução à Criptografia RSA DEPARTAMENTO DE MATEMÁTICA Aluna: Elen Viviani Pereira da Silva Orientador: Jaime Edmundo Apaza Rodriguez Ilha Solteira - SP, 2006

Agradecimentos Eu agradeço aos meus pais, a quem devo minha vida, ao meu orientador Prof. Jaime Edmundo Apaza Rodriguez, quem deposita todas as suas confianças em mim, ao Rafael Antonio Rossato, ao Edison Righetto e ao Prof. Edson Donizete de Carvalho. 1

Prefácio Este trabalho surgiu a partir do estudo de alguns livros e artigos sobre Criptografia, em geral, e em particular, sobre o método RSA. O estudo deste método, suas origens, desenvolvimento, descrição e aplicações, assim como a sua segurança, são os objetivos deste trabalho. São dois os principais ramos da matemática envolvidos neste estudo. De um lado, a Teoria dos Números, onde são apresentados os conceitos, resultados e algoritmos necessários em que se basea o método, e de outro, a Teoria da Complexidade Algorítmica, onde são discutidas alguns aspectos e resultados sobre os custos operacionais dos algoritmos, ou seja, em termos de tempo e uso de máquina, quanto custa um determinado algoritmo.

Sumário 1 Introdução à Criptografia 3 1.1 Um pouco de história.......................... 3 2 Teoria dos Números e Álgebra 5 2.1 Divisibilidade e propriedades...................... 5 2.2 Números Primos e propriedades.................... 7 2.3 Congruências Lineares......................... 9 2.3.1 Uma aplicação......................... 9 2.4 Anéis e Grupos............................. 10 2.4.1 Anéis............................... 10 2.4.2 Grupos.............................. 13 3 Custos Algorítmicos Computacionais 15 3.1 Custo das operações elementares.................... 16 3.2 Testes de Primalidade......................... 18 4 Método de Criptografia RSA 20 4.1 Introdução................................ 20 4.2 Descrição do método RSA....................... 20 4.2.1 Um exemplo:.......................... 21 4.3 Segurança do RSA........................... 23 4.4 Assinaturas no RSA.......................... 24 4.5 Alguns algoritmos importantes.................... 25 4.5.1 Em Z.............................. 25 4.5.2 Em Z n.............................. 27 4.6 Conclusão................................ 29 2

Capítulo 1 Introdução à Criptografia 1.1 Um pouco de história O impulso para descobrir segredos está profundamente enraizado na natureza humana. Durante milhares de anos, reis e rainhas dependiam de algum tipo de comunicação, mesmo que não eficiente, para governar seus países. Ao mesmo tempo, todos estavam cientes dos riscos das mensagens serem interceptadas pelo inimigo. Foi essa ameaça que gerou o desenvolvimento de métodos para mascarar as mensagens, denominados códigos e cifras. Segundo alguns historiadores e analistas militares, a Terceira Guerra Mundial será a guerra dos matemáticos, uma vez que estes terão o controle sobre a próxima grande arma de guerra: a transmissão segura da informação. Os principais códigos usados atualmente para a proteção das informações militares foram elaborados por matemáticos ou por pesquisadores com conhecimento profundo em tal aréa. Embora a Criptografia seja de importância fundamental em termos militares, os sistemas criptográficos são amplamente utilizados no meio civil, em transações bancárias, em negociações e em simples trocas de mensagens que são efetuadas via internet. Muitas mudanças no curso da história humana se deram pela decifração de cartas e documentos. Entre elas, temos a morte de Maria, a rainha da Escócia e a entrada dos Estados Unidos na Primeira Guerra Mundial. A proliferação dos computadores e sistemas de comunicação em 1960 criou uma grande demanda do setor privado buscando, na Criptografia, meios para proteger a informação na forma digital e fornecer serviços de segurança. Esta fase começou com o trabalho de H. Feistel na IBM em 1973, culminando em 1977, com a adoção de um Processamento Padrão de Informação Federal (USA) para criptografar informação não classificada; a DES (Data Encryption Standard) é o mecanismo criptográfico melhor conhecido na história. Um trabalho relevante na pesquisa sobre Criptografia apareceu em 1976, 3

quando W. Diffie e M. Hellman publicaram o artigo New Directions in Cryptography. Este trabalho introduz o conceito inovador de Criptografia de Chave Pública e fornece um novo e engenhoso método para troca de chave, cuja segurança esta baseada na impossibilidade do Problema do logaritmo discreto. A Criptografia RSA trabalha com algoritmos computacionais utilizando a chave pública. Esse código foi inventado em 1978 por Ron L. Rivest, Adi Shamir e Len Adleman que, na época, trabalhavam no Massachussets Institute of Technology (M.I.T.). As letras RSA correspondem às iniciais dos inventores do código. A segurança desse sistema criptográfico está baseada em um antigo problema matemático: obter os fatores primos de um número dado. O RSA explora essa situação ao utilizar um número, que atualmente varia de 512 a 1024 bits, e que é o produto de dois números primos muito grandes. Diversos métodos de fatoração foram desenvolvidos. Vários matemáticos estudaram caminhos alternativos para solucionar este problema tais como Carl Gauss, Leonard Euler e Pierre de Fermat. Mas essa área era considerada inútil para fins práticos. No entanto, com o advento da cifra assimétrica, a mesma se tornou interessante a todos os profissionais relacionados à tecnologia da informação, inclusive aos matemáticos. A engenhosidade de todos esses profissionais produziram resultados importantes no problema da fatoração. No entanto, nenhum método desenvolvido é considerado satisfatório a fim de ser executado em tempo polinomial, e portanto, o tamanho da chave é suficiente para garantir a segurança da informação no método RSA, em tempo real. O algoritmo RSA foi patentiado pelo M.I.T. em 1983 nos Estados Unidos, mas expirou em 21 de setembro de 2000. O RSA é, atualmente, o mais usado em aplicações comerciais. Este é o método utilizado, por exemplo, no Netscape, o mais popular dos softwares de navegação na Internet. 4

Capítulo 2 Teoria dos Números e Álgebra 2.1 Divisibilidade e propriedades Definição 1. Sejam a, b Z, com a 0. Dizemos que a divide b, se existir c Z tal que b = ac. Observação: O inteiro c é único. Notação: a b significa, a divide b ou b múltiplo de a. Propriedades fundamentais: (1) a a, para todo a Z. (2) Se a b e b c, então a c, para todo a, b Z. (3) Se a b e c d, então ac bd. (4) Se a b, então a mb, para todo m Z. (5) Se a b e a c, então a (bx + cy), x, y Z. (6) Se a b e b a, então a = ±b. Antes de enunciar e demonstrar o Algoritmo da Divisão, enunciamos a chamada Propriedade de Arquimedes. Propriedade de Arquimedes. Dados a, b Z, com b 0, então a é múltiplo de b ou se encontra entre dois múltiplos consecutivos de b, ou seja, para b > 0, temos qb a < (q + 1)b, e para b < 0, temos qb a < (q 1)b, onde q Z. O Algoritmo da Divisão Sejam a, b Z, com b 1. Então existem números inteiros únicos, q e r, tais que a = qb + r, com 0 r < b. 5

Prova: Existência: Pela Propriedade de Arquimedes, como b > 0, existe q Z, satisfazendo a condição qb a < (q + 1)b. Isto implica que 0 a qb e a qb < b. Desta forma, se definirmos r = a qb, teremos garantida a existência de q e r inteiros. Unicidade: Suponha a existência de q 1 e r 1 tais que a = q 1 b + r 1, com 0 r 1 < b. Segue que (qb + r) (q 1 b + r 1 ) = 0, de onde b(q q 1 ) = r 1 r, o que implica b (r 1 r). Mas, como r 1 < b e r < b, temos r 1 r < b. Assim r 1 r = 0, pois b (r 1 r). Portanto, r 1 = r e consequentemente, q 1 = q. Máximo Divisor Comum e Mínimo Múltiplo Comum Definicão 2. Um inteiro, não negativo, d é o máximo divisor comum dos números inteiros a e b (denota-se por d = mdc(a, b)), se (a) d a e d b (ou seja, d é um divisor comum); (b) Se c a e c b então c d (ou seja, d é o maior dos divisores comuns). Definição 3. Um inteiro não negativo, d, é o mínimo múltiplo comum dos números inteiros a e b )denota-se por d = mmc(a, b)), se (a) a d e b d (ou seja, d é múltiplo comum); (b) se a c e b c então d c (ou seja, d é o menor dos múltiplos comuns). Definição 4. Dois inteiros a e b são ditos primos relativos se mdc(a, b) = 1. É conhecido um método para determinar o mdc(a, b), chamado método das divisões sucessivas. O resultado a seguir usa esse argumento para mostrar que existe o mdc de dois números inteiros e é igual ao último resto não-nulo das divisões sucessivas realizadas. Algoritmo de Euclides. Sejam r 0 = a e r 1 = b inteiros não-negativos, com b 0. Se o algoritmo da divisão for aplicado sucessivamente para se obter r j = q j+1 r j+1 + r j+2, com 0 r j+2 < r j+1, para j = 0, 1, 2,, n 1 e r n+1 = 0, então mdc(a, b) = r n, o último resto não-nulo. Usando o algoritmo de Euclides, partindo da última divisão (que deu o mdc) e substituindo sucessivamente nas igualdades anteriores, é obtida a seguinte propriedade fundamental do máximo divisor comum. 6

Propriedade: Se d = (a, b), então existem números inteiros r, s tais que d = ra + sb. 2.2 Números Primos e propriedades Definição 1. Um inteiro p 2 é dito primo se seus únicos divisores positivos são 1 e p. Se p não é primo, então p é dito composto. Proposição 1. Se p é primo e p ab, então p a ou p b. Prova: De fato, suponha que p a, ou seja, mdc(a, p) = 1, pois p é primo. Assim, existem inteiros r, s tais que 1 = ra + sp. Multiplicando a igualdade em ambos os lados por b temos b = r(ab) + p(sb). Como p ab, então existe um inteiro k tal que ab = pk. Substituindo na igualdade acima obtemos o que implica que p b. b = (rk)p + (sb)p = p(rk + sb) Teorema do Número Primo. Seja Π(x) denotando o número de número de primos que são menores ou iguais do que x. Então lim x Π(x) x/ ln x = 1. Teorema Fundamental da Aritmética Todo número inteiro, maior do 1, pode ser representado de maneira única, salvo a ordem dos fatores, como n = p e 1 1 p e 2 2 p e 3 3... p e k k, onde os p i são primos distintos e e i inteiros positivos. Teorema 2. Existem infinitos números primos. Das várias demonstrações para existem para este teorema, vamos apresentar a demonstração feita por contradição, dada por Euclides. Prova: Seja p 1, p 2,..., p n a lista de todos os primos. Considerando o número R = p 1 p 2...p n +1, é claro que R não é divisível por nenhum dos p i da lista considerada acima e que R é maior do que qualquer p i. Mas, pelo Teorema Fundamental da Aritmética, ou R é primo ou possui algum fator primo e isto implica na existência 7

de um primo que não pertence àquela lista. Portanto a sequência dos números primos não pode ser finita. Proposição 3. Sejam os números inteiros a = p e 1 1 p e 2 2... p e k k e b = p f 1 1 p f 2 2... p f k k, onde e i 0 e f i 0, para i = 1, 2,, k. Então mdc(a, b) = p min(e 1,f 1 ) 1 p min(e 2,f 2 ) 2... p min(e k,f k ) k mmc(a, b) = p max(e 1,f 1 ) 1 p max(e 2,f 2 ) 2... p max(e k,f k ) k Lema 4. Se a, b Z, então max(a, b) + min(a, b) = a + b. Prova: Se a = b então max(a, b) = min(a, b) = a = b. Logo max(a, b) + min(a, b) = a + b. Se a b, sem perda de generalidade, podemos considerar a < b. Logo max(a, b) = b e min(a, b) = a. Portanto, max(a, b) + min(a, b) = a + b. Proposição 4. Se a e b são inteiros positivos então mmc(a, b)mdc(a, b) = ab. Prova: Suponha a = p e 1 1 p e 2 2... p e k k e b = p f 1 1 p f 2 2... p f k k, onde cada e i 0 e f i 0. Então segue que, mdc(a, b) mmc(a, b) = k i=1 p min(a i,b i ) i k i=1 p max(a i,b i ) i = k i=1 p min(a i,b i )+max(a i,b i ) i. Pelo lema acima, temos k i=1 o que prova o resultado. p min(a i,b i )+max(a i,b i ) i = k i=1 p (a i+b i ) i = ab, Definição 4. Para n 1, a função Φ(n) denota o números de inteiros no intervalo [1, n], que são relativamente primos à n. Esta função Φ é chamada de Função Totiente de Euler. Propriedades: (1) Se p é primo, então Φ(p) = p 1. De fato, seja S = {1, 2,..., p 1} o conjunto de todos os números menores que p. Dado m S, temos que p m, pois m < p. Além disso, p é primo e portanto 8

mdc(p, m) = 1, para qualquer que seja m S. Como S contém p 1 elementos, segue que Φ(p) = p 1. (2) A função Φ é multiplicativa, isto é, se mdc(m n) = 1 então Φ(m, n) = Φ(m)Φ(n). (3) Se n = p e 1 1 p e 2 2... p e k k, com p i primos e e i 0, para todo i, então Φ(n) = n(1 1 p 1 )(1 1 p 2 )... (1 1 p k ). Assim, se n é um número composto que pode ser fatorado como o produto de dois números primos p e q então φ(n) = (p 1)(q 1). Proposição 5. Para todo inteiro n 5, Φ(n) > 2.3 Congruências Lineares n 6 ln ln n. Definição 5. Sejam a, b, n Z com n > 1. Dizemos que a é congruente com b, módulo n, se n divide a b. Notação: Denota-se a congruência por a b (mod n). Propriedades: Sejam a, b, c, d Z. São válidas: (1) (Reflexiva) a a (mod n). (2) (Simétrica) Se a b (modn) então b a (mod n). (iii)(transitividade) Se a b (mod n) e b c (mod n), então a c (mod n). (iv)se a b (mod n) e c bd (mod n). (mod n) então a + c b + d (mod n) e ac Por essas três propriedades serem atendidas temos que a relação de congruência é uma relação de equivalência. 2.3.1 Uma aplicação Um dos métodos mais antigos de criptografia era usado pelo grande imperador da Roma, Júlio César, a cerca de 50A.C.. César escrevia para Marcus Cícero usando a rudimentar cifra de substituição onde a cada letra do alfabeto correspondia outra letra algumas posições à frente da letra cifrada. Como por exemplo: 9

T EXT O : ABCDEF GHIJKLMNOP QRST UV W XY Z CIF RA : DEF GHIJKLMENOP QRST UV W Y ZABC A cifra de César pode ser descrita usando congruência modular. Primeiramente, cada letra do alfabeto será expressa numericamente em dois dígitos como abaixo: Tabela 03 A B C D E F G H I J K L M 00 01 02 03 04 05 06 07 08 09 10 11 12 N O P Q R S T U V W Y X Z 13 14 15 16 17 18 19 20 21 22 23 24 25 Se C é a letra a qual queremos cifrar e P é a letra a qual corresponde a letra cifrada, então: C P + 3 (mod 26). Para descobrir o texto basta aplicar o procedimento reverso da congruência: P C 3 C + 23 (mod 26). 2.4 Anéis e Grupos 2.4.1 Anéis Definição: Seja A um conjunto não vazio e duas operações definidas nele (que chamaremos de adição, +, e multiplicação, ). O conjunto A é um anel se são válidas as propriedades: (1) Associatividade aditiva: (a + b) + c = a + (b + c). (2) Comutatividade da adição: a + b = b + a. (3) Elemento neutro aditivo: Existe 0 A tal que a + 0 = 0 + a = a. (4) Elemento inverso aditivo: Para a A existe um único a, tal que a + ( a) = ( a) + a = 0. (5) Associatividade da multiplicação: a(bc) = (ab)c. (6) Leis Distributivas: a(b + c) = ab + ac e (a + b)c = ac + bc. Além disso, temos: (a) A é um anel com unidade 1 se existir 1 A, 0 1, tal que a1 = 1a = a, para qualquer a A. 10

(b) A é um anel comutativo, se para quaisquer a, b A temos: ab = ba. (c) A é um anel sem divisores de zero se, para quaisquer a, b A, ab = 0 então ou a = 0 ou b = 0. (d) A é um anel de integridade se (A, +, ) é um anel comutativo, com unidade e sem divisores de zero. (e) (A, +, ) é um corpo se é um anel de integridade, onde todo elemento não-nulo possui inverso multiplicativo. Exemplo: O protótipo de anel é o conjunto Z, com as operações de adição e multiplicação usuais, onde 1 é a unidade e 0 o elemento neutro aditivo. Os conjuntos Q, R, C são exemplos de corpos. Ideal e Anel Quociente: Definição: Sejam A um anel e J um subconjunto de A. J é um ideal de A se (1) 0 J (2) Se a, b J então a b J. (3) Para a J e x A temos a) ax J, ideal à esquerda, b) xa J, ideal à direita. Exemplo: Para A um anel e x A, temos que J = Ax = {ax : a A} é um ideal (à esquerda) gerado por x. No caso A = Z, e x = 3, o ideal 3Z está formado pelos múltiplos de 3. Definição: O ideal J = Ax é dito ideal principal (à esquerda) gerado por x A. Sejam A um anel e J = Az, z A, um ideal principal de A. Para x, x A, defina-se a relação: x x (mod J) x x J. A relação " " é uma relação de equivalência em A. O conjunto x = {y A : y x (mod J)} é a classe de equivalência do elemento x A, relativamente a relação. Observar que y x y x J. Notação: x = x + J = {x + z : z J}. 11

Definição: O conjunto quociente de A pelo ideal J está formado pelas classes de equivalência de A, ou seja, A/J = {x = x + J : x A}. Definindo em A/J as operações de adição e multiplicação de classes, verifica-se que A/J é um anel, o anel quociente de A. Denotamos por Z n o conjunto quociente do anel Z pelo ideal J = Zn = nz. Esse conjunto é um anel comutativo, com identidade 1 e contém exatamente n classes de equivalência. É comum denotá-lo por Z n = {0, 1, 2,, n 1}. Definição: a Z n é inversível se existir b Z n tal que ab = ba = 1. Anel de polinômios Definição: Seja A um anel. Um polinômio p, na indeterminada x e com coeficientes em A, é uma expressão da forma p(x) = a 0 + a 1 x + a 2 x 2 +... + a n x n, onde n é um inteiro não negativo e a 0, a 1,..., a n A. O polinômio p(x) = 0 + 0x + 0x 2 +... + 0x n é o polinômio nulo. Denota-se por A[x] o conjunto de todos os polinômios na indeterminada x e com coeficientes no anel A. No que segue, tomaremos A = K como sendo um corpo. Sejam os polinônios p(x) = a 0 + a 1 x + a 2 x 2 +... + a n x n e q(x) = b 0 + b 1 x + b 2 x 2 +... + b n x n. Igualdade: p(x) = q(x) se e somente se a i = b i, para i = 0, 1,, n. Adição: p(x) + q(x) = c 0 + c 1 x + c 2 x 2 +... + a k x k, onde c i = a i + b i. Multiplicação: p(x)q(x) = c 0 +c 1 x+c 2 x 2 +...+a n x n, onde c k = n i=0 a ib k i. Verifica-se que (K[x], +, ) é um anel de integridade. Dado p(x) = a 0 + a 1 x + a 2 x 2 +... + a n x n K[x], com a n 0. Dizemos que n é o grau do polinômio p(x). Denota-se por n = gr(p(x) Definição: Um polinômio é dito mônico se o seu coeficiente do termo de maior grau é igual a 1. Ao estudar o anel de polinômios K[x], os conceitos e resultados que aparecem são homólogos ao caso do anel Z. Assim, são válidos o Algoritmo da Divisão, Máximo Divisor Comum, Mínino Divisor Comum, fator irredutível e outros. Ainda 12

mais importante é o fato de que as demonstrações em K[x] são uma "tradução" das demonstrações que se dão em Z. Além disso, é possível generalizar tais conceitos e resultados para uma classe ainda mais geral de aneis (por exemplo, os domínios de fatoração única, os domínios principais, os domínios euclidianos), dos quais K[x] e Z são casos particulares 2.4.2 Grupos Definição: Um conjunto G, munido de uma operação, é um grupo se, para quaiquer a, b, c G, são válidas (1) Associatividade: a (b c) = (a b) c. (2) Elemento neutro: Existe um elemento e G tal que a e = e a = a. (3) Elemento inverso: Dado a G, existe um elemento a 1 G, tal que a a 1 = a 1 a = e. Se para quaisquer a, b G, é satisfeita a propriedade a b = b a, dizemos que G é um grupo abeliano. Exemplo: O conjunto U(n) = {a Z n : mdc(a, n) = 1}, dos elementos invertíveis de Z n, com a operação de multiplicação de classes, é um grupo abeliano. Em particular, se n é primo então U(n) = {a : 1 a n 1}. Desta forma, o número de elementos de U(n) é igual a φ(n) = n 1. Definição: A ordem de um grupo é o seu número de elementos. Definição: Um grupo G é dito finito se a sua ordem é finita. A ordem do grupo U(n) é dado pela função de Euler φ(n). Subgrupos Definição: Seja (G, ) um grupo. Um subconjunto não vazio, H de G, é um subgrupo se: (1) Para todo a, b H, a b H. (2) O elemento neutro de G está em H. (3) Para todo a H, seu inverso a também está em H. Teorema de Lagrange: Em um grupo finito, a ordem de qualquer subgrupo divide a ordem do grupo. Esse teorema é muito importante na construção de subgrupos e grupos cíclicos. Subgrupos Cíclicos 13

Sejam (G, ) um grupo finito e a G. Para k Z, temos O conjunto das potências de a: a k = a} a a{{... a}. k vezes H = {e, a, a 2, a 3, }, é um subgrupo finito de G. Assim, existe um inteiro positivo m, tal que para todo n > m, vale a m = a n, de onde segue a n m = e. o elemento neutro. Assim: (1) Dado a G, existe um inteiro positivo k tal que a k = e. (2) Se a k = e, então o inverso de a é a k 1. Logo o inverso de a está em H. O subgrupo H de G descrito acima é dito subgrupo cíclico e é gerado por a. O menor inteiro positivo k tal que a k = e é chamado a ordem de a. Concluímos que H = {e, a, a 2, a 3,, a k 1 }, onde todos os elementos são distintos. Assim a ordem de H é k. Seja G um grupo cuja ordem é o número primo p. Para a e em G, considere o subgrupo H formado pelas potências de a. Pelo Teorema de Lagrange, a ordem de H divide a ordem de G. Logo, a ordem de H é p e assim H = G. Portanto, todos os grupos de ordem um número primo são cíclicos. Mas a recíproca nem sempre é verdadeira. Um exemplo disso é o grupo U(5), que tem ordem φ(5) = 4 e é cíclico, gerado por 2. Grupo Quociente Sejam, (G, ) um grupo abeliano e H um subgrupo de G. Para x, y G, definimos a relação: x y (mod) H x y 1 H. A relação é uma relação de equivalência. A classe de equivalência de x é x = {y G : y x(modh)}. Mas, y x (mod H) significa dizer que y x 1 = h H, isto é y = h x. Portanto, a classe de equivalência de x é o conjunto x = {h x : h H}. Segue que x = ŷ se, e somente se, x y(modh). Em particular, a classe do elemento neutro e é H, ou seja, x H se e somente se x = ê. O conjunto das classes de equivalência de G, pela congruência módulo H é denotado por G/H. Em G/H definimos a operação â b = â b e assim (G/H, ) é um grupo abeliano. 14

Capítulo 3 Custos Algorítmicos Computacionais A Teoria da Complexidade Algorítmica estuda os aspectos relacionados aos recursos necessários (tais como tempo, espaço, número de bits e número de processadores) para resolver um determinado problema. Atualmente, os computadores resolvem problemas mediante algoritmos que tem uma complexidade ou custo computacional polinômico, que é menor que o custo computacional exponencial. Neste capítulo, introduzimos alguns conceitos e resultados acerca dos custos computacionais de algoritmos, em particular, daqueles usados neste trabalho. Definições: (a) A classe de complexidade P é o conjunto de todas as decisões dos problemas que são resolvidos em tempo polinomial. (b) A classe de complexidade NP é o conjunto de todas as decisões de problemas lógicos (sim ou não), as quais podem ser verificadas em tempo polinomial. Os problemas com custo fatorial ou combinatório estão agrupados em NP. A importância dessa complexidade pode ser observada no exemplo a seguir, que mostra 5 algoritmos de complexidades diferentes, A1 A5, para resolver um mesmo problema. Suponha que cada operação leva 1 milisegundo de tempo para ser efetuada. A tabela seguinte fornece o tempo necessário por cada um dos algoritmos dados, (T k (n) é a complexidade do algoritmo). 15

Tabela 01 A1 A2 A3 A4 A5 n T 1 (n) = n T 2 (n) = nlogn T 3 (n) = n 2 T 4 (n) = n 3 T 5 (n) = 2 n 16 0, 016s 0, 064s 0, 256s 4s 30dias e 4s 32 0, 032s 0, 16s 1s 33s 46dias 512 0, 512s 9s 120dias e 22s 1dia e 13h 10 139 anos O tempo de execução de um problema considera o número de passos necessários para resolver uma instância dele, a partir do tamanho da entrada, utilizando o algoritmo mais eficiente à disposição. Intuitivamente, no caso uma instância com entrada de longitude n que pode se resolver em n 2 passos, dizemos que esse problema têm uma complexidade em tempo de n 2. Supostamente, o número exato de passos depende da máquina em que se programe, da linguagem utilizada e de outros fatores. 3.1 Custo das operações elementares Sejam a = (a k 1, a k,..., a 1, a 0 ) 2 e b = (b k 1, b k,..., b 1, b 0 ) 2, as representações binárias dos inteiros a e b. 1. Soma: Passo 1: Calculamos a 0 + b 0. Se a 0 + b 0 < 2 então s 0 = a 0 + b 0 é o algarismo das unidades de a + b. Se a 0 + b 0 = 2 então s 0 = 0 e "vai" 1. O tanto que "vai" para o próximo passo é conhecido como reserva. Passo 2: Calculamos a 1 + b 1, se a reserva é zero, ou a 1 + b 1 + 1, se houver reserva não nula. A seguir, repetimos este procedimento até i = k. Exemplo: Para 12 = (0011) 2, 8 = (0001) 2, temos 1 o Passo a 0 + b 0 = 2, logo s 0 = 0 e "vai" 1. 2 o Passo a 1 + b 1 + 1 = 2, logo s 1 = 0 e "vai"1. 3 o Passo a 2 + b 2 + 1 = 1 < 2, logo s 2 = 1 e reserva igual a 0. 4 o Passo a 3 + b 3 = 0 < 2, logo s 3 = 0 e s 4 = 1 Assim, 12 + 8 = 20 = (00101) Neste caso, é claro que não é necessário efetuar mais do que 2k operações aritméticas elementares. 2. Multiplicação: 16

Primeiro multiplicamos b por cada bit de a e depois efetuamos a soma dos resultados. Teremos k produtos elementares e no máximo 2k 1 operações para cada elemento de b. Mas como b possui k elementos, teremos k(2k 1) operações. Temos ba i = (c i,k+1 ;... ; c i,1 ; c i,0 ) 2 c k,k+1... c k,1 c k,0 e então a soma pode ser escrita na forma: c 0,k+1... c 0,1 c 0,0 c 1,k+1... c 1,1 c 1,0 c 2,k+1... c 2,1 c 2,0. Levar em conta que o número de somas realizadas em cada coluna não pode exceder 2k. Como temos k colunas, podemos somar todos estes números a um custo de 2k 2 somas elementares. Juntando tudo, não realizamos mais do que 4k 2 k operações aritméticas elementares. Definição: Sejam f e g, duas funções cujos domínio é N ou R, e contradomínio R. Dizemos que f(x) é O(g(x)), ou seja, f(x) é de ordem g(x), se existirem constantes c 1 e c 2 tais que f(x) c 1 g(x), sempre que x > c 2. Exemplo: Seja f(x) R[x], grau n. Então f(x) é O(x n ). Prova: De fato, seja f(x) = a n x n +a n 1 x n 1 +... +a 0 x 0, com a n 0. Escolha um número real b > a n. Como f(x) lim x bx n.. = a n b < 1, Concluímos que, para x suficiente grande, teremos f(x) bx n, ou seja, f(x) é O(x n ). Propriedades: Sejam f 1, f 2, g 1, g 2 : N R. Se f 1 = O(g 1 ), f 2 = O(g 2 ) então f 1 + f 2 = O(max {g 1, g 2 }) f 1 f 2 = O(g 1 g 2 ) Em particular, se tanto f 1 quanto f 2 são O(g 1 ), então f 1 + f 2 = O(g 1 ) e f 1 f 2 = O(g 2 1). Quando um problema tem custo O em uma configuração de computador e linguagem, este custo será o mesmo em todos os computadores, ou seja, essa notação generaliza a noção de custo computacional, independentemente do equipamento utilizado. 17

3.2 Testes de Primalidade Para implementar o método RSA é necessário escolher dois primos p e q relativamente grandes. Recomenda-se fazer a escolha de primos com o número de dígitos maior ou igual a 100. Existem algum testes de primalidade antigos, como os apresentados abaixo, e alguns desses são utilizados na implementação do método. No entanto, nenhum deles é eficiente com números grandes. Pequeno Teorema de Fermat: Se p é primo e a é um inteiro tal que mdc(a, p) = 1 então a p 1 1 (mod p) Prova: Dados p e a com p a, consideramos os conjuntos {1, 2, 3,..., p 1} e {a, 2a, 3a,...(p 1)a}. Afirmamos que a, 2a, 3a,..., (p 1)a 0 (mod p). De fato, se i, j 1, 2, 3,..., p 1 e ia ja (mod p), concluímos i j (mod p), pois mdc(a, p) = 1. Assim i = j, dado que 0 i, j < p. Isto implica que os números a, 2a, 3a, 4a,...(p 1)a são incongruentes entre si mod p. Logo, a, 2a, 3a, 4a,...(p 1)a são congruentes, em alguma ordem, aos 1, 2, 3,..., p 1. Podemos concluir então que (p 1)! = 1.2.3...p 1 a.2a.3a.4a...(p 1)a, ou seja, (p 1) a (p 1) (p 1)! (mod p). Como mdc((p 1)!, p) = 1 então a (p 1) 1 (mod p). Teorema de Fermat: Para qualquer primo p e qualquer a Z temos a p a (mod p) Prova: Temos duas possibilidades a considerar: 1 o Caso : Se p a, então p a(a (p 1) 1), ou seja, p a p a, e portanto a p a (mod p). 2 o Caso: Se p a, então pelo Pequeno Teorema de Fermat, a p 1 1 (mod p). Multiplicando a congruência por a obtemos a p a (mod p). Teorema de Euler: Se a U(n) então a φ(n) 1 (mod n). Um caso particular do teorema de Euler é o Pequeno Teorema de Fermat. Recíproca do Teorema de Wilson: Se n é um número inteiro positivo tal que (n 1)! 1 (mod n), então n é primo. Prova: De fato, se n é um número positivo não primo então n = pq, com p e q primos e 1 < p, q < n 1. Desta forma, p divide n e também (n 1)!, e portanto (n 1)! 1 (mod n). 18

Teorema da Raiz Primitiva: Se p é primo então U(p) é cíclico. Segundo este teorema, se p é primo então existe um elemento b U(p), cuja ordem é exatamente p 1, ou seja, b (p 1) 1 (mod p), mas b r 1 (mod p), se r < p 1. Digamos que é dado um número ímpar n e que achamos b U(n) cuja ordem é exatamente n 1. Pelo Teorema de Lagrange, a ordem de b tem que dividir a ordem de U(n). Logo n 1 tem que dividir φ(n). Entretanto φ(n) n 1. Concluímos assim que φ(n) = n 1. Portanto n é primo. Teste de Lucas: Seja n um inteiro positivo ímpar e b um inteiro tal que 2 b n 1. Se b n 1 1 (mod n) e b n 1/p 1 (mod n), para cada fator primo p de n 1, então n é primo. 19

Capítulo 4 Método de Criptografia RSA 4.1 Introdução Dentre dos métodos criptográficos de chave pública, o RSA é o mais conhecido e, atualmente, o mais usado, sobre todo em aplicações comerciais. Este sistema de criptografia é muito útil para o comercio eletrónico via Internet, assim como para navegar nela, atraves do Netscape. Esse método foi inventado em 1978 por R. L. Rivest, A. Shamir e L. Adleman, quando trabalhavam no Massachussets Institute of Technology (M.I.T.). O RSA, por ser um método de chave pública, permite que qualquer usuário codifique mensagens, mas como a chave de decodificação é secreta, só o destinatário legítimo poderá decodificá-la. A impossibilidade de quebrar a chave de decodificação é possível pela não existência de algoritmos eficientes para a fatoração de inteiros em fatores primos, sobre todo, se o número de algarismos é 100 ou maior. O tempo de codificação de uma mensagem é praticamente deprezível, mas o tempo de decodificação pode tornar o processo inviavel. 4.2 Descrição do método RSA A chave de codificação do RSA esta constituída essencialmente por n = pq, onde p e q são primos grandes e distintos. Temos que escolher um inteiro e de forma que mdc(φ(n), e) = 1 e 1 < e < φ(n). O par de inteiros n e e são feitos públicos. Os números primos podem ser testados, quanto a primalidade, através de testes probabilísticos, e a escolha mais popular é um número maior ou igual a 2 16 + 1 = 65537. Cada letra do alfabeto é colocada em correspondência biunívoca com um número de dois algarismos. Analogamente, ao espaço entre as palavras corresponde um 20

número, também de dois algarismos, diferente dos demais. Após da pre-codificação, é obtida uma sequência de números, a qual é preciso separar em blocos apropriadamente. Denotaremos esses blocos por M i, onde i = 1, 2,..., k. Para cada inteiro M i, relativamente primo com n, temos: M φ(n) 1(mod n). (1) Já que para cada primo p, temos φ(p) = p 1, segue, das propriedades da função totiente de Euler, que φ(n) = φ(p)φ(q) = (p 1)(q 1). O bloco codificado é o resto da divisão Mi e C(M i ), de forma que: por n. Agora, devemos calcular M e i C(M i )(mod n). (2) Para decifrar a mensagem é necessário encontrar um número d tal que ed 1(mod (p 1)(q 1)). (3) Para isso, basta resolvermos, através do Algoritmo Euclidiano, a equação ed + yφ(n) = 1. Após determinar d, achamos o resto da divisão de C(M i ) d por n. Assim, de (1), (2) e (3) segue que C(M i ) d (M e i ) d M 1+φ(n)t i M(M φ(n) ) t M(1 t ) M(mod n). 4.2.1 Um exemplo: Para ilustrar o processo descrito acima, vamos codificar a frase CIFRAR É UMA ARTE. Primeiro, fazemos a conversão da mensagem dada, (pre-codificação), para uma sequência númerica, de acordo com a tabela 04 abaixo. Tabela 04 A B C D E F G H I J K L M N O P Q R 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 S T U V W Y X Z - 28 29 30 31 32 33 34 35 99 21

Assim obtemos a sequência: 1218152710279914993022109910272914 Escolhemos p = 11, q = 7 e o número e = 11. Assim, a chave feita pública é o par (77, 11) e a ordem de n é φ(77) = (11 1)(7 1) = 60. Neste caso, a mensagem pode ser quebrada nos seguintes blocos: 121 81 527 102 79 914 99 302 210 99 102 72 914 Logo, codifica-se cada bloco e resultam Bloco 121 : (121) 11 (44) 11 (44 2 ) 4 (11) 3 (11) 2 44 44 2 11(mod 77) Bloco 81 : (81) 11 (4 4 ) 2 4 3 9(4) 3 37(mod 77) Bloco 527 : (527) 11 (65) 11 (23) 2 (67)(65) 32(mod 77) Bloco 102 : (102) 11 (25) 11 (4 2 )(9)(25) 58(mod 77) Bloco 79 : (79) 11 (2) 11 46(mod 77) Bloco 914 : (914) 11 (67) 11 (23) 5 (67) 23(mod 77) Bloco 99 : (99) 11 (22) 11 (22) 5 22(mod 77) Bloco 302 : (302) 11 (71) 11 (64) 2 (36)(71) 71(mod 77) Bloco210 : (210) 11 (56) 11 56(mod 77) Bloco 72 : (72) 11 (25 5 )(72) 39(mod 77). Obtemos assim a mensagem cifrada: 11373258462322715622583923 Para decifrar a mensagem temos que determinar o número inteiro positivo d através da equação diofantina 11d + y60 = 1. Aplicando o Algoritmo Euclidiano Estendido obtemos d = 11. Logo, decodificamos os blocos codificados e resultam 22

Bloco 11 : (11) 11 (44) 2 (11) (11) 2 121(mod 77) Bloco 37 : (37) 11 (60) 5 (37) (15)(67) 81(mod 77) Bloco 32 : (32) 11 (23) 5 (32) 65 527(mod 77) Bloco 58 : (58) 11 (37) 2 (53)(58) 25 102(mod 77) Bloco 46 : (46) 11 (37) 5 (46) (67)(46) 79(mod 77) Bloco 23 : (23) 11 (23) 2 equiv67 914(mod 77) Bloco 22 : (22) 11 22 99(mod 77) Bloco 71 : (71) 11 71 302(mod 77) Bloco 210 : (56) 11 56 210(mod 77) Bloco 72 : (39) 11 (58) 39 (37)(58)(39) 72(mod 77) Assim, é obtida a sequência original e portanto, recuperada a mensagem. 4.3 Segurança do RSA Como já se sabe, o RSA é um método de chave pública, pois o par (n, e) é acessível a qualquer usuário. Na prática, só podemos calcular d se soubermos a ordem, φ(n), de n e o número e. O fato é que para calcular a ordem de n é necessário fatorá -lo para obter p e q, uma vez que não é conhecida outra forma de encontrar rapidamente a ordem do número. Se n for muito grande, este é um problema complexo. Métodos conhecidos de fatoração para números grandes (1) Algoritmo de fatoração de Richard Schroeppel. Ele pode fatorar n em aproximadamente exp ln(n).ln(ln(n)) = n lnln(n)/ln(n) = (ln(n)) ln(n)/ln(ln(n)) 23

degraus. A tabela 05 mostra o número de operações necessárias para fatorar n e o tempo requerido em cada operação em um microssegundo para cada quantidade de dígitos decimais do número n. Tabela 05 Dígitos Número de Operações Tempo 50 1, 4 10 10 3, 9 horas 70 9, 0 10 12 104 dias 100 2, 3 10 15 74 anos 200 1, 2 10 23 3, 8 10 9 anos 300 1, 5 10 29 4, 9 10 15 anos 500 1, 3 10 39 4, 2 10 25 anos (2) O método General Number Field Sieve (GNFS) estudado por Shamir e Arjem Lenstra. Este método é uma extensão do método chamado Special Number Field Sieve (SNFS). Ele é o algoritmo mais eficiente conhecido atualmente para fatorar números com um número de dígitos maior do que 100. [Ver [4], [5], [8], [10]]. Observação: Algoritmos "turbinados" e o uso de computadores super-velozes fariam a fatoração provavelmente mais rápida, mas não significativamente menor, para números muito grandes. A título de ilustração, considere que o bloco C a ser codificado tenha 100 casas decimais e que e tenha 50 casas decimais. Dessa forma, para cifrar o bloco haveria um cálculo da ordem de: C e [10 100 ] (10)50 É importante observar que um número dessa grandeza não poderia ser armazenado em qualquer computador. No entanto, é possível obter o módulo deste número, evitando a explosão de memória. Outro problema que surge no método RSA é a necessidade de gerar números primos grandes aleatoriamente. Diante disso, acredita-se que quebrar o RSA e fatorar n sejam problemas equivalentes. Atualmente, pesquisa-se sobre o computador quântico, que seria capaz de fatorar números e verificar primos com uma velocidade enorme. Isto acabaria com a majestade do RSA e surgiria uma nova criptografia, a chamada criptografia quântica. 4.4 Assinaturas no RSA O método RSA também pode ser utilizado para verificar a originalidade das mensagens. Para implementar um sistema de assinaturas digitais com RSA, o utilizador 24

que possua uma chave privada d, poderá assinar uma mensagem dada (em blocos), M, com a seguinte expressão: s M d (mod n) De fato, é difícil descobrir s sem o conhecimento de d. Portanto, uma assinatura digital descrita acima é dificilmente forjada. O receptor recupera a mensagem utilizando a chave pública e do emissor e portanto: s e (M d ) e M(mod d) Assim, o receptor poderá validar a assinatura do emissor calculando s e (mod n). A assinatura varia de acordo com a mensagem e opera-se o tamanho da assinatura sobre as mensagens longas. Para melhorar essa situação, faz-se operar o algoritmo sobre um resumo da mensagem, o chamado digest, ou pode-se ser produzido um valor hash, também diminuindo a mensagem, porém ambas identificando a mesma como única. 4.5 Alguns algoritmos importantes 4.5.1 Em Z Sejam a, b inteiros não negativos e menores ou iguais que n. O número de bits utilizados para as quatro operações básicas com números inteiros (adição, subtração, multiplicação e divisão) são: Tabela 02 Operação Bits Adição (a + b) O(lg a + lg b) = O(lg n) Subtração (a b) O(lg a + lg b) = O(lg n) Multiplicação (ab) O((lg a)(lg b)) = O((lg n) 2 ) Divisão (a = bq + r) O((lg a)(lg b)) = O((lg n) 2 ) Apresentamos a seguir a implementação do Algoritmo Euclidiano, para determinar o máximo divisor comum de dois números inteiros. Algoritmo Euclidiano Entrada: Dois inteiros positivos a e b, com a b. Saída: O máximo divisor comum entre a e b. 1. Enquanto b 0 faça: 25

q int(a/b) r a bq a b b r. 2. Retorne a. Algoritmo Euclidiano Estendido Entrada: Dois inteiros positivos a e b, com a b. Saída: d = mdc(a, b)e dois inteiros satisfazendo ax + by = d. 1. Se b = 0 então faça : d a x 1 y 0, retorne (d, x, y). 2. Faça: x 2 1 x 1 0 y 1 1 3. Enquanto b > 0 faça: q int(a/b) r a qb x x 2 qx 1 y y 2 qy 1. a b b r x 2 x 1 x 1 x y 2 y 1 y 1 y. 4. d a x x 2 y y 2 e retorne (d, x, y). 26

4.5.2 Em Z n Módulo Exponencial: Entrada: a Z n, e k tal que 0 k < n representado na base 2, ou seja, k = t i=0 k i2 i. Sáida: a k (mod n) Inteiro: a, k, b, t, A, n Início Ler: a, n, k b 1 Se (k = 0) então Imprimir b Fim - se A a Se (k 0 = 1) então b a Fim- se Para i de 1 até t faça A A 2 (mod n) Se (k i = 1) então b A.b (mod n) Fim - se Fim Para Imprimir b Fim Para determinar k na base 2: Entrada: número n inteiro positivo na base decimal Saída: número n na base 2 Início Ler n, a, r, i i 0 Enquanto (q 0) Faça q int(n/2) r n q 2 27

a i r n q i i + 1 Fim Enquanto Para j de 0 até i 1 faça Imprimir a j 2 j Fim Para Fim O Teorema Chinês do Resto é uma aplicação algorítmica para calcular computacionalmente módulos. Teorema Chinês do Resto: Se o máximo divisor comum entre a i e m i é igual a 1, máximo divisor comum entre m i e m j é igual a 1, para i j e c i inteiro, então o sistema a 1 x c 1 (mod m 1 ) a 2 x c 2 (mod m 2 ) a 3 x c 3 (mod m 3 )... a r x c r (mod m r ) possui solução e a solução é única, módulo m, onde m = m 1 m 2 m 3...m r. A solução do sistema de congruências simultâneas pode ser calculado como x = k i=1 a in i M i (mod n), onde N i = n/n i e M i = N 1 i (mod n i ). Computacionalmente, essa operação pode ser feita a um custo de O((lgn 2 )) bits operacionais. Foram feitos estudos sobre o tempo gasto para codificar e decodificar a mensagem utilizando o sistema RSA com e sem o algoritmo chinês do resto. Esses estudos mostraram que o tempo gasto pelo sistema RSA sem o algoritmo chinês do resto aumenta linearmente enquanto o algoritmo tradicional mantém um tempo quase constante. É importante salientar que os testes foram feitos para números cuja quantidade de dígitos é pequena e portanto a implementação se torna inviável para números grandes. 28

4.6 Conclusão O método de Criptografia RSA constitui um exemplo de aplicação de vários ramos da matemática à solução do problema de segurança na comunicação em tempo real. Este método garante a transmissão de informações confidenciais através de redes inseguras, e também pode garantir autenticação do usuário, o que o torna extremamente necessário em transações bancárias. O RSA é facilmente implementado, mas trabalhando com números de ordem grande, é necessário utilizar a computação em paralelo para a resolução do problema em um tempo menor. É por todas essas vantagens é que, atualmente, é o método mais utilizado. Além disso, mesmo com grandes estudos na área de algoritmos poderosos em fatoração dos números, ainda não é conhecido um algoritmo determinista ou aleatório, em tempo polinomial, para encontrar um fator de um inteiro composto n. Este fato empírico é de grande interesse, porque o algoritmo mais popular para criptografia, o RSA, seria inseguro se um algoritmo rápido para fatoração de inteiros pudesse ser implementado. 29

Referências [1] Burton, D.M., Elementary Number Theory, 5th Edição, Internacional Series in Pure and Applied Mathematics, 2002. [2] Coutinho, S. C., Primalidade em Tempo Polinomial- Uma Introdução ao Algoritmo AKS, Coleção Iniciação Científica, Sociedade Brasileira de Matemática, IMPA, RJ, 2004. [3] Coutinho, S. C., Números Inteiros e Criptografia, Série de Computação e Matemática, IMPA, Segunda Edição, 2003. [4] Lenstra, A., Tromer, E., Shamir,A., Kortsmit, W., Dodson B., Hughes J. and Leyland, P., Factoring Estimates para a 1024-bit RSA modulus, Asiacrypt 2003. [5] Lenstra, A., Computational Methods in Public Key Cryptology, Institute for Mathematical Sciences, National University of Singapore, 2002. [6] Menezes, A., Oorschot, P.V., Vanstone, S., Handbook of Applied Criptography, CRC, Press, 1996. [7] Ribenboim, P., Números primos: Mistérios e recordes, Coleção Matemática Universitária, IMPA, RJ., 2001. [8] Rivest, R. L., Shamir, A., Adlemam, L., A Method for Obtaining Digital Signatures and Public-Key Cryptosystems, Communications, Programming Techniques SL Graham, RL Rivest Editors, 1978. [9] Silva, W. L. e Chaves, L. M., A Criptografia RSA e o Algoritmo Chinês do Resto, Journal of Computer Science, 2000. [10] Winkipédia, disponível em: < http://pt.wikipedia.org/wiki/rsa> (01 de setembro de 2006). 30