teoria de números e criptografia rsa

49
Teoria de n´ umeros e criptografia RSA Elaine Gouvˆ ea Pimentel 1 o Semestre - 2006 ( ´ Ultima Modifica¸ c˜ao: 4 de Maio de 2006) 1 Bibliografia e referˆ encias Livro texto: S.C. Coutinho umeros inteiros e criptografia RSA IMPA/SBM, 2000. Outras referˆ encias: Rosen, K. H., Elementary number theory and its applications, Addison- Wesley,1984. Koblitz, N. A course in number theory and criptography, Graduate Texts in Mathematics 97, Springer-Verlag, 1987. Ao longo do curso, ser˜ao indicadas leituras complementares. Qualquer d´ uvida ou coment´ ario, escrever para: [email protected] 2 Introdu¸ ao O objetivo desse curso ´ e estudar o m´ etodo de criptografia de chaves p´ ublicas conhecido como RSA. Para entender como este m´ etodo funciona, ´ e necess´ ario o estudo de alguns conceitos de uma ´ area da matem´atica chamada Teoria de umeros. E, ´ e claro, espera-se desenvolver, ao longo do curso, o racioc´ ınio l´ogicomatem´aticodosalunos, introduzindom´ etodos de prova de teoremas como indu¸ ao matem´atica e demonstra¸ ao por absurdo. Deve ficar bem claro que este ´ e um curso de matem´ atica para cientistas da computa¸ ao. Isto ´ e, o rigor nunca ser´a deixado de lado mas a aten¸ ao estar´ a sempre voltada para a aplica¸ ao principal proposta: criptografia RSA. 1

Upload: guima453

Post on 24-Oct-2015

73 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Teoria de números e criptografia RSA

Teoria de numeros e criptografia RSA

Elaine Gouvea Pimentel

1o Semestre - 2006(Ultima Modificacao: 4 de Maio de 2006)

1 Bibliografia e referencias

Livro texto: S.C. Coutinho Numeros inteiros e criptografia RSA IMPA/SBM,2000.

Outras referencias:

• Rosen, K. H., Elementary number theory and its applications, Addison-Wesley,1984.

• Koblitz, N. A course in number theory and criptography, Graduate Textsin Mathematics 97, Springer-Verlag, 1987.

Ao longo do curso, serao indicadas leituras complementares.

Qualquer duvida ou comentario, escrever para:

[email protected]

2 Introducao

O objetivo desse curso e estudar o metodo de criptografia de chaves publicasconhecido como RSA. Para entender como este metodo funciona, e necessarioo estudo de alguns conceitos de uma area da matematica chamada Teoria denumeros. E, e claro, espera-se desenvolver, ao longo do curso, o raciocıniologico matematico dos alunos, introduzindo metodos de prova de teoremas comoinducao matematica e demonstracao por absurdo.

Deve ficar bem claro que este e um curso de matematica para cientistas dacomputacao. Isto e, o rigor nunca sera deixado de lado mas a atencao estarasempre voltada para a aplicacao principal proposta: criptografia RSA.

1

Page 2: Teoria de números e criptografia RSA

2.1 Criptografia

• Criptografia: estuda os metodos para codificar uma mensagem de modoque so seu destinatario legıtimo consiga interpreta-la.

• Primordios: Cesar (translacao do alfabeto).

• Criptoanalise: arte de decifrar codigos secretos.

• Decodificar x Decifrar (quebrar).

• Substituir letras por sımbolos - contagem de frequencia:

– vogais sao mais frequentes;

– letra mais frequente: A;

– monossılabo de uma letra = vogal;

– consoantes mais frequentes: S e M

Metodo de contagem de frequencia de caracteres pode ser usado paradecifrar inscricoes antigas.

• O surgimento dos computadores torna esse metodo de cifragem completa-mente inseguro (decifragem polinomial).

• Internet e criptografia: seguranca, assinatura.

• Chave publica: saber codificar nao implica saber decodificar!

2.2 Criptografia RSA

• RSA: Rivest, Shamir, Adleman (M.I.T.) 1978.

• Codificacao: basta conhecer o produto de dois primos (n = pq). n echamado chave publica.

• Decodificacao: precisamos conhecer p e q (chave de decodificacao).

• Decifrar RSA = fatoracao de n. Se n possui 150 algarismos ou mais,fatora-lo levaria milhares de anos.

• Obs: E difıcil determinar os fatores primos de um numero composto, mas epossıvel verificar se um numero e primo ou composto sem tentar fatora-lo.

• Teoria de numeros: parte da matematica que estuda numeros inteiros.

2

Page 3: Teoria de números e criptografia RSA

2.3 Computacao algebrica

• Chave publica do RSA: multiplica-se dois primos muito grandes.

• Pascal, C: nao permitem lidar com numeros dessa magnitude.

• Computacao algebrica: trata do calculo exato com inteiros, fracoes, etc.Exemplo: Mathematica, Maple.

• Inteiro de tamanho indeterminado: de tamanho flexıvel, grandes o sufi-ciente. Restricoes: tamanho da memoria, estruturas de dados (vetores detamanhos pre-fixados).

• Inteiros = listas! Algarismos = elemento da lista; operacoes de soma emultiplicacao: usuais, como com lapis e papel. Divisao e mais compli-cado...

3 Algoritmo da divisao de Euclides

3.1 Algoritmos

• Algoritmo = processo de calculo baseado em regras formais.

• Especificacao de um algoritmo: entrada + instrucoes + saıda.

• Perguntas:

– ao executarmos um conjunto de instrucoes, sempre chegaremos a umresultado? (ponto fixo)

– o resultado obtido e sempre o desejado? (semantica)

3.2 Algoritmo da divisao

• Objetivo: encontrar o quociente q e o resto r (saıda) da divisao entre doisinteiros positivos a e b (entrada):

a = bq + r 0 ≤ r < b.

• Algoritmo da divisao:

Etapa 1: q = 0; r = a

Etapa 2: Se r < b, pare. Nesse caso, o quociente e q e o resto r.

Etapa 3: Se r ≥ b, faca r := r − b, q := q + 1 e volte a Etapa 2.

• Observacoes:

3

Page 4: Teoria de números e criptografia RSA

1. O algoritmo sempre para: sequencia decrescente de numeros inteirospositivos.

2. O resultado da aplicacao do algoritmo corresponde as especificacoesda saıda (trivialmente).

3. O algoritmo e extremamente ineficiente, em especial se a >> b.

3.3 Teorema da Divisao

Teorema 1 (Teorema de divisao) Sejam a e b inteiros positivos. Existemnumeros inteiros q e r tais que

a = bq + r 0 ≤ r < b

Alem disso, q e r sao unicos.

Prova .

Unicidade - Sejam q, q′, r, r′ tais que

a = bq + r 0 ≤ r < b (1)

a = bq′ + r′ 0 ≤ r′ < b (2)

Subtraindo-se (1) de (2), obtemos:

r − r′ = b(q′ − q)

Ora, mas 0 ≤ r, r′ < b e portanto 0 ≤ r − r′ < b. Ou seja,

0 ≤ b(q′ − q) < b

Como b > 0, temos0 ≤ q − q′ < 1

ou seja, q − q′ = 0 → q = q′ e r = r′.

3.4 Algoritmo Euclideano

• Objetivo: Calcular o mdc entre dois numeros inteiros.

• Definicao: o maximo divisor comum entre a e b e o numero d talque:

– d|a (ou d e divisor de a)

