Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao...

38
Teoria de n´ umeros e criptografia RSA Elaine Pimentel 1 o Semestre - 2006 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. Introdu¸ ao Objetivo: estudar o m´ etodo de criptografia de chaves ublicas conhecido como RSA. ´ E necess´ ario o estudo de alguns conceitos de uma ´ area da matem´ atica chamada Teoria de n´ umeros. Espera-se desenvolver o racioc´ ıniol´ogicomatem´ atico introduzindo m´ etodos de prova de teoremas como indu¸c˜ ao matem´ atica e demonstra¸ ao por absurdo. ´ E um curso de matem´ atica para cientistas da computa¸ ao. Criptografia Criptografia: estuda os m´ etodos para codificar uma mensagem de modo que s´o seu destinat´ ario leg´ ıtimo consiga interpret´ a-la. Prim´ordios:Cesar(transla¸c˜ ao do alfabeto). Criptoan´ alise: arte de decifrar c´odigos secretos. Decodificar x Decifrar (quebrar).

Transcript of Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao...

Page 1: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Teoria de numeros e criptografia RSA

Elaine Pimentel

1o Semestre - 2006

Bibliografia e referencias

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

Outras referencias:

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

• Koblitz, N. A course in number theory andcriptography, Graduate Texts in Mathematics 97,Springer-Verlag, 1987.

Introducao

• Objetivo: estudar o metodo de criptografia de chavespublicas conhecido como RSA.

• E necessario o estudo de alguns conceitos de uma areada matematica chamada Teoria de numeros.

• Espera-se desenvolver o raciocınio logico matematicointroduzindo metodos de prova de teoremas comoinducao matematica e demonstracao por absurdo.

• E um curso de matematica para cientistas dacomputacao.

Criptografia

• Criptografia: estuda os metodos paracodificar uma mensagem de modo que so seudestinatario legıtimo consiga interpreta-la.

• Primordios: Cesar (translacao do alfabeto).

• Criptoanalise: arte de decifrar codigossecretos.

• Decodificar x Decifrar (quebrar).

Page 2: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Criptografia

• 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

para decifrar inscricoes antigas.

• Computadores: metodo de cifragem completamente inseguro

(polinomial).

• Internet e criptografia: seguranca, assinatura.

• Chave publica: saber codificar nao implica saber decodificar!

Criptografia RSA

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

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

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

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

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

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

Computacao algebrica

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

• Pascal, C: nao permitem lidar com numeros dessamagnitude.

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

• Inteiro de tamanho indeterminado: de tamanhoflexıvel, grandes o suficiente. Restricoes: tamanho damemoria, estruturas de dados (vetores de tamanhospre-fixados).

• Inteiros = listas! Algarismos = elemento da lista;operacoes de soma e multiplicacao: usuais, como comlapis e papel. Divisao e mais complicado...

Algoritmos

• Algoritmo = processo de calculo baseado emregras formais.

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

• Perguntas:

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

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

Page 3: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Algoritmo da divisao

• Objetivo: encontrar o quociente q e o resto r(saıda) da divisao entre dois inteirospositivos 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, oquociente e q e o resto r.

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

Algoritmo da divisao

• Observacoes:

1. O algoritmo sempre para: sequenciadecrescente de numeros inteirospositivos.

2. O resultado da aplicacao do algoritmocorresponde as especificacoes da saıda(trivialmente).

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

Teorema da Divisao

Teorema de divisao: Sejam a e b inteiros positivos. Existem

numeros 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, temos

0 ≤ q − q′ < 1

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

Algoritmo Euclideano

• Objetivo: Calcular o mdc entre dois numerosinteiros.

• Definicao: o maximo divisor comum entre ae b e o numero d tal que:

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

– d|b– se d′ e divisor de a e b, entao d′|d.

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

Page 4: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Algoritmo Euclideano

• Dados dois numeros inteiros positivos a e btais que a ≥ b, divide-se a por b, encontrandoresto r1. Se r1 6= 0, dividimos b por r1,obtendo resto r2. Se r2 6= 0, dividimos r1 porr2 e assim por diante.

O ultimo resto diferente de zero dessasequencia de divisoes e o mdc(a, b).

• Exemplo:

1234 54 46 8 6 246 8 6 2 0

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

Algoritmo euclideano

Perguntas:

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

2. Por que o algoritmo para?

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

r1 = r2q3 + r3 e 0 ≤ r3 < r2r2 = r3q4 + r4 e 0 ≤ r4 < r3

... ...

Algoritmo euclideano

Respostas:

• Segunda pergunta: observe que

b > r1 > r2 > . . . ≥ 0

Como essa sequencia e finita, o algoritmosempre para. Mais ainda, o numero dedivisoes efetuadas e no maximo b (por que?).

• Primeira pergunta: demonstracao doalgoritmo euclideano

Demonstracao do algoritmo euclideano

Lema 1 Sejam a e b numeros inteiros positivos. Se existem inteiros g e

s tais que a = bg + s, entao mdc(a, b) = mdc(b, s).

Prova Sejam

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

Afirmamos que d1 ≤ d2. De fato, 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).

Page 5: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Demonstracao do algoritmo euclideano

Ou seja, d1 e um divisor comum de b e s. Mas d2 e omaior divisor de b e s e portanto (por definicao)d1 ≤ d2 como querıamos.

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

Demonstracao do algoritmo euclideano

Teorema 2 Dados a e b inteiros positivos, o ultimo resto diferente de

zero da sequencia de divisoes dada pelo algoritmo euclideano para a e

b e o maximo divisor comum entre a e b.

Provaa = 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 = r

n−1qne r

n= 0

Da ultima linha, temos que rn−1 divide rn−2 e portanto

mdc(rn−1, rn−2) = rn−1.

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

Algoritmo euclideano estendido

eorema 3 Sejam a e b inteiros positivos e seja d o maximodivisor comum entre a e b. Esxistem inteiros α e β tais que

αa + βb = d.

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

1234 = 54.22 + 46 ouseja, 46 = 1234 − 54.22

54 = 46.1 + 8 ouseja, 8 = 54 − 46.1

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

Algoritmo euclideano estendido

Logo,

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)

E portanto, α = −7 e β = 160.

Page 6: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Algoritmo euclideano estendido

Obs. α e β nao sao unicos.

Pergunta: para que serve calcular α e β?

Resposta:

• unicidade de fatoracao de um inteiro;

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

Teorema da fatoracao unica

• p e primo: p 6= 1 e os unicos divisores de p sao p e 1.

• Numero (diferente de 1) nao primo = composto.

• Teorema da fatoracao unica: Dado um inteiro positivon ≥ 2 podemos sempre escreve-lo, de maneira unica,na forma:

n = pe11 . . . . .p

ekk

onde 1 < p1 < p2 < . . . < pk sao numeros primos ee1, . . . , ek sao inteiros positivos (multiplicidades).

Existencia da fatoracao

Algoritmo ingenuo: Dado n ≥ 2 inteiropositivo, tente dividir n por cada um dosinteiros de 2 a n− 1. Se algum desses inteiros(digamos k) dividir n, entao achamos umfator de n.

Perguntas:

1. k e primo ou composto?

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

Existencia da fatoracao

Respostas:

1. k e primo. Se k composto, k = a.b com 1 < a, b < k.Mas k|n, entao existe c inteiro tal que n = k.c. Logo,

n = a.b.c

ABSURDO! Logo, k e primo.

2. Podemos parar o algoritmo em√

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

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

k ≤ nk ou seja, k2 ≤ n → k ≤ √

n.

Page 7: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Algoritmo de fatoracao

Etapa 1. F = 2;

Etapa 2. Se n/F e inteiro, escreva ’F fatorde n e pare;

Etapa 3. Incremente F de uma unidade; SeF >

√n escreva ’n e primo e pare; se nao,

volte para a Etapa 2.

Existencia da fatoracao

• Algoritmo acima: acha todos os fatores primos de n.

• n → q1. Proximo passo: nq1→ q2 A seguir, n

q1.q2→ q3

• Paramos em nq1.q2.....qs−1

= qs, com qs primo.

• Observe que q1 ≤ q2 ≤ . . . ≤ qs−1 ≤ qs e

n >n

q1>

n

q1.q2> . . . >

n

q1.q2. . . . .qs> 0,

ou seja, o algoritmo sempre termina.

• Exemplo: n = 450 = 2.3.3.5.5

Eficiencia do algoritmo ingenuo de fatoracao

• Algoritmo simples mas muito ineficiente!

• Exemplo n primo com 100 ou mais algarismos. Logo, n ≥ 10100 e

portanto√

n ≥ 1050. Logo serao 1050 loops para determinar que n

e primo. Se o computador executa 1010 divisoes/s, levaremos1050

1010 = 1040 segundos, ou seja, 1031 anos... Tempo estimado de

existencia do universo: 1011 anos!

• Algoritmo bom para numeros pequenos.

• Nao existe (atualmente) algoritmo de fatoracao eficiente para

todos os inteiros.

• Nao se sabe se tal algoritmo nao existe ou se nao fomos espertos

o suficiente para inventa-lo...

Fatoracao por Fermat

• Eficiente quando n tem um fator primo nao muitomenor que

√n.

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

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

• Se y > 0, entaox =

n + y2 >√

n

Notacao: escrevemos [r] como a parte inteira do

numero real r.

Page 8: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Algoritmo de Fermat

• Etapa 1: Faca x = [√

n]; se n = x2, pare.

• Etapa 2: Incremente x de uma unidade ecalcule y =

√x2 − n.

• Etapa 3: Repita a etapa 2 ate encontrar umvalor inteiro para y, ou ate que x = n+1

2 . Noprimeiro caso, n tem fatores x + y e x − y; nosegundo, n e primo.

Exemplo

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 − n

1159 33, 97

1160 58, 93

1161 76, 11

1162 90, 09

1163 102, 18

1164 113

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

x − y = 1051.

Algoritmo de Fermat

Demonstracao: se n e primo, entao o unico valorpossıvel para x e x = n+1

2 .

x e y sao inteiros positivos tais que n = x2 − y2. Ouseja,

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

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

x =1 + n

2e y =

n − 1

2

como querıamos.

Obs: RSA - Se p e q sao muito proximos, entao n = p.q

e facilmente fatoravel pelo algoritmo de Fermat.

Propriedade fundamental dos primos

Lema: Sejam a, b, c inteiros positivos esuponhamos que a e b sao primos entre si.Entao:

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

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

Page 9: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Propriedade fundamental dos primos

1. 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.

2. Se a divide c, entao c = at. 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

Propriedade fundamental dos primos

Podemos usar o lema acima para provar seseguinte propriedade:

Propriedade fundamental dos primos: Sejap um primo e a e b inteiros positivos. Se pdivide o produto a.b, entao p divide a ou pdivide b.

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

Unicidade

Seja n o menor inteiro positivo que admite duas fatoracoes

distintas. Podemos escrever:

n = pe1

1 . . . . .pekk = 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 um dos fatores do produto da direita. Mas um

primo so pode dividir outro se forem iguais. Entao p1 = qj para

algum j entre 1 e s. Logo,

n = pe1

1 . . . . .pekk = qr1

1 . . . . .qrj

j . . . . .qrss

= qr1

1 . . . . .prj1 . . . . .qrs

s

Unicidade

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

m = pe1−11 . . . . .p

ekk = q

r11 . . . . .p

rj−11 . . . . .qrs

s

onde m e um numero menor que n queapresenta duas fatoracoes distintas.ABSURDO pois isso contraria aminimalidade de n.

Page 10: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Exercıcios propostos

1. Prove a propriedade fundamental dosprimos.

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

√p e um numero irracional.

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

Numeros primos

Ate agora:

• propriedades basicas dos numeros inteiros;

• dois algoritmos fundamentais;

Nessa aula, discutiremos metodos ingenuospara encontrar primos.

Formulas Polinomiais

Considere o polinomio:f(x) = a

n.xn + a

n−1.xn−1 + . . . + a1.x + a0

onde an, a

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

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

Exemplo 1 Seja f(x) = x2 + 1 Logo,x f(x)1 22 53 10

...8 659 822 5

Formulas Polinomiais

Teorema: Dado um polinomio f(x) com coeficientes inteiros, existe uma infinidade deinteiros positivos m tais que f(m) e composto.

Prova: 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 e primo. Calculandof(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)

Basta tomarmos:

h >−b − 2am

a.p

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

Page 11: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Formulas exponenciais: numeros de Mersenne

• Numeros de Mersenne: M(n) = 2n − 1

• Numeros perfeitos: sao iguais a metade da soma de seus

divisores. Ex: 6 = 12/2 e 12 = 1 + 2 + 3 + 6

• 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: quando n = 2, 3, 5, 7, 13, 17, 19, 31, 61.... Observe que os

expoentes sao todos primos, mas nem todos primos fazem parte

dessa lista. Por exemplo,

M(11) = 2047 = 23.89

Formulas exponenciais: numeros de Fermat

• Numeros de Fermat: F (n) = 22n+ 1

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

• Poucos primos de Fermat sao conhecidos.Atehoje, nao se descobriu nenhum F (n) primocom n ≥ 5.

Formulas fatoriais

p# e o produto de todos os primos menores ou iguais a p. Ex:

5# = 2.3.5 = 30

Se p e q sao primos sucessivos, entao

p# = q#.p

Estaremos interessados nos numeros da forma p# + 1. Embora

p# + 1 nem sempre seja primo (Ex. 13# + 1 = 30031 = 59.509),

podemos mostrar que nao tem nenhum fator primo menor ou

igual a p. Desta forma, temos um algoritmo para calcular primo.

Pergunta: qual e o problema de tal algoritmo?

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

Infinidade de primos

Teorema: Existem uma infinidade de primos

Prova:

Digamos que exista uma quantidade finitade primos:

{p1, p2, . . . , pk}Podemos supor que esses primos estaoordenados, de modo que pk e o maior deles.

Considere o numero p#k + 1. Como vimos,

esse numero possui fator primo maior quepk. ABSURDO!

Page 12: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

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...

Exercıcios propostos

1. Entenda e implemente o algoritmo da pag65 do livro texto.

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

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 de v 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.

Relacoes de equivalencia

Seja X um conjunto e ∼ uma relacao entreelementos de X . Dizemos que ∼ e umarelacao de equivalencia se, para todosx, y, z ∈ X :

1. Reflexiva x ∼ x.

2. Simetrica Se x ∼ y entao y ∼ x.

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

Exemplos: <,≤, 6=, = nos numeros inteiros.

Page 13: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Classes de equivalencia

Se x ∈ X entao a classe de equivalencia de x e o conjunto de

elementos de X que sao equivalentes a x por ∼. Denotamos:

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

Propriedades:

• Qualquer elemento de uma classe de equivalencia e um

representante de toda a classe.

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

• Duas classes de equivalencia distintas nao podem ter um

elemento em comum.

Conjunto quociente = conjunto das classes de equivalencia de ∼em X .

Inteiros modulo n

Dois inteiros a e b sao congruentes modulo n se a − b e multiplo

de n:

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.

Zn

Zn = o conjunto de inteiros modulo n. Ou seja, sea ∈ Z, entao

a = {a + kn | k ∈ Z}Em particular, 0 e o conjunto dos multiplos de n.

Algoritmo da divisao de Euclides: dados a e n inteirospositivos, a > n, existem inteiros q e r tais que

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

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

Zn = {0, 1, . . . , n − 1}

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 maneiraanaloga.

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

e:a.b = a.b

Page 14: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Artimetica modular

Propriedades da adicao:

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

A2 a + b = b + a.

A3 a + 0 = a.

A4 a + −a = 0.

Artimetica modular

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!!!

Criterios de divisibilidade

Divisibilidade por 3: 3|a se a soma de todos os algarismos de a e

divisıvel por 3.

Prova: Seja

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

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

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)

Divisibilidade por 9 = mesma coisa!

Page 15: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Criterios de divisibilidade

Divisibilidade por 11: 11|a se a somaalternada de todos os algarismos de a edivisı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 dek. Logo,

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

Potencias

Vamos calcular

3515 (mod 20)

Em primeiro lugar, escrevemos o expoente15 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

Potencias

Como 35 ≡ 15 (mod 20), 152 ≡ 5 (mod 20) e52 ≡ 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)

Equacoes diofantinas

Equacao diofantina: equacao em varias incognitascom coeficientes inteiros.

Exemplos: xn + yn = zn, x + y = 2, x3 − 117y3 = 5

A ultima equacao nao tem solucao:

x3 − 117y3 ≡ 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

Page 16: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Divisao modular

Teorema da inversao A classe a tem inverso em Zn se e somente

se a e n sao primos entre si.

Prova (⇒) Se a tem inverso b:

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.

U(n)

O conjunto dos elementos de Zn que teminverso e muito importante:

U(n) = {a ∈ Z(n)|mdc(a, n) = 1}No caso de n = p ser primo,

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

Propriedade importante de U(n): esseconjunto e fechado com relacao amultiplicacao.

Congruencia linear

Uma congruencia linear e uma equacao dotipo:

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 acongruencia linear a.x ≡ b (mod n) tem umae so uma solucao em Zn.

Exercıcios propostos

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

Page 17: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Inducao finita

Seja P (n) uma proposicao que afirma queuma determinada propriedade vale paracada numero natural n. Por exemplo:

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

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

Inducao finita

Princıpio da inducao finita Para que umaproposicao P (n) seja verdadeira para todo nnatural, basta que:

1. P (1) seja verdadeira.

2. Se P (k) for verdadeira para algum numeronatural k, entao P (k + 1) tambem everdadeira.

Pequeno teorema de Fermat

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

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

Teorema de Fermat Seja p um numero primoe a um numero inteiro. Entao

ap ≡ a (mod p).

Pequeno teorema de Fermat

Prova

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

• Suponhamos que np ≡ n (mod p) para algumn inteiro positivo. Usando o 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)

Page 18: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Teorema de Fermat II

Teorema de Fermat II Seja p um numero primo e aum inteiro 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).

Teorema de Fermat

Podemos simplificar algumas contas usandoo Teorema de Fermat. De fato, sejam pprimo, a inteiro tal que mdc(a, p) = 1 e k umnumero inteiro tal que k ≥ p − 1. Dividindo kpor 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).

Exercıcios propostos

1, 3, 46, 7, 8, 12

Pseudoprimos

Teorema de Fermat: se p e primo entaoap ≡ a (mod p).

Entao n composto =⇒ existe 1 < b < n − 1 talque bn\ ≡ a (mod p).

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

Pergunta: o teste acima e um procedimentode decisao?

Page 19: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Pseudoprimos

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

E claro que esse nao e um metodo eficiente paratestar primalidade uma vez que e um metodo deexaustao.

Outra pergunta: n ımpar tal que:

bn−1 ≡ 1 (mod n)

para algum 1 < b < n − 1 e primo?

Pseudoprimos

Resposta : nao. Exemplo: 2340 ≡ 1 (mod 341)mas 341 = 11.31 nao e primo!

Pseudoprimo n para a base b numero ımpare composto tal que

bn−1 ≡ 1 (mod n)

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

Numeros de Carmichael

Pode ocorrer que um numero composto n sejapseudoprimo para todas as bases b tais quemdc(b, n) = 1.

Dizemos que um numero composto ımpar e umnumero de Carmichael se bn ≡ b (mod n) para todo1 < b < n − 1.

Teorema de Korselt: Um inteiro positivo ımpar n eum numero de Carmichael se, e somente se, cadafator primo p de n satisfaz as seguintes condicoes:

1. p2 nao divide n;

2. p − 1 divide n − 1.

Numeros de Carmichael

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 sao congruentes 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. Logo,

bn ≡ b (mod n)

Page 20: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Numeros de Carmichael

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

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

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

Restante da demonstracao: capıtulo 10...

Numeros de Carmichael

Observacoes:

• Para verificar que um numero e de Carmichaelusando o teorema acima necessitamos fatora-lo...

• Muitos numeros de Carmichael possuem fatoresprimos pequenos!

• Existem infinitos numeros de Carmichael.

• Entre 1 e 109 existem 50.847.534 primos e 646 numerosde Carmichael.

Teste de Miller

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

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

bq, b2q, . . . , b2kq

onde n − 1 = 2kq.

Se n e primo, entao:

b2kq ≡ bn−1 ≡ 1 (mod n)

Teste de Miller

Seja j e o menor expoente tal que b2jq ≡ 1 (mod n).Se j ≥ 1. Podemos 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 minimalidade de 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.

Page 21: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Teste de Miller

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

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

3. Se i = 0 e r = 1 ou i ≥ 0 e r = n − 1: testeinconclusivo.

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

5. Se i < k volte a etapa 3; senao: n ecomposto.

Exemplo

Tome o numero de Carmichael 561. Temosque 560 = 24.35. Calculando as sequencias derestos modulo 561 das potencias de 2:

expoentes 35 2.35 22.35 23.35restos 263 166 67 1

Logo 561 tem que ser composto.

Pseudoprimo forte

Se um numero composto n tem resultadoinconclusivo para o teste de Miller comrespeito a uma base b, dizemos que n e umpseudoprimo forte para a base b. Observeque pseudoprimo forte −→ pseudoprimo.

Existem 1282 pseudoprimos fortes entre 1 e109.

Primalidade e computacao algebrica

E importante ressaltar que o teste de Millere muito usado na pratica. O que se faz parater maior garantia do resultado e fazer oteste para diversas bases. E assim com oMaple, ScratchPad - IBM, Axiom 1.1 -IBM.

Vale a observacao: dado um numero finitoqualquer de bases, existem infinitos numerosde Carmichael que sao pseudoprimos fortespara todas essas bases.

Page 22: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Exercıcios propostos

2, 5, 7, 8, 10

Funcao de Euler

Definicao. Seja n um inteiro positivo. Afuncao de Euler φ(n) e definida como onumero de inteiros positivos nao excedendon que sao relativamente primos 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

Funcao de Euler

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

Se p e primo:φ(p) = p − 1

Se 0 ≤ a < pk e divisıvel por p, entao

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

Ha pk−1 inteiros positivos menores que pk divisıveispor p =⇒ ha pk − pk−1 que nao sao divisıveis por p. Ouseja,

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

Funcao de Euler

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

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

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

Pelo teorema acima temos que, sen = p

e11 . . . . .p

ekk , entao,

φ(n) = pe1−11 . . . . .p

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

Page 23: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Teorema de Euler

Vai ser necessario, para decodificacao demensagens, saber calcular a funcao de Euler.Tambem vamos ter que aplicar o teorema deEuler. O teorema de Euler e umageneralizacao do teorema de Fermat para ocaso em que o modulo nao e primo:

Teorema de Euler. Se n e um inteiro positivoe a e um inteiro tal que mdc(a, n) = 1, entao

aφ(n) ≡ 1 (mod n)

Teorema de Euler

Exemplo. U(8) = {1, 3, 5, 7} e φ(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)

34.1.3.5.7 ≡ 1.3.5.7 (mod 8)

34 ≡ 1 (mod 8)

Teorema de Euler

Teorema de Euler Se n e um inteiro positivo e a uminteiro tal 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 termocomum dos dois lados e portanto,

aφ(n) ≡ 1 (mod n)

Exercıcios propostos

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

Page 24: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Tabela Hashing

• Universidade: estocar um arquivo para cada um deseus estudantes.

• Numero identificador (chave) = CPF.

• Impossıvel reservar uma posicao de memoria paracada CPF.

• Metodo sistematico para arranjar esses arquivos namemoria.

• Tabela hashing.

Tabela hashing

Sejam k = chave e n um inteiro positivo. Funcaohashing h(k):

h(k) ≡ k (mod n)

onde 0 ≤ h(k) < n.

Devemos escolher um n adequado:

• n nao deve ser uma potencia de 10 (10r)

• n|10m ± a onde a e m sao pequenos. Por exemplo, sen = 111|(103 − 1) = 999 entao 103 ≡ 1 (mod n) e portantoos numeros:

64121284868 e 64184821268

vao para a mesma posicao de memoria.

Tabela hashing

n = primo proximo do # p.m. Exemplo, 5000 p.m., 2000

estudantes: n = 4969.

Mesmo assim, colisoes podem ocorrer.

Heurısticas para tratamento de colisoes:

• Metodo mais usado: escolher uma posicao livre. Mais simples:

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

Problema: engarrafamento!

• na pratica: “atachar” uma lista a cada p.m.

Criptografia RSA- pre-codificacao

• Converter a mensagem em uma sequencia denumeros pre-codificacao.

• Letras A a Z (maiusculas) + espacos embranco entre palavras (99).

• A = 10, B = 11, etc, Z = 35.

• Numeros com exatamente dois algarismos.

Page 25: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Pre-codificacao

Chave publica: n = p.q, p e q primos.Devemos quebrar a mensagem em blocos:numeros menores que n. Deve-se evitar:

• Nao comecar com o numero 0 (problemas nadecodificacao).

• Os blocos nao devem corresponder anenhuma unidade linguıstica (palavra, letra,etc): decodificacao por contagem defrequencia fica impossıvel.

Codificando

Para codificar: n = p.q e inteiro positivo e que sejainversı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 dosistema RSA.

Codificando cada bloco b:

C(b) ≡ be (mod n)

Onde 0 ≤ C(b) < n.

Importante: Nao reunir os blocos apos a codificacao.

Exemplo

Paraty e linda:

2510271029349914992118231310

Tome n = 11.13 = 143. Quebrando a mensagem em blocos:

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

Como φ(143) = 10.12 = 120, tomamos 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)

Obtemos assim a seguinte mensagem cifrada:

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

Decodificando

(n, d) = chave de decodificacao onde d e oinverso de e modulo φ(n). D(c) e dado por:

D(c) ≡ cd (mod n)

onde 0 ≤ D(c) < n.

Observe que e muito facil calcular d, desdeque φ(n) e e sejam conhecidos: basta aplicaro algoritmo euclideano estendido.Entretanto, se nao conhecemos p e q epraticamente impossıvel calcular d.

Page 26: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Exemplo

Voltando ao nosso exemplo, temos quen = 143 e e = 7. Para calcular d, usamos oalgoritmo euclideano estendido:

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

Logo o inverso de 7 modulo 120 e −17. Comod deve ser usado como um expoente,precisamos que d seja positivo. Logotomamos d = 120 − 117 = 103.

Funciona?

Pergunta obvia que surge:

D(C(b)) = b?

Ou seja, decodificando um bloco de mensagemcodificada, encontramos um bloco da mensagemoriginal?

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 da

codificacao!

Funciona!

Por definicao:

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

Mas d e o inverso de e modulo φ(n). Logoexiste 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 oteorema de Euler:

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

Funciona!

Se b e n nao sao primos entre si, obderve quen = 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 oteorema de Fermat (bp−1 ≡ 1 (mod p)). Senao, temos que p|b e portanto

bed ≡ b ≡ 0 (mod p)

Page 27: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Funciona!

Logo,bed ≡ b (mod p)

qualquer que seja b.

Fazemos o mesmo para o primo q, obtendo:

bed ≡ b (mod p)

Portanto,bed ≡ b (mod p.q)

como querıamos.

Porque o RSA e seguro

O RSA so e seguro se for difıcil calcular dquando apenas esse par e conhecido. Mas dsomente se φ(n): fatoracao de n.

Por que nao outro processo para calcular d eφ(n)? Resposta:

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

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

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

Logo,

p − q =√

√(p + q)2 − 4n

Porque o RSA e seguro

Outro jeito de quebrar o RSA seria acharum algoritmo que calcule d diretamente apartir de n e e. Como ed ≡ 1 (mod φ(n)), istoimplica que conhecemos um multiplo deφ(n). Isso tambem e suficiente para fatorar n(prova complicada).

A ultima alternativa seria achar b a partir daforma reduzida de be modulo n sem achar d.Bom, ninguem conseguiu fazer isso ateagora... Acredita-se que quebrar o RSA efatorar n sejam problemas equivalentes,apesar disso nao ter sido demonstrado.

Escolhendo primos

RSA de chave publica (n, e), n com aproximadamenter algarismos.

Escolha um primo p entre 4r10 e 45r

100 algarismos e q

proximo de 10r

p .

Tamanho da chave recomendado atualmente: 768 bits.n tera 231 algarismos. p e q: 104 e 127 algarismosrespectivamente.

Importante: p − 1, q − 1, p + 1, p − 1 nao tenham fatores

primos pequenos, pois senao seria facil fatorar n.

Page 28: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Escolhendo primos

Para encontrar p e q, seguiremos a seguinte estrategia:

1. Tome um numero s ımpar.

2. Verifique se s e divisıvel por um primo menor que5.000.

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

Se x e um numero da ordem de 10127, no intervalo

entre x e x + 104 existem aproximadamente 34 primos

dentre 560 numeros que passam a etapa (1) da

estrategia acima...

Assinaturas

• Apenas codificar mensagens nao basta: sistema e dechave publica.

• Um haker poderia facilmente mandar instrucoes aobanco para que o seu saldo bancario fosse transferidopara uma outra conta.

• Por isso, o banco precisa de uma garantia de que amensagem teve origem em um usuario autorizado.

• Ou seja, a mensagem tem que ser assinada .

Assinaturas

Cm e Dm: codificacao e decodificacao do Mario e de Ca

e Da as funcoes do Allan.b: de Mario para Allan.

Mensagem assinada:

Ca(Dm(b))

Para ler a mensagem: Allan 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 em 1995 por um consultor em

assuntos de seguranca de computadores...

Exercıcios propostos

1,2,3,4,6

Page 29: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

1o trabalho pratico

O trabalho tem como objetivo a criacao de dois numeros primos

grandes (entre 20 e 30 bits). Para isso:

• Gere dois numeros ımpares m e k da magnetude acima, de modo

que nao sejam muito proximos um do outro.

• 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 para mais primos).

Depois calcule n = m.k e aplique os algoritmos da fatoracao e de

Fermat a n para ver se sua chave publica e facilmente quebrada.

Equacoes lineares

ax ≡ b (mod n)

Se a possui um inverso α em Zn, entao:

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

Em particular, se n e primo e a\ ≡ 0(mod n), entao a equacao acima sempre tem(uma unica) solucao.

Equacoes lineares

Se mdc(a, n) = d 6= 1, 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:

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

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

3x ≡ 2 (mod 4)

Logo,x ≡ 2 (mod 4) ou 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 eoutra solucao.

Equacao linear possui mais de uma solucao!

Page 30: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Um exemplo astronomico

Tres satelites passarao sobre o Rio essanoite. O primeiro a uma hora , o segundoas 4 horas e o terceiro as 8 horas damanha. O primeiro leva 13 horas paracompletar uma volta em torno da terra, osegundo 15 horas e o terceiro 19 horas.Determine quantas horas decorrerao. apartir de meia noite, ate que os tre satelitespassem ao mesmo tempo sobre o Rio.

Um exemplo astronomico

x = numero de horas quando os tres satelitespassarao juntos sobre o Rio. Entao:

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

Podemos re-escrever a primeira equacao cmox = 1 + 13t, Substituindo a primeira equacaona segunda, obtemos:

≡ 6 (mod 15)

Um exemplo astronomico

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

u ≡ 1 (mod 19)

Logo,x = 79 + 195u

= 274 + 3705v

Logo os satelites passarao juntos pelaprimeira vez 274 horas depois da meia noitede hoje.

Algoritmo chines do resto

A solucao de um sistema de muitas equacoes e obtidaatraves da solucao de varios sistemas 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.

Page 31: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Algoritmo chines do resto

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

n. Entao:

y ≡ α(b − a) (mod n)

y = α(b − a) + nz

x = a + mα(b − a) + mnz

x = a(1 − mα) + mαb + mnz

x = aβn + mαb + mnz

Teorema Chines do resto. Sejam n1, . . . , nk inteiros positivos, dois

a dois primos entre si. Entao o sistema

x ≡ a1 (mod n1)...

x ≡ ak (mod nk)

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

Modulos nao co-primos

Considere o sistema:

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

Da primeira equacao, obtemos x = 3 + 12y.Substituindo isso na segunda equacao, temos12y ≡ 16 (mod 8). Dividindo essa equacaopor 4, obtemos 3y ≡ 4 (mod 2). Logo,

x ≡ 3 (mod 24)

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

Partilha de senhas

Senha s partilhada entre n pessoas: cadapessoa possui um elemento (uma parte) dasenha. Elemento: escolhido de um conjuntoS de n pares de inteiros positivos de modoque, para um inteiro positivo k ≤ npreviamente escolhido temos:

1. qualquer subconjunto de S com kelementos permite determinar s facilmente;

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

Partilha de senhas

Conjunto L de n inteiros positivos, dois a dois primosentre si. Seja N o produto dos k menores numeros deL e M o produto dos k − 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 L e sempre maior que N e o

produto de menos de k elementos e sempre menor

que M. O conjunto S sera formado pelos pares da

forma (m, sm) onde m ∈ L e sm e a forma reduzida de s

modulo m. Observe que limiar k ≥ 1 implica s > m

para qualquer m ∈ L. Logo sm < s para qualquer

m ∈ L.

Page 32: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Partilha de senhas

Suponhamos que sejan conhecidos telementos, ≥ k: (m1, s1), . . . , (mt, st). Vamosresolver o sistema de congruencias:

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

. . .x ≡ st (mod mt)

obtendo x0 como solucao. Pelo teoremachines do resto,

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

Partilha de senhas

Observacoes:

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

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

Partilha de senhas

Exemplo. Digamos que em um banco ha 5 funcionarios e pelo

menos 2 tem que estar presentes para que o cofre seja aberto.

Logo o conjunto L deve ter 5 elementos, e seu limiar deve ser 2.

Uma escolha possıvel escolhendo apenas primos pequenos e

L = {11, 13, 17, 19, 23}

O valor de s pode ser escolhido como sendo qualquer inteiro no

intervalo que vai 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, para obter a senha e preciso resolver o sistema

x ≡ 13 (mod 17)

x ≡ 7 (mod 23)

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

Exercıcios propostos

1,2,4

Page 33: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Algebra e ciencia da computacao

• Principal aplicacao de matematica em cienciada computacao: definicao de semanticaformal em linguagens de programacao.

• “Semantica” = relacao entre palavras esentencas de uma linguagem (escrita oufalada) e os seus significados.

• Area que tem recebido muita atencao emlinguıstica e filosofia, que estudam osignificado de sentencas na linguagemnatural.

Algebra e ciencia da computacao

• Segunda area de estudo de semantica: significado desentencas em linguagens formais de logicamatematica, originalmente projetada para servircomo “fundacao” da matematica.

• Na aula de hoje: terceira area da semantica: objetivode desenvolver tecnicas para expressar a semantica delinguagens utilizadas para programacao decomputadores.

• Uso de estruturas matematicas tais como grupos,domınios e teoria de categorias na descricao desemantica de linguagens imperativas (como o Pascal)e funcionais (como ML, Haskell).

Semantica

Linguagens de computadores: sequencia decomandos, determinados por sentencas imperativas.Em linguagem natural, tais sentencas sao aquelas quepodem ser encontradas em um livro de receitas:

Bata a clara do ovo ate ficar dura.

Em contraste, sentencas de logica matematica visamestabelecer verdades absolutas:

Quando batida, a clara do ovo fica dura.

Semantica

Muitas pesquisas em metodos para analisar programas em uma

certa linguagem procuram formalizar a relacao entre os dois

exemplos citados acima. Afinal de contas, a sentenca logica (2)

garante que uma pessoa que execute o que manda a sentenca

imperativa (1) vai ter sucesso em terminar a tarefa de mudar a

consistencia da clara do ovo.

Desta forma, uma maneira de descrever comandos (que sao

sentencas imperativas) de uma linguagem de programacao e

estabelecendo uma relacao entre o estado do computador antes e

depois da execucao do comando (como descrito por sentencas

logicas). Essa interpretacao relacional de fragmentos de

programa pode ser formalizada atraves da semantica

denotacional.

Page 34: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Semantica

Semantica do comando if:

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

Semantica do comando while:

[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])

Por que?

Qual e o objetivo de se estudar semantica delinguagens de programacao?

1. Prover uma descricao precisa para tornar possıvelaos implementadores construir um compilador.

2. fornecer uma descricao precisa para osprogramadores, tornando possıvel que estes facamafirmativas rigorosas sobre o comportamento deprogramas por eles escritos;

3. fornecer ferramentas para os designers de linguagensde programacao, para que possam sugerir linguagensmelhores, confiaveis e com descricoes formaissimples.

Semantica Denotacional

• Semantica que mapeia construtores sintaticos deprogramas em valores abstratos (numeros, funcoes,etc) que eles denotam.

• Esses “mapeamentos” sao usualmente definidosrecursivamente (como no cado do while acima).

• Cuidados devem ser tomados quando trabalhamoscom funcoes recursivas. Para “modelar” o espaco detodas as funcoes recursivas precisarıamos de umconjunto X que contivesse todo o espaco de funcoesX −→ X. Por questoes de cardinalidade, sabemos queisso e impossıvel.

Semantica denotacional

• Modelo para funcoes recursivas X −→ Xrestritas a funcoes contınuas em X (deacordo com uma certa topologia).

• Esse modelo, chamado de teoria de domınio,e utilizado para descrever a semanticadenotacional do λ-calculus, base delinguagens de programacao funcionais.

• Utilizando o λ-calculus, podemos facilmentedescrever a semantica denotacional delinguagens como o Algol60, base do Pascal.

Page 35: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Semantica Categorica

Outro tipo de semantica que tem sido muitoestudada e a semantica categorica. As ideiasbasicas desse topico (muito em modaatualmente) sao elegantes e de facilentendimento para um aluno da graduacaocom alguma maturidade na area de Algebra.

λ-Calculus

• Funcoes como regras, e nao como graficos.

• Interesse: estudar os aspectoscomputacionais das funcoes.

• Uma funcao pode ser aplicada a ela mesma:impossıvel na teoria de conjuntos de ZF(axioma da fundacao).

λ-Calculus

Exemplos:

• A funcao identidade f (x) = x : R−→R eescrita como:

λx.x

• Se quisermos aplicar essa funcao a 1:

(λx.x)1 = 1

Observe que, em λ-calculus, podemos aplicara funcao identidade a qualquer tipo devariavel...

Raızes primitivas

Para determinar se n e primo, podemos verificar seφ(n) = n − 1. Ou seja, se mdc(a, n) = 1 para todo amenor que n. Isso so e possıvel se n e primo. Logoprecisamos encontrar um jeito de calcular φ(n) semfatorar n. Mas ja vimos que isso e impossıvel...

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

bp−1 ≡ 1 (mod p)

masbr\ ≡ 1 (mod p)

se r < p − 1.

Page 36: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Teorema de Lagrange

Ordem de b ∈ Un = k tal que bk ≡ 1 (mod n)e br\ ≡ 1 (mod n) se r < k.

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

Logo, dado n ımpar, se existe b tal que aordem de b em Un e n − 1, entao n e primopois terıamos n − 1 ≤ φ(n) ≤ n − 1.

Teorema da raiz primitiva: n primo ⇒ tal bsempre existe. Encontra-lo e uma questao desorte...

Teste de Lucas

Para aplicar isso a primalidade, precisamosencontrar uma maneira eficiente de mostrarque a ordem de um elemento de U(n) eexatamente n − 1.

Teste de Lucas. Sejam n ımpar e1 ≤ b ≤ n − 1. Se

bn−1 ≡ 1 (mod n)

e

bn−1p \ ≡ 1 (mod n)

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

Teste de Lucas - Prova

• Seja k a ordem de b em U(n). Queremosmostrar que k = n − 1.

• bn−1 ≡ 1 (mod n), ⇒ k|(n − 1). Digamos quen − 1 = k.t

• Suponhamos t > 1. Entao existe q primo talque q|t:

n − 1

q= k.

t

q

Teste de Lucas - Prova

• Logo, k divide n−1q e portanto,

bn−1/q ≡ 1 (mod n)

ABSURDO!

• Logo t = 1 e k = n − 1 ⇒ n e primo.

Page 37: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Teste de Lucas

• Testes anteriores: determinavam comcerteza numeros compostos.

• Teste de Lucas: determina com certezanumeros primos.

• Mas... precisamos fatorar n − 1!

• Finalmente: nao existe metodo eficiente paraescolher a base b!

Teste de Pepin

O numero de Fermat F (k) e primo para k > 1se e somente se

5(F (k)−1)/2 ≡ −1 (mod F (k))

Claro que, pelo teste de Lucas, se a equacaoacima vale, entao F (k) e primo. A recıprocae mais difıcil...

Exemplo

R(19) = 1111111111111111111

R(19) − 1 = 2.33.5.7.11.13.19.37.52579.333667

Se b = 2,

2(R(19)−1)/2 ≡ 1 (mod R(19))

ou seja, 2 nao e uma boa base. Mas 3 e...(veja livro texto).

Numeros de Carmichael

Falta apenas provar: n de Carmichael ⇒ (2).

Suponhamos n de Carmichael:

bn ≡ b (mod n) ∀1 < b < n − 1

Seja p primo que divide n. Pelo teorema daraiz primitiva, existe b ∈ U(p) tal que aordem de b e p − 1.

Page 38: Teoria de nu´meros e criptografia RSA - mat.ufmg.brelaine/Clube/slides.pdfAlgoritmo da divis˜ao •Objetivo: encontrar o quociente q e o resto r (sa´ıda) da divis˜ao entre dois

Numeros de Carmichael

Mas bn − b e divisıvel por n. Como p divide n,temos tambem que p divide bn − b. Ou seja,

bn ≡ b (mod p)

Como b e inversıvel modulo p,

bn−1 ≡ 1 (mod p)

Logo, pelo teorema de Lagrange, a ordem deb divide n − 1. Ou seja, (p − 1)|(n − 1).

Outro teste de primalidade

Exemplo: n = 41. Logo n − 1 = 40 = 23.5. Testede Lucas:

• b40 ≡ 1 (mod 41)

• b20\ ≡ 1 (mod 41)

• b8\ ≡ 1 (mod 41)

Mas 220 ≡ 1 (mod 41) e 38 ≡ 1 (mod 41)...

Teste de primalidade

Seja n > 0 inteiro tal que

n − 1 = pe11 . . . per

r

Se, para cada i = 1, . . . , r existirem inteirospositivos bi, (2 ≤ bi ≤ n − 1) que satisfacam

bn−1i ≡ 1 (mod n)

b(n−1)/pii \ ≡ 1 (mod n)