• Nenhum resultado encontrado

Teoria de números e criptografia RSA

N/A
N/A
Protected

Academic year: 2022

Share "Teoria de números e criptografia RSA"

Copied!
49
0
0

Texto

(1)

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. CoutinhoN´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¸ c˜ ao

O objetivo desse curso ´e estudar o m´etodo de criptografia de chaves p´ublicas conhecido comoRSA. Para entender como este m´etodo funciona, ´e necess´ario o estudo de alguns conceitos de uma ´area da matem´atica chamada Teoria de n´umeros. E, ´e claro, espera-se desenvolver, ao longo do curso, o racioc´ınio l´ogico matem´atico dos alunos, introduzindo m´etodos de prova de teoremas como indu¸c˜ao matem´atica e demonstra¸c˜ao por absurdo.

Deve ficar bem claro que este ´e um curso de matem´atica para cientistas da computa¸c˜ao. Isto ´e, o rigor nunca ser´a deixado de lado mas a aten¸c˜ao estar´a sempre voltada para a aplica¸c˜ao principal proposta: criptografia RSA.

(2)

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

• Substituir letras por s´ımbolos - contagem de frequˆencia:

– vogais s˜ao mais frequentes;

– letra mais frequente: A;

– monoss´ılabo de uma letra = vogal;

– consoantes mais frequentes: SeM

M´etodo de contagem de frequˆencia de caracteres pode ser usado para decifrar inscri¸c˜oes antigas.

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

• Internet e criptografia: seguran¸ca,assinatura.

• Chave p´ublica: saber codificar n˜ao implica saber decodificar!

2.2 Criptografia RSA

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

• Codifica¸c˜ao: basta conhecer o produto de dois primos (n = pq). n ´e chamadochave p´ublica.

• Decodifica¸c˜ao: precisamos conhecerpeq(chave de decodifica¸c˜ao).

• Decifrar RSA = fatora¸c˜ao de n. Se n possui 150 algarismos ou mais, fator´a-lo levaria milhares de anos.

• Obs: ´E dif´ıcil determinar os fatores primos de um n´umero composto, mas ´e poss´ıvel verificar se um n´umero ´e primo ou composto sem tentar fator´a-lo.

• Teoria de n´umeros: parte da matem´atica que estuda n´umeros inteiros.

(3)

2.3 Computa¸ c˜ ao alg´ ebrica

• Chave p´ublica do RSA: multiplica-se dois primos muito grandes.

• Pascal, C: n˜ao permitem lidar com n´umeros dessa magnitude.

• Computa¸c˜ao alg´ebrica: trata do c´alculo exato com inteiros, fra¸c˜oes, etc.

Exemplo: Mathematica, Maple.

• Inteiro de tamanho indeterminado: de tamanho flex´ıvel, grandes o sufi- ciente. Restri¸c˜oes: tamanho da mem´oria, estruturas de dados (vetores de tamanhos pr´e-fixados).

• Inteiros = listas! Algarismos = elemento da lista; opera¸c˜oes de soma e multiplica¸c˜ao: usuais, como com l´apis e papel. Divis˜ao ´e mais compli- cado...

3 Algoritmo da divis˜ ao de Euclides

3.1 Algoritmos

• Algoritmo = processo de c´alculo baseado em regras formais.

• Especifica¸c˜ao de um algoritmo: entrada + instru¸c˜oes + sa´ıda.

• Perguntas:

– ao executarmos um conjunto de instru¸c˜oes, sempre chegaremos a um resultado? (ponto fixo)

– o resultado obtido ´e sempre o desejado? (semˆantica)

3.2 Algoritmo da divis˜ ao

• Objetivo: encontrar o quocienteqe o restor(sa´ıda) da divis˜ao entre dois inteiros positivosaeb (entrada):

a=bq+r 0≤r < b.

• Algoritmo da divis˜ao:

Etapa 1: q= 0; r=a

Etapa 2: Ser < b, pare. Nesse caso, o quociente ´eq e o restor.

Etapa 3: Ser≥b, fa¸ca r:=r−b,q:=q+ 1 e volte `a Etapa 2.

• Observa¸c˜oes:

(4)

1. O algoritmo semprepara: sequˆencia decrescente de n´umeros inteiros positivos.

2. O resultado da aplica¸c˜ao do algoritmo corresponde `as especifica¸c˜oes da sa´ıda (trivialmente).

3. O algoritmo ´eextremamente ineficiente, em especial sea >> b.

3.3 Teorema da Divis˜ ao

Teorema 1 (Teorema de divis˜ao) Sejam a e b inteiros positivos. Existem n´umeros inteiros qe rtais que

a=bq+r 0≤r < b Al´em disso,qer s˜ao ´unicos.

Prova .

Unicidade - Sejamq, 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

Comob >0, temos

0≤q−q<1 ou seja,q−q= 0→q=q er=r.

3.4 Algoritmo Euclideano

• Objetivo: Calcular omdcentre dois n´umeros inteiros.

• Defini¸c˜ao: o m´aximo divisor comum entrea e b ´e o n´umero d tal que:

– d|a(oud´e divisor dea) – d|b

– sed´e divisor deaeb, ent˜aod|d(em outras palavras,d´e o m´aximo divisor deaeb.

(5)

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

• Algoritmo Euclideano: Dados dois n´umeros inteiros positivos a e b 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 e assim por diante.

O ´ultimo resto diferente de zero dessa sequˆencia de divis˜oes ´e o mdc(a, b).

• Exemplo:

1234 54 46 8 6 2

46 8 6 2 0

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

• Perguntas:

1. Por que o ´ultimo resto n˜ao nulo ´e omdc?

2. Por que o algoritmo para?

• Respostas:

a = bq1+r1 e 0≤r1< b b = 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 sequˆencia ´e finita, o algoritmo sempre para. Mais ainda, o n´umero de divis˜oes efetuadas ´e no m´aximo b (por que?).

– Primeira pergunta: demonstra¸c˜ao do algoritmo euclideano

3.5 Demonstra¸ c˜ ao do algoritmo euclideano

Lema 2 Sejama eb n´umeros inteiros positivos. Se existem inteirosg e stais quea=bg+s, ent˜ao mdc(a, b) =mdc(b, s).

Prova . Sejam

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

(6)

Afirmamos qued1≤d2. De fato,d1´e o m´aximo divisor deaeb. Logod1divide aeb e portanto existem inteiros positivosuev tais que:

a=d1u eb=d1v Substituindoaeb na equa¸c˜aoa=bg+sobtemos

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

Ou seja,d1 divides. Comod1tamb´em divideb,d1´e um divisor comum deb e s. Masd2´e o maior divisor debese portanto (por defini¸c˜ao)d1≤d2como quer´ıamos.

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

Teorema 3 Dados ae b inteiros positivos, o ´ultimo resto diferente de zero da sequˆencia de divis˜oes dada pelo algoritmo euclideano para a e b ´e o m´aximo divisor comum entrea eb.

Prova .

Aplicando o algoritmo aaeb, temos:

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

r1 = r2q3+r3 e 0≤r3< r2

r2 = r3q4+r4 e 0≤r4< r3

... ...

rn2 = rn1qn e rn= 0

Da ´ultima linha, temos quern1dividern2e portantomdc(rn1, rn2) =rn1. Aplicando sucessivamente o lema 2, temos quemdc(a, b) =rn1.

3.6 Algoritmo euclideano estendido

O resultado que mais vamos usar durante o curso sobremdc´e o seguinte:

Teorema 4 Sejam a e b inteiros positivos e seja d o m´aximo divisor comum entreaeb. Esxistem inteirosαeβ tais que

α.a+β.b=d.

Para demonstra¸c˜ao desse teorema, veja o livro texto, pag 29-31.

Vamos ilustrar a demonstra¸c˜ao atrav´es de um exemplo num´erico:

(7)

Exemplo 1 Sejama= 1234eb= 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 calcular46em fun¸c˜ao de1234e54. Ent˜ao, 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 quemdc(1234,54) = 2.

Observe que o teorema n˜ao diz que os valores deαeβ s˜ao ´unicos. Na verdade, existe uma infinidade de n´umeros que satisfazem a equa¸c˜aoαa+βb=d.

Pergunta: para que serve calcularαeβ?

Resposta:

• unicidade de fatora¸c˜ao de um inteiro;

• RSA depende de um m´etodo eficiente de c´alculo de αeβ.

3.7 Exerc´ıcios propostos

N˜ao deixem de fazer os seguintes exerc´ıcios do cap´ıtulo 1:

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

(8)

4 Fatora¸ c˜ ao ´ unica

4.1 Teorema da fatora¸ c˜ ao ´ unica

Dizemos que um n´umero inteiro positivo p´e primo sep 6= 1 e os ´unicos divisores deps˜aope 1.

Se um n´umero inteiro positivo (diferente de 1) n˜ao ´e primo, ent˜ao ele ´e chamado de composto .

Teorema 5 (Teorema da fatora¸c˜ao ´unica) Dado um inteiro positivon≥2 podemos sempre escrevˆe-lo, de maneira ´unica, na forma:

n=pe11. . . . .pekk

onde 1 < p1 < p2 < . . . < pk s˜ao n´umeros primos e e1, . . . , ek s˜ao inteiros positivos (multiplicidades).

4.2 Existˆ encia da fatora¸ c˜ ao

Algoritmo ingˆenuo: Dadon≥2 inteiro positivo, tente dividirnpor cada um dos inteiros de 2 an−1. Se algum desses inteiros (digamosk) dividirn, ent˜ao achamos um fator den.

Perguntas:

1. k´e primo ou composto?

2. Quando se deve parar a busca? Emn−1?

Respostas:

1. k ´e primo. De fato, suponhamos k composto. Logo, k = a.b com 1 <

a, b < k. Comokdivide n, existe (por defini¸c˜ao)cinteiro tal quen=k.c.

Logo,

n=a.b.c

ou seja,a ebs˜ao fatores de nmenores que k, o que contraria a hip´otese da minimalidade dek. Logo,k´e primo.

2. Na verdade, podemos parar o algoritmo em √n. De fato, n = k.c ou c = nk. Como k ´e o menor fator de n, k ≤ c. Logo, k ≤ nk ou 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. Ent˜ao, aplicamos o

(9)

algoritmo ao n´umero qn1, determinando q2, o segundo fator primo de n. Para determinar o terceiro fator primoq3, aplicamos o algoritmo ao n´umero q1n.q2 e assim por diante, at´e chegarmos em q1.q2...qn s

1 =qs, comqs primo. Observe queq1≤q2≤. . .≤qs1≤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 Eficiˆ encia do algoritmo ingˆ enuo de fatora¸ c˜ ao

O algoritmo ´e simples mas muito ineficiente!

Exemplo 3 Seja n um n´umero 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 divis˜oes por segundo. Logo levaremos 10105010 = 1040 segundos, ou seja, 1031 anos na frente da tela do computador aguardando... Observe que o tempo estimado de existˆencia do universo ´e1011 anos!

O algoritmo ´e bom para n´umeros pequenos. ´E importante ressaltar que n˜ao existe (atualmente) algoritmo de fatora¸c˜ao eficiente para todos os inteiros . Disso depende a seguran¸ca do RSA!

N˜ao se sabe, entretanto, se tal algoritmo n˜ao existe mesmo ou se n˜ao fomos espertos o suficiente para invent´a-lo...

4.4 Fatora¸ c˜ ao por Fermat

• Eficiente quandontem um fator primo n˜ao muito menor que√n.

• Id´eia: tentar achar n´umeros inteiros positivosxey tais quen=x2−y2.

• Caso mais f´acil: n=r2 (x=r ey= 0).

• Sey >0, ent˜ao

x=p

n+y2>√ n

Nota¸c˜ao: escrevemos [r] como a parte inteira do n´umero realr.

Algoritmo de Fermat:

Etapa 1: Fa¸cax= [√n]; sen=x2, pare.

(10)

Etapa 2: Incrementexde uma unidade e calculey=√ x2−n.

Etapa 3: Repita a etapa 2 at´e encontrar um valor inteiro paray, ou at´e quex= n+12 . No primeiro caso,ntem fatoresx+y ex−y; no segundo,n´e primo.

Exemplo 4 Seja n= 1342127. Temos quex= 1158. Mas x2= 11582= 1340964<1342127 Logo, passamos a incrementarxat´e que

px2−n

seja inteiro oux=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= 1164ey= 113. Os fatores procurados s˜aox+y= 1277ex−y= 1051.

Faremos aqui apenas a demonstra¸c˜ao de que, se n´e primo, ent˜ao o ´unico valor poss´ıvel parax´e x= n+12 . Relembrando,x ey s˜ao inteiros positivos tais que n=x2−y2. Ou seja,

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

Como estamos supondonprimo, temos quex−y= 1 ex+y=n. Logo, x= 1 +n

2 e y= n−1

2 como quer´ıamos.

Veja a demonstra¸c˜ao completa do algoritmo no livro texto, p´aginas 41 a 43.

Observa¸c˜ao: Esse algoritmo diz algo importante sobre o RSA. Se escolhermos pe q muito pr´oximos, ent˜ao n =p.q ´e facilmente fator´avel pelo algoritmo de Fermat.

4.5 Propriedade fundamental dos primos

Lema 6 Sejama, b, cinteiros positivos e suponhamos queaebs˜ao primos entre si. Ent˜ao:

1. Se bdivide o produto a.cent˜aob divide c.

(11)

2. Se aeb dividem cent˜ao o produtoa.b dividec.

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

α.a+β.b= 1 Ent˜ao,

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

Comobdivide a.cpela hip´otese (1) e comobdivide β.b.c, ent˜ao bdividec.

Para provar a segunda afirmativa, sea dividec, podemos escreverc=at para algum inteiro t. Mas b tamb´em dividec. Comomdc(a, b) = 1, pela afirma¸c˜ao (1),bdivide t. Logo,t=b.k para algum inteiroke 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 inteiros positivos. Sepdivide o produtoa.b, ent˜aopdividea ou pdivideb.

A demonstra¸c˜ao fica como exerc´ıcio (fa¸cam!).

4.6 Unicidade

A prova de unicidade da fatora¸c˜ao de n´umeros primos decorre facilmente da propriedade fundamental dos primos. A demonstra¸c˜ao se d´a por absurdo.

Sejanomenor inteiro positivo que admite duas fatora¸c˜oes distintas. Podemos escrever:

n=pe11. . . . .pekk =q1r1. . . . .qsrs

ondep1< p2< . . . < pk eq1 < q2 < . . . < qss˜ao primos e e1, . . . , ek, r1, . . . , rs

s˜ao inteiros positivos.

Comop1dividen, pelapropriedade fundamental dos primosp1 deve dividir um dos fatores do produto da direita. Mas um primo s´o pode dividir outro se forem iguais. Ent˜aop1=qj para algumj entre 1 es. Logo,

n=pe11. . . . .pekk = q1r1. . . . .qjrj. . . . .qsrs

= q1r1. . . . .pr1j. . . . .qsrs

Podemos ent˜ao cancelarp1que aparece em ambos os lados da equa¸c˜ao, obtendo m=pe111. . . . .pekk =q1r1. . . . .pr1j1. . . . .qrss

onde m ´e um n´umero menor que n que apresenta duas fatora¸c˜oes distintas.

ABSURDO pois isso contraria a minimalidade den.

(12)

4.7 Exerc´ıcios propostos

1. Prove apropriedade fundamental dos primos.

2. Demonstre que, sep´e um n´umero primo, ent˜ao√p´e um n´umero irracional.

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

5 N´ umeros primos

At´e agora:

• propriedades b´asicas dos n´umeros inteiros;

• dois algoritmos fundamentais;

Nessa se¸c˜ao, discutiremos m´etodos ingˆenuos para encontrar primos.

5.1 F´ ormulas Polinomiais

Considere o polinˆomio:

f(x) =an.xn+an1.xn1+. . .+a1.x+a0

ondean, an1, . . . , a1, a0s˜ao n´umeros inteiros e que satisfaz a condi¸c˜ao:

f(m) ´e primo, para todo inteiro positivom Exemplo 5 Seja f(x) =x2+ 1 Logo,

x f(x)

1 2

2 5

3 10

4 17

5 26

6 37

7 50

8 65

9 82

2 5

• x´ımpar→f(x) par;

• f(8) = 65 composto...

(13)

A pergunta que surge ent˜ao ´e: isso ´e fruto do azar?

Teorema 7 Dado um polinˆomio f(x)com coeficientes inteiros, existe uma in- finidade de inteiros positivosmtais que f(m)´e composto.

Prova .

Vamos Provar o teorema apenas no caso em que o polinˆomio tem grau 2. Ou seja, consideraremosf do tipo:

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

Podemos supor a > 0. Suponhamos que existam tal que f(m) =p ondep´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)

Ou seja, se 1+2amh+aph2+bh´e composto ent˜aof(m+hp) tamb´em ´e composto.

Mas isso ´e verdade sempre que

1 + 2amh+aph2+bh >1 ou seja, se

2amh+aph2+bh=h.(2am+aph+b)>0 Como podemos sempre tomarhpositivo, temos:

2am+aph+b >0→h > −b−2am a.p

Existe uma infinidade de n´umeros dessa forma. Logo, se existe inteiro m tal quef(m) ´e primo, ent˜ao existe uma infinidade de tais n´umeros.

Conclus˜ao: n˜ao existe uma f´ormula polinomial (em uma vari´avel) para primos .

5.2 F´ ormulas exponenciais: n´ umeros de Mersenne

• N´umeros de Mersenne s˜ao aqueles da forma:

M(n) = 2n−1 onden´e um inteiro n˜ao negativo.

• N´umeros perfeitos s˜ao aqueles iguais `a metade da soma de seus divi- sores. Ex: 6 = 12/2 e 12 = 1 + 2 + 3 + 6

(14)

• Nenhum primo ´e perfeito.

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

• Outro resultado: Todo n´umero perfeito par possui a forma acima. Ex:

6 = 221(22−1)

• O que n˜ao se sabe: se existem n´umeros perfeitos ´ımpares.

• Pergunta: Quais s˜ao os n´umeros de Mersenne primos? Exemplos: quando n= 2,3,5,7,13,17,19,31,61.... Observe que os expoentes s˜ao todos pri- mos, mas nem todos primos fazem parte dessa lista. Por exemplo,

M(11) = 2047 = 23.89

5.3 F´ ormulas exponenciais: n´ umeros de Fermat

• N´umeros de Fermat s˜ao aqueles da forma:

F(n) = 22n+ 1 onden´e um inteiro n˜ao negativo.

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

´e composto!

• Poucos primos de Fermat s˜ao conhecidos.At´e hoje, n˜ao se descobriu nen- humF(n) primo comn≥5.

5.4 F´ ormulas fatoriais

Sejapum primo positivo. Construiremos uma fun¸c˜ao semelhante ao fatorial, s´o que apenas os primos s˜ao multiplicados. Vamos cham´a-la dep#. Ou seja,p#´e o produto de todos os primos menores ou iguais ap. Ex: 5#= 2.3.5 = 30 Observe que sepeqs˜ao primossucessivos, ent˜ao

p#=q#.p

Estaremos interessados nos n´umeros da forma p#+ 1. Embora p#+ 1 nem sempre seja primo (Ex. 13#+ 1 = 30031 = 59.509), podemos mostrar que n˜ao tem nenhum fator primo menor ou igual ap. Desta forma, temos um algoritmo para calcular primo.

Pergunta: qual ´e o problema de tal algoritmo?

Observa¸c˜ao final: p#+ 1 quase nunca ´e primo!

(15)

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 est˜ao ordenados, de modo que pk ´e o maior deles. Considere o n´umerop#k + 1. Como vimos, esse n´umero possui fator primo maior quepk. ABSURDO!

5.6 Crivo de Erat´ ostenes

O crivo de Erat´ostenes ´e o mais antigo dos m´etodos para encontrar primos.

Etapa 1: Listamos os n´umeros ´ımpares de 3 an.

Etapa 2: Procure o primeiro n´umerokda lista. Risque os demais n´umeros da lista, dekemk.

Etapa 3: Repita a etapa 2 at´e chegar emn.

Observa¸c˜oes:

1. Podemos parar em√n...

2. Podemos come¸cara riscar a partir dek2...

5.7 Crivo de Erat´ ostenes revisado

Etapa 1: Crie um vetorv de n21 posi¸c˜oes, preenchidas com o valor 1; fa¸caP = 3.

Etapa 2: SeP2> n, escreva os n´umeros 2j+ 1 para os quais a j-´esima entrada de v´e 1 e pare;

Etapa 3: Se a posi¸c˜ao (P21) dev est´a preenchida com 0 incrementeP de 2 e volte

`a Etapa 2.

Etapa 4: Atribua o valorP2 a uma nova vari´avelT; substitua por zero o valor da posi¸c˜ao (T21) e incrementeT de 2P; repita at´e queT > n; incremente P de 2 e volte `a Etapa 2.

(16)

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 Aritm´ etica modular

Aritm´etica modular = aritm´etica dos fenˆomenos c´ıclicos.

Exemplos: Horas, dias do mˆes, letras do alfabeto, etc.

6.1 Rela¸ c˜ oes de equivalˆ encia

SejaX um conjunto e∼uma rela¸c˜ao entre elementos de X. Dizemos que∼´e uma rela¸c˜ao de equivalˆencia se, para todosx, y, z∈ X :

Reflexiva x∼x.

Sim´etrica Sex∼y ent˜aoy∼x.

Transitiva Sex∼y ey∼zent˜aox∼z.

Exemplos:

• <nos inteiros n˜ao satisfaz reflexividade;

• ≤nos inteiros satisfaz reflexividade, mas n˜ao satisfaz simetria;

• 6= ´e reflexiva, sim´etrica mas n˜ao transitiva;

• rela¸c˜ao de equivalˆencia: = nos n´umeros inteiros.

Rela¸c˜oes de equivalˆencia: s˜ao usadas para classificar os elementos de um con- junto em subconjuntos com propriedades semelhantes. As subdivis˜oes de um conjunto produzidas por uma rela¸c˜ao de equivalˆencia s˜ao conhecidas como classes de equivalˆencia. Formalmente, sejaX um conjunto e ∼uma r.e. definida em X. Sex∈ X ent˜ao a classe de equivalˆencia dex´e o conjunto de elementos deX que s˜ao equivalentes axpor∼. Denotamos:

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

• Qualquer elemento de uma classe de equivalˆencia ´e um representante de toda a classe.

(17)

• X ´e a uni˜ao de todas as classes de equivalˆencia.

• Duas classes de equivalˆencia distintas n˜ao podem ter um elemento em comum.

O conjunto das classes de equivalˆencia de ∼ em X ´e chamado de conjunto quociente deX por∼. Observe que os elementos do conjunto quociente s˜ao subconjuntos de X. Isto ´e, o conjunto quociente n˜ao ´e um subcojunto de X, mas um subconjunto daspartesdeX.

6.2 Inteiros m´ odulo n

Vamos construir uma rela¸c˜ao de equivalˆencia no conjunto dos inteiros. Digamos que, pulando den em n, todos os inteiros s˜ao equivalentes. Ou melhor: dois inteiros cuja diferen¸ca ´e um m´ultiplo dens˜ao equivalentes. Formalmente, dize- mos que dois inteirosaebs˜ao congruentes m´odulo n sea−b´e m´ultiplo den. Escrevemos:

a≡b (modn) Exemplos:

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

Observa¸c˜ao: Congruˆencia m´odulon´e uma rela¸c˜ao de equivalˆencia:

• a≡a (modn) (trivialmente)

• Sea≡b (modn), ent˜aoa−b ´e m´ultiplo den. Masb−a=−(a−b);

logo,b−atamb´em ´e m´ultiplo den. Portanto b≡a (modn).

• Transitividade: exerc´ıcio.

Chamamos deZn o conjunto deinteiros m´odulon. Ou seja, sea∈ Z, ent˜ao a={a+kn|k∈ Z}

Em particular, 0 ´e o conjunto dos m´ultiplos de n.

Voltemos agora ao algoritmo da divis˜ao de Euclides. Vimos que, dadosa en inteiros positivos,a > n, existem inteiros qertais que

a=n.q+r o≤r≤n−1 Ou seja,a−r≡0 (modn) e portantoa≡r (mod n).

Em outras palavras,

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

(18)

6.3 Artim´ etica modular

Sejamaebclasses deZn. Ent˜ao,

a+b=a+b Exemplo:

5 + 4≡9≡1 (mod 8) Logo,

5 + 4 = 9 = 1

Adiferen¸caentre duas classes ´e definida de maneira an´aloga.

A f´ormula para a multiplica¸c˜ao das classesaebdeZn ´e:

a.b=a.b Propriedades da adi¸c˜ao:

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

A2 a+b=b+a.

A3 a+ 0 =a.

A4 a+−a= 0.

Propriedades da multiplica¸c˜ao:

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: emZ6,

2.3 = 6 = 0!!!

6.4 Crit´ erios 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.an1. . . . .a1.a0

= an.10n+an1.10n1+. . .+a1.10 +a0

(19)

Como 10≡1 (mod 3),

a≡an+an1+. . .+a1+a0 (mod 3) Logo,a≡0 (mod 3) se e somente se

an+an1+. . .+a1+a0≡0 (mod 3)

Observe que podemos usar o mesmo argumento para provar que um n´umero inteiro ´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 dek. Logo,

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

6.5 Potˆ encias

A aplica¸c˜ao mais importante de congruˆencias no nosso curso ´e no c´alculo de resto da divis˜ao de uma potˆencia por um n´umero qualquer.

Vamos ilustrar como isso ´e feito na pr´atica atrav´es 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)

(20)

6.6 Equa¸ c˜ oes diofantinas

Uma equa¸c˜ao diofantina ´e uma equa¸c˜ao em v´arias inc´ognitas com co- eficientes inteiros. Por exemplo, xn +yn = zn. Estaremos interessados em encontrar as solu¸c˜oes inteiras dessas equa¸c˜oes.

E claro que tais equa¸c˜´ oes podem ter infinitas solu¸c˜es. Por exemplo,x+y= 2.

Ou nenhuma, como no caso da equa¸c˜ao x3−117y3= 5

E muito f´acil ver que isso ´e verdade atrav´es da redu¸c˜´ ao m´odulo 9. De fato, como 117 ´e divis´ıvel por 9,

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

Logo, se a equa¸c˜ao acima tivesse solu¸c˜ao, dever´ıamos ter x3 ≡ 5 (mod 9).

Mas: classes m´odulo 9: 0 1 2 3 4 5 6 7 8

cubos m´odulo 9: 0 1 8 0 1 8 0 1 8 Ou seja, x3 ≡ 5 (mod 9) n˜ao tem solu¸c˜ao.

6.7 Divis˜ ao modular

Teorema 9 (Teorema da invers˜ao) A classe a tem inverso emZn se e so- mente seaens˜ao primos entre si.

Prova (⇒) Suponha queatem inverso. Ent˜ao existebtal que a.b≡1 (modn)

Logo,

a.b+k.n= 1 e portantomdc(a, n) = 1.

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

α.a+β.n= 1 Ou seja,

α.a≡1 (mod n) e portantoatem inverso emZn.

O conjunto dos elementos deZn que tˆem inverso ´e muito importante. Vamos denot´a-lo porU(n). Em outras palavras,

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

(21)

No caso den=pser primo,

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

Uma propriedade importante de U(n) ´e que esse conjunto ´e fechado com rela¸c˜ao `a multiplica¸c˜ao . Em outras palavras, o produto de dois elementos deU(n) ´e um elemento deU(n). Em particular, podemos dividiraporbemZ(n) somente se b ∈ U(n); nesse caso, b1 tamb´em pertencer´a a U(n) e ab ≡ a.b1 (modn).

Podemos utilizar o que aprendemos para resolver congruˆencias lineares emZ(n).

Uma congruˆencia linear ´e uma equa¸c˜ao do tipo:

a.x≡b (mod n) ondea, b∈ Z. A solu¸c˜ao dessa equa¸c˜ao ´e:

x≡α.b (mod n) ondeα´e o inverso deam´odulon.

Conclus˜ao: Se mdc(a, n) = 1 ent˜ao a congruˆencia linear a.x ≡ b (modn) tem uma e s´o uma solu¸c˜ao emZn.

6.8 Exerc´ıcios propostos

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

7 Primeira Prova de ´ Algebra A

Quest˜ao 1 - a) Calculed=mdc(252,198).

b) Encontre dois n´umeros inteiros aeb tais que:

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

Resolu¸c˜ao: 252=198+54 54=252-198

198=3.54+36 36=198-3.54 =198-3.(252-198)

=-3.252+4.198

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

=4.252+(-5).198 Deste modo,mdc(252,198) = 18 ea= 4, b=−5

(22)

Quest˜ao 2 - Verifique se as proposi¸c˜oes abaixo s˜ao verdadeiras ou falsas. Dˆe uma demonstra¸c˜ao (= justificativa clara e bem escrita) ou um contra-exemplo para justificar a sua conclus˜ao.

(a) Sep´e um n´umero primo, ent˜ao√p´e um n´umero irracional.

(b) Se um n´umero inteiroAse escreve em base 8 na formaanan1...a1a0, com 0≤ai≤7, ent˜ao 2|A se e somente sea0= 0.

(c) Sep >3 ´e um n´umero primo ep≡a( (mod 3)), ent˜aomdc(a,3) = 1.

(d) Todo n´umero inteiro represent´avel com trˆes algarismos iguais na base 10 ´e divis´ıvel por 37.

(e) Sexey s˜ao inteiros ´ımpares, ent˜aox2+y2=p2 para algum primop.

Resolu¸c˜ao:

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, existec∈ ℵtal quea=pc.

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

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

b) F - Seja A = anan1. . . a1a0 um n´umero na base 8. Ent˜ao 2|A se e somente seA≡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 se a0∈ {0,2,4,6}.

c) V- Sep≡a (mod 3), ent˜ao o resto da divis˜ao depeapor 3 ´e o mesmo.

Comop´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 parak= 1,2.

(23)

d) V- Sejan=aaa=a(111). Como 111 = 3.37, aaa≡a(111)≡0 (mod 37)

e) F- Sexey s˜ao ´ımpares, ent˜ao existemnemtais que x= 2n+ 1, y= 2m+ 1 Logo,

x2+y2 = 4n2+ 4n+ 1 + 4m2+ 4m+ 1

= 2(2n2+ 2n+ 2m2+ 2m+ 1)

= 2k

ondek´e um n´umero ´ımpar. Logo n˜ao existep∈ ℵtal que x2+y2=p2

Observe quepn˜ao precisa ser primo: vale para qualquer n´umero natural.

Quest˜ao 3 -Resolva um (e apenas um) dos exerc´ıcios abaixo:

(a) Sejapum n´umero primo. Mostre que um inteiro positivo a´e o seu pr´oprio inverso m´odulop (ou seja,a2 ≡1 (modp)) se e somente sea≡1 (mod p) oua≡ −1 (modp).

(b) Calcule 1235 (mod 23).

Resolu¸c˜ao:

a) (=⇒) Suponhamosa2≡1 (modp). Logo,

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

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

(⇐=) Trivial!

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

1235 ≡ 1225.122.12

≡ 2.6.12

≡ 2.3

≡ 6 (mod 23)

(24)

8 Indu¸ c˜ ao e Fermat

8.1 Indu¸ c˜ ao finita

Seja P(n) uma proposi¸c˜ao que afirma que uma determinada propriedade vale para cada n´umero naturaln. Por exemplo:

• Sep´e um n´umero primo, ent˜aonp−n´e divis´ıvel porppara todo natural n.

• A soma de 1 at´en´e n(n+1)2

Para provarP(n), em geral usamos o princ´ıpio da indu¸c˜ao finita : Princ´ıpio da indu¸c˜ao finita Para que uma proposi¸c˜aoP(n) seja verdadeira para todonnatural, basta que:

1. P(1) seja verdadeira.

2. Se P(k) for verdadeira para algum n´umero natural k, ent˜ao P(k+ 1) tamb´em ´e verdadeira.

8.2 Pequeno teorema de Fermat

Lema 10 Seja pum n´umero primo ea, binteiros. Ent˜ao, (a+b)p≡ap+bp (mod p) Prova Veja livro texto, pag 94.

Teorema 11 (Teorema de Fermat) Sejapum n´umero primo eaum n´umero inteiro. Ent˜ao

ap≡a (modp).

Prova

• Sen= 1, ent˜ao 1p≡1 (modp) trivialmente.

• Suponhamos quenp≡n (modp) para algumninteiro positivo. Usando o lema anterior,

(n+ 1)p≡np+ 1p≡np+ 1 (modp) Como pela hip´otese de indu¸c˜ao temosnp≡n (modp),

(n+ 1)p≡np+ 1≡n+ 1 (modp) Como quer´ıamos demonstrar.

(25)

Caso geral: veja pag 95 do livro texto.

Teorema 12 (Teorema de Fermat II) Seja pum n´umero primo eaum in- teiro que n˜ao ´e divis´ıvel porp. Ent˜ao,

ap1≡1 (modp).

Prova Comomdc(a, p) = 1, existe a tal que aa≡1 (mod p)

Multiplicando ambos os membros deap≡a (modp).por a, obtemos:

a.a.ap1≡a.a (modp).

Logo,

ap1≡1 (modp).

Podemos simplificar algumas contas usando o Teorema de Fermat. De fato, sejamp primo, a inteiro tal quemdc(a, p) = 1 e k um n´umero inteiro tal que k≥p−1. Dividindokporp−1,

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

ak ≡a(p1).q+r≡(ap1)q.ar (mod p).

Mas (ap1)≡1 (modp) e portanto

ak≡ar (mod p).

8.3 Exerc´ıcios propostos

1,3,46,7,8,12

9 Pseudoprimos

Nesta se¸c˜ao, veremos com usar o pequeno teorema de Fermat para identificar que um n´umero ´e composto sem fator´a-lo .

(26)

9.1 Pseudoprimos

De acordo com o teorema de Fermat, sep´e primo e a´e um inteiro qualquer, ent˜aoap≡a (mod p). Desta forma, ´e claro que, sen´e um n´umero composto, ent˜ao existe um inteirobtal quebn\ ≡b (mod n) (usaremos o s´ımbolo\ ≡para significar n˜ao equivalente). Observe que, na pr´atica, s´o precisamos considerar os inteirosbno intervalo 1< b < n−1 (por que?).

Desta forma, temos um m´etodo para determinar se um n´umero ´e composto sem termos que fator´a-lo:

TesteSen, bs˜ao n´umeros inteiros,n >0 e 1 < b < n−1, tais quebn1\ ≡1 (modn), ent˜aon´e composto.

A pergunta que surge ent˜ao ´e: o teste acima ´e um procedimento de decis˜ao?

Isto ´e, o fato de n˜ao encontrarmos talbsignifica que n´e primo?

Resposta: Observe que, sen´e composto, ent˜ao existepprimo, 1< p < n−1 tal quep|n. Logo,mdc(p, n) =p6= 1 e portanto pn˜ao ´e invers´ıvel m´odulon.

Desta forma,pn1\ ≡1 (modn).

E claro que esse n˜´ ao ´e um m´etodo eficiente para testar primalidade uma vez que

´e um m´etodo de exaust˜ao.

Outra pergunta interessante que surge ´e a seguinte: ser´a que, se um n´umero

´ımparnque satisfa¸ca:

bn1≡1 (mod n)

paraalgum1< b < n−1 ´e primo? Infelizmente, a resposta ´en˜ao. Por exemplo, 2340 ≡1 (mod 341) mas 341 = 11.31 n˜ao ´e primo! Esses “falsos primos” s˜ao conhecidos comopseudoprimos. Ou seja, um pseudoprimo npara a baseb

´e um n´umero inteiro positivo´ımpar e compostotal que bn1≡1 (mod n)

Apesar de `as vezes dar errado, esse teste (chamado de teste de Leibniz) ´e muito

´

util. Tambe´em ´e poss´ıvel melhorar o resultado do teste se testarmos para duas bases.

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

9.2 N´ umeros de Carmichael

Como vimos anteriormente, n˜ao existem n´umeros que sejam pseudoprimos para todas as bases. Entretanto, pode ocorrer que um n´umero composto n seja pseudoprimo para todas as basesbtais quemdc(b, n) = 1.

Dizemos que um n´umero composto ´ımpar ´e um n´umero de Carmichael se bn≡b (mod n).

(27)

Os n´umeros de Carmichael possuem duas propriedades muito interessantes, dadas pelo teorema baixo:

Teorema 13 (Teorema de Korselt:) Um inteiro positivo ´ımparn´e um n´umero de Carmichael se, e somente se, cada fator primop den satisfaz as seguintes condi¸c˜oes:

1. p2 n˜ao dividen;

2. p−1 dividen−1.

Prova (=⇒) Sejapum fator primo den. Ent˜ao, bn≡b (modp)

De fato, se b ´e divis´ıvel por p ent˜ao ambos os membros da equivalˆencia s˜ao congruentes a zero. Se n˜ao, pelo teorema de Fermat temos:

bp1≡1 (modp)

Pela condi¸c˜ao (2) do teorema,n−1 = (p−1).qpara algumq. Logo, bn≡(bp1)q.b≡b (modp)

Por (1), temos quen=p1. . . pk comp1< p2< . . . < pk. Como os primos s˜ao distintos,bn−b´e divis´ıvel pelo produtop1.p2. . . . .pk=n. Em outras palavras,

bn≡b (mod n) e portanton´e um n´umero de Carmichael.

(⇐=) Seja n um n´umero de Carmichael e suponhamos que exista pprimo tal quep2|n. Escolhab=p. Ent˜ao:

pn−p=p(pn1−1)

Masp n˜ao divide pn1−1, logo p2 n˜ao pode dividirpn−p. Portanto,n n˜ao pode dividirpn−p. Em outras palavras, p≡p (modn). Absurdo.

O restante da demonstra¸c˜ao depende doteorema da raiz primitiva, que s´o ser´a vista no cap´ıtulo 10...

Observa¸c˜oes:

• Para verificar que um n´umero ´e de Carmichael usando o teorema acima necessitamos fator´a-lo...

• Muitos n´umeros de Carmichael possuem fatores primos pequenos!

• Existem infinitos n´umeros de Carmichael.

• Entre 1 e 109 existem 50.847.534 primos e 646 n´umeros de Carmichael.

(28)

9.3 Teste de Miller

Teorema de Fermat: detecta n´umeros compostos com uma certa eficiˆencia, mas n˜ao ´e um bom teste de primalidade.

Teste de Miller: Calcula-se a sequˆencia de potˆencias m´odulon:

bq, b2q, . . . , b2kq

onden−1 = 2kq.

O fato ´e que, sen´e primo, ent˜ao:

b2kq ≡bn1≡1 (modn)

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

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

Sen´e primo e divideb2jq−1, ent˜aondeve dividir (b2j−1q+1) pela minimalidade dej. Logo,

b2j−1q−1≡ −1 (modn) Ou seja, uma das potˆencias

bq, b2q, . . . , b2kq

deve ser congruente a−1 m´odulon. Sej = 0, ent˜ao temos apenas que bq ≡1 (modn). Se nada disso acontecer, ent˜aondeve ser composto.

Teste de Miller.

Etapa 1 Dividan−1 por 2 at´e encontrarq´ımpar ek tais quen−1 = 2kq.

Etapa 2 Fa¸cai= 0 er= resto debq porn.

Etapa 3 Sei= 0 er= 1 oui≥0 er=n−1: teste inconclusivo.

Etapa 4 Fa¸cai=i+ 1 er=r2 onder2´e o resto da divis˜ao der2 porn.

Etapa 5 Sei < kvolte `a etapa 3; sen˜ao: n´e composto.

Exemplo 7 Tome o n´umero de Carmichael 561. Temos que 560 = 24.35.

Calculando as sequˆencias de restos m´odulo561 das potˆencias de 2:

expoentes 35 2.35 22.35 23.35

restos 263 166 67 1

(29)

Logo561 tem que ser composto.

Se um n´umero composto n tem resultado inconclusivo para o teste de Miller com respeito a uma baseb, dizemos quen´e um pseudoprimo forte para a baseb. Observe que pseudoprimo forte−→pseudoprimo.

Existem 1282 pseudoprimos fortes entre 1 e 109.

9.4 Primalidade e computa¸ c˜ ao alg´ ebrica

E importante ressaltar que o teste de Miller ´e muito usado na pr´atica. O que´ se 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 observa¸c˜ao: dado um n´umero finito qualquer de bases, existem infinitos n´umeros de Carmichael que s˜ao pseudoprimos fortes paratodasessas bases.

9.5 Exerc´ıcios propostos

2,5,7,8,10

10 Teorema de Euler

Opequeno teorema de Fermat nos diz como trabalhar com certas congruˆencias envolvendo expoentes quando o m´odulo ´e primo. Nessa se¸c˜ao, veremos como lidar com congruˆencias m´odulo um n´umero composto.

10.1 Fun¸ c˜ ao de Euler

Defini¸c˜ao. Sejanum inteiro positivo. A fun¸c˜ao de Euler φ(n) ´e definida como o n´umero de inteiros positivos n˜ao excedendo n que s˜ao relativamente primos comn.

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 se¸c˜ao de aritm´etica modular, estudamos o conjunto U(n), o conjunto dos elementos deZscrn que tˆem inverso. Vimos que

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

(30)

Desta forma,φ(n) nada mais ´e do que o n´umero de elementos deU(n).

Vamos ver como calcularφ(n). Come¸camos com alguns casos especiais. Sejap um n´umero primo. Ent˜ao todos os inteiros positivos menores queps˜ao primos comp. Logo

φ(p) =p−1

Tamb´em ´e f´acil calcular φ(pk). Observe que mdc(a, pk) = 1 se e somente se p n˜ao divide a. Ent˜ao basta contar os inteiros menores que pk que n˜ao s˜ao divis´ıveis porp. Se 0≤a < pk ´e divis´ıvel porp, ent˜ao

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

Portanto h´a pk1 inteiros positivos menores que pk que s˜ao divis´ıveis por p.

Logo h´apk−pk1quen˜aos˜ao divis´ıveis porp. Ou seja, φ(pk) =pk1(p−1)

Para obtermos a f´ormula geral, ´e necess´ario provar o seguinte resultado:

Teorema. Sem, ns˜ao inteiros positivos tais quemdc(m, n) = 1, ent˜ao φ(mn) =φ(m).φ(n)

A demonstra¸c˜ao desse teorema ´e trabalhosa (mas n˜ao dif´ıcil) e portanto n˜ao faremos aqui.

Exemplo 8 φ(100) =φ(22).φ(52) = (2.1).(5.4) = 40 Pelo teorema acima temos que, sen=pe11. . . . .pekk, ent˜ao,

φ(n) =pe111. . . . .pekk1(p1−1). . . . .(pk−1)

10.2 Teorema de Euler

Vai ser necess´ario, para decodifica¸c˜ao de mensagens, saber calcular a fun¸c˜ao de Euler. Tamb´em vamos ter que aplicar o teorema de Euler. O teorema de Euler ´e uma generaliza¸c˜ao do teorema de Fermat para o caso em que o m´odulo n˜ao ´e primo:

Teorema de Euler. Se n ´e um inteiro positivo e a ´e um inteiro tal que mdc(a, n) = 1, ent˜ao

aφ(n)≡1 (modn)

Antes de provar esse teorema, vamos apresentar um exemplo.

(31)

Exemplo 9 Temos que U(8) = {1,3,5,7} e portanto φ(8) = 4. Observe que, sea, b, c∈ U(8), ent˜ao a.b∈ U(8)e, sec6=b, ent˜ao

a.b\ ≡a.c (por que?) Para ver como isso funciona, tomea= 3. Ent˜ao,

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 da equivalˆencia:

34≡1 (mod 8)

Teorema 14 (Teorema de Euler) Sen´e um inteiro positivo eaum inteiro tal quemdc(n, a) = 1, ent˜ao

aφ(n)≡1 (modn) Prova EscrevendoU(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) (modn)

Comomdc(b1. . . . .bφ(n), n) = 1, podemos cortar o termo comum dos dois lados e portanto,

aφ(n)≡1 (modn)

10.3 Exerc´ıcios propostos

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

(32)

10.4 Tabela Hashing

Uma universidade deseja estocar um arquivo para cada um de seus estudantes no seu computador. O n´umero identificador, ou chave para cada arquivo ´e o n´umero do CPF do estudante. O CPF ´e um inteiro de 11 d´ıgitos, portanto

´e praticamente imposs´ıvel reservar uma posi¸c˜ao de mem´oria para cada CPF poss´ıvel. Deve-se encontrar um m´etodo sistem´atico para arranjar esses arquivos na mem´oria, usando um n´umero razo´avel de posi¸c˜oes de mem´oria. De outra forma, ficaria imposs´ıvel acessar os arquivos...

Um desses m´etodos ´e utilizando a tabela hashing , baseada em fun¸c˜oes hashing . Existem v´arias propostas para fun¸c˜oes hashing. Vamos discutir (brevemente) o tipo mais utilizado.

Sejaka chave do arquivo a ser estocado e sejanum inteiro positivo. Definimos a fun¸c˜ao hashingh(k) por

h(k)≡k (mod n)

onde 0≤h(k)< n. ´E claro que devemos escolher umnadequado de modo que os arquivos fiquem distribu´ıdos de uma maneira razo´avel entre as n posi¸c˜oes poss´ıveis de mem´oria.

Por exemplo,nn˜ao deve ser uma potˆencia de 10 (10r) simplesmente porque o valor da fun¸c˜aohseria osrultimos d´ıgitos da chave.´

Outro exemplo de uma escolha ruim ´e quando n|10m±aonde a em s˜ao pe- quenos. Por exemplo, sen = 111|(103−1) = 999 ent˜ao 103 ≡1 (mod n) e portanto os n´umeros:

64121284868 e 64184821268 v˜ao para a mesma posi¸c˜ao de mem´oria.

Para evitar esses problemas,ndeve ser um n´umero primo pr´oximo do n´umero de posi¸c˜oes dispon´ıveis. Por exemplo, se existem 5000 posi¸c˜oes de mem´oria para o armazenamento de 2000 arquivos de estudantes, podemos escolhern= 4969.

Claro que, mesmo assim, colis˜oes podem ocorrer. Existem v´arias heur´ısticas para tratamento de colis˜oes. O m´etodo mais usado ´e o de escolher uma posi¸c˜ao livre. Existem v´arias maneiras de fazer isso e as mais complicadas s˜ao as mais eficientes. Eu poderia passar o dia falando sobre elas, mas vou citar apenas uma, a mais simples. Consiste em tomar:

hj(k)≡h(k) +j (modn)

Desta forma, a chave k ´e alocada na posi¸c˜ao mais pr´oxima poss´ıvel de h(k).

A eficiˆencia desse m´etodo ´e realmente baixa, pois tende a haver um engarrafa- mento.

Na pr´atica, o mais f´acil ´e “atachar” uma lista a cada posi¸c˜ao de mem´oria. Dessa forma, procede-se por busca sequencial.

(33)

11 Criptografia RSA

11.1 Pr´ e-codifica¸ c˜ ao

Em primeiro lugar, devemos converter a mensagem em uma sequˆencia de n´umeros.

Essa primeira etapa ´e chamada de pr´e-codifica¸c˜ao. H´a v´arias maneiras de se fazer isso. Aqui vamos supor que o texto n˜ao cont´em acentua¸c˜ao, pontua¸c˜ao, n´umeros etc, apenas as letras A a Z (mai´usculas). Tamb´em vamos adicionar espa¸cos em branco entre palavras, que ser´a substitu´ıdo pelo n´umero 99. A letra Aser´a convertida no n´umero 10, B ser´a 11 e assim por diante, at´e o Z corre- spondendo ao n´umero 35. Observe que cada letra corresponde a um n´umero comexatamente dois algarismos. Isso evita ambiguidades.

A chave p´ublica ´e um n´umeron=p.q, ondepeqs˜ao primos. Antes de come¸car devemos, ent˜ao escolher esses n´umeros. O ´ultimo passo da pr´e-codifica¸c˜ao ´e quebrar a mensagem em blocos. Esses blocos devem ser n´umeros menores quen. A maneira de escolher os blocos n˜ao ´e ´unica, mas ´e importante evitar duas situa¸c˜oes:

• Nenhum bloco deve come¸car com o n´umero 0 (problemas na decodi- fica¸c˜ao).

• Os blocos n˜ao devem corresponder a nenhuma unidade lingu´ıstica (palavra, letra, etc). Assim a decodifica¸c˜ao por contagem de frequˆencia fica im- poss´ıvel.

11.2 Codificando e decodificando

Para codificar a mensagem precisamos den=p.qe de um inteiro positivoeque seja invers´ıvel m´oduloφ(n). Em outras palavras,

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

Chamaremos o par (n, e) a chave de codifica¸c˜ao do sistema RSA.

Codificaremos cada bloco de mensagemseparadamentee a mensagem codificada ser´a a sequˆencia de blocos codificados.

Importante: Os blocos j´a codificados n˜ao poder˜ao ser reunidos de modo a formar um longo n´umero. Isso tornaria a decodifica¸c˜ao imposs´ıvel!

Vamos agora mostrar como codificar cada blocob. Chamaremos o bloco codifi- cado deC(b). Em primeiro lugar, lembre-se que b´e menor quen. Ent˜ao:

C(b)≡be (mod n) Onde 0≤C(b)< n.

(34)

Exemplo 10 Considere a frase Paraty ´e linda . Convertendo em n´umeros, 2510271029349914992118231310

Agora devemos escolher n. Vamos come¸car com um n´umero pequeno, por ex- emplo

n= 11.13 = 143

Podemos ent˜ao quebrar a mensagem acima em blocos, que devem ter valor menor que143:

25−102−7−102−93−49−91−49−92−118−23−13−10 Ent˜ao temos que φ(143) = 10.12 = 120e portanto e deve ser um n´umero que n˜ao divide 120. O menor valor poss´ıvel ´e7. 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 mensagem cifrada:

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 informa¸c˜ao que precisamos para decodificar est´a contida no par (n, d), onded ´e o inverso de e m´odulo φ(n). Chamaremos (n, d) de chave de de- codifica¸c˜ao e deD(c) o resultado do processo de decodifica¸c˜ao. D(c) ´e dado por:

D(c)≡cd (modn) onde 0≤D(c)< n.

Observe que ´e muito f´acil calculard, desde queφ(n) eesejam conhecidos: basta aplicar o algoritmo euclideano estendido. Entretanto, se n˜ao conhecemospeq

´e praticamente imposs´ıvel calculard.

Voltando ao nosso exemplo, temos quen= 143 ee= 7. Para calculard, usamos o algoritmo euclideano estendido:

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

Logo o inverso de 7 m´odulo 120 ´e −17. Como d deve ser usado como um expoente, precisamos quedseja positivo. Logo tomamosd= 120−117 = 103.

(35)

11.3 Funciona?

A pergunta ´obvia que surge agora ´e:

D(C(b)) =b?

Ou seja, decodificando um bloco de mensagem codificada, encontramos um bloco da mensagem original? Porque sen˜ao todo nosso esfor¸co foi sem sentido...

Vamos mostrar nessa se¸c˜ao que a resposta para a pergunta acima ´e sim . Consideremos ent˜aon=p.q. Vamos provar que

DC(b)≡b (mod n)

E por que n˜ao a igualdade? Observe que DC(b) e b s˜ao menores que n−1.

Por isso escolhemosbmenor quene mantivemos os blocos separados depois da codifica¸c˜ao!

Por defini¸c˜ao, temos que

DC(b)≡(be)d≡be.d (modn)

Masd´e o inverso deem´oduloφ(n). Logo existe inteiroktal queed= 1+kφ(n).

Logo,

bed≡b1+kφ(n)≡(bφ(n))k.b (modn) Semdc(b, n) = 1, ent˜ao podemos usar o teorema de Euler:

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

Seb e nn˜ao s˜ao primos entre si, obderve que n=p.q, peq primos distintos.

Logo,

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

Semdc(b, p) = 1, ent˜ao podemos usar o teorema de Fermat (bp1≡1 (modp)).

Se n˜ao, temos quep|be portanto

bed≡b≡0 (modp) Logo,

bed≡b (mod p) qualquer que sejab.

Fazemos o mesmo para o primoq, obtendo:

bed≡b (mod q) Portanto,

bed≡b (modp.q) como quer´ıamos.

(36)

11.4 Porque o RSA ´ e seguro

Como j´a vimos, o par de codifica¸c˜ao (n, e) ´e conhecido e acess´ıvel a qualquer usu´ario. O RSA s´o ´e seguro se for dif´ıcil calcular d quando apenas esse par ´e conhecido.

Observe que s´o sabemos calculard se soubermos o valor deφ(n), cujo c´alculo depende da fatora¸c˜ao den. A pergunta que surge ent˜ao ´e: ser´a que n˜ao existe outro processo para calculardeφ(n)? Por exemplo, o que aconteceria se algu´em inventasse um m´etodo para calcular φ(n) a partir den ee? A resposta ´e que ter´ıamos, ent˜ao, um algoritmo r´apido de fatora¸c˜ao. 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

(p+q)2−4n

que tamb´em ´e conhecido. Ou seja, conhecemosp+qep−q. Portanto conhecemos peqe fatoramosn!

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

Outro jeito de quebrar o RSA seria achar um algoritmo que calculeddiretamente a partir denee. Comoed≡1 (modφ(n)), isto implica que conhecemos um m´ultiplo deφ(n). Isso tamb´em ´e suficiente para fatorarn(prova complicada).

A ´ultima alternativa seria achar b a partir da forma reduzida de be m´odulon sem achar d. Bom, ningu´em conseguiu fazer isso at´e agora... Acredita-se que quebrar o RSA e fatorarn sejam problemas equivalentes, apesar disso n˜ao ter sido demonstrado.

11.5 Escolhendo primos

Suponha que desejamos implementar o RSA de chave p´ublica (n, e), de modo que nseja um inteiro com aproximadamenteralgarismos. Para construirn, escolha um primopentre 4r10e45r100 algarismos e, em seguida, escolhaqpr´oximo de 10pr. O tamanho da chave recomendado atualmente para uso pessoal ´e de 768 bits. Isso significa quenter´a aproximadamente 231 algarismos. Para construir tal n´umero precisamos de dois primos de, digamos, 104 e 127 algarismos respectivamente.

Outra coisa a ser observada ´e que os n´umerosp−1, q−1, p+ 1, p−1 n˜ao tenham fatores primos pequenos, pois sen˜ao seria f´acil fatorarn.

Para encontrarpeq, seguiremos a seguinte estrat´egia:

1. Tome um n´umeros´ımpar.

(37)

2. Verifique sen´e divis´ıvel por um primo menor que 5.000.

3. Aplique o teste de Miller asusando como base os 10 primeiros primos.

Encontrar tais primos pode ser um processo trabalhoso. Por exemplo, se x´e um n´umero da ordem de 10127, no intervalo entre xex+ 104 existem aproxi- madamente 34 primos dentre 560 n´umeros que passam a etapa (1) da estrat´egia acima...

11.6 Assinaturas

Apenas codificar mensagens n˜ao basta, em geral, pois o sistema ´e de chave p´ublica. Ou seja, qualquer pessoa pode codificar uma mensagem usando uma chave alheia. Por exemplo, umhaker poderia facilmente mandar instru¸c˜oes ao banco para que o seu saldo banc´ario fosse transferido para uma outra conta.

Por isso, o banco precisa de uma garantia de que a mensagem teve origem em um usu´ario autorizado. Ou seja, a mensagem tem que ser assinada .

Vamos chamar deCmeDmas fun¸c˜oes de codifica¸c˜ao e decodifica¸c˜ao do M´ario e de Ca e Da as fun¸c˜oes de codifica¸c˜ao e decodifica¸c˜ao do Allan. Seja b um bloco de mensagem que o M´ario deseja mandar para o Allan. Para mandar uma mensagem assinada, ao inv´es deCa(b), o M´ario envia

Ca(Dm(b))

Ou seja, primeiro ele “decodifica” a mensagem como s´o ele pode fazer, depois ele codifica o resultado, como s´o o Allan pode ler. Para ler a mensagem, primeiro o Allan aplicaDa e depoisCm. Observe queCm´e p´ublico. Se a mensagem fizer sentido, ´e certo que a origem foi mesmo o M´ario!

Mas cuidado ! Esse sistema pode ser usado para quebrar o RSA, como em 1995 por um consultor em assuntos de seguran¸ca de computadores...

11.7 Exerc´ıcios propostos

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

12 1

o

trabalho pr´ atico

O trabalho tem como objetivo a cria¸c˜ao de dois n´umeros primos grandes (entre 20 e 30 bits). Para isso:

• Gere dois n´umeros ´ımparesmekda magnetude acima, de modo que n˜ao sejam muito pr´oximos um do outro.

Referências

Documentos relacionados

Os estudos da “Hipóteses do custo da reprodução” na natureza (Cram et al. 2015) são escassos na atualidade e uma das razões é a dificuldade de trabalho com animais em campo e a

O intento da pesquisa consistiu numa investigação acerca da possibilidade de uma leitura política da filosofia de Vattimo que começando com um posicionamento

a) Para as especialidades de acesso direto (Anestesiologia, Cirurgia Geral, Clínica Médica, Neurologia, Obstetrícia e Ginecologia, Ortopedia e Pediatria): Prova

20 Apesar dos problemas de representação contidos em alguns mapas impressos, principalmente no que tange a ausência ou erro dos principais elementos do mapa

PARTE III A TEMPESTIVIDADE DO PROCESSO SOB O ÂNGULO NORMATIVO E SUA DIMENSÃO CONFLITUAL Capítulo 4 A TRÍADE CONSTITUCIONAL DA TEMPESTIVIDADE (EM SENTIDO AMPLO): CELERIDADE,

• Na aula de hoje: terceira ´ area da semˆ antica: objetivo de desenvolver t´ ecnicas para expressar a semˆ antica de linguagens utilizadas para programa¸c˜ ao

No caso do sistema de criptografia RSA a chave p´ ublica apoia-se na facilidade de se efetuar a multiplica¸c˜ ao de n´ umeros primos e na dificuldade pr´ atica de se inverter

Muitos dados científicos apontam a existência de uma significativa porcentagem de áreas de baixa aptidão agrícola e elevada aptidão florestal em paisagens de muitas