Você está na página 1de 49

Teoria de n umeros e criptograa RSA

Elaine Gouv ea Pimentel 1o Semestre - 2006 (Ultima Modica c ao: 4 de Maio de 2006)

Bibliograa e refer encias

Livro texto: S.C. Coutinho N umeros inteiros e criptograa RSA IMPA/SBM, 2000. Outras refer encias: Rosen, K. H., Elementary number theory and its applications, AddisonWesley,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: elaine@mat.ufmg.br

Introdu c ao

O objetivo desse curso e estudar o m etodo de criptograa de chaves p ublicas conhecido como RSA. Para entender como este m etodo funciona, e necess ario o estudo de alguns conceitos de uma area da matem atica chamada Teoria de 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 ca o matem atica e demonstra ca o por absurdo. Deve car bem claro que este e um curso de matem atica para cientistas da computa ca o. Isto e, o rigor nunca ser a deixado de lado mas a aten ca o estar a sempre voltada para a aplica ca o principal proposta: criptograa RSA.

2.1

Criptograa

Criptograa: estuda os m etodos para codicar uma mensagem de modo que s o seu destinat ario leg timo consiga interpret a-la. Prim ordios: Cesar (transla ca o do alfabeto). Criptoan alise: arte de decifrar c odigos secretos. Decodicar 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: S e M M etodo de contagem de frequ encia de caracteres pode ser usado para decifrar inscri co es antigas. O surgimento dos computadores torna esse m etodo de cifragem completamente inseguro (decifragem polinomial). Internet e criptograa: seguran ca, assinatura. Chave p ublica: saber codicar n ao implica saber decodicar!

2.2

Criptograa RSA

RSA: Rivest, Shamir, Adleman (M.I.T.) 1978. Codica ca o: basta conhecer o produto de dois primos (n = pq ). n e chamado chave p ublica. Decodica ca o: precisamos conhecer p e q (chave de decodica ca o). Decifrar RSA = fatora ca o de n. Se n possui 150 algarismos ou mais, fator a-lo levaria milhares de anos. dif Obs: E cil determinar os fatores primos de um n umero composto, mas e poss vel vericar 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 ca o alg ebrica: trata do c alculo exato com inteiros, fra co es, etc. Exemplo: Mathematica, Maple. Inteiro de tamanho indeterminado: de tamanho ex vel, grandes o suciente. Restri co es: tamanho da mem oria, estruturas de dados (vetores de tamanhos pr e-xados). Inteiros = listas! Algarismos = elemento da lista; opera co es de soma e multiplica ca o: usuais, como com l apis e papel. Divis ao e mais complicado...

3
3.1

Algoritmo da divis ao de Euclides


Algoritmos

Algoritmo = processo de c alculo baseado em regras formais. Especica ca o de um algoritmo: entrada + instru co es + sa da. Perguntas: ao executarmos um conjunto de instru co es, sempre chegaremos a um resultado? (ponto xo) o resultado obtido e sempre o desejado? (sem antica)

3.2

Algoritmo da divis ao

Objetivo: encontrar o quociente q e o resto r (sa da) da divis ao entre dois inteiros positivos a e b (entrada): a = bq + r Algoritmo da divis ao: Etapa 1: q = 0; r = a Etapa 2: Se r < b, pare. Nesse caso, o quociente e q e o resto r. Etapa 3: Se r b, fa ca r := r b, q := q + 1 e volte ` a Etapa 2. Observa co es: 0 r < b.

1. O algoritmo sempre para: sequ encia decrescente de n umeros inteiros positivos. 2. O resultado da aplica ca o do algoritmo corresponde ` as especica co es da sa da (trivialmente). 3. O algoritmo e extremamente ineciente, em especial se a >> b.

3.3

Teorema da Divis ao

Teorema 1 (Teorema de divis ao) Sejam a e b inteiros positivos. Existem n umeros inteiros q e r tais que a = bq + r Al em disso, q e r s ao u nicos. Prova . 0r<b

Unicidade - Sejam q, q , r, r tais que a = bq + r a = bq + r Subtraindo-se (1) de (2), obtemos: r r = b(q q ) Ora, mas 0 r, r < b e portanto 0 r r < b. Ou seja, 0 b(q q ) < b Como b > 0, temos 0 q q < 1 ou seja, q q = 0 q = q e r = r . 0r<b 0 r < b (1) (2)

3.4

Algoritmo Euclideano

Objetivo: Calcular o mdc entre dois n umeros inteiros. aximo divisor comum Deni ca o: o m que: d|a (ou d e divisor de a) entre a e b e o n umero d tal

se d e divisor de a e b, ent ao d |d (em outras palavras, d e o m aximo divisor de a e b. 4

d|b

Escrevemos d = mdc(a, b). Se mdc(a, b) = 1, dizemos que a e b s ao primos entre si . Dados dois n umeros inteiros positivos a e Algoritmo Euclideano: b tais que a b, divide-se a por b, encontrando resto r1 . Se r1 = 0, dividimos b por r1 , obtendo resto r2 . Se r2 = 0, dividimos r1 por r2 e assim por diante. O u ltimo resto diferente de zero mdc(a, b). Exemplo: 1234 46 dessa sequ encia de divis oes e o

54 8

46 6

8 2

6 0

Ou seja, mdc(1234, 54) = 2. Perguntas: 1. Por que o u ltimo resto n ao nulo e o mdc? 2. Por que o algoritmo para? Respostas: a b r1 r2 = = = = bq1 + r1 r1 q2 + r2 r2 q3 + r3 r3 q4 + r4 . . . e e e e 0 r1 < b 0 r2 < r1 0 r3 < r2 0 r4 < r3 . . .

Segunda pergunta: observe que b > r1 > r2 > . . . 0 Como essa sequ encia e nita, 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 Sejam a e b n umeros inteiros positivos. Se existem inteiros g e s tais que a = bg + s, ent ao mdc(a, b) = mdc(b, s). Prova Sejam d1 = mdc(a, b) e d2 = mdc(b, s). .

Armamos que d1 d2 . De fato, d1 e o m aximo divisor de a e b. Logo d1 divide a e b e portanto existem inteiros positivos u e v tais que: a = d1 u eb = d1 v

Substituindo a e b na equa ca o a = bg + s obtemos s = d1 u d1 v = d1 (u vg ). Ou seja, d1 divide s. Como d1 tamb em divide b, d1 e um divisor comum de b e ca o) d1 d2 como s. Mas d2 e o maior divisor de b e s e portanto (por deni quer amos. Seguindo um argumento semelhante, podemos provar o inverso, ou seja, d2 d1 . Em outras palavras, d1 = d2 Teorema 3 Dados a e b inteiros positivos, o u ltimo resto diferente de zero da sequ encia de divis oes dada pelo algoritmo euclideano para a e b e o m aximo divisor comum entre a e b. Prova .

Aplicando o algoritmo a a e b, temos: a b r1 r2 rn2 = = = = bq1 + r1 r1 q2 + r2 r2 q3 + r3 r3 q4 + r4 . . . e e e e e 0 r1 < b 0 r2 < r1 0 r3 < r2 0 r4 < r3 . . . rn = 0

= rn1 qn

Da u ltima linha, temos que rn1 divide rn2 e portanto mdc(rn1 , rn2 ) = rn1 . Aplicando sucessivamente o lema 2, temos que mdc(a, b) = rn1 .

3.6

Algoritmo euclideano estendido

O resultado que mais vamos usar durante o curso sobre mdc e o seguinte: Teorema 4 Sejam a e b inteiros positivos e seja d o m aximo divisor comum entre a e b. Esxistem inteiros e tais que .a + .b = d. Para demonstra ca o desse teorema, veja o livro texto, pag 29-31. Vamos ilustrar a demonstra ca o atrav es de um exemplo num erico: 6

Exemplo 1 Sejam a = 1234 e b = 54. Temos que: 1234 = 54.22 + 46 ou seja, 46 = 1234 54.22

Seguindo pelo algoritmo de euclides, 54 = 46.1 + 8 ou seja, 8 = 54 46.1

Agora, observe que sabemos calcular 46 em fun ca o de 1234 e 54. Ent ao, substituindo: 8 = 5446.1 = 54(123454.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) = 86 = (54.(23) + 1234.(1)) (1234.(6) + 54.(137)) = 1234(1 6) + 54(23 + 137) = 1234(7) + 54(160)

= 6.1 + 2

Logo, = 7 e = 160 uma vez que mdc(1234, 54) = 2. Observe que o teorema n ao diz que os valores de e s ao u nicos. Na verdade, existe uma innidade de n umeros que satisfazem a equa ca o a + b = d. Pergunta: para que serve calcular e ? Resposta: unicidade de fatora ca o de um inteiro; RSA depende de um m etodo eciente 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
4.1

Fatora c ao u nica
Teorema da fatora c ao u nica
se p = 1 e os u nicos

Dizemos que um n umero inteiro positivo p e primo divisores de p s ao p e 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 u nica) Dado um inteiro positivo n 2 podemos sempre escrev e-lo, de maneira u nica, na forma:
ek 1 n = pe 1 . . . . .pk

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: Dado n 2 inteiro positivo, tente dividir n por cada um dos inteiros de 2 a n 1. Se algum desses inteiros (digamos k ) dividir n, ent ao achamos um fator de n. Perguntas: 1. k e primo ou composto? 2. Quando se deve parar a busca? Em n 1? Respostas: 1. k e primo. De fato, suponhamos k composto. Logo, k = a.b com 1 < a, b < k . Como k divide n, existe (por deni ca o) c inteiro tal que n = k.c. Logo, n = a.b.c ou seja, a e b s ao fatores de n menores que k , o que contraria a hip otese da minimalidade de k . Logo, k e primo. 2. Na verdade, podemos parar o algoritmo em n. De fato, n = k.c ou k e o menor fator de n, k c. Logo, k n c = n k . Como k ou seja, 2 k 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 8

n , determinando q2 , o segundo fator primo de n. Para algoritmo ao n umero q 1 determinar o terceiro fator primo q3 , aplicamos o algoritmo ao n umero q1n .q2 e n assim por diante, at e chegarmos em q1 .q2 .....qs1 = qs , com qs primo. Observe que q1 q2 . . . qs1 qs e

n>

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

ou seja, o algoritmo sempre termina. Exemplo 2 n = 450 = 2.3.3.5.5

4.3

Eci encia do algoritmo ing enuo de fatora c ao


ineciente!

O algoritmo e simples mas muito

Exemplo 3 Seja n um umero primo com 100 ou mais algarismos. Logo, n 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 50 40 segundos, ou execute 1010 divis oes por segundo. Logo levaremos 10 1010 = 10 seja, 1031 anos na frente da tela do computador aguardando... Observe que o tempo estimado de exist encia do universo e 1011 anos! importante ressaltar que n O algoritmo e bom para n umeros pequenos. E ao existe (atualmente) algoritmo de fatora c ao eciente 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 suciente para invent a-lo...

4.4

Fatora c ao por Fermat


n.

Eciente quando n tem um fator primo n ao muito menor que Caso mais f acil: n = r2 (x = r e y = 0). Se y > 0, ent ao x= n + y2 > n

Id eia: tentar achar n umeros inteiros positivos x e y tais que n = x2 y 2 .

Nota ca o: escrevemos [r] como a parte inteira do n umero real r. Algoritmo de Fermat: Etapa 1: Fa ca x = [ n]; se n = x2 , pare. 9

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

x2 n.

Etapa 3: Repita a etapa 2 at e encontrar um valor inteiro para y , ou at e que x = n+1 2 . No primeiro caso, n tem fatores x + y e x y ; no segundo, n e primo. Exemplo 4 Seja n = 1342127. Temos que x = 1158. Mas x2 = 11582 = 1340964 < 1342127 Logo, passamos a incrementar x at e que x2 n seja inteiro ou x =
n+1 2 ,

que nesse caso vale 671064: x2 n x 1159 33, 97 1160 58, 93 1161 76, 11 1162 90, 09 1163 102, 18 1164 113

Logo, x = 1164 e y = 113. Os fatores procurados s ao x+y = 1277 e xy = 1051. Faremos aqui apenas a demonstra ca o de que, se n e primo, ent ao o u nico valor poss vel para x e x = n+1 . Relembrando, x e y s a o inteiros positivos tais que 2 n = x2 y 2 . Ou seja, n = (x y )(x + y ) Como estamos supondo n primo, temos que x y = 1 e x + y = n. Logo, x= como quer amos. Veja a demonstra ca o completa do algoritmo no livro texto, p aginas 41 a 43. Observa c ao: Esse algoritmo diz algo importante sobre o RSA. Se escolhermos p e q muito pr oximos, ent ao n = p.q e facilmente fator avel pelo algoritmo de Fermat. 1+n 2 e y= n1 2

4.5

Propriedade fundamental dos primos

Lema 6 Sejam a, b, c inteiros positivos e suponhamos que a e b s ao primos entre si. Ent ao: 1. Se b divide o produto a.c ent ao b divide c. 10

2. Se a e b dividem c ent ao o produto a.b divide c. Prova mdc(a, b) = 1. Pelo Algoritmo euclideano estendido, existem e tais que .a + .b = 1 Ent ao, .a.c + .b.c = c Como b divide a.c pela hip otese (1) e como b divide .b.c, ent ao b divide c. Para provar a segunda armativa, se a divide c, podemos escrever c = at para algum inteiro t. Mas b tamb em divide c. Como mdc(a, b) = 1, pela arma ca o (1), b divide t. Logo, t = b.k para algum inteiro k e portanto, c = a.t = a.b.k

Podemos usar o lema acima para provar se seguinte propriedade: Propriedade fundamental dos primos Seja p um primo e a e b inteiros positivos. Se p divide o produto a.b, ent ao p divide a ou p divide b. A demonstra ca o ca como exerc cio (fa cam!).

4.6

Unicidade

A prova de unicidade da fatora ca o de n umeros primos decorre facilmente da propriedade fundamental dos primos. A demonstra ca o se d a por absurdo. Seja n o menor inteiro positivo que admite duas fatora co es distintas. Podemos escrever: ek r1 rs 1 n = pe 1 . . . . .pk = q1 . . . . .qs onde p1 < p2 < . . . < pk e q1 < q2 < . . . < qs s ao primos e e1 , . . . , ek , r1 , . . . , rs s ao inteiros positivos. Como p1 divide n, pela propriedade fundamental dos primos p1 deve dividir um dos fatores do produto da direita. Mas um primo s o pode dividir outro se forem iguais. Ent ao p1 = qj para algum j entre 1 e s. Logo,
ek 1 n = pe 1 . . . . .pk r1 rs . . . . .qj j . . . . .qs = q1 rj r1 rs = q1 . . . . .p1 . . . . .qs r

Podemos ent ao cancelar p1 que aparece em ambos os lados da equa ca o, obtendo


r1 j k 1 1 m = pe . . . . .pe 1 k = q1 . . . . .p1 r 1 rs . . . . .qs

onde m e um n umero menor que n que apresenta duas fatora co es distintas. ABSURDO pois isso contraria a minimalidade de n. 11

4.7

Exerc cios propostos

1. Prove a propriedade fundamental dos primos. 2. Demonstre que, se p e um n umero primo, ent ao 3. Livro texto: 2, 4, 5, 8, 11, 12. p e um n umero irracional.

N umeros primos

At e agora: propriedades b asicas dos n umeros inteiros; dois algoritmos fundamentais; Nessa se ca o, 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 onde an , an1 , . . . , a1 , a0 s ao n umeros inteiros e que satisfaz a condi ca o: f (m) e primo, para todo inteiro positivo m Exemplo 5 Seja f (x) = x2 + 1 Logo, x 1 2 3 4 5 6 7 8 9 2 x mpar f (x) par; f (8) = 65 composto... 12 f (x) 2 5 10 17 26 37 50 65 82 5

A pergunta que surge ent ao e: isso e fruto do azar? Teorema 7 Dado um polin omio f (x) com coecientes inteiros, existe uma innidade de inteiros positivos m tais que f (m) e composto. Prova .

Vamos Provar o teorema apenas no caso em que o polin omio tem grau 2. Ou seja, consideraremos f do tipo: f (x) = a.x2 + b.x + c Podemos supor a > 0. Suponhamos que exista m tal que f (m) = p onde p e primo. Calculando f (m + hp): f (m + hp) = a(m + hp)2 + b(m + hp) + c = (am2 + bm + c) + p(2amh + aph2 + bh) = p(1 + 2amh + aph2 + bh) Ou seja, se 1+2amh+aph2 +bh e composto ent ao f (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 tomar h positivo, temos: 2am + aph + b > 0 h > b 2am a.p

Existe uma innidade de n umeros dessa forma. Logo, se existe inteiro m tal que f (m) e primo, ent ao existe uma innidade 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


s ao aqueles da forma: M (n) = 2n 1 onde n e um inteiro n ao negativo.

umeros de Mersenne N

N umeros perfeitos s ao aqueles iguais ` a metade da soma de seus divisores. Ex: 6 = 12/2 e 12 = 1 + 2 + 3 + 6

13

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 primos, mas nem todos primos fazem parte dessa lista. Por exemplo, M (11) = 2047 = 23.89

5.3

F ormulas exponenciais: n umeros de Fermat


s ao aqueles da forma: F (n) = 22 + 1 onde n e um inteiro n ao negativo.
n

N umeros de Fermat

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 nenhum F (n) primo com n 5.

5.4

F ormulas fatoriais

Seja p um primo positivo. Construiremos uma fun ca o semelhante ao fatorial, s o que apenas os primos s ao multiplicados. Vamos cham a-la de p# . Ou seja, p# e o produto de todos os primos menores ou iguais a p. Ex: 5# = 2.3.5 = 30 Observe que se p e q s ao primos sucessivos, 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 a p. Desta forma, temos um algoritmo para calcular primo. Pergunta: qual e o problema de tal algoritmo? Observa ca o nal: p# + 1 quase nunca e primo!

14

5.5

Innidade de primos

Teorema 8 Existem uma innidade de primos Prova .

Digamos que exista uma quantidade nita de primos: {p1 , p2 , . . . , pk } Podemos supor que esses primos est ao ordenados, de modo que pk e o maior deles. Considere o n umero p# + 1. Como vimos, esse n u mero possui fator primo k maior que pk . 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 a n. Etapa 2: Procure o primeiro n umero k da lista. Risque os demais n umeros da lista, de k em k . Etapa 3: Repita a etapa 2 at e chegar em n. Observa co es: 1. Podemos parar em n...

2. Podemos come cara riscar a partir de k 2 ...

5.7

Crivo de Erat ostenes revisado


n1 2

Etapa 1: Crie um vetor v de

posi co es, preenchidas com o valor 1; fa ca P = 3.

Etapa 2: Se P 2 > 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 ca o a Etapa 2. `
(P 1) 2

de v est a preenchida com 0 incremente P de 2 e volte

Etapa 4: Atribua o valor P 2 a uma nova vari avel T ; substitua por zero o valor da 1) posi ca o (T e incremente T de 2 P ; repita at e que T > n; incremente P 2 de 2 e volte ` a Etapa 2.

15

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.

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

Seja X um conjunto e uma rela ca o entre elementos de X . Dizemos que e c ao de equival encia se, para todos x, y, z X : uma rela Reexiva x x. Sim etrica Se x y ent ao y x. Transitiva Se x y e y z ent ao x z . Exemplos: < nos inteiros n ao satisfaz reexividade; nos inteiros satisfaz reexividade, mas n ao satisfaz simetria; = e reexiva, sim etrica mas n ao transitiva; rela ca o de equival encia: = nos n umeros inteiros. Rela co es de equival encia: s ao usadas para classicar os elementos de um conjunto em subconjuntos com propriedades semelhantes. As subdivis oes de um conjunto produzidas por uma rela ca o de equival encia s ao conhecidas como classes de equival encia. Formalmente, seja X um conjunto e uma r.e. denida em X . Se x X ent ao a classe de equival encia de x e o conjunto de elementos de X que s ao equivalentes a x por . Denotamos: x = {y X : y x}. Propriedades: Qualquer elemento de uma classe de equival encia e um representante de toda a classe. 16

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 ao quociente de X por . Observe que os elementos do conjunto quociente s subconjuntos de X . Isto e, o conjunto quociente n ao e um subcojunto de X , mas um subconjunto das partes de X .

6.2

Inteiros m odulo n

Vamos construir uma rela ca o de equival encia no conjunto dos inteiros. Digamos que, pulando de n em n, todos os inteiros s ao equivalentes. Ou melhor: dois inteiros cuja diferen ca e um m ultiplo de n s ao equivalentes. Formalmente, dizeodulo n se a b e m ultiplo mos que dois inteiros a e b s ao congruentes m de n. Escrevemos: a b (mod n) Exemplos: 10 0 (mod 5) 23 1 (mod 11)

Observa c ao: Congru encia m odulo n e uma rela ca o de equival encia: a a (mod n) (trivialmente) Se a b (mod n), ent ao a b e m ultiplo de n. Mas b a = (a b); logo, b a tamb em e m ultiplo de n. Portanto b a (mod n). Transitividade: exerc cio. Chamamos de Zn o conjunto de inteiros m odulo n. Ou seja, se a Z , ent ao a = {a + kn | k Z} e o conjunto dos m ultiplos de n. Em particular, 0 Voltemos agora ao algoritmo da divis ao de Euclides. Vimos que, dados a e n inteiros positivos, a > n, existem inteiros q e r tais que a = n.q + r or n1 (mod n).

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

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

6.3

Artim etica modular

ao, Sejam a e b classes de Zn . Ent a+b=a+b Exemplo: 5 + 4 9 1 (mod 8) Logo, 5+4=9=1 A diferen ca entre duas classes e denida de maneira an aloga. A f ormula para a multiplica ca o das classes a e b de Zn e: a.b = a.b Propriedades da adi ca o: A1 (a + b) + c = a + (b + c). A2 a + b = b + a. A3 a + 0 = a. A4 a + a = 0. Propriedades da multiplica ca o: M1 (a.b).c = a.(b.c). M2 a.b = b.a. M3 a.1 = a. AM a.(b + c) = a.b + a.c. Exemplo: em Z6 ,

2.3 = 6 = 0!!!

6.4

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 18

Como 10 1 Logo, a 0

(mod 3), a an + an1 + . . . + a1 + a0 (mod 3) se e somente se an + an1 + . . . + a1 + a0 0 (mod 3) (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 algarismos de a e divis vel por 11. Prova Observe que 10 1 (mod 11). Portanto, 10k (1)k (mod 11) e igual a 1 ou -1 dependendo da paridade de k . Logo, a (1)n .an + (1n1 ).an1 + . . . + a2 a1 + a0 (mod 11)

6.5

Pot encias

A aplica ca o 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 Como 35 15 = = 352 +2 +2+1 = 35.352 .352 .352 35.(35)2 .(352 )2 .((352 )2 )2 (mod 20) e 52 5
2 3 3 2 2 3

(mod 20), 152 5 3515 =

(mod 20), temos:

35.352 .352 .352 15.(15)2 .(352 )2 .((352 )2 )2 15.5.(5)2 .((352 )2 )2 15.5.5.(5)2 15.5.5.5 15.5 15 19

(mod (mod (mod (mod (mod (mod

20) 20) 20) 20) 20) 20)

6.6

Equa c oes diofantinas

c ao diofantina e uma equa ca o em v arias inc ognitas com coUma equa ecientes inteiros. Por exemplo, xn + y n = z n . Estaremos interessados em encontrar as solu co es inteiras dessas equa co es. claro que tais equa E co es podem ter innitas solu c es. Por exemplo, x + y = 2. Ou nenhuma, como no caso da equa ca o x3 117y 3 = 5 muito f E acil ver que isso e verdade atrav es da redu ca o m odulo 9. De fato, como 117 e divis vel por 9, x3 117y 3 x3 5 (mod 9) Logo, se a equa ca o acima tivesse solu ca o, dever amos ter x3 5 (mod 9). classes m odulo 9: 0 1 2 3 4 5 6 7 8 Mas: Ou seja, x3 5 cubos m odulo 9: 0 1 8 0 1 8 0 1 8 (mod 9) n ao tem solu ca o.

6.7

Divis ao modular

Teorema 9 (Teorema da invers ao) A classe a tem inverso em Zn se e somente se a e n s ao primos entre si. Prova () Suponha que a tem inverso. Ent ao existe b tal que a.b 1 (mod n) Logo, a.b + k.n = 1 e portanto mdc(a, n) = 1. () Suponha mdc(a, n) = 1. Logo existem e tais que: .a + .n = 1 Ou seja, .a 1 e portanto a tem inverso em Zn . O conjunto dos elementos de Zn que t em inverso e muito importante. Vamos denot a-lo por U (n). Em outras palavras, U (n) = {a Z (n)|mdc(a, n) = 1} 20 (mod n)

No caso de n = p ser 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 de U (n) e um elemento de U (n). Em particular, podemos dividir a por b em Z (n) 1 somente se b U (n); nesse caso, b1 tamb em pertencer a a U (n) e a b a.b (mod n). Podemos utilizar o que aprendemos para resolver congru encias lineares em Z (n). Uma congru encia linear e uma equa ca o do tipo: a.x b (mod n)

onde a, b Z . A solu ca o dessa equa ca o e: x .b (mod n) onde e o inverso de a m odulo n. Conclus ao: Se mdc(a, n) = 1 ent ao a congru encia linear a.x b tem uma e s o uma solu ca o em Zn . (mod n)

6.8

Exerc cios propostos

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

Primeira Prova de Algebra A


b) Encontre dois n umeros inteiros a e b tais que: a.252 + b.198 = d (1)

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

Resolu c ao:

252=198+54 198=3.54+36 54=36+18

54=252-198 36=198-3.54 18=54-36

=198-3.(252-198) =-3.252+4.198 =252-198-(-3.252+4.198) =4.252+(-5).198

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

21

Quest ao 2 - Verique se as proposi co es abaixo s ao verdadeiras ou falsas. D e uma demonstra ca o (= justicativa clara e bem escrita) ou um contra-exemplo para justicar a sua conclus ao. (a) Se p e um n umero primo, ent ao p e um n umero irracional. (b) Se um n umero inteiro A se escreve em base 8 na forma an an1 ...a1 a0 , com 0 ai 7, ent ao 2|A se e somente se a0 = 0. (c) Se p > 3 e um n umero primo e p a( (mod 3)), ent ao mdc(a, 3) = 1. (d) Todo n umero inteiro represent avel com tr es algarismos iguais na base 10 e divis vel por 37. (e) Se x e y s ao inteiros mpares, ent ao x2 + y 2 = p2 para algum primo p. Resolu c ao: a) V- Suponha que existam a, b tais que mdc(a, b) = 1. Logo, p.b2 = a2 e portanto p|a2 . Pela propriedade fundamental dos primos, p|a. Logo, existe c tal que a = pc. p.b2 = p2 .c2 = b2 = p.c2 = p|b2 = p|b Mas isso e um absurdo uma vez que estamos supondo mdc(a, b) = 1. b) F - Seja A = an an1 . . . a1 a0 um n umero na base 8. Ent ao 2|A se e somente se A 0 (mod 2). Observe que A = an .8n + . . . + a1 .8 + a0 a0 (mod 2) p =
a b.

Podemos supor

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 - Se p a (mod 3), ent ao o resto da divis ao de p e a por 3 e o mesmo. Como p e primo, p > 3, temos que p1 Logo, a 1 (mod 3) ou p 2 (mod 3) (mod 3), ou seja, com k = 1, 2

(mod 3) ou a 2 a = 3n + k,

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

22

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

e) F - Se x e y s ao mpares, ent ao existem n e m tais que x = 2n + 1, Logo, x2 + y 2 = 4n2 + 4n + 1 + 4m2 + 4m + 1 = 2(2n2 + 2n + 2m2 + 2m + 1) = 2k y = 2m + 1

onde k e um n umero mpar. Logo n ao existe p tal que x2 + y 2 = p2 Observe que p n ao precisa ser primo: vale para qualquer n umero natural. Quest ao 3 - Resolva um (e apenas um) dos exerc cios abaixo: (a) Seja p um n umero primo. Mostre que um inteiro positivo a e o seu pr oprio inverso m odulo p (ou seja, a2 1 (mod p)) se e somente se a 1 (mod p) ou a 1 (mod p). (b) Calcule 1235 Resolu c ao: a) (=) Suponhamos a2 1 (mod p). Logo, (a2 1) 0 (mod p) = p|(a + 1)(a 1) Pela propriedade fundamental dos primos, p|(a + 1) ou p|(a 1). Logo, a 1 (mod p) (=) Trivial! b) Observe que 35 = 25 + 2 + 1. Logo, 1235 23 122 .122 .12 2.6.12 2.3 6 (mod 23)
5

(mod 23).

ou

a 1

(mod p)

8
8.1

Indu c ao e Fermat
Indu c ao nita

Seja P (n) uma proposi ca o que arma que uma determinada propriedade vale para cada n umero natural n. Por exemplo: Se p e um n umero primo, ent ao np n e divis vel por p para todo natural n. A soma de 1 at en e
n(n+1) 2

Para provar P (n), em geral usamos o princ pio da indu c ao nita : Princ pio da indu c ao nita Para que uma proposi ca o P (n) seja verdadeira para todo n natural, 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 p um n umero primo e a, b inteiros. Ent ao, (a + b)p ap + bp Prova Veja livro texto, pag 94. (mod p)

Teorema 11 (Teorema de Fermat) Seja p um n umero primo e a um n umero inteiro. Ent ao ap a (mod p). Prova Se n = 1, ent ao 1p 1 (mod p) trivialmente. Suponhamos que np n o lema anterior, (mod p) para algum n inteiro positivo. Usando

(n + 1)p np + 1p np + 1 (mod p) Como pela hip otese de indu ca o temos np n (mod p), (n + 1)p np + 1 n + 1 (mod p) Como quer amos demonstrar. 24

Caso geral: veja pag 95 do livro texto. Teorema 12 (Teorema de Fermat II) Seja p um n umero primo e a um inteiro que n ao e divis vel por p. Ent ao, ap1 1 (mod p). Prova Como mdc(a, p) = 1, existe a tal que aa 1 (mod p)

Multiplicando ambos os membros de ap a (mod p). por a , obtemos: a .a.ap1 a .a Logo, ap1 1 (mod p). Podemos simplicar algumas contas usando o Teorema de Fermat. De fato, sejam p primo, a inteiro tal que mdc(a, p) = 1 e k um n umero inteiro tal que k p 1. Dividindo k por p 1, k = (p 1).q + r Logo, Mas (a
p1

(mod p).

0 r < (p 1) (mod p).

ak a(p1).q+r (ap1 )q .ar ) 1 (mod p) e portanto ak ar (mod p).

8.3

Exerc cios propostos

1, 3, 46, 7, 8, 12

Pseudoprimos

Nesta se ca o, veremos com usar o pequeno teorema de Fermat para identicar a-lo . que um n umero e composto sem fator

25

9.1

Pseudoprimos

De acordo com o teorema de Fermat, se p e primo e a e um inteiro qualquer, ent ao ap a (mod p). Desta forma, e claro que, se n e um n umero composto, ent ao existe um inteiro b tal que bn \ b (mod n) (usaremos o s mbolo \ para signicar n ao equivalente). Observe que, na pr atica, s o precisamos considerar os inteiros b no 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: Teste Se n, b s ao n umeros inteiros, n > 0 e 1 < b < n 1, tais que bn1 \ 1 (mod n), ent ao n 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 tal b signica que n e primo? Resposta: Observe que, se n e composto, ent ao existe p primo, 1 < p < n 1 tal que p|n. Logo, mdc(p, n) = p = 1 e portanto p n ao e invers vel m odulo n. Desta forma, pn1 \ 1 (mod n).

claro que esse n E ao e um m etodo eciente 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 mpar n que satisfa ca: bn1 1 (mod n) para algum 1 < b < n 1 e primo? Infelizmente, a resposta e n ao. Por exemplo, 2340 1 (mod 341) mas 341 = 11.31 n ao e primo! Esses falsos primos s ao conhecidos como pseudoprimos. Ou seja, um pseudoprimo n para a base b e um n umero inteiro positivo mpar e composto tal que bn1 1 (mod n)

Apesar de ` as vezes dar errado, esse teste (chamado de teste de Leibniz) e muito u til. 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 bases b tais que mdc(b, n) = 1. umero de Carmichael Dizemos que um n umero composto mpar e um n bn b (mod n). 26 se

Os n umeros de Carmichael possuem duas propriedades muito interessantes, dadas pelo teorema baixo: Teorema 13 (Teorema de Korselt:) Um inteiro positivo mpar n e um n umero de Carmichael se, e somente se, cada fator primo p de n satisfaz as seguintes condi co es: 1. p2 n ao divide n; 2. p 1 divide n 1. Prova (=) Seja p um fator primo de n. Ent ao, bn b (mod p)

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 (mod p) Pela condi ca o (2) do teorema, n 1 = (p 1).q para algum q . Logo, bn (bp1 )q .b b (mod p) Por (1), temos que n = p1 . . . pk com p1 < p2 < . . . < pk . Como os primos s ao distintos, bn b e divis vel pelo produto p1 .p2 . . . . .pk = n. Em outras palavras, bn b (mod n) e portanto n e um n umero de Carmichael. (=) Seja n um n umero de Carmichael e suponhamos que exista p primo tal que p2 |n. Escolha b = p. Ent ao: pn p = p(pn1 1) Mas p n ao divide pn1 1, logo p2 n ao pode dividir pn p. Portanto, n n ao n pode dividir p p. Em outras palavras, p p (mod n). Absurdo. O restante da demonstra ca o depende do teorema da raiz primitiva, que s o ser a vista no cap tulo 10... Observa co es: Para vericar 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 innitos n umeros de Carmichael. Entre 1 e 109 existem 50.847.534 primos e 646 n umeros de Carmichael. 27

9.3

Teste de Miller

Teorema de Fermat: detecta n umeros compostos com uma certa eci encia, mas n ao e um bom teste de primalidade. Teste de Miller: Calcula-se a sequ encia de pot encias m odulo n: bq , b2q , . . . , b2 onde n 1 = 2k q . O fato e que, se n e primo, ent ao: b2
k k

bn1 1 (mod n)
j

Digamos que j e o menor expoente tal que b2 q 1 (mod n). Se j 1 podemos escrever j j 1 j 1 b2 q 1 = (b2 q 1)(b2 q + 1) Se n e primo e divide b2 q 1, ent ao n deve dividir (b2 de j . Logo, j 1 b2 q 1 1 (mod n) Ou seja, uma das pot encias bq , b2q , . . . , b2
k j j 1

+1) pela minimalidade

deve ser congruente a 1 m odulo n. Se j = 0, ent ao temos apenas que bq 1 (mod n). Se nada disso acontecer, ent ao n deve ser composto. Teste de Miller. Etapa 1 Divida n 1 por 2 at e encontrar q mpar e k tais que n 1 = 2k q . Etapa 2 Fa ca i = 0 e r = resto de bq por n. Etapa 3 Se i = 0 e r = 1 ou i 0 e r = n 1: teste inconclusivo. Etapa 4 Fa ca i = i + 1 e r = r2 onde r2 e o resto da divis ao de r2 por n. Etapa 5 Se i < k volte ` 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 odulo 561 das pot encias de 2: expoentes restos 35 263 2.35 166 28 22 .35 67 23 .35 1

Logo 561 tem que ser composto. Se um n umero composto n tem resultado inconclusivo para o teste de Miller com respeito a uma base b, dizemos que n e um pseudoprimo forte para a base b. Observe que pseudoprimo forte pseudoprimo.

Existem 1282 pseudoprimos fortes entre 1 e 109 .

9.4

Primalidade e computa c ao alg ebrica

importante ressaltar que o teste de Miller E e muito usado na pr atica. O que se faz para ter maior garantia do resultado e fazer o teste para diversas bases. assim com o Maple, ScratchPad - IBM, Axiom 1.1 - IBM. E Vale a observa ca o: dado um n umero nito qualquer de bases, existem innitos n umeros de Carmichael que s ao pseudoprimos fortes para todas essas bases.

9.5

Exerc cios propostos

2, 5, 7, 8, 10

10

Teorema de Euler

O pequeno teorema de Fermat nos diz como trabalhar com certas congru encias envolvendo expoentes quando o m odulo e primo. Nessa se ca o, veremos como lidar com congru encias m odulo um n umero composto.

10.1

Fun c ao de Euler

Deni c ao. Seja n um inteiro positivo. A fun c ao de Euler (n) e denida como o n umero de inteiros positivos n ao excedendo n que s ao relativamente primos com n. A tabela abaixo apresenta os valores de (n) para 1 n 12. n (n) 1 1 2 1 3 2 4 2 5 4 6 2 7 6 8 4 9 6 10 4 11 10 12 4

Na se ca o de aritm etica modular, estudamos o conjunto U (n), o conjunto dos elementos de Zscrn que t em inverso. Vimos que U (n) = {a Zn : mdc(a, n) = 1} 29

Desta forma, (n) nada mais e do que o n umero de elementos de U (n). Vamos ver como calcular (n). Come camos com alguns casos especiais. Seja p um n umero primo. Ent ao todos os inteiros positivos menores que p s ao primos com p. 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 por p. Se 0 a < pk e divis vel por p, 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. k Logo h a p pk1 que n ao s ao divis veis por p. Ou seja, (pk ) = pk1 (p 1)

Para obtermos a f ormula geral, e necess ario provar o seguinte resultado: Teorema. Se m, n s ao inteiros positivos tais que mdc(m, n) = 1, ent ao (mn) = (m).(n) A demonstra ca o 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
ek 1 Pelo teorema acima temos que, se n = pe ao, 1 . . . . .pk , ent
k 1 1 1 (n) = pe . . . . .pe (p1 1). . . . .(pk 1) 1 k

10.2

Teorema de Euler

Vai ser necess ario, para decodica ca o de mensagens, saber calcular a fun ca o de Euler. Tamb em vamos ter que aplicar o teorema de Euler. O teorema e uma generaliza ca o do teorema de Fermat para o caso em que o de Euler 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 (mod n) Antes de provar esse teorema, vamos apresentar um exemplo.

30

Exemplo 9 Temos que U (8) = {1, 3, 5, 7} e portanto (8) = 4. Observe que, se a, b, c U (8), ent ao a.b U (8) e, se c = b, ent ao a.b\ a.c (por que?)

Para ver como isso funciona, tome a = 3. Ent ao, 3.1 3.3 3.5 3.7 Logo, (3.1).(3.3).(3.5).(3.7) 1.3.5.7 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) Se n e um inteiro positivo e a um inteiro tal que mdc(n, a) = 1, ent ao a(n) 1 (mod n) Prova Escrevendo U (n) = {b1 , . . . , b(n) }, temos que: (a.b1 ). . . . .(a.b(n) ) b1 . . . . .b(n) Logo, a(n) .b1 . . . . .b(n) b1 . . . . .b(n) (mod n) Como mdc(b1 . . . . .b(n) , n) = 1, podemos cortar o termo comum dos dois lados e portanto, a(n) 1 (mod n) (mod n) (mod 8) 3 1 7 5 (mod (mod (mod (mod 8) 8) 8) 8)

10.3

Exerc cios propostos

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

31

10.4

Tabela Hashing

Uma universidade deseja estocar um arquivo para cada um de seus estudantes no seu computador. O n umero identicador, 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 ca o 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 co es de mem oria. De outra forma, caria imposs vel acessar os arquivos... Um desses m etodos e utilizando a tabela hashing , baseada em fun co es arias propostas para fun co es hashing. Vamos discutir hashing . Existem v (brevemente) o tipo mais utilizado. Seja k a chave do arquivo a ser estocado e seja n um inteiro positivo. Denimos a fun ca o hashing h(k ) por h(k ) k (mod n)

claro que devemos escolher um n adequado de modo que onde 0 h(k ) < n. E os arquivos quem distribu dos de uma maneira razo avel entre as n posi co es poss veis de mem oria. Por exemplo, n n ao deve ser uma pot encia de 10 (10r ) simplesmente porque o valor da fun ca o h seria os r u ltimos d gitos da chave. Outro exemplo de uma escolha ruim e quando n|10m a onde a e m s ao pequenos. Por exemplo, se n = 111|(103 1) = 999 ent ao 103 1 (mod n) e portanto os n umeros: 64121284868 e 64184821268

v ao para a mesma posi ca o de mem oria. Para evitar esses problemas, n deve ser um n umero primo pr oximo do n umero de posi co es dispon veis. Por exemplo, se existem 5000 posi co es de mem oria para o armazenamento de 2000 arquivos de estudantes, podemos escolher n = 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 ca o livre. Existem v arias maneiras de fazer isso e as mais complicadas s ao as mais ecientes. Eu poderia passar o dia falando sobre elas, mas vou citar apenas uma, a mais simples. Consiste em tomar: hj (k ) h(k ) + j (mod n)

Desta forma, a chave k e alocada na posi ca o mais pr oxima poss vel de h(k ). A eci encia desse m etodo e realmente baixa, pois tende a haver um engarrafamento. Na pr atica, o mais f acil e atachar uma lista a cada posi ca o de mem oria. Dessa forma, procede-se por busca sequencial. 32

11
11.1

Criptograa RSA
Pr e-codica c ao

Em primeiro lugar, devemos converter a mensagem em uma sequ encia de n umeros. Essa primeira etapa e chamada de pr e-codica ca o. H a v arias maneiras de se fazer isso. Aqui vamos supor que o texto n ao cont em acentua ca o, pontua ca o, 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 A ser a convertida no n umero 10, B ser a 11 e assim por diante, at e o Z correspondendo ao n umero 35. Observe que cada letra corresponde a um n umero com exatamente dois algarismos. Isso evita ambiguidades. A chave p ublica e um n umero n = p.q , onde p e q s ao primos. Antes de come car devemos, ent ao escolher esses n umeros. O u ltimo passo da pr e-codica ca o e quebrar a mensagem em blocos. Esses blocos devem ser n umeros menores que n. A maneira de escolher os blocos n ao eu nica, mas e importante evitar duas situa co es: Nenhum bloco deve come car com o n umero 0 (problemas na decodica ca o). Os blocos n ao devem corresponder a nenhuma unidade lingu stica (palavra, letra, etc). Assim a decodica ca o por contagem de frequ encia ca imposs vel.

11.2

Codicando e decodicando

Para codicar a mensagem precisamos de n = p.q e de um inteiro positivo e que seja invers vel m odulo (n). Em outras palavras, mdc(e, (n)) = mdc(e, (p 1).(q 1)) = 1 c ao Chamaremos o par (n, e) a chave de codica do sistema RSA. Codicaremos cada bloco de mensagem separadamente e a mensagem codicada ser a a sequ encia de blocos codicados. Importante: Os blocos j a codicados n ao poder ao ser reunidos de modo a formar um longo n umero. Isso tornaria a decodica ca o imposs vel! Vamos agora mostrar como codicar cada bloco b. Chamaremos o bloco codicado de C (b). Em primeiro lugar, lembre-se que b e menor que n. Ent ao: C (b) be Onde 0 C (b) < n. (mod n)

33

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 exemplo n = 11.13 = 143 Podemos ent ao quebrar a mensagem acima em blocos, que devem ter valor menor que 143: 25 102 7 102 93 49 91 49 92 118 23 13 10 Ent ao temos que (143) = 10.12 = 120 e portanto e deve ser um n umero que n ao divide 120. O menor valor poss vel e 7. Logo, C (25) 257 252 .252 .25 (mod 143) 2 252 .53.25 (mod 143) 532 .53.25 (mod 143) 92.53.25 (mod 143) 14.25 (mod 143) 64 (mod 143)
2

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 decodicar um bloco de mensagem codicada. A informa ca o que precisamos para decodicar est a contida no par (n, d), onde d e o inverso de e m odulo (n). Chamaremos (n, d) de chave de decodica c ao e de D(c) o resultado do processo de decodica ca o. D(c) e dado por: D(c) cd (mod n) onde 0 D(c) < n. Observe que e muito f acil calcular d, desde que (n) e e sejam conhecidos: basta aplicar o algoritmo euclideano estendido. Entretanto, se n ao conhecemos p e q e praticamente imposs vel calcular d. Voltando ao nosso exemplo, temos que n = 143 e e = 7. Para calcular d, 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 que d seja positivo. Logo tomamos d = 120 117 = 103.

34

11.3

Funciona?

A pergunta obvia que surge agora e: D(C (b)) = b? Ou seja, decodicando um bloco de mensagem codicada, encontramos um bloco da mensagem original? Porque sen ao todo nosso esfor co foi sem sentido... Vamos mostrar nessa se ca o que a resposta para a pergunta acima e sim . Consideremos ent ao n = 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 escolhemos b menor que n e mantivemos os blocos separados depois da codica ca o! Por deni ca o, temos que DC (b) (be )d be.d (mod n)

Se mdc(b, n) = 1, ent ao podemos usar o teorema de Euler: bed (b(n) )k .b b (mod n)

Mas d e o inverso de e m odulo (n). Logo existe inteiro k tal que ed = 1+ k(n). Logo, bed b1+k(n) (b(n) )k .b (mod n)

Se mdc(b, p) = 1, ent ao podemos usar o teorema de Fermat (bp1 1 (mod p)). Se n ao, temos que p|b e portanto bed b 0 (mod p) Logo, qualquer que seja b. bed b (mod p)

Se b e n n ao s ao primos entre si, obderve que n = p.q , p e q primos distintos. Logo, bed b1+k(n) (b(p1) )k.(q1) .b (mod p)

Fazemos o mesmo para o primo q , obtendo: bed b Portanto, como quer amos. bed b (mod p.q ) (mod q )

35

11.4

Porque o RSA e seguro

Como j a vimos, o par de codica ca o (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 calcular d se soubermos o valor de (n), cujo c alculo depende da fatora ca o de n. A pergunta que surge ent ao e: ser a que n ao existe outro processo para calcular d e (n)? Por exemplo, o que aconteceria se algu em inventasse um m etodo para calcular (n) a partir de n e e? A resposta e que ter amos, ent ao, um algoritmo r apido de fatora ca o. 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 + q 2 + 2pq ) 4pq = (p q )2 Logo, que tamb em e conhecido. Ou seja, conhecemos p+q e pq . Portanto conhecemos p e q e fatoramos n! Deste modo, conhecer (n) sem fatorar n signica que, na verdade, sabemos fatorar n! Outro jeito de quebrar o RSA seria achar um algoritmo que calcule d diretamente a partir de n e e. Como ed 1 (mod (n)), isto implica que conhecemos um m ultiplo de (n). Isso tamb em e suciente para fatorar n (prova complicada). Au ltima alternativa seria achar b a partir da forma reduzida de be m odulo n sem achar d. Bom, ningu em conseguiu fazer isso at e agora... Acredita-se que quebrar o RSA e fatorar n sejam problemas equivalentes, apesar disso n ao ter sido demonstrado. pq = (p + q )2 4n

11.5

Escolhendo primos

Suponha que desejamos implementar o RSA de chave p ublica (n, e), de modo que n seja um inteiro com aproximadamente r algarismos. Para construir n, escolha r 45r 4r e 100 algarismos e, em seguida, escolha q pr oximo de 10 um primo p entre 10 p . O tamanho da chave recomendado atualmente para uso pessoal e de 768 bits. Isso signica que n ter 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 umeros p 1, q 1, p + 1, p 1 n ao tenham fatores primos pequenos, pois sen ao seria f acil fatorar n. Para encontrar p e q , seguiremos a seguinte estrat egia: 1. Tome um n umero s mpar. 36

2. Verique se n e divis vel por um primo menor que 5.000. 3. Aplique o teste de Miller a s usando como base os 10 primeiros primos. Encontrar tais primos pode ser um processo trabalhoso. Por exemplo, se x e um n umero da ordem de 101 27, no intervalo entre x e x + 104 existem aproximadamente 34 primos dentre 560 n umeros que passam a etapa (1) da estrat egia acima...

11.6

Assinaturas

Apenas codicar mensagens n ao basta, em geral, pois o sistema e de chave p ublica. Ou seja, qualquer pessoa pode codicar uma mensagem usando uma chave alheia. Por exemplo, um haker poderia facilmente mandar instru co es 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 de Cm e Dm as fun co es de codica ca o e decodica ca o do M ario e de Ca e Da as fun co es de codica ca o e decodica ca o 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 de Ca (b), o M ario envia Ca (Dm (b)) Ou seja, primeiro ele decodica a mensagem como s o ele pode fazer, depois ele codica o resultado, como s o o Allan pode ler. Para ler a mensagem, primeiro o Allan aplica Da e depois Cm . Observe que Cm e p ublico. Se a mensagem zer 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

1o trabalho pr atico

O trabalho tem como objetivo a cria ca o de dois n umeros primos grandes (entre 20 e 30 bits). Para isso: Gere dois n umeros mpares m e k da magnetude acima, de modo que n ao sejam muito pr oximos um do outro. 37

Verique se m, k s ao divis veis por um primo menor que 5.000. Aplique o teste de Miller a m, k usando como base os 10 primeiros primos (se voc e quiser ter uma certeza maior sobre o resultado, fa c teste para mais primos). Depois calcule n = m.k e aplique os algoritmos da fatora ca o e de Fermat a n para ver se sua chave p ublica e facilmente quebrada. O trabalho dever a ser entregue no dia 06/08/2002 constar de: (sem falta!) e dever a

Parte escrita de no m aximo duas p aginas digitadas. Essa parte dever a conter os resultados do trabalho juntamente com a an alise desses resultados (em especial, se foi f acil quebrar a sua chave ou n ao). C odigo impresso comentado . Evitem C+ +, por favor! Disquete com o execut avel do programa. Este tamb em pode ser enviado por e-mail. Lembrem-se que eu posso rodar apenas programas em Delphi (4.0) ou qualquer outra linguagem que rode nas estacoes do DCC. Ent ao evitem artif cios gr acos sosticados...

13
13.1

Ra zes primitivas
Teste de Lucas

Para determinar se n e primo, podemos vericar se (n) = n 1. Ou seja, se mdc(a, n) = 1 para todo a menor que n. Isso s o e poss vel se n e mpar. Logo precisamos encontrar um jeito de calcular (n) sem fatorar n. Mas j a vimos que isso e imposs vel... Teorema da raiz primitiva. Se p e um primo, existe b Zn tal que bp1 1 (mod p) mas br \ 1 (mod p) se r < p 1. umero k tal que Em geral, chamaremos de ordem do elemento b em Zn o n bk 1 (mod n) e br \ 1 (mod n) se r < k . Observe que se n e primo e 1 < b < n, ent ao a ordem de b e p 1.

38

Teorema de Lagrange. A ordem de b tem que dividir a ordem de U (n), que e igual a (n). Logo, dado n mpar, se existe b tal que bn1 1 (mod n) e bt \ 1 (mod n) se t < n 1 ent ao n e primo pois ter amos n 1 (n) n 1. De acordo com o teorema da raiz primitiva, se n e primo, tal b sempre existe. Encontr a-lo e uma quest ao de sorte... Para aplicar isso ` a primalidade, precisamos encontrar uma maneira eciente de mostrar que a ordem de um elemento de U (n) e exatamente n 1. Teste de Lucas. Sejam n impar e 1 b n 1. Se bn1 1 e b
n 1 p

(mod n)

\ 1 (mod n)

para cada fator primo de n 1, ent ao n e primo. Demonstra ca o: Veja o livro texto pag 168. Continua... Aguardem!

14

Sistemas de congru encias

O objetivo dessa se ca o e estudar a solu ca o de sistemas de equa co es lineares. A aplica ca o para criptograa e o desenvolvimento de um m etodo para partilhar senhas.

14.1

Equa c oes lineares

J a estudamos o caso de uma equa ca o linear ax b (mod n)

Se a possui um inverso em Zn , ent ao multiplicando ambos os lados da equa ca o acima por : (ax) b (mod n) x b (mod n) Em particular, se n e primo e a\ 0 tem solu ca o. (mod n), ent ao a equa ca o acima sempre

39

Se a n ao tem inverso em Zn , ent ao mdc(a, n) = d = 1. Logo, a equa ca o: ax ny = b s o tem solu ca o quando b e divis vel por d. Suponhamos ent ao que d divide b. Escreveremos a = da , b = db e n = dn . Cancelando os ds, chegamos ` a seguinte equa ca o: a x n y = b Ou seja, Observe que agora mdc(a , n ) = 1, e essa equa ca o sempre tem solu ca o. Exemplo 11 Seja 6x 4 (mod 8). Dividindo pelo mdc(6, 8) = 2, obtemos 3x 2 Logo a solu ca o procurada e: x 2 (mod 4) Mas observe que o m odulo mudou de 8 para 4... Para consertar isso, vamos escrever a express ao acima em uma express ao de inteiros: x = 2 + 4k Duas possibilidades: k e par. Nesse caso, x 2 (mod 8) e 2 e uma solu ca o. k e mpar (k = 2m + 1). Nesse caso, x 6 (mod 8) e 6 e outra solu ca o. (mod 4) a x b (mod n )

Ou seja, uma equa ca o linear possui mais de uma solu ca o.

14.2

Um exemplo astron omico

Tr es sat elites passar ao sobre o Rio essa noite. O primeiro a ` uma hora , o segundo a `s 4 horas e o terceiro a `s 8 horas da manh a. O primeiro leva 13 horas para completar uma volta em torno da terra, o segundo 15 horas e o terceiro 19 horas. Determine quantas horas decorrer ao, a ` partir de meia noite, at e que os tr es sat elites passem ao mesmo tempo sobre o Rio. Montagem matem atica: seja x e o n umero de horas, contadas a partir da meia noite de hoje, quando os tr es sat elites passar ao juntos sobre o Rio. Ent ao: x 1 x 4 x 8 40 (mod 13) (mod 15) (mod 19)

Podemos re-escrever a primeira equa ca o cmo x = 1 + 13t, Substituindo a primeira equa ca o na segunda, obtemos: t 6 (mod 15) Logo x = 79 + 195u. Substituindo essa equa ca o na terceira: u 1 (mod 19) Logo, x = 79 + 195u = 274 + 3705v Logo os sat elites passar ao juntos pela primeira vez 274 horas depois da meia noite de hoje.

14.3

Algoritmo chin es do resto

Observe que, para resolver o problema dos sat elites, resolvemos as duas primeiras equa co es, obtendo x = 79 + 195u. Isso corresponde a uma nova equa ca o, x 79 (mod 195). Em geral, a solu ca o de um sistema de muitas equa co es e obtida atrav es da solu ca o de v arios sistemas de duas equa co es. Desta forma, vamos analisar apenas o algoritmo correspondente a solu ca o de um sistema de duas equa co es. Considere ent ao o sistema x a x b (mod m) (mod n)

Podemos re-escrever a primeira equa ca o na forma: x = a + my Substituindo x na segunda equa ca o, obtemos: my (b a) (mod n)

Sabemos que essa equa ca o tem solu ca o se e somente se o mdc(n, m) divide b a. Vamos assumir que mdc(n, m) = 1. Seja ent ao o inverso de m m odulo n. Ent ao: y (b a) (mod n) y = (b a) + nz x = a + m(b a) + mnz x = a(1 m) + mb + mnz x = an + mb + mnz Observe que essa solu ca o eu nica. Temos ent ao o seguinte teorema: 41

Teorema Chin es do resto. Sejam n1 , . . . , nk inteiros positivos, dois a dois primos entre si. Ent ao o sistema x a1 . . . x ak (mod n1 ) (mod nk )

sempre tem uma solu ca o u nica em Zn1 ...nk .

14.4

M odulos n ao co-primos

Analisaremos esse caso atrav es de um exemplo. Considere o sistema: x 3 x 19 (mod 12) (mod 8)

Da primeira equa ca o, obtemos x = 3 + 12y . Substituindo isso na segunda equa ca o, temos 12y 16 (mod 8). Dividindo essa equa ca o por 4, obtemos 3y 4 (mod 2). Logo, x 3 (mod 24) Observe que 24 e o mmc entre 8 e 12...

14.5

Partilha de senhas

Suponha que que desejemos partilhar uma senha s entre n pessoas, de modo que a cada pessoa seja dado um elemento (uma parte) da senha. Esse elemento e tal que e escolhido de um conjunto S de n pares de inteiros positivos de modo que, para um inteiro positivo k n previamente escolhido temos: 1. qualquer subconjunto de S com k elementos permite determinar s facilmente; 2. e muito dif cil determinar s conhecendo menos de k elementos de S . Come camos escolhendo um conjunto L de n inteiros positivos, dois a dois primos entre si. Seja N o produto dos k menores n umeros de L e M o produto dos k 1 maiores n umeros de L. Dizemos que esse conjunto tem limiar k se N >s>M Observe que essa condi ca o implica que o produto de k ou mais elementos de L e sempre maior que N e o produto de menos de k elementos e sempre menor que M. O conjunto S ser a formado pelos pares da forma (m, sm ) onde m L e sm e a forma reduzida de s m odulo m. Observe que limiar k 1 implica s > m para qualquer m L. Logo sm < s para qualquer m L. 42

Suponhamos que sejan conhecidos, em um dado momento, t elementos, k . Denotaremos esses pares por (m1 , s1 ), . . . , (mt , st ). Vamos resolver o sistema de congru encias: x s1 (mod m1 ) x s2 (mod m2 ) ... x st (mod mt ) obtendo x0 como solu ca o. Pelo teorema chin es do resto, x0 s (mod m1 . . . . .mt ) Por que? Sabemos que, como t k , m1 . . . . .mt N > s Pelo teorema chin es do resto, o sistema acima tem uma u nica solu ca o menor que m1 . . . . .mt . Mas s tamb em e solu ca o do sistema e s < m1 . . . . .mt . Logo s = x0 . Observa co es: poss 1. E vel escolher os m odulos de modo que que praticamente imposs vel encontrar s atrav es de uma busca. sempre poss 2. E vel escolher um conjunto L que satisfa ca todas as condi co es. Exemplo 12 Digamos que em um banco h a 5 funcion arios e pelo menos 2 t em que estar presentes para que o cofre seja aberto. Logo o conjunto L deve ter 5 elementos, e seu limiar deve ser 2. Uma escolha poss vel escolhendo apenas primos pequenos e L = {11, 13, 17, 19, 23} O valor de s pode ser escolhido como sendo qualquer inteiro no intervalo que vai de 23 a 143. Digamos s = 30. Ent ao: S = {(11, 19), (13, 17), (17, 13), (19, 11), (23, 7)} Se os funcion arios que possuem as senhas (17, 13) e (23, 7) est ao no banco, para obter a senha e preciso resolver o sistema x 13 x 7 A solu ca o e x = 30 + 391k ... (mod 17) (mod 23)

14.6
1,2,4

Exerc cios propostos

43

15
15.1

L ogica e ci encia da computa c ao


Motiva c ao

L ogica em ci encia da computa ca o: Primeira abordagem computa ca o-como-modelo: computa co es s ao estruturas matem aticas contendo nodos, estados e transi co es e a l ogica constr oi armativas sobre essas estruturas. Segunda abordagem computa ca o-como-dedu ca o: estados s ao descritos atrav es de um conjunto de proposi co es e mudan cas nos estados s ao modelados por mudan cas nas proposi co es dentro de uma deriva ca o (ou seja, por passos na constru ca o de uma prova) A primeira abordagem tem sido amplamente estudada e faz uso de t opicos da matem atica como teoria de conjuntos, teoria das categorias, algebras, etc. para modelar computa co es. Em geral, as estruturas matem aticas utilizadas s ao complexas porque devem lidar com o conceito de innitude. A segunda abordagem, apesar de lidar com estruturas mais simples (que raramente fazem refer encia ao innito) e de estar mais intimamente ligada ` a computa ca o, tem merecido pouca ou nenhuma aten ca o nos u ltimos tempos. Apenas ap os recentes pesquisas na area de teoria de provas e programa ca o l ogica observou-se um crescimento do estudo nessa area de pesquisa. L ogicas expressivas como l ogica linear (e Forum - linguagem de programa c ao baseada em l ogica linear) passaram a ser utilizadas para modelar estados, transi co es de estado e algumas primitivas de concorr encia.

15.2

L ogica Cl assica

A verdade de uma armativa e absoluta e independe da quaisquer pensamento, entendimento ou a ca o. Armativas s ao verdadeiras ou falsas, onde falso e a mesma coisa que n ao verdadeiro. Isso e conhecido com princ pio do meio exclu do: pp.

15.3

L ogica Intuicionista

Em pp nenhuma informa ca o e dada sobre qual realmente vale:

44

Existem dois n umeros irracionais x e y tais que xy e racional. Existem sete 7s consecutivos na representa ca o decimal do n umero . Armativas s o s ao v alidas perante a exist encia de uma prova ou constru ca o da armativa. Essa l ogica e de especial interesse porque suas f ormulas est ao em correspond encia 1 a 1 com tipos em -calculus, base das linguagens de programa ca o funcionais: Lisp, ML, Haskell. Ainda, l ogica intuicionista e uma l ogica de recursos innitos (mas n ao de conclus oes innitas).

15.4

L ogica linear

L ogica linear e uma l ogica de recursos conscientes. No caso de transi ca o de estados: maior tem valor 1 maior tem valor 2 claro que a proposi E ca o { maior tem valor 1} deve deixar de ser v alida no estado 2, enquanto que a proposi ca o { maior tem valor 2}, que n ao era v alida no estado 1, passa a valer no estado 2. Esse tipo de comportamento n ao pode ser descrito em l ogicas cl assica ou intuicionista, apenas em l ogica linear.

15.5

Linguagens l ogicas de programa c ao - Prolog

Uma deni ca o comum das cl ausulas de Horn e dada de acordo com a seguinte gram atica: G ::= A|G G D ::= A|G A|xD Ou seja, f ormulas gol s ao conjun co es de f ormulas at omicas e cl ausulas de programas s ao da forma: x1 . . . xm [A1 . . . An A0 ] Observe que, como implica ca o e quantica ca o universal n ao est ao presentes no gol, todas as hip oteses e termos necess arios para completar a prova devem estar presentes desde o in cio do programa: assinaturas e programas s ao globais. Ou seja, nada de mecanismos para modulariza ca o ou construtores de dados! 45

15.6

Linguagens l ogicas de programa c ao - -Prolog

As f ormulas de primeira ordem de Harrop estendem as cl ausulas de Horn, uma vez que admitem implica co es e quanticadores universais no gol: G ::= A|G G|P G|xG D ::= A|G A|xD Deste modo, o programa pode crescer ao longo da prova (modulariza ca o) e novas constantes podem ser adicionadas ao programa (abstract datatypes) Desvantagem: recursos ilimitados para constru ca o de provas.

15.7

Linguagens l ogicas de programa c ao - Forum

L ogica linear n ao e uma linguagem abstrata de programa ca o. Forum e uma linguagem l ogica de programa ca o baseada em l ogica linear. : ; ; possui uma prova em Forum se e somente se ! , , ? . Al em de modulariza ca o e abstra ca o de dados tamb em permite encapsula ca o de estado, concorr encia e primitivas de comunica ca o e sincroniza ca o. Cl ausulas em Forum possuem a forma: y (G1 Gm G0 ), (m 0) onde G0 , . . . , Gm s ao f ormulas arbitr arias em Forum e denota ou .

16

Algebra e ci encia da computa c ao

A principal aplica ca o de matem atica em ci encia da computa ca o e na deni ca o de sem antica formal em linguagens de programa ca o. Sem antica e geralmente denida como o estudo da rela ca o entre palavras e senten cas de uma linguagem (escrita ou falada) e os seus signicados. E uma area que tem recebido, atrav es dos tempos, muita aten ca o em ling u stica e losoa, que estudam o signicado de senten cas na linguagem natural. Uma segunda area de estudo de sem antica se concentra no signicado de senten cas em linguagens formais de l ogica matem atica, originalmente projetada para servir como funda ca o da matem atica. Esta se ca o visa discutir, brevemente, t opicos de uma terceira area da sem antica: aquela que tem por objetivo desenvolver t ecnicas para expressar a sem antica de linguagens utilizadas para programa ca o de computadores. Estaremos especialmente interessados no uso de estruturas matem aticas tais como grupos, dom nios e teoria de categorias na descri c ao de sem antica de linguagens imperativas (como o Pascal) e funcionais (como ML, Haskell). 46

17

Sem antica

Tradicionalmente, linguagens de computadores t em sido baseadas em uma seq u encia de comandos, determinados por senten cas imperativas. Em linguagem natural, tais senten cas s ao aquelas que podem ser encontradas em um livro de receitas: Bata a clara do ovo at e car dura. (1) Em contraste, senten cas de l ogica matem atica visam estabelecer verdades absolutas: Quando batida, a clara do ovo ca dura. (2) Muitas pesquisas em m etodos para analisar programas em uma certa linguagem procuram formalizar a rela ca o entre os dois exemplos citados acima. Anal de contas, a senten ca l ogica (2) garante que uma pessoa que execute o que manda a senten ca imperativa (1) vai ter sucesso em terminar a tarefa de mudar a consist encia da clara do ovo. Desta forma, uma maneira de descrever comandos (que s ao senten cas imperativas) de uma linguagem de programa ca o e estabelecendo uma rela ca o entre o estado do computador antes e depois da execu ca o do comando (como descrito por senten cas l ogicas). Essa interpreta ca o relacional de fragmentos de programa pode ser formalizada atrav es da sem antica denotacional. Vejamos um exemplo da sem antica do comando if. Escreveremos C [] para denota ca o de um comando e E [] para denota ca o de uma express ao. Ent ao temos: C [if E then C1 else C2 ] = E [E ]v.isBool v (v C [C1 ], C [C2 ]) Da mesma forma, podemos escrever a sem antica do comando while como: C [while E do C ] = E [E ]v.isBool v (v C [C ], C [while E do C ]) ou, mais simplesmente, podemos escrever: C [while E do C ] = C [C ]; C [while E do C ]) Antes de falarmos um pouco sobre esse tipo de sem antica, vamos responder a uma pergunta fundamental: qual ` e o objetivo de se estudar sem antica de linguagens de programa ca o? Bem, quando essa area surgiu, o objetivo era prover uma descri ca o sucientemente precisa para tornar poss vel aos implementadores construir um compilador para a linguagem em quest ao. Hoje em dia, a enfase est a em: 1. fornecer uma descri ca o precisa para os programadores, tornando poss vel que estes fa cam armativas rigorosas sobre o comportamento de programas por eles escritos; 47

2. fornecer ferramentas para os designers de linguagens de programa ca o, para que possam sugerir linguagens melhores, con aveis e com descri co es formais simples. Ou seja, a grande vantagem e que desenvolve-se um m etodo matem atico (e portanto formal) que garante corretude tanto de programas quanto da linguagens desenvolvidas.

18

Sem antica Denotacional

a sem E antica que mapeia construtores sint aticos de programas em valores abstratos (n umeros, fun co es, etc) que eles denotam. Esses mapeamentos s ao claro usualmente denidos recursivamente (como no cado do while acima). E que alguns cuidados devem ser tomados quando trabalhamos com fun co es recursivas. Em especial, para modelar o espa co de todas as fun co es recursivas precisar amos de um conjunto X que contivesse todo o espa co de fun co es X X . Por quest oes de cardinalidade, sabemos que isso e imposs vel. Para lidar com essa diculdade, foi proposto, em 1969, um modelo para fun co es recursivas X X restritas a fun co es cont nuas em X (de acordo com uma certa topologia). Esse modelo, chamado de teoria de dom nio, e utilizado para descrever a sem antica denotacional do -calculus, base de linguagens de programa ca o funcionais. E, utilizando o -calculus, podemos facilmente descrever a sem antica denotacional de linguagens como o Algol60, base do Pascal. Outro tipo de sem antica que tem sido muito estudada e a sem antica categ orica. As id eias b asicas desse t opico (muito em moda atualmente) s ao elegantes e de f acil entendimento para um aluno da gradua ca o com alguma maturidade na area de Algebra.

19

Segundo trabalho pr atico

O segundo trabalho pr atico consiste em implementar o algoritmo RSA. Deve ser apresentado o seguinte: 1. A chave p ublica (n) criada no TP1, juntamente com o n umero e tal que mdc(e, (n)) = 1. 2. Algoritmo para encontrar d, o inverso de e m odulo (n). 3. Algoritmos de codica ca o (incluindo o de parti ca o da mensagem em blocos) e decodica ca o.

48

4. Teste em um texto de, no m nimo, 20 linhas. O texto, os blocos e o texto cifrado dever ao estar contidos no trabalho. Como sempre, e necess ario um pequeno texto introdut orio de no m aximo duas p aginas. Dessa vez n ao vou cobrar os execut aveis...

49

Você também pode gostar