– d|b– se d′ e divisor de a e b, entao d′|d (em outras palavras, d e o maximo

divisor de a e b.

4

Page 5: Teoria de números e criptografia RSA

• Escrevemos d = mdc(a, b). Se mdc(a, b) = 1, dizemos que a e b saoprimos entre si .

• Algoritmo Euclideano: Dados dois numeros inteiros positivos a eb tais que a ≥ b, divide-se a por b, encontrando resto r1. Se r1 6= 0,dividimos b por r1, obtendo resto r2. Se r2 6= 0, dividimos r1 por r2 eassim por diante.

O ultimo resto diferente de zero dessa sequencia de divisoes e omdc(a, b).

• Exemplo:

1234 54 46 8 6 246 8 6 2 0

Ou seja, mdc(1234, 54) = 2.

• Perguntas:

1. Por que o ultimo resto nao nulo e o mdc?

2. Por que o algoritmo para?

• Respostas:a = bq1 + r1 e 0 ≤ r1 < bb = r1q2 + r2 e 0 ≤ r2 < r1

r1 = r2q3 + r3 e 0 ≤ r3 < r2

r2 = r3q4 + r4 e 0 ≤ r4 < r3

......

– Segunda pergunta: observe que

b > r1 > r2 > . . . ≥ 0

Como essa sequencia e finita, o algoritmo sempre para. Mais ainda,o numero de divisoes efetuadas e no maximo b (por que?).

– Primeira pergunta: demonstracao do algoritmo euclideano

3.5 Demonstracao do algoritmo euclideano

Lema 2 Sejam a e b numeros inteiros positivos. Se existem inteiros g e s taisque a = bg + s, entao mdc(a, b) = mdc(b, s).

Prova .

Sejamd1 = mdc(a, b) e d2 = mdc(b, s).

5

Page 6: Teoria de números e criptografia RSA

Afirmamos que d1 ≤ d2. De fato, d1 e o maximo divisor de a e b. Logo d1 dividea e b e portanto existem inteiros positivos u e v tais que:

a = d1u eb = d1v

Substituindo a e b na equacao a = bg + s obtemos

s = d1u − d1v = d1(u − vg).

Ou seja, d1 divide s. Como d1 tambem divide b, d1 e um divisor comum de b es. Mas d2 e o maior divisor de b e s e portanto (por definicao) d1 ≤ d2 comoquerıamos.

Seguindo um argumento semelhante, podemos provar o inverso, ou seja, d2 ≤ d1.Em outras palavras, d1 = d2

Teorema 3 Dados a e b inteiros positivos, o ultimo resto diferente de zero dasequencia de divisoes dada pelo algoritmo euclideano para a e b e o maximodivisor comum entre a e b.

Prova .

Aplicando o algoritmo a a e b, temos:

a = bq1 + r1 e 0 ≤ r1 < bb = r1q2 + r2 e 0 ≤ r2 < r1

r1 = r2q3 + r3 e 0 ≤ r3 < r2

r2 = r3q4 + r4 e 0 ≤ r4 < r3

......

rn−2 = rn−1qn e rn = 0

Da ultima linha, temos que rn−1 divide rn−2 e portanto mdc(rn−1, rn−2) = rn−1.

Aplicando sucessivamente o lema 2, temos que mdc(a, b) = rn−1.

3.6 Algoritmo euclideano estendido

O resultado que mais vamos usar durante o curso sobre mdc e o seguinte:

Teorema 4 Sejam a e b inteiros positivos e seja d o maximo divisor comumentre a e b. Esxistem inteiros α e β tais que

α.a + β.b = d.

Para demonstracao desse teorema, veja o livro texto, pag 29-31.

Vamos ilustrar a demonstracao atraves de um exemplo numerico:

6

Page 7: Teoria de números e criptografia RSA

Exemplo 1 Sejam a = 1234 e b = 54. Temos que:

1234 = 54.22 + 46 ou seja, 46 = 1234 − 54.22

Seguindo pelo algoritmo de euclides,

54 = 46.1 + 8 ou seja, 8 = 54 − 46.1

Agora, observe que sabemos calcular 46 em funcao de 1234 e 54. Entao, substi-tuindo:

8 = 54−46.1 = 54−(1234−54.22).1 = 54(1+22.1)+1234.(−1) = 54.(23)+1234.(−1)

Continuando,

46 = 8.5 + 6 → 6 = 46 − 8.5= (1234 − 54.22) − (54.(23) + 1234.(−1)).5= 1234.(6) + 54.(−22 − (23).5)= 1234.(6) + 54.(−137)

8 = 6.1 + 2 → 2 = 8 − 6= (54.(23) + 1234.(−1)) − (1234.(6) + 54.(−137))= 1234(−1 − 6) + 54(23 + 137)= 1234(−7) + 54(160)

Logo, α = −7 e β = 160 uma vez que mdc(1234, 54) = 2.

Observe que o teorema nao diz que os valores de α e β sao unicos. Na verdade,existe uma infinidade de numeros que satisfazem a equacao αa + βb = d.

Pergunta: para que serve calcular α e β?

Resposta:

• unicidade de fatoracao de um inteiro;

• RSA depende de um metodo eficiente de calculo de α e β.

3.7 Exercıcios propostos

Nao deixem de fazer os seguintes exercıcios do capıtulo 1:

1(1), 4, 5, 7, 8, 9.

7

Page 8: Teoria de números e criptografia RSA

4 Fatoracao unica

4.1 Teorema da fatoracao unica

Dizemos que um numero inteiro positivo p e primo se p 6= 1 e os unicosdivisores de p sao p e 1.

Se um numero inteiro positivo (diferente de 1) nao e primo, entao ele e chamadode composto .

Teorema 5 (Teorema da fatoracao unica) Dado um inteiro positivo n ≥ 2podemos sempre escreve-lo, de maneira unica, na forma:

n = pe1

1 . . . . .pek

k

onde 1 < p1 < p2 < . . . < pk sao numeros primos e e1, . . . , ek sao inteirospositivos (multiplicidades).

4.2 Existencia da fatoracao

Algoritmo ingenuo: Dado n ≥ 2 inteiro positivo, tente dividir n por cada umdos inteiros de 2 a n − 1. Se algum desses inteiros (digamos k) dividir n, entaoachamos um fator de n.

Perguntas:

1. k e primo ou composto?

2. Quando se deve parar a busca? Em n − 1?

Respostas:

1. k e primo. De fato, suponhamos k composto. Logo, k = a.b com 1 <a, b < k. Como k divide n, existe (por definicao) c inteiro tal que n = k.c.Logo,

n = a.b.c

ou seja, a e b sao fatores de n menores que k, o que contraria a hipoteseda minimalidade de k. Logo, k e primo.

2. Na verdade, podemos parar o algoritmo em√

n. De fato, n = k.c ouc = n

k. Como k e o menor fator de n, k ≤ c. Logo, k ≤ n

kou seja,

k2 ≤ n → k ≤ √n.

Podemos utilizar o algoritmo acima para achar todos os fatores primos de n.Aplicando o algoritmo uma vez, encontramos o fator q1. Entao, aplicamos o

8

Page 9: Teoria de números e criptografia RSA

algoritmo ao numero nq1

, determinando q2, o segundo fator primo de n. Paradeterminar o terceiro fator primo q3, aplicamos o algoritmo ao numero n

q1.q2

eassim por diante, ate chegarmos em n

q1.q2.....qs−1

= qs, com qs primo. Observeque q1 ≤ q2 ≤ . . . ≤ qs−1 ≤ qs e

n >n

q1>

n

q1.q2> . . . >

n

q1.q2. . . . .qs

> 0,

ou seja, o algoritmo sempre termina.

Exemplo 2 n = 450 = 2.3.3.5.5

4.3 Eficiencia do algoritmo ingenuo de fatoracao

O algoritmo e simples mas muito ineficiente!

Exemplo 3 Seja n um numero primo com 100 ou mais algarismos. Logo,n ≥ 10100 e portanto

√n ≥ 1050. Logo temos que executar pelo menos 1050

loops para determinar que n e primo. Suponhamos que o nosso computador

execute 1010 divisoes por segundo. Logo levaremos 1050

1010 = 1040 segundos, ouseja, 1031 anos na frente da tela do computador aguardando... Observe que otempo estimado de existencia do universo e 1011 anos!

O algoritmo e bom para numeros pequenos. E importante ressaltar que naoexiste (atualmente) algoritmo de fatoracao eficiente para todos osinteiros . Disso depende a seguranca do RSA!

Nao se sabe, entretanto, se tal algoritmo nao existe mesmo ou se nao fomosespertos o suficiente para inventa-lo...

4.4 Fatoracao por Fermat

• Eficiente quando n tem um fator primo nao muito menor que√

n.

• Ideia: tentar achar numeros inteiros positivos x e y tais que n = x2 − y2.

• Caso mais facil: n = r2 (x = r e y = 0).

• Se y > 0, entao

x =√

n + y2 >√

n

Notacao: escrevemos [r] como a parte inteira do numero real r.

Algoritmo de Fermat:

Etapa 1: Faca x = [√

n]; se n = x2, pare.

9

Page 10: Teoria de números e criptografia RSA

Etapa 2: Incremente x de uma unidade e calcule y =√

x2 − n.

Etapa 3: Repita a etapa 2 ate encontrar um valor inteiro para y, ou ate que x = n+12 .

No primeiro caso, n tem fatores x + y e x − y; no segundo, n e primo.

Exemplo 4 Seja n = 1342127. Temos que x = 1158. Mas

x2 = 11582 = 1340964 < 1342127

Logo, passamos a incrementar x ate que

x2 − n

seja inteiro ou x = n+12 , que nesse caso vale 671064:

x√

x2 − n1159 33, 971160 58, 931161 76, 111162 90, 091163 102, 181164 113

Logo, x = 1164 e y = 113. Os fatores procurados sao x+y = 1277 e x−y = 1051.

Faremos aqui apenas a demonstracao de que, se n e primo, entao o unico valorpossıvel para x e x = n+1

2 . Relembrando, x e y sao inteiros positivos tais quen = x2 − y2. Ou seja,

n = (x − y)(x + y)

Como estamos supondo n primo, temos que x − y = 1 e x + y = n. Logo,

x =1 + n

2e y =

n − 1

2

como querıamos.

Veja a demonstracao completa do algoritmo no livro texto, paginas 41 a 43.

Observacao: Esse algoritmo diz algo importante sobre o RSA. Se escolhermosp e q muito proximos, entao n = p.q e facilmente fatoravel pelo algoritmo deFermat.

4.5 Propriedade fundamental dos primos

Lema 6 Sejam a, b, c inteiros positivos e suponhamos que a e b sao primos entresi. Entao:

1. Se b divide o produto a.c entao b divide c.

10

Page 11: Teoria de números e criptografia RSA

2. Se a e b dividem c entao o produto a.b divide c.

Prova mdc(a, b) = 1. Pelo Algoritmo euclideano estendido, existem α e βtais que

α.a + β.b = 1

Entao,α.a.c + β.b.c = c

Como b divide a.c pela hipotese (1) e como b divide β.b.c, entao b divide c.

Para provar a segunda afirmativa, se a divide c, podemos escrever c = at paraalgum inteiro t. Mas b tambem divide c. Como mdc(a, b) = 1, pela afirmacao(1), b divide t. Logo, t = b.k para algum inteiro k e portanto,

c = a.t = a.b.k

Podemos usar o lema acima para provar se seguinte propriedade:

Propriedade fundamental dos primos Seja p um primo e a e b inteirospositivos. Se p divide o produto a.b, entao p divide a ou p divide b.

A demonstracao fica como exercıcio (facam!).

4.6 Unicidade

A prova de unicidade da fatoracao de numeros primos decorre facilmente dapropriedade fundamental dos primos. A demonstracao se da por absurdo.

Seja n o menor inteiro positivo que admite duas fatoracoes distintas. Podemosescrever:

n = pe1

1 . . . . .pek

k = qr1

1 . . . . .qrss

onde p1 < p2 < . . . < pk e q1 < q2 < . . . < qs sao primos e e1, . . . , ek, r1, . . . , rs

sao inteiros positivos.

Como p1 divide n, pela propriedade fundamental dos primos p1 deve dividir umdos fatores do produto da direita. Mas um primo so pode dividir outro se foremiguais. Entao p1 = qj para algum j entre 1 e s. Logo,

n = pe1

1 . . . . .pek

k = qr1

1 . . . . .qrj

j . . . . .qrss

= qr1

1 . . . . .prj

1 . . . . .qrss

Podemos entao cancelar p1 que aparece em ambos os lados da equacao, obtendo

m = pe1−11 . . . . .pek

k = qr1

1 . . . . .prj−11 . . . . .qrs

s

onde m e um numero menor que n que apresenta duas fatoracoes distintas.ABSURDO pois isso contraria a minimalidade de n.

11

Page 12: Teoria de números e criptografia RSA

4.7 Exercıcios propostos

1. Prove a propriedade fundamental dos primos.

2. Demonstre que, se p e um numero primo, entao√

p e um numero irracional.

3. Livro texto: 2, 4, 5, 8, 11, 12.

5 Numeros primos

Ate agora:

• propriedades basicas dos numeros inteiros;

• dois algoritmos fundamentais;

Nessa secao, discutiremos metodos ingenuos para encontrar primos.

5.1 Formulas Polinomiais

Considere o polinomio:

f(x) = an.xn + an−1.xn−1 + . . . + a1.x + a0

onde an, an−1, . . . , a1, a0 sao numeros inteiros e que satisfaz a condicao:

f(m) e primo, para todo inteiro positivo m

Exemplo 5 Seja f(x) = x2 + 1 Logo,

x f(x)1 22 53 104 175 266 377 508 659 822 5

• x ımpar → f(x) par;

• f(8) = 65 composto...

12

Page 13: Teoria de números e criptografia RSA

A pergunta que surge entao e: isso e fruto do azar?

Teorema 7 Dado um polinomio f(x) com coeficientes inteiros, existe uma in-finidade de inteiros positivos m tais que f(m) e composto.

Prova .

Vamos Provar o teorema apenas no caso em que o polinomio tem grau 2. Ouseja, consideraremos f do tipo:

f(x) = a.x2 + b.x + c

Podemos supor a > 0. Suponhamos que exista m tal que f(m) = p onde p eprimo. Calculando f(m + hp):

f(m + hp) = a(m + hp)2 + b(m + hp) + c= (am2 + bm + c) + p(2amh + aph2 + bh)= p(1 + 2amh + aph2 + bh)

Ou seja, se 1+2amh+aph2+bh e composto entao f(m+hp) tambem e composto.Mas isso e verdade sempre que

1 + 2amh + aph2 + bh > 1

ou seja, se2amh + aph2 + bh = h.(2am + aph + b) > 0

Como podemos sempre tomar h positivo, temos:

2am + aph + b > 0 → h >−b − 2am

a.p

Existe uma infinidade de numeros dessa forma. Logo, se existe inteiro m talque f(m) e primo, entao existe uma infinidade de tais numeros.

Conclusao: nao existe uma formula polinomial (em uma variavel) paraprimos .

5.2 Formulas exponenciais: numeros de Mersenne

• Numeros de Mersenne sao aqueles da forma:

M(n) = 2n − 1

onde n e um inteiro nao negativo.

• Numeros perfeitos sao aqueles iguais a metade da soma de seus divi-sores. Ex: 6 = 12/2 e 12 = 1 + 2 + 3 + 6

13

Page 14: Teoria de números e criptografia RSA

• Nenhum primo e perfeito.

• Resultado: 2n−1.(2n − 1) e perfeito se 2n − 1 e primo.

• Outro resultado: Todo numero perfeito par possui a forma acima. Ex:6 = 22−1(22 − 1)

• O que nao se sabe: se existem numeros perfeitos ımpares.

• Pergunta: Quais sao os numeros de Mersenne primos? Exemplos: quandon = 2, 3, 5, 7, 13, 17, 19, 31, 61.... Observe que os expoentes sao todos pri-mos, mas nem todos primos fazem parte dessa lista. Por exemplo,

M(11) = 2047 = 23.89

5.3 Formulas exponenciais: numeros de Fermat

• Numeros de Fermat sao aqueles da forma:

F (n) = 22n

+ 1

onde n e um inteiro nao negativo.

• Exemplos de numeros de Fermat primos: n = 0, 1, 2, 3, 4. F (5) = 18446744073709551617e composto!

• Poucos primos de Fermat sao conhecidos.Ate hoje, nao se descobriu nen-hum F (n) primo com n ≥ 5.

5.4 Formulas fatoriais

Seja p um primo positivo. Construiremos uma funcao semelhante ao fatorial, soque apenas os primos sao multiplicados. Vamos chama-la de p#. Ou seja, p# eo produto de todos os primos menores ou iguais a p. Ex: 5# = 2.3.5 = 30

Observe que se p e q sao primos sucessivos, entao

p# = q#.p

Estaremos interessados nos numeros da forma p# + 1. Embora p# + 1 nemsempre seja primo (Ex. 13# + 1 = 30031 = 59.509), podemos mostrar que naotem nenhum fator primo menor ou igual a p. Desta forma, temos um algoritmopara calcular primo.

Pergunta: qual e o problema de tal algoritmo?

Observacao final: p# + 1 quase nunca e primo!

14

Page 15: Teoria de números e criptografia RSA

5.5 Infinidade de primos

Teorema 8 Existem uma infinidade de primos

Prova .

Digamos que exista uma quantidade finita de primos:

{p1, p2, . . . , pk}

Podemos supor que esses primos estao ordenados, de modo que pk e o maiordeles. Considere o numero p#

k +1. Como vimos, esse numero possui fator primomaior que pk. ABSURDO!

5.6 Crivo de Eratostenes

O crivo de Eratostenes e o mais antigo dos metodos para encontrar primos.

Etapa 1: Listamos os numeros ımpares de 3 a n.

Etapa 2: Procure o primeiro numero k da lista. Risque os demais numeros da lista,de k em k.

Etapa 3: Repita a etapa 2 ate chegar em n.

Observacoes:

1. Podemos parar em√

n...

2. Podemos comecara riscar a partir de k2...

5.7 Crivo de Eratostenes revisado

Etapa 1: Crie um vetor v de n−12 posicoes, preenchidas com o valor 1; faca P = 3.

Etapa 2: Se P 2 > n, escreva os numeros 2j + 1 para os quais a j-esima entrada dev e 1 e pare;

Etapa 3: Se a posicao (P−1)2 de v esta preenchida com 0 incremente P de 2 e volte

a Etapa 2.

Etapa 4: Atribua o valor P 2 a uma nova variavel T ; substitua por zero o valor da

posicao (T−1)2 e incremente T de 2P ; repita ate que T > n; incremente P

de 2 e volte a Etapa 2.

15

Page 16: Teoria de números e criptografia RSA

5.8 Exercıcios propostos

1. Entenda e implemente o algoritmo da pag 65 do livro texto.

2. Livro texto: 1, 3 a 7, 8 e 10.

6 Aritmetica modular

Aritmetica modular = aritmetica dos fenomenos cıclicos.

Exemplos: Horas, dias do mes, letras do alfabeto, etc.

6.1 Relacoes de equivalencia

Seja X um conjunto e ∼ uma relacao entre elementos de X . Dizemos que ∼ euma relacao de equivalencia se, para todos x, y, z ∈ X :

Reflexiva x ∼ x.

Simetrica Se x ∼ y entao y ∼ x.

Transitiva Se x ∼ y e y ∼ z entao x ∼ z.

Exemplos:

• < nos inteiros nao satisfaz reflexividade;

• ≤ nos inteiros satisfaz reflexividade, mas nao satisfaz simetria;

• 6= e reflexiva, simetrica mas nao transitiva;

• relacao de equivalencia: = nos numeros inteiros.

Relacoes de equivalencia: sao usadas para classificar os elementos de um con-junto em subconjuntos com propriedades semelhantes. As subdivisoes de umconjunto produzidas por uma relacao de equivalencia sao conhecidas como classesde equivalencia. Formalmente, seja X um conjunto e ∼ uma r.e. definida emX . Se x ∈ X entao a classe de equivalencia de x e o conjunto de elementosde X que sao equivalentes a x por ∼. Denotamos:

x = {y ∈ X : y ∼ x}.

Propriedades:

• Qualquer elemento de uma classe de equivalencia e um representante detoda a classe.

16

Page 17: Teoria de números e criptografia RSA

• X e a uniao de todas as classes de equivalencia.

• Duas classes de equivalencia distintas nao podem ter um elemento emcomum.

O conjunto das classes de equivalencia de ∼ em X e chamado de conjuntoquociente de X por ∼. Observe que os elementos do conjunto quociente saosubconjuntos de X . Isto e, o conjunto quociente nao e um subcojunto de X ,mas um subconjunto das partes de X .

6.2 Inteiros modulo n

Vamos construir uma relacao de equivalencia no conjunto dos inteiros. Digamosque, pulando de n em n, todos os inteiros sao equivalentes. Ou melhor: doisinteiros cuja diferenca e um multiplo de n sao equivalentes. Formalmente, dize-mos que dois inteiros a e b sao congruentes modulo n se a − b e multiplode n. Escrevemos:

a ≡ b (mod n)

Exemplos:10 ≡ 0 (mod 5) 23 ≡ 1 (mod 11)

Observacao: Congruencia modulo n e uma relacao de equivalencia:

• a ≡ a (mod n) (trivialmente)

• Se a ≡ b (mod n), entao a − b e multiplo de n. Mas b − a = −(a − b);logo, b − a tambem e multiplo de n. Portanto b ≡ a (mod n).

• Transitividade: exercıcio.

Chamamos de Zn o conjunto de inteiros modulo n. Ou seja, se a ∈ Z, entao

a = {a + kn | k ∈ Z}

Em particular, 0 e o conjunto dos multiplos de n.

Voltemos agora ao algoritmo da divisao de Euclides. Vimos que, dados a e ninteiros positivos, a > n, existem inteiros q e r tais que

a = n.q + r o ≤ r ≤ n − 1

Ou seja, a − r ≡ 0 (mod n) e portanto a ≡ r (mod n).

Em outras palavras,Zn = {0, 1, . . . , n − 1}

.

17

Page 18: Teoria de números e criptografia RSA

6.3 Artimetica modular

Sejam a e b classes de Zn. Entao,

a + b = a + b

Exemplo:5 + 4 ≡ 9 ≡ 1 (mod 8)

Logo,5 + 4 = 9 = 1

A diferenca entre duas classes e definida de maneira analoga.

A formula para a multiplicacao das classes a e b de Zn e:

a.b = a.b

Propriedades da adicao:

A1 (a + b) + c = a + (b + c).

A2 a + b = b + a.

A3 a + 0 = a.

A4 a + −a = 0.

Propriedades da multiplicacao:

M1 (a.b).c = a.(b.c).

M2 a.b = b.a.

M3 a.1 = a.

AM a.(b + c) = a.b + a.c.

Exemplo: em Z6,2.3 = 6 = 0!!!

6.4 Criterios de divisibilidade

• Divisibilidade por 3: 3|a se a soma de todos os algarismos de a edivisıvel por 3.

Prova Seja

a = an.an−1. . . . .a1.a0

= an.10n + an−1.10n−1 + . . . + a1.10 + a0

18

Page 19: Teoria de números e criptografia RSA

Como 10 ≡ 1 (mod 3),

a ≡ an + an−1 + . . . + a1 + a0 (mod 3)

Logo, a ≡ 0 (mod 3) se e somente se

an + an−1 + . . . + a1 + a0 ≡ 0 (mod 3)

Observe que podemos usar o mesmo argumento para provar que um numerointeiro e divisıvel por 9 se a soma de seus algarismos e divisıvel por 9(10 ≡ 1 (mod 9)).

• Divisibilidade por 11: 11|a se a soma alternada de todos os algaris-mos de a e divisıvel por 11. Prova Observe que 10 ≡ −1 (mod 11).Portanto,

10k ≡ (−1)k (mod 11)

e igual a 1 ou -1 dependendo da paridade de k. Logo,

a ≡ (−1)n.an + (−1n−1).an−1 + . . . + a2 − a1 + a0 (mod 11)

6.5 Potencias

A aplicacao mais importante de congruencias no nosso curso e no calculo deresto da divisao de uma potencia por um numero qualquer.

Vamos ilustrar como isso e feito na pratica atraves de um exemplo.

Suponhamos que o objetivo seja calcular

3515 (mod 20)

Em primeiro lugar, escrevemos o expoente 15 na base 2:

15 = 23 + 22 + 2 + 1

Logo,

3515 = 3523+22+2+1 = 35.352.3522

.3523

= 35.(35)2.(352)2.((352)2)2

Como 35 ≡ 15 (mod 20), 152 ≡ 5 (mod 20) e 52 ≡ 5 (mod 20), temos:

3515 = 35.352.3522

.3523

≡ 15.(15)2.(352)2.((352)2)2 (mod 20)≡ 15.5.(5)2.((352)2)2 (mod 20)≡ 15.5.5.(5)2 (mod 20)≡ 15.5.5.5 (mod 20)≡ 15.5 (mod 20)≡ 15 (mod 20)

19

Page 20: Teoria de números e criptografia RSA

6.6 Equacoes diofantinas

Uma equacao diofantina e uma equacao em varias incognitas com co-eficientes inteiros. Por exemplo, xn + yn = zn. Estaremos interessados emencontrar as solucoes inteiras dessas equacoes.

E claro que tais equacoes podem ter infinitas soluces. Por exemplo, x + y = 2.Ou nenhuma, como no caso da equacao

x3 − 117y3 = 5

E muito facil ver que isso e verdade atraves da reducao modulo 9. De fato, como117 e divisıvel por 9,

x3 − 117y3 ≡ x3 ≡ 5 (mod 9)

Logo, se a equacao acima tivesse solucao, deverıamos ter x3 ≡ 5 (mod 9).

Mas:classes modulo 9: 0 1 2 3 4 5 6 7 8cubos modulo 9: 0 1 8 0 1 8 0 1 8

Ou seja, x3 ≡ 5

(mod 9) nao tem solucao.

6.7 Divisao modular

Teorema 9 (Teorema da inversao) A classe a tem inverso em Zn se e so-mente se a e n sao primos entre si.

Prova (⇒) Suponha que a tem inverso. Entao existe b tal que

a.b ≡ 1 (mod n)

Logo,a.b + k.n = 1

e portanto mdc(a, n) = 1.

(⇐) Suponha mdc(a, n) = 1. Logo existem α e β tais que:

α.a + β.n = 1

Ou seja,α.a ≡ 1 (mod n)

e portanto a tem inverso em Zn.

O conjunto dos elementos de Zn que tem inverso e muito importante. Vamosdenota-lo por U(n). Em outras palavras,

U(n) = {a ∈ Z(n)|mdc(a, n) = 1}

20

Page 21: Teoria de números e criptografia RSA

No caso de n = p ser primo,

U(p) = Z(n) \ {0}

Uma propriedade importante de U(n) e que esse conjunto e fechado comrelacao a multiplicacao . Em outras palavras, o produto de dois elementosde U(n) e um elemento de U(n). Em particular, podemos dividir a por b em Z(n)somente se b ∈ U(n); nesse caso, b−1 tambem pertencera a U(n) e a

b≡ a.b−1

(mod n).

Podemos utilizar o que aprendemos para resolver congruencias lineares em Z(n).Uma congruencia linear e uma equacao do tipo:

a.x ≡ b (mod n)

onde a, b ∈ Z. A solucao dessa equacao e:

x ≡ α.b (mod n)

onde α e o inverso de a modulo n.

Conclusao: Se mdc(a, n) = 1 entao a congruencia linear a.x ≡ b (mod n)tem uma e so uma solucao em Zn.

6.8 Exercıcios propostos

4, 5, 6(b), 7, 10 e 11

7 Primeira Prova de Algebra A

Questao 1 - a) Calcule d = mdc(252, 198).

b) Encontre dois numeros inteiros a e b tais que:

a.252 + b.198 = d (1)

Resolucao: 252=198+54 54=252-198198=3.54+36 36=198-3.54 =198-3.(252-198)

=-3.252+4.19854=36+18 18=54-36 =252-198-(-3.252+4.198)

=4.252+(-5).198

Deste modo, mdc(252, 198) = 18 e a = 4, b = −5

21

Page 22: Teoria de números e criptografia RSA

Questao 2 - Verifique se as proposicoes abaixo sao verdadeiras ou falsas. Deuma demonstracao (= justificativa clara e bem escrita) ou um contra-exemplopara justificar a sua conclusao.

(a) Se p e um numero primo, entao√

p e um numero irracional.

(b) Se um numero inteiro A se escreve em base 8 na forma anan−1...a1a0, com0 ≤ ai ≤ 7, entao 2|A se e somente se a0 = 0.

(c) Se p > 3 e um numero primo e p ≡ a( (mod 3)), entao mdc(a, 3) = 1.

(d) Todo numero inteiro representavel com tres algarismos iguais na base 10 edivisıvel por 37.

(e) Se x e y sao inteiros ımpares, entao x2 + y2 = p2 para algum primo p.

Resolucao:

a) V- Suponha que existam a, b ∈ ℵ tais que√

p = ab. Podemos supor

mdc(a, b) = 1. Logo,

p.b2 = a2

e portanto p|a2. Pela propriedade fundamental dos primos, p|a. Logo,existe c ∈ ℵ tal que a = pc.

p.b2 = p2.c2 =⇒ b2 = p.c2 =⇒ p|b2 =⇒ p|b

Mas isso e um absurdo uma vez que estamos supondo mdc(a, b) = 1.

b) F - Seja A = anan−1 . . . a1a0 um numero na base 8. Entao 2|A se esomente se A ≡ 0 (mod 2). Observe que

A = an.8n + . . . + a1.8 + a0 ≡ a0 (mod 2)

ou seja, 2|A se e somente se 2|a0. Deste modo, 2|A se e somente sea0 ∈ {0, 2, 4, 6}.

c) V - Se p ≡ a (mod 3), entao o resto da divisao de p e a por 3 e o mesmo.Como p e primo, p > 3, temos que

p ≡ 1 (mod 3) ou p ≡ 2 (mod 3)

Logo, a ≡ 1 (mod 3) ou a ≡ 2 (mod 3), ou seja,

a = 3n + k, com k = 1, 2

Pelo algoritmo euclideano, mdc(a, 3) = mdc(k, 3) = 1 para k = 1, 2.

22

Page 23: Teoria de números e criptografia RSA

d) V - Seja n = aaa = a(111). Como 111 = 3.37,

aaa ≡ a(111) ≡ 0 (mod 37)

e) F - Se x e y sao ımpares, entao existem n e m tais que

x = 2n + 1, y = 2m + 1

Logo,

x2 + y2 = 4n2 + 4n + 1 + 4m2 + 4m + 1= 2(2n2 + 2n + 2m2 + 2m + 1)= 2k

onde k e um numero ımpar. Logo nao existe p ∈ ℵ tal que

x2 + y2 = p2

Observe que p nao precisa ser primo: vale para qualquer numero natural.

Questao 3 - Resolva um (e apenas um) dos exercıcios abaixo:

(a) Seja p um numero primo. Mostre que um inteiro positivo a e o seu proprioinverso modulo p (ou seja, a2 ≡ 1 (mod p)) se e somente se a ≡ 1 (mod p)ou a ≡ −1 (mod p).

(b) Calcule 1235 (mod 23).

Resolucao:

a) (=⇒) Suponhamos a2 ≡ 1 (mod p). Logo,

(a2 − 1) ≡ 0 (mod p) =⇒ p|(a + 1)(a − 1)

Pela propriedade fundamental dos primos, p|(a + 1) ou p|(a − 1). Logo,

a ≡ 1 (mod p) ou a ≡ −1 (mod p)

(⇐=) Trivial!

b) Observe que 35 = 25 + 2 + 1. Logo,

1235 ≡ 1225

.122.12≡ 2.6.12≡ 2.3≡ 6 (mod 23)

23

Page 24: Teoria de números e criptografia RSA

8 Inducao e Fermat

8.1 Inducao finita

Seja P (n) uma proposicao que afirma que uma determinada propriedade valepara cada numero natural n. Por exemplo:

• Se p e um numero primo, entao np −n e divisıvel por p para todo naturaln.

• A soma de 1 ate n e n(n+1)2

Para provar P (n), em geral usamos o princıpio da inducao finita :

Princıpio da inducao finita Para que uma proposicao P (n) seja verdadeirapara todo n natural, basta que:

1. P (1) seja verdadeira.

2. Se P (k) for verdadeira para algum numero natural k, entao P (k + 1)tambem e verdadeira.

8.2 Pequeno teorema de Fermat

Lema 10 Seja p um numero primo e a, b inteiros. Entao,

(a + b)p ≡ ap + bp (mod p)

Prova Veja livro texto, pag 94.

Teorema 11 (Teorema de Fermat) Seja p um numero primo e a um numerointeiro. Entao

ap ≡ a (mod p).

Prova

• Se n = 1, entao 1p ≡ 1 (mod p) trivialmente.

• Suponhamos que np ≡ n (mod p) para algum n inteiro positivo. Usandoo lema anterior,

(n + 1)p ≡ np + 1p ≡ np + 1 (mod p)

Como pela hipotese de inducao temos np ≡ n (mod p),

(n + 1)p ≡ np + 1 ≡ n + 1 (mod p)

Como querıamos demonstrar.

24

Page 25: Teoria de números e criptografia RSA

Caso geral: veja pag 95 do livro texto.

Teorema 12 (Teorema de Fermat II) Seja p um numero primo e a um in-teiro que nao e divisıvel por p. Entao,

ap−1 ≡ 1 (mod p).

Prova Como mdc(a, p) = 1, existe a′ tal que

aa′ ≡ 1 (mod p)

Multiplicando ambos os membros de ap ≡ a (mod p). por a′, obtemos:

a′.a.ap−1 ≡ a′.a (mod p).

Logo,ap−1 ≡ 1 (mod p).

Podemos simplificar algumas contas usando o Teorema de Fermat. De fato,sejam p primo, a inteiro tal que mdc(a, p) = 1 e k um numero inteiro tal quek ≥ p − 1. Dividindo k por p − 1,

k = (p − 1).q + r 0 ≤ r < (p − 1)

Logo,ak ≡ a(p−1).q+r ≡ (ap−1)q.ar (mod p).

Mas (ap−1) ≡ 1 (mod p) e portanto

ak ≡ ar (mod p).

8.3 Exercıcios propostos

1, 3, 46, 7, 8, 12

9 Pseudoprimos

Nesta secao, veremos com usar o pequeno teorema de Fermat para identificarque um numero e composto sem fatora-lo .

25

Page 26: Teoria de números e criptografia RSA

9.1 Pseudoprimos

De acordo com o teorema de Fermat, se p e primo e a e um inteiro qualquer,entao ap ≡ a (mod p). Desta forma, e claro que, se n e um numero composto,entao existe um inteiro b tal que bn\ ≡ b (mod n) (usaremos o sımbolo \ ≡ parasignificar nao equivalente). Observe que, na pratica, so precisamos consideraros inteiros b no intervalo 1 < b < n − 1 (por que?).

Desta forma, temos um metodo para determinar se um numero e composto semtermos que fatora-lo:

Teste Se n, b sao numeros inteiros, n > 0 e 1 < b < n − 1, tais que bn−1\ ≡ 1(mod n), entao n e composto.

A pergunta que surge entao e: o teste acima e um procedimento de decisao?Isto e, o fato de nao encontrarmos tal b significa que n e primo?

Resposta: Observe que, se n e composto, entao existe p primo, 1 < p < n − 1tal que p|n. Logo, mdc(p, n) = p 6= 1 e portanto p nao e inversıvel modulo n.Desta forma, pn−1\ ≡ 1 (mod n).

E claro que esse nao e um metodo eficiente para testar primalidade uma vez quee um metodo de exaustao.

Outra pergunta interessante que surge e a seguinte: sera que, se um numeroımpar n que satisfaca:

bn−1 ≡ 1 (mod n)

para algum 1 < b < n−1 e primo? Infelizmente, a resposta e nao. Por exemplo,2340 ≡ 1 (mod 341) mas 341 = 11.31 nao e primo! Esses “falsos primos” saoconhecidos como pseudoprimos. Ou seja, um pseudoprimo n para a base be um numero inteiro positivo ımpar e composto tal que

bn−1 ≡ 1 (mod n)

Apesar de as vezes dar errado, esse teste (chamado de teste de Leibniz) e muitoutil. Tambeem e possıvel melhorar o resultado do teste se testarmos para duasbases.

Exemplo 6 Existem 50.847.534 primos entre 1 e 109; existem apenas 5597pseudoprimos na base 2 e 1272 pseudoprimos para as bases 2 e 3.

9.2 Numeros de Carmichael

Como vimos anteriormente, nao existem numeros que sejam pseudoprimos paratodas as bases. Entretanto, pode ocorrer que um numero composto n sejapseudoprimo para todas as bases b tais que mdc(b, n) = 1.

Dizemos que um numero composto ımpar e um numero de Carmichael sebn ≡ b (mod n).

26

Page 27: Teoria de números e criptografia RSA

Os numeros de Carmichael possuem duas propriedades muito interessantes,dadas pelo teorema baixo:

Teorema 13 (Teorema de Korselt:) Um inteiro positivo ımpar n e um numerode Carmichael se, e somente se, cada fator primo p de n satisfaz as seguintescondicoes:

1. p2 nao divide n;

2. p − 1 divide n − 1.

Prova (=⇒) Seja p um fator primo de n. Entao,

bn ≡ b (mod p)

De fato, se b e divisıvel por p entao ambos os membros da equivalencia saocongruentes a zero. Se nao, pelo teorema de Fermat temos:

bp−1 ≡ 1 (mod p)

Pela condicao (2) do teorema, n − 1 = (p − 1).q para algum q. Logo,

bn ≡ (bp−1)q.b ≡ b (mod p)

Por (1), temos que n = p1 . . . pk com p1 < p2 < . . . < pk. Como os primos saodistintos, bn − b e divisıvel pelo produto p1.p2. . . . .pk = n. Em outras palavras,

bn ≡ b (mod n)

e portanto n e um numero de Carmichael.

(⇐=) Seja n um numero de Carmichael e suponhamos que exista p primo talque p2|n. Escolha b = p. Entao:

pn − p = p(pn−1 − 1)

Mas p nao divide pn−1 − 1, logo p2 nao pode dividir pn − p. Portanto, n naopode dividir pn − p. Em outras palavras, p ≡ p (mod n). Absurdo.

O restante da demonstracao depende do teorema da raiz primitiva, que so seravista no capıtulo 10...

Observacoes:

• Para verificar que um numero e de Carmichael usando o teorema acimanecessitamos fatora-lo...

• Muitos numeros de Carmichael possuem fatores primos pequenos!

• Existem infinitos numeros de Carmichael.

• Entre 1 e 109 existem 50.847.534 primos e 646 numeros de Carmichael.

27

Page 28: Teoria de números e criptografia RSA

9.3 Teste de Miller

Teorema de Fermat: detecta numeros compostos com uma certa eficiencia, masnao e um bom teste de primalidade.

Teste de Miller: Calcula-se a sequencia de potencias modulo n:

bq, b2q, . . . , b2kq

onde n − 1 = 2kq.

O fato e que, se n e primo, entao:

b2kq ≡ bn−1 ≡ 1 (mod n)

Digamos que j e o menor expoente tal que b2jq ≡ 1 (mod n). Se j ≥ 1podemos escrever

b2jq − 1 = (b2j−1q − 1)(b2j−1q + 1)

Se n e primo e divide b2jq−1, entao n deve dividir (b2j−1q+1) pela minimalidadede j. Logo,

b2j−1q − 1 ≡ −1 (mod n)

Ou seja, uma das potencias

bq, b2q, . . . , b2kq

deve ser congruente a −1 modulo n. Se j = 0, entao temos apenas que bq ≡ 1(mod n). Se nada disso acontecer, entao n deve ser composto.

Teste de Miller.

Etapa 1 Divida n − 1 por 2 ate encontrar q ımpar e k tais que n − 1 = 2kq.

Etapa 2 Faca i = 0 e r = resto de bq por n.

Etapa 3 Se i = 0 e r = 1 ou i ≥ 0 e r = n − 1: teste inconclusivo.

Etapa 4 Faca i = i + 1 e r = r2 onde r2 e o resto da divisao de r2 por n.

Etapa 5 Se i < k volte a etapa 3; senao: n e composto.

Exemplo 7 Tome o numero de Carmichael 561. Temos que 560 = 24.35.Calculando as sequencias de restos modulo 561 das potencias de 2:

expoentes 35 2.35 22.35 23.35restos 263 166 67 1

28

Page 29: Teoria de números e criptografia RSA

Logo 561 tem que ser composto.

Se um numero composto n tem resultado inconclusivo para o teste de Millercom respeito a uma base b, dizemos que n e um pseudoprimo forte para abase b. Observe que pseudoprimo forte −→ pseudoprimo.

Existem 1282 pseudoprimos fortes entre 1 e 109.

9.4 Primalidade e computacao algebrica

E importante ressaltar que o teste de Miller e muito usado na pratica. O quese faz para ter maior garantia do resultado e fazer o teste para diversas bases.E assim com o Maple, ScratchPad - IBM, Axiom 1.1 - IBM.

Vale a observacao: dado um numero finito qualquer de bases, existem infinitosnumeros de Carmichael que sao pseudoprimos fortes para todas essas bases.

9.5 Exercıcios propostos

2, 5, 7, 8, 10

10 Teorema de Euler

O pequeno teorema de Fermat nos diz como trabalhar com certas congruenciasenvolvendo expoentes quando o modulo e primo. Nessa secao, veremos comolidar com congruencias modulo um numero composto.

10.1 Funcao de Euler

Definicao. Seja n um inteiro positivo. A funcao de Euler φ(n) e definidacomo o numero de inteiros positivos nao excedendo n que sao relativamenteprimos com n.

A tabela abaixo apresenta os valores de φ(n) para 1 ≤ n ≤ 12.

n 1 2 3 4 5 6 7 8 9 10 11 12φ(n) 1 1 2 2 4 2 6 4 6 4 10 4

Na secao de aritmetica modular, estudamos o conjunto U(n), o conjunto doselementos de Zscrn que tem inverso. Vimos que

U(n) = {a ∈ Zn : mdc(a, n) = 1}

29

Page 30: Teoria de números e criptografia RSA

Desta forma, φ(n) nada mais e do que o numero de elementos de U(n).

Vamos ver como calcular φ(n). Comecamos com alguns casos especiais. Seja pum numero primo. Entao todos os inteiros positivos menores que p sao primoscom p. Logo

φ(p) = p − 1

Tambem e facil calcular φ(pk). Observe que mdc(a, pk) = 1 se e somente sep nao divide a. Entao basta contar os inteiros menores que pk que nao saodivisıveis por p. Se 0 ≤ a < pk e divisıvel por p, entao

a = p.b onde 0 ≤ b < pk − 1

Portanto ha pk−1 inteiros positivos menores que pk que sao divisıveis por p.Logo ha pk − pk−1 que nao sao divisıveis por p. Ou seja,

φ(pk) = pk−1(p − 1)

Para obtermos a formula geral, e necessario provar o seguinte resultado:

Teorema. Se m,n sao inteiros positivos tais que mdc(m,n) = 1, entao

φ(mn) = φ(m).φ(n)

A demonstracao desse teorema e trabalhosa (mas nao difıcil) e portanto naofaremos aqui.

Exemplo 8 φ(100) = φ(22).φ(52) = (2.1).(5.4) = 40

Pelo teorema acima temos que, se n = pe1

1 . . . . .pek

k , entao,

φ(n) = pe1−11 . . . . .pek−1

k (p1 − 1). . . . .(pk − 1)

10.2 Teorema de Euler

Vai ser necessario, para decodificacao de mensagens, saber calcular a funcaode Euler. Tambem vamos ter que aplicar o teorema de Euler. O teoremade Euler e uma generalizacao do teorema de Fermat para o caso em que omodulo nao e primo:

Teorema de Euler. Se n e um inteiro positivo e a e um inteiro tal quemdc(a, n) = 1, entao

aφ(n) ≡ 1 (mod n)

Antes de provar esse teorema, vamos apresentar um exemplo.

30

Page 31: Teoria de números e criptografia RSA

Exemplo 9 Temos que U(8) = {1, 3, 5, 7} e portanto φ(8) = 4. Observe que,se a, b, c ∈ U(8), entao a.b ∈ U(8) e, se c 6= b, entao

a.b\ ≡ a.c (por que?)

Para ver como isso funciona, tome a = 3. Entao,

3.1 ≡ 3 (mod 8)3.3 ≡ 1 (mod 8)3.5 ≡ 7 (mod 8)3.7 ≡ 5 (mod 8)

Logo,(3.1).(3.3).(3.5).(3.7) ≡ 1.3.5.7 (mod 8)

e portanto,34.1.3.5.7 ≡ 1.3.5.7 (mod 8)

Como mdc(1.3.5.7, 8) = 1, podemos cortar o termo comum dos dois lados daequivalencia:

34 ≡ 1 (mod 8)

Teorema 14 (Teorema de Euler) Se n e um inteiro positivo e a um inteirotal que mdc(n, a) = 1, entao

aφ(n) ≡ 1 (mod n)

Prova Escrevendo U(n) = {b1, . . . , bφ(n)}, temos que:

(a.b1). . . . .(a.bφ(n)) ≡ b1. . . . .bφ(n) (mod n)

Logo,aφ(n).b1. . . . .bφ(n) ≡ b1. . . . .bφ(n) (mod n)

Como mdc(b1. . . . .bφ(n), n) = 1, podemos cortar o termo comum dos dois ladose portanto,

aφ(n) ≡ 1 (mod n)

10.3 Exercıcios propostos

Capıtulo 8: 4, 6, 8, 9, 10, 18

31

Page 32: Teoria de números e criptografia RSA

10.4 Tabela Hashing

Uma universidade deseja estocar um arquivo para cada um de seus estudantesno seu computador. O numero identificador, ou chave para cada arquivo e onumero do CPF do estudante. O CPF e um inteiro de 11 dıgitos, portantoe praticamente impossıvel reservar uma posicao de memoria para cada CPFpossıvel. Deve-se encontrar um metodo sistematico para arranjar esses arquivosna memoria, usando um numero razoavel de posicoes de memoria. De outraforma, ficaria impossıvel acessar os arquivos...

Um desses metodos e utilizando a tabela hashing , baseada em funcoeshashing . Existem varias propostas para funcoes hashing. Vamos discutir(brevemente) o tipo mais utilizado.

Seja k a chave do arquivo a ser estocado e seja n um inteiro positivo. Definimosa funcao hashing h(k) por

h(k) ≡ k (mod n)

onde 0 ≤ h(k) < n. E claro que devemos escolher um n adequado de modo queos arquivos fiquem distribuıdos de uma maneira razoavel entre as n posicoespossıveis de memoria.

Por exemplo, n nao deve ser uma potencia de 10 (10r) simplesmente porque ovalor da funcao h seria os r ultimos dıgitos da chave.

Outro exemplo de uma escolha ruim e quando n|10m ± a onde a e m sao pe-quenos. Por exemplo, se n = 111|(103 − 1) = 999 entao 103 ≡ 1 (mod n) eportanto os numeros:

64121284868 e 64184821268

vao para a mesma posicao de memoria.

Para evitar esses problemas, n deve ser um numero primo proximo do numerode posicoes disponıveis. Por exemplo, se existem 5000 posicoes de memoria parao armazenamento de 2000 arquivos de estudantes, podemos escolher n = 4969.

Claro que, mesmo assim, colisoes podem ocorrer. Existem varias heurısticaspara tratamento de colisoes. O metodo mais usado e o de escolher uma posicaolivre. Existem varias maneiras de fazer isso e as mais complicadas sao as maiseficientes. Eu poderia passar o dia falando sobre elas, mas vou citar apenasuma, a mais simples. Consiste em tomar:

hj(k) ≡ h(k) + j (mod n)

Desta forma, a chave k e alocada na posicao mais proxima possıvel de h(k).A eficiencia desse metodo e realmente baixa, pois tende a haver um engarrafa-mento.

Na pratica, o mais facil e “atachar” uma lista a cada posicao de memoria. Dessaforma, procede-se por busca sequencial.

32

Page 33: Teoria de números e criptografia RSA

11 Criptografia RSA

11.1 Pre-codificacao

Em primeiro lugar, devemos converter a mensagem em uma sequencia de numeros.Essa primeira etapa e chamada de pre-codificacao. Ha varias maneiras de sefazer isso. Aqui vamos supor que o texto nao contem acentuacao, pontuacao,numeros etc, apenas as letras A a Z (maiusculas). Tambem vamos adicionarespacos em branco entre palavras, que sera substituıdo pelo numero 99. A letraA sera convertida no numero 10, B sera 11 e assim por diante, ate o Z corre-spondendo ao numero 35. Observe que cada letra corresponde a um numerocom exatamente dois algarismos. Isso evita ambiguidades.

A chave publica e um numero n = p.q, onde p e q sao primos. Antes de comecardevemos, entao escolher esses numeros. O ultimo passo da pre-codificacao equebrar a mensagem em blocos. Esses blocos devem ser numeros menoresque n. A maneira de escolher os blocos nao e unica, mas e importante evitarduas situacoes:

• Nenhum bloco deve comecar com o numero 0 (problemas na decodi-ficacao).

• Os blocos nao devem corresponder a nenhuma unidade linguıstica (palavra,letra, etc). Assim a decodificacao por contagem de frequencia fica im-possıvel.

11.2 Codificando e decodificando

Para codificar a mensagem precisamos de n = p.q e de um inteiro positivo e queseja inversıvel modulo φ(n). Em outras palavras,

mdc(e, φ(n)) = mdc(e, (p − 1).(q − 1)) = 1

Chamaremos o par (n, e) a chave de codificacao do sistema RSA.

Codificaremos cada bloco de mensagem separadamente e a mensagem codificadasera a sequencia de blocos codificados.

Importante: Os blocos ja codificados nao poderao ser reunidos de modo a formarum longo numero. Isso tornaria a decodificacao impossıvel!

Vamos agora mostrar como codificar cada bloco b. Chamaremos o bloco codifi-cado de C(b). Em primeiro lugar, lembre-se que b e menor que n. Entao:

C(b) ≡ be (mod n)

Onde 0 ≤ C(b) < n.

33

Page 34: Teoria de números e criptografia RSA

Exemplo 10 Considere a frase Paraty e linda . Convertendo em numeros,

2510271029349914992118231310

Agora devemos escolher n. Vamos comecar com um numero pequeno, por ex-emplo

n = 11.13 = 143

Podemos entao quebrar a mensagem acima em blocos, que devem ter valormenor que 143:

25 − 102 − 7 − 102 − 93 − 49 − 91 − 49 − 92 − 118 − 23 − 13 − 10

Entao temos que φ(143) = 10.12 = 120 e portanto e deve ser um numero quenao divide 120. O menor valor possıvel e 7. Logo,

C(25) ≡ 257 ≡ 2522

.252.25 (mod 143)

≡ 2522

.53.25 (mod 143)≡ 532.53.25 (mod 143)≡ 92.53.25 (mod 143)≡ 14.25 (mod 143)≡ 64 (mod 143)

Procedendo dessa maneira com todos os blocos, obtemos a seguinte mensagemcifrada:

64 − 119 − 6 − 119 − 102 − 36 − 130 − 36 − 27 − 79 − 23 − 117 − 10

Vejamos agora como proceder para decodificar um bloco de mensagem codifi-cada. A informacao que precisamos para decodificar esta contida no par (n, d),onde d e o inverso de e modulo φ(n). Chamaremos (n, d) de chave de de-codificacao e de D(c) o resultado do processo de decodificacao. D(c) e dadopor:

D(c) ≡ cd (mod n)

onde 0 ≤ D(c) < n.

Observe que e muito facil calcular d, desde que φ(n) e e sejam conhecidos: bastaaplicar o algoritmo euclideano estendido. Entretanto, se nao conhecemos p e qe praticamente impossıvel calcular d.

Voltando ao nosso exemplo, temos que n = 143 e e = 7. Para calcular d, usamoso algoritmo euclideano estendido:

120 = 7.17 + 1 =⇒ 1 = 120 + (−17).7

Logo o inverso de 7 modulo 120 e −17. Como d deve ser usado como umexpoente, precisamos que d seja positivo. Logo tomamos d = 120 − 117 = 103.

34

Page 35: Teoria de números e criptografia RSA

11.3 Funciona?

A pergunta obvia que surge agora e:

D(C(b)) = b?

Ou seja, decodificando um bloco de mensagem codificada, encontramos um blocoda mensagem original? Porque senao todo nosso esforco foi sem sentido...

Vamos mostrar nessa secao que a resposta para a pergunta acima e sim .

Consideremos entao n = p.q. Vamos provar que

DC(b) ≡ b (mod n)

E por que nao a igualdade? Observe que DC(b) e b sao menores que n − 1.Por isso escolhemos b menor que n e mantivemos os blocos separados depois dacodificacao!

Por definicao, temos que

DC(b) ≡ (be)d ≡ be.d (mod n)

Mas d e o inverso de e modulo φ(n). Logo existe inteiro k tal que ed = 1+kφ(n).Logo,

bed ≡ b1+kφ(n) ≡ (bφ(n))k.b (mod n)

Se mdc(b, n) = 1, entao podemos usar o teorema de Euler:

bed ≡ (bφ(n))k.b ≡ b (mod n)

Se b e n nao sao primos entre si, obderve que n = p.q, p e q primos distintos.Logo,

bed ≡ b1+kφ(n) ≡ (b(p−1))k.(q−1).b (mod p)

Se mdc(b, p) = 1, entao podemos usar o teorema de Fermat (bp−1 ≡ 1 (mod p)).Se nao, temos que p|b e portanto

bed ≡ b ≡ 0 (mod p)

Logo,bed ≡ b (mod p)

qualquer que seja b.

Fazemos o mesmo para o primo q, obtendo:

bed ≡ b (mod q)

Portanto,bed ≡ b (mod p.q)

como querıamos.

35

Page 36: Teoria de números e criptografia RSA

11.4 Porque o RSA e seguro

Como ja vimos, o par de codificacao (n, e) e conhecido e acessıvel a qualquerusuario. O RSA so e seguro se for difıcil calcular d quando apenas esse par econhecido.

Observe que so sabemos calcular d se soubermos o valor de φ(n), cujo calculodepende da fatoracao de n. A pergunta que surge entao e: sera que nao existeoutro processo para calcular d e φ(n)? Por exemplo, o que aconteceria se algueminventasse um metodo para calcular φ(n) a partir de n e e? A resposta e queterıamos, entao, um algoritmo rapido de fatoracao. Observe que

φ(n) = (p − 1).(q − 1) = pq − (p + q) + 1 = n − (p + q) + 1

Logo, (p + q) = n − φ(n) + 1 e conhecido. Contudo,

(p + q)2 − 4n = (p2 + q2 + 2pq) − 4pq = (p − q)2

Logo,p − q =

(p + q)2 − 4n

que tambem e conhecido. Ou seja, conhecemos p+q e p−q. Portanto conhecemosp e q e fatoramos n!

Deste modo, conhecer φ(n) sem fatorar n significa que, na verdade, sabemosfatorar n!

Outro jeito de quebrar o RSA seria achar um algoritmo que calcule d diretamentea partir de n e e. Como ed ≡ 1 (mod φ(n)), isto implica que conhecemos ummultiplo de φ(n). Isso tambem e suficiente para fatorar n (prova complicada).

A ultima alternativa seria achar b a partir da forma reduzida de be modulo nsem achar d. Bom, ninguem conseguiu fazer isso ate agora... Acredita-se quequebrar o RSA e fatorar n sejam problemas equivalentes, apesar disso nao tersido demonstrado.

11.5 Escolhendo primos

Suponha que desejamos implementar o RSA de chave publica (n, e), de modo quen seja um inteiro com aproximadamente r algarismos. Para construir n, escolhaum primo p entre 4r

10 e 45r100 algarismos e, em seguida, escolha q proximo de 10r

p. O

tamanho da chave recomendado atualmente para uso pessoal e de 768 bits. Issosignifica que n tera aproximadamente 231 algarismos. Para construir tal numeroprecisamos de dois primos de, digamos, 104 e 127 algarismos respectivamente.Outra coisa a ser observada e que os numeros p−1, q−1, p+1, p−1 nao tenhamfatores primos pequenos, pois senao seria facil fatorar n.

Para encontrar p e q, seguiremos a seguinte estrategia:

1. Tome um numero s ımpar.

36

Page 37: Teoria de números e criptografia RSA

2. Verifique se n e divisıvel por um primo menor que 5.000.

3. Aplique o teste de Miller a s usando como base os 10 primeiros primos.

Encontrar tais primos pode ser um processo trabalhoso. Por exemplo, se x eum numero da ordem de 10127, no intervalo entre x e x + 104 existem aproxi-madamente 34 primos dentre 560 numeros que passam a etapa (1) da estrategiaacima...

11.6 Assinaturas

Apenas codificar mensagens nao basta, em geral, pois o sistema e de chavepublica. Ou seja, qualquer pessoa pode codificar uma mensagem usando umachave alheia. Por exemplo, um haker poderia facilmente mandar instrucoes aobanco para que o seu saldo bancario fosse transferido para uma outra conta.Por isso, o banco precisa de uma garantia de que a mensagem teve origem emum usuario autorizado. Ou seja, a mensagem tem que ser assinada .

Vamos chamar de Cm e Dm as funcoes de codificacao e decodificacao do Marioe de Ca e Da as funcoes de codificacao e decodificacao do Allan. Seja b umbloco de mensagem que o Mario deseja mandar para o Allan. Para mandaruma mensagem assinada, ao inves de Ca(b), o Mario envia

Ca(Dm(b))

Ou seja, primeiro ele “decodifica” a mensagem como so ele pode fazer, depois elecodifica o resultado, como so o Allan pode ler. Para ler a mensagem, primeiro oAllan aplica Da e depois Cm. Observe que Cm e publico. Se a mensagem fizersentido, e certo que a origem foi mesmo o Mario!

Mas cuidado ! Esse sistema pode ser usado para quebrar o RSA, como em1995 por um consultor em assuntos de seguranca de computadores...

11.7 Exercıcios propostos

Capıtulo 11: 1, 2, 3, 4, 6.

12 1o trabalho pratico

O trabalho tem como objetivo a criacao de dois numeros primos grandes (entre20 e 30 bits). Para isso:

• Gere dois numeros ımpares m e k da magnetude acima, de modo que naosejam muito proximos um do outro.

37

Page 38: Teoria de números e criptografia RSA

• Verifique se m, k sao divisıveis por um primo menor que 5.000.

• Aplique o teste de Miller a m, k usando como base os 10 primeiros primos(se voce quiser ter uma certeza maior sobre o resultado, facø teste paramais primos).

Depois calcule n = m.k e aplique os algoritmos da fatoracao e de Fermat a npara ver se sua chave publica e facilmente quebrada.

O trabalho devera ser entregue no dia 06/08/2002 (sem falta!) e deveraconstar de:

• Parte escrita de no maximo duas paginas digitadas. Essa parte de-vera conter os resultados do trabalho juntamente com a analise dessesresultados (em especial, se foi facil quebrar a sua chave ou nao).

• Codigo impresso comentado . Evitem C++, por favor!

• Disquete com o executavel do programa. Este tambem pode ser enviadopor e-mail. Lembrem-se que eu posso rodar apenas programas em Delphi(4.0) ou qualquer outra linguagem que rode nas estacoes do DCC. Entaoevitem artifıcios graficos sofisticados...

13 Raızes primitivas

13.1 Teste de Lucas

Para determinar se n e primo, podemos verificar se φ(n) = n − 1. Ou seja, semdc(a, n) = 1 para todo a menor que n. Isso so e possıvel se n e ımpar. Logoprecisamos encontrar um jeito de calcular φ(n) sem fatorar n. Mas ja vimosque isso e impossıvel...

Teorema da raiz primitiva. Se p e um primo, existe b ∈ Zn tal que

bp−1 ≡ 1 (mod p)

masbr\ ≡ 1 (mod p)

se r < p − 1.

Em geral, chamaremos de ordem do elemento b em Zn o numero k tal quebk ≡ 1 (mod n) e br\ ≡ 1 (mod n) se r < k. Observe que se n e primo e1 < b < n, entao a ordem de b e p − 1.

38

Page 39: Teoria de números e criptografia RSA

Teorema de Lagrange. A ordem de b tem que dividir a ordem de U(n), quee igual a φ(n).

Logo, dado n ımpar, se existe b tal que bn−1 ≡ 1 (mod n) e bt\ ≡ 1 (mod n)se t < n − 1 entao n e primo pois terıamos n − 1 ≤ φ(n) ≤ n − 1.

De acordo com o teorema da raiz primitiva, se n e primo, tal b sempre existe.Encontra-lo e uma questao de sorte...

Para aplicar isso a primalidade, precisamos encontrar uma maneira eficiente demostrar que a ordem de um elemento de U(n) e exatamente n − 1.

Teste de Lucas. Sejam n ´ impar e 1 ≤ b ≤ n − 1. Se

bn−1 ≡ 1 (mod n)

eb

n−1

p \ ≡ 1 (mod n)

para cada fator primo de n − 1, entao n e primo.

Demonstracao: Veja o livro texto pag 168.

Continua... Aguardem!

14 Sistemas de congruencias

O objetivo dessa secao e estudar a solucao de sistemas de equacoes lineares. Aaplicacao para criptografia e o desenvolvimento de um metodo para partilharsenhas.

14.1 Equacoes lineares

Ja estudamos o caso de uma equacao linear

ax ≡ b (mod n)

Se a possui um inverso α em Zn, entao multiplicando ambos os lados da equacaoacima por α:

α(ax) ≡ αb (mod n)x ≡ αb (mod n)

Em particular, se n e primo e a\ ≡ 0 (mod n), entao a equacao acima sempretem solucao.

39

Page 40: Teoria de números e criptografia RSA

Se a nao tem inverso em Zn, entao mdc(a, n) = d 6= 1. Logo, a equacao:

ax − ny = b

so tem solucao quando b e divisıvel por d.

Suponhamos entao que d divide b. Escreveremos a = da′, b = db′ e n = dn′.Cancelando os d’s, chegamos a seguinte equacao:

a′x − n′y = b′

Ou seja,a′x ≡ b′ (mod n′)

Observe que agora mdc(a′, n′) = 1, e essa equacao sempre tem solucao.

Exemplo 11 Seja 6x ≡ 4 (mod 8). Dividindo pelo mdc(6, 8) = 2, obtemos

3x ≡ 2 (mod 4)

Logo a solucao procurada e:

x ≡ 2 (mod 4)

Mas observe que o modulo mudou de 8 para 4... Para consertar isso, vamosescrever a expressao acima em uma expressao de inteiros:

x = 2 + 4k

Duas possibilidades:

• k e par. Nesse caso, x ≡ 2 (mod 8) e 2 e uma solucao.

• k e ımpar (k = 2m+1). Nesse caso, x ≡ 6 (mod 8) e 6 e outra solucao.

Ou seja, uma equacao linear possui mais de uma solucao.

14.2 Um exemplo astronomico

Tres satelites passarao sobre o Rio essa noite. O primeiro a uma hora , osegundo as 4 horas e o terceiro as 8 horas da manha. O primeiro leva 13 horaspara completar uma volta em torno da terra, o segundo 15 horas e o terceiro 19horas. Determine quantas horas decorrerao, a partir de meia noite, ate que ostres satelites passem ao mesmo tempo sobre o Rio.

Montagem matematica: seja x e o numero de horas, contadas a partir da meianoite de hoje, quando os tres satelites passarao juntos sobre o Rio. Entao:

x ≡ 1 (mod 13)x ≡ 4 (mod 15)x ≡ 8 (mod 19)

40

Page 41: Teoria de números e criptografia RSA

Podemos re-escrever a primeira equacao cmo x = 1 + 13t, Substituindo aprimeira equacao na segunda, obtemos:

t ≡ 6 (mod 15)

Logo x = 79 + 195u. Substituindo essa equacao na terceira:

u ≡ 1 (mod 19)

Logo,x = 79 + 195u

= 274 + 3705v

Logo os satelites passarao juntos pela primeira vez 274 horas depois da meianoite de hoje.

14.3 Algoritmo chines do resto

Observe que, para resolver o problema dos satelites, resolvemos as duas primeirasequacoes, obtendo x = 79+195u. Isso corresponde a uma nova equacao, x ≡ 79(mod 195). Em geral, a solucao de um sistema de muitas equacoes e obtidaatraves da solucao de varios sistemas de duas equacoes. Desta forma, vamosanalisar apenas o algoritmo correspondente a solucao de um sistema de duasequacoes.

Considere entao o sistema

x ≡ a (mod m)x ≡ b (mod n)

Podemos re-escrever a primeira equacao na forma:

x = a + my

Substituindo x na segunda equacao, obtemos:

my ≡ (b − a) (mod n)

Sabemos que essa equacao tem solucao se e somente se o mdc(n,m) divide b−a.

Vamos assumir que mdc(n,m) = 1. Seja entao α o inverso de m modulo n.Entao:

y ≡ α(b − a) (mod n)y = α(b − a) + nzx = a + mα(b − a) + mnzx = a(1 − mα) + mαb + mnzx = aβn + mαb + mnz

Observe que essa solucao e unica. Temos entao o seguinte teorema:

41

Page 42: Teoria de números e criptografia RSA

Teorema Chines do resto. Sejam n1, . . . , nk inteiros positivos, dois a doisprimos entre si. Entao o sistema

x ≡ a1 (mod n1)...x ≡ ak (mod nk)

sempre tem uma solucao unica em Zn1...nk.

14.4 Modulos nao co-primos

Analisaremos esse caso atraves de um exemplo. Considere o sistema:

x ≡ 3 (mod 12)x ≡ 19 (mod 8)

Da primeira equacao, obtemos x = 3 + 12y. Substituindo isso na segundaequacao, temos 12y ≡ 16 (mod 8). Dividindo essa equacao por 4, obtemos3y ≡ 4 (mod 2). Logo,

x ≡ 3 (mod 24)

Observe que 24 e o mmc entre 8 e 12...

14.5 Partilha de senhas

Suponha que que desejemos partilhar uma senha s entre n pessoas, de modoque a cada pessoa seja dado um elemento (uma parte) da senha. Esse elementoe tal que e escolhido de um conjunto S de n pares de inteiros positivos de modoque, para um inteiro positivo k ≤ n previamente escolhido temos:

1. qualquer subconjunto de S com k elementos permite determinar s facil-mente;

2. e muito difıcil determinar s conhecendo menos de k elementos de S.

Comecamos escolhendo um conjunto L de n inteiros positivos, dois a dois primosentre si. Seja N o produto dos k menores numeros de L e M o produto dosk − 1 maiores numeros de L. Dizemos que esse conjunto tem limiar k se

N > s > M

Observe que essa condicao implica que o produto de k ou mais elementos de Le sempre maior que N e o produto de menos de k elementos e sempre menorque M. O conjunto S sera formado pelos pares da forma (m, sm) onde m ∈ L esm e a forma reduzida de s modulo m. Observe que limiar k ≥ 1 implica s > mpara qualquer m ∈ L. Logo sm < s para qualquer m ∈ L.

42

Page 43: Teoria de números e criptografia RSA

Suponhamos que sejan conhecidos, em um dado momento, t elementos, ≥ k.Denotaremos esses pares por (m1, s1), . . . , (mt, st). Vamos resolver o sistema decongruencias:

x ≡ s1 (mod m1)x ≡ s2 (mod m2)

. . .x ≡ st (mod mt)

obtendo x0 como solucao. Pelo teorema chines do resto,

x0 ≡ s (mod m1. . . . .mt)

Por que? Sabemos que, como t ≥ k,

m1. . . . .mt ≥ N > s

Pelo teorema chines do resto, o sistema acima tem uma unica solucao menorque m1. . . . .mt. Mas s tambem e solucao do sistema e s < m1. . . . .mt. Logos = x0.

Observacoes:

1. E possıvel escolher os modulos de modo que fique praticamente impossıvelencontrar s atraves de uma busca.

2. E sempre possıvel escolher um conjunto L que satisfaca todas as condicoes.

Exemplo 12 Digamos que em um banco ha 5 funcionarios e pelo menos 2 temque estar presentes para que o cofre seja aberto. Logo o conjunto L deve ter5 elementos, e seu limiar deve ser 2. Uma escolha possıvel escolhendo apenasprimos pequenos e

L = {11, 13, 17, 19, 23}O valor de s pode ser escolhido como sendo qualquer inteiro no intervalo quevai de 23 a 143. Digamos s = 30. Entao:

S = {(11, 19), (13, 17), (17, 13), (19, 11), (23, 7)}

Se os funcionarios que possuem as senhas (17, 13) e (23, 7) estao no banco, paraobter a senha e preciso resolver o sistema

x ≡ 13 (mod 17)x ≡ 7 (mod 23)

A solucao e x = 30 + 391k...

14.6 Exercıcios propostos

1,2,4

43

Page 44: Teoria de números e criptografia RSA

15 Logica e ciencia da computacao

15.1 Motivacao

Logica em ciencia da computacao:

• Primeira abordagem computacao-como-modelo: computacoes sao estru-turas matematicas contendo nodos, estados e transicoes e a logica constroiafirmativas sobre essas estruturas.

• Segunda abordagem computacao-como-deducao: estados sao descritos atravesde um conjunto de proposicoes e mudancas nos estados sao modelados pormudancas nas proposicoes dentro de uma derivacao (ou seja, por passosna construcao de uma prova)

A primeira abordagem tem sido amplamente estudada e faz uso de topicosda matematica como teoria de conjuntos, teoria das categorias, algebras, etc.para modelar computacoes. Em geral, as estruturas matematicas utilizadas saocomplexas porque devem lidar com o conceito de infinitude.

A segunda abordagem, apesar de lidar com estruturas mais simples (que rara-mente fazem referencia ao infinito) e de estar mais intimamente ligada a com-putacao, tem merecido pouca ou nenhuma atencao nos ultimos tempos.

Apenas apos recentes pesquisas na area de teoria de provas e programacao logicaobservou-se um crescimento do estudo nessa area de pesquisa.

Logicas expressivas como logica linear (e Forum - linguagem de programacaobaseada em logica linear) passaram a ser utilizadas para modelar estados, transicoesde estado e algumas primitivas de concorrencia.

15.2 Logica Classica

• A verdade de uma afirmativa e absoluta e independe da quaisquer pensa-mento, entendimento ou acao.

• Afirmativas sao verdadeiras ou falsas, onde falso e a mesma coisa que naoverdadeiro.

• Isso e conhecido com princıpio do meio excluıdo: p∨⌉p.

15.3 Logica Intuicionista

• Em p∨⌉p nenhuma informacao e dada sobre qual realmente vale:

44

Page 45: Teoria de números e criptografia RSA

Existem dois numeros irracionais x e y tais que xy e racional.

Existem sete 7s consecutivos na representacao decimal do numeroπ.

• Afirmativas so sao validas perante a existencia de uma prova ou construcaoda afirmativa.

• Essa logica e de especial interesse porque suas formulas estao em corre-spondencia 1 a 1 com tipos em λ-calculus, base das linguagens de pro-gramacao funcionais: Lisp, ML, Haskell.

• Ainda, logica intuicionista e uma logica de recursos infinitos (mas nao deconclusoes infinitas).

15.4 Logica linear

• Logica linear e uma logica de recursos conscientes.

• No caso de transicao de estados:

maior tem valor 1 −◦ maior tem valor 2

• E claro que a proposicao { maior tem valor 1} deve deixar de ser validano estado 2, enquanto que a proposicao { maior tem valor 2}, que naoera valida no estado 1, passa a valer no estado 2.

• Esse tipo de comportamento nao pode ser descrito em logicas classica ouintuicionista, apenas em logica linear.

15.5 Linguagens logicas de programacao - Prolog

• Uma definicao comum das clausulas de Horn e dada de acordo com aseguinte gramatica:

G ::= A|G ∧ G

D ::= A|G ⊃ A|∀xD

• Ou seja, formulas gol sao conjuncoes de formulas atomicas e clausulas deprogramas sao da forma:

∀x1 . . . ∀xm[A1 ∧ . . . ∧ An ⊃ A0]

• Observe que, como implicacao e quantificacao universal nao estao pre-sentes no gol, todas as hipoteses e termos necessarios para completar aprova devem estar presentes desde o inıcio do programa: assinaturas eprogramas sao globais.

• Ou seja, nada de mecanismos para modularizacao ou construtores de da-dos!

45

Page 46: Teoria de números e criptografia RSA

15.6 Linguagens logicas de programacao - λ-Prolog

• As formulas de primeira ordem de Harrop estendem as clausulas de Horn,uma vez que admitem implicacoes e quantificadores universais no gol:

G ::= A|G ∧ G|P ⊃ G|∀xG

D ::= A|G ⊃ A|∀xD

• Deste modo, o programa pode crescer ao longo da prova (modularizacao) enovas constantes podem ser adicionadas ao programa (abstract datatypes)

• Desvantagem: recursos ilimitados para construcao de provas.

15.7 Linguagens logicas de programacao - Forum

• Logica linear nao e uma linguagem abstrata de programacao.

• Forum e uma linguagem logica de programacao baseada em logica linear.Σ:Ψ;∆ −→ Γ;Υ possui uma prova em Forum se e somente se ! Ψ,∆ ⊢Γ, ? Υ.

• Alem de modularizacao e abstracao de dados tambem permite encap-sulacao de estado, concorrencia e primitivas de comunicacao e sincronizacao.

• Clausulas em Forum possuem a forma:

∀y(G1 → · · · → Gm → G0), (m ≥ 0)

onde G0, . . . , Gm sao formulas arbitrarias em Forum e → denota −◦ ou ⊃.

16 Algebra e ciencia da computacao

A principal aplicacao de matematica em ciencia da computacao e na definicaode semantica formal em linguagens de programacao.

“Semantica” e geralmente definida como o estudo da relacao entre palavrase sentencas de uma linguagem (escrita ou falada) e os seus significados. Euma area que tem recebido, atraves dos tempos, muita atencao em linguısticae filosofia, que estudam o significado de sentencas na linguagem natural. Umasegunda area de estudo de semantica se concentra no significado de sentencas emlinguagens formais de logica matematica, originalmente projetada para servircomo “fundacao” da matematica. Esta secao visa discutir, brevemente, topicosde uma terceira area da semantica: aquela que tem por objetivo desenvolvertecnicas para expressar a semantica de linguagens utilizadas para programacaode computadores. Estaremos especialmente interessados no uso de estruturasmatematicas tais como grupos, domınios e teoria de categorias na descricao desemantica de linguagens imperativas (como o Pascal) e funcionais (como ML,Haskell).

46

Page 47: Teoria de números e criptografia RSA

17 Semantica

Tradicionalmente, linguagens de computadores tem sido baseadas em uma sequenciade comandos, determinados por sentencas imperativas. Em linguagem natural,tais sentencas sao aquelas que podem ser encontradas em um livro de receitas:

Bata a clara do ovo ate ficar dura. (1)

Em contraste, sentencas de logica matematica visam estabelecer verdades abso-lutas:

Quando batida, a clara do ovo fica dura. (2)

Muitas pesquisas em metodos para analisar programas em uma certa linguagemprocuram formalizar a relacao entre os dois exemplos citados acima. Afinalde contas, a sentenca logica (2) garante que uma pessoa que execute o quemanda a sentenca imperativa (1) vai ter sucesso em terminar a tarefa de mudara consistencia da clara do ovo.

Desta forma, uma maneira de descrever comandos (que sao sentencas impera-tivas) de uma linguagem de programacao e estabelecendo uma relacao entre oestado do computador antes e depois da execucao do comando (como descritopor sentencas logicas). Essa interpretacao relacional de fragmentos de programapode ser formalizada atraves da semantica denotacional.

Vejamos um exemplo da semantica do comando if. Escreveremos C[·] para de-notacao de um comando e E [·] para denotacao de uma expressao. Entao temos:

C[if E then C1 else C2] = E [E]λv.isBool v → (v → C[C1], C[C2])

Da mesma forma, podemos escrever a semantica do comando while como:

C[while E do C] = E [E]λv.isBool v → (v → C[C], C[while E do C])

ou, mais simplesmente, podemos escrever:

C[while E do C] = C[C]; C[while E do C])

Antes de falarmos um pouco sobre esse tipo de semantica, vamos respondera uma pergunta fundamental: qual e o objetivo de se estudar semantica delinguagens de programacao? Bem, quando essa area surgiu, o objetivo era proveruma descricao suficientemente precisa para tornar possıvel aos implementadoresconstruir um compilador para a linguagem em questao. Hoje em dia, a enfaseesta em:

1. fornecer uma descricao precisa para os programadores, tornando possıvelque estes facam afirmativas rigorosas sobre o comportamento de progra-mas por eles escritos;

47

Page 48: Teoria de números e criptografia RSA

2. fornecer ferramentas para os designers de linguagens de programacao, paraque possam sugerir linguagens melhores, confiaveis e com descricoes for-mais simples.

Ou seja, a grande vantagem e que desenvolve-se um metodo matematico (e por-tanto formal) que garante corretude tanto de programas quanto da linguagensdesenvolvidas.

18 Semantica Denotacional

E a semantica que mapeia construtores sintaticos de programas em valores ab-stratos (numeros, funcoes, etc) que eles denotam. Esses “mapeamentos” saousualmente definidos recursivamente (como no cado do while acima). E claroque alguns cuidados devem ser tomados quando trabalhamos com funcoes re-cursivas. Em especial, para “modelar” o espaco de todas as funcoes recursi-vas precisarıamos de um conjunto X que contivesse todo o espaco de funcoesX −→ X. Por questoes de cardinalidade, sabemos que isso e impossıvel. Paralidar com essa dificuldade, foi proposto, em 1969, um modelo para funcoes re-cursivas X −→ X restritas a funcoes contınuas em X (de acordo com uma certatopologia).

Esse modelo, chamado de teoria de domınio, e utilizado para descrever a semanticadenotacional do λ-calculus, base de linguagens de programacao funcionais. E,utilizando o λ-calculus, podemos facilmente descrever a semantica denotacionalde linguagens como o Algol60, base do Pascal.

Outro tipo de semantica que tem sido muito estudada e a semantica categorica.As ideias basicas desse topico (muito em moda atualmente) sao elegantes e defacil entendimento para um aluno da graduacao com alguma maturidade naarea de Algebra.

19 Segundo trabalho pratico

O segundo trabalho pratico consiste em implementar o algoritmo RSA. Deveser apresentado o seguinte:

1. A chave publica (n) criada no TP1, juntamente com o numero e tal quemdc(e, φ(n)) = 1.

2. Algoritmo para encontrar d, o inverso de e modulo φ(n).

3. Algoritmos de codificacao (incluindo o de particao da mensagem em blo-cos) e decodificacao.

48

Page 49: Teoria de números e criptografia RSA

4. Teste em um texto de, no mınimo, 20 linhas. O texto, os blocos e o textocifrado deverao estar contidos no trabalho.

Como sempre, e necessario um pequeno texto introdutorio de no maximo duaspaginas. Dessa vez nao vou cobrar os executaveis...

49