Teoria de n´ umeros e criptografia RSA
Elaine Gouvˆ ea Pimentel
1
oSemestre - 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:
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.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.
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:
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.
• 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).
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
... ...
rn−2 = rn−1qn e rn= 0
Da ´ultima linha, temos quern−1dividern−2e portantomdc(rn−1, rn−2) =rn−1. Aplicando sucessivamente o lema 2, temos quemdc(a, b) =rn−1.
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:
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.
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
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≤. . .≤qs−1≤qs e
n > n q1 > n
q1.q2 > . . . > n q1.q2. . . . .qs
>0, ou seja, o algoritmo sempre termina.
Exemplo 2 n= 450 = 2.3.3.5.5
4.3 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.
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.
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=pe11−1. . . . .pekk =q1r1. . . . .pr1j−1. . . . .qrss
onde m ´e um n´umero menor que n que apresenta duas fatora¸c˜oes distintas.
ABSURDO pois isso contraria a minimalidade den.
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+an−1.xn−1+. . .+a1.x+a0
ondean, an−1, . . . , 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...
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
• Nenhum primo ´e perfeito.
• Resultado: 2n−1.(2n−1) ´e perfeito se 2n−1 ´e primo.
• Outro resultado: Todo n´umero perfeito par possui a forma acima. Ex:
6 = 22−1(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!
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 n−21 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 (P−21) 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 (T−21) e incrementeT de 2P; repita at´e queT > n; incremente P de 2 e volte `a Etapa 2.
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.
• 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} .
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.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)
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+ (−1n−1).an−1+. . .+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)
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}
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, b−1 tamb´em pertencer´a a U(n) e ab ≡ a.b−1 (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
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 formaanan−1...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 = anan−1. . . 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.
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)
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.
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,
ap−1≡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.ap−1≡a′.a (modp).
Logo,
ap−1≡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(p−1).q+r≡(ap−1)q.ar (mod p).
Mas (ap−1)≡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 .
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 quebn−1\ ≡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,pn−1\ ≡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:
bn−1≡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 bn−1≡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).
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:
bp−1≡1 (modp)
Pela condi¸c˜ao (2) do teorema,n−1 = (p−1).qpara algumq. Logo, bn≡(bp−1)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(pn−1−1)
Masp n˜ao divide pn−1−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.
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 ≡bn−1≡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
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}
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 pk−1 inteiros positivos menores que pk que s˜ao divis´ıveis por p.
Logo h´apk−pk−1quen˜aos˜ao divis´ıveis porp. Ou seja, φ(pk) =pk−1(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) =pe11−1. . . . .pekk−1(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.
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
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.
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.
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.
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(p−1))k.(q−1).b (mod p)
Semdc(b, p) = 1, ent˜ao podemos usar o teorema de Fermat (bp−1≡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.
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.
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
otrabalho 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.