Buscar

Teoria dos Números Unesp - III Bienal da SBM IME-UFG - 2006

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

CampusdeSãoJosédoRioPreto
Introduc¸a˜o a` Teoria dos Nu´meros
com Aplicac¸o˜es em Criptografia
Rafael Lucas de Arruda (rafaa @hotmail.com)
Orientador: Je´fferson Luiz Rocha Bastos (jeferson@ibilce.unesp.br)
IIIBienaldaSBM-IME/UFG-2006
1 Introduc¸a˜o
O termo Criptografia surgiu da fusa˜o das palavras gregas “krypto´s”
e “gra´phein”, que significam “oculto” e “escrever”, respectivamente.
Trata-se de um conjunto de conceitos e te´cnicas que visa codificar uma
informac¸a˜o de forma que somente o emissor e o receptor possam acessa´-la,
evitando que um intruso consiga intercepta´-la.
Com o avanc¸o da tecnologia e sua facilidade de entregar informac¸o˜es
de maneira precisa e extremamente ra´pida, a criptografia tornou-se uma
ferramenta fundamental para permitir que apenas o emissor e o receptor
tenham acesso livre a` informac¸a˜o trabalhada.
2 Introduc¸a˜o a` Teoria dos Nu´meros
2.1 Divisibilidade
Definic¸a˜o 2.1 Sejam a, b ∈ Z. Dizemos que a divide b, denotando
por a | b, se existir k ∈ Z tal que b = ak.
Se a na˜o divide b denotamos a - b.
Teorema 2.1 (Algoritmo da Divisa˜o)Dados a, b ∈ Z, b 6= 0,
existe um u´nico par de inteiros q e r tais que
a = bq + r, com 0 ≤ r < |b| (r = 0⇔ b | a)
(q e´ chamado de quociente e r de resto da divisa˜o de a por b).
Definic¸a˜o 2.2 (Ma´ximo Divisor Comum)O ma´ximo divisor
comum de dois nu´meros a, b ∈ Z, denotado por mdc(a, b), e´ o maior
inteiro que divide a e b.
Teorema 2.2 (Algoritmo Euclidiano) Sejam a, b ∈ Z+, n 6=
0, a ≥ b. Se o algoritmo da divisa˜o for aplicado sucessivamente para
se obter
rj−2 = rj−1qj + rj, 0 ≤ rj < rj−1
para j = 0, 1, 2, · · · , n e rn = 0 enta˜o mdc(a, b) = rn−1, o u´ltimo
resto na˜o nulo.
2.2 Nu´meros Primos
Teorema 2.3 (Teorema da fatorac¸a˜o u´nica)Dado um inteiro
positivo n ≥ 2 podemos sempre escreveˆ-lo, de modo u´nico, na forma
n = pe11 . . . p
ek
k ,
onde pi : primos distintos, 1 < p1 < p2 < p3 < · · · < pk e e1, . . . , ek
sa˜o inteiros positivos.
Proposic¸a˜o 2.1 Sejam a, b, c ∈ Z e suponhamos que mdc(a, b) = 1.
1. Se b | ac enta˜o b | c
2. Se a | c e b | c enta˜o ab | c
2.3 Congrueˆncias
Definic¸a˜o 2.3 Seja m um inteiro fixo na˜o-nulo. Dizemos que os
inteiros a e b sa˜o congruentes mo´dulo m, se m dividir a diferenc¸a
(a− b). Nesse caso escrevemos
a ≡ b (mod m).
Teorema 2.4 (Pequeno Teorema de Fermat) Seja p um
nu´mero primo. Se p - a enta˜o ap−1 ≡ 1 (mod p).
Teorema 2.5 (Teorema Chineˆs do Resto) Sejam
m1,m2, . . . ,mr nu´meros inteiros positivos tais que mdc(mi,mj) = 1,
sempre que i 6= j. Enta˜o, o sistema de congrueˆncias
x ≡ a1 (mod m1)
x ≡ a2 (mod m2)
...
x ≡ ar (mod mr)
admite u´nica soluc¸a˜o em Zm1·m2...mr.
Definic¸a˜o 2.4 (Func¸a˜o φ de Euler ou Func¸a˜o Totiente)
Seja n ∈ Z+. A func¸a˜o φ de Euler, denotada por φ(n), e´ definida
como sendo o nu´mero de inteiros positivos menores ou iguais a n
que sa˜o relativamente primos com n.
Teorema 2.6 Seja n ∈ Z+ de fatorac¸a˜o
n = pe11 . . . p
ek
k .
Enta˜o, a fo´rmula geral para o ca´lculo de φ(n) e´ dada pela expressa˜o
pe1−11 (p1 − 1) . . . pek−1k (pk − 1).
3 Cifras
A cifra de substituic¸a˜o e´ um me´todo de codificac¸a˜o no qual as letras orig-
inais do texto original, tratadas individualmente ou em grupos de com-
primento constante, sa˜o substitu´ıdas por outras letras, figuras, s´ımbolos
ou uma combinac¸a˜o destes de acordo com um sistema predefinido e uma
chave.
Veremos aqui, um exemplo simples de cifragem que consiste em usar
uma congrueˆncia para codificar uma mensagem. Suponhamos que
queiramos codificar a palavra Estudante. Primeiro, devemos converter
letras em nu´meros usando a seguinte tabela:
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
Assim, obtemos a sequ¨eˆncia nume´rica
4− 18− 19− 20− 3− 0− 13− 19− 4.
Onde cada nu´mero corresponde a um bloco b da mensagem a ser codi-
ficada.
Para codificar a mensagem usaremos uma congrueˆncia do tipo
ab ≡ c (mod 26)
onde c e´ o bloco codificado. Devemos escolher um valor para a de tal
modo que mdc(a, 26) = 1. Em nosso exemplo escolhemos a = 3.
Tomando b = 18, temos 3 ·18 ≡ 2 (mod 26). Ou seja, c = 2. Efetuando
todos os ca´lculos, obtemos a sequ¨eˆncia de nu´meros
12− 2− 5− 8− 9− 0− 13− 5− 12,
que corresponde a mensagem codificada MCFIJANFM.
Para decodificarmos a mensagem basta usarmos a congrueˆncia
x ≡ 9b (mod 26).
Isto porque 9 e´ o inverso de 3 em Z26.
4 Criptografia RSA
4.1 Pre´-codificac¸a˜o
Na pre´-codificac¸a˜o convertemos a mensagem em nu´meros, usando a
seguinte tabela:
A B C D E F G H I J K L M
10 11 12 13 14 15 16 17 18 19 20 21 22
N O P Q R S T U V W X Y Z
23 24 25 26 27 28 29 30 31 32 33 34 35
Para identificarmos o espac¸o entre duas palavras, utilizaremos o nu´mero
99. Por exemplo, a mensagem Paraty e´ linda corresponde ao nu´mero
2510271029349914992118231310
Precisamos determinar os paraˆmetros do sistema RSA que vamos usar.
Estes paraˆmetros sa˜o os dois primos distintos, que denotaremos por p e q.
Fac¸amos n = p · q. A u´ltima fase do processo de pre´-codificac¸a˜o consiste
em quebrar em blocos menores que n o nu´mero produzido anteriormente.
Escolhendo p = 11 e q = 13 temos n = 11 ·13. Neste caso, a mensagem
convertida acima pode ser quebrada nos seguintes blocos:
25 - 102 - 7 - 102 - 93 - 49 - 91 - 49 - 92 - 118 - 23 - 13 - 10.
4.2 Codificando
Precisamos determinar e ∈ Z+ que seja invers´ıvel mo´dulo φ(n). Ou
seja, mdc(e, φ(n)) = 1. Para o ca´lculo de φ(n) fazemos
φ(n) = (p− 1)(q − 1).
Chamamos o par (n, e) de chave de codificac¸a˜o do sistema RSA.
No exemplo que estamos considerando, temos φ(143) = (11 − 1)(13 −
1) = 120. Vamos escolher e = 7, que e´ o menor nu´mero primo com 120.
Agora, temos que codificar os blocos obtidos anteriormente. Cada um
separadamente. Denotaremos o bloco b codificado por C(b). A expressa˜o
para se calcular C(b) e´ a seguinte:
be ≡ C(b) (mod n) (1)
Em termos de aritme´tica modular,C(b) e´ a forma reduzida de bemo´dulo
n.
Desta maneira, o bloco 102 da mensagem e´ codificado como o resto da
divisa˜o de 1027 por 143. Fazendo as contas:
1027 ≡ (−47)7 ≡ −477 ≡ −81 · 138 ≡ −24 ≡ 119 (mod 143).
Logo, C(102) = 119.
Codificando toda a mensagem, obtemos a seguinte sequ¨eˆncia de blocos:
64 - 119 - 6 - 119 - 102 - 36 - 130 - 36 - 27 - 79 - 23 - 117 - 10
Esta sequ¨eˆncia de nu´meros e´ a mensagem codificada.
4.3 Decodificando
Para decodificarmos um bloco da mensagem codificada, precisamos de n
e o inverso de e em φ(n), que denotaremos por d. Chamamos o par (n, d)
de chave de decodificac¸a˜o. Seja a um bloco da mensagem codificada,
denotaremos porD(a) o bloco decodificado. A expressa˜o para se calcular
D(a) e´ a seguinte:
ad ≡ D(a) (mod n) (2)
Em termos de aritme´tica modular, D(a) e´ a forma reduzida de ad
mo´dulo n.
Para calcularmos d, devemos aplicar a identidade de Bezout a e e φ(n).
No exemplo que estamos considerando, temos que φ(143) = 120 e e = 7.
Dividindo φ(143) = 120 por e = 7 obtemos
120 = 7 · 17 + 1⇔ 1 = 120 + (−17) · 7
Como −17 ≡ 103 (mod 120) temos que d = 103. Assim, para de-
codificarmos o bloco 119 da mensagem codificada, calculamos 119103 ≡
D(119) (mod 143).
Observe que os ca´lculos a serem efetuados para a decodificac¸a˜o sa˜o muito
maiores que o da codificac¸a˜o. Isso impede que um invasor do sistema de-
codifique a mensagem secreta. Pore´m, a seguranc¸a da criptografia RSA
e´ outra. Esta consiste no fato de se fatorar n em fatores primos. No
nosso exemplo, sabemos que n = 143 = 11 · 13 = p · q. Logo, pode-
mos fazer uso do Teorema Chineˆs do Resto para resolver a congrueˆncia
119103 ≡ D(119) (mod 143):{
119103 ≡ a (mod 11)
119103 ≡ b (mod 13)
Aplicando o Teorema de Fermat a cada um destes primos, temos que{
119103 ≡ (11910)10 · 1193 ≡ 1 · 1193 ≡ 3 (mod 11)
119103 ≡ (11912)8 · 1197 ≡ 1· 1197 ≡ 11 (mod 13)
Chamemos x = 119103. Ficamos com o sistema{
x ≡ 3 (mod 11)
x ≡ 11 (mod 13)
Da segunda equac¸a˜o temos x = 11 + 13 · q1, q1 ∈ Z. Substituindo na
primeira equac¸a˜o, ficamos com 11 + 13 · q1 ≡ 3 (mod 11) ⇔ 13 · q1 ≡
−8 (mod 11). Utilizando a identidade de Bezout para os nu´meros 13 e
11, descobrimos que o inverso de 13 em Z11 e´ −5. Desta forma,
(−5) · 13 · q1 ≡ 1 · q1 ≡ (−5) · (−8) ≡ 40 ≡ 7 (mod 11)
Ou seja, q1 = 7 + 11 · q2, q2 ∈ Z.
Assim, x = 11 + 13 · (7 + 11 · q2) = 102 + 143 · q2. Mas isto significa
que x ≡ 102 (mod 143). Portanto,
119103 ≡ 102 (mod 143)
4.4 Como Funciona?
Vamos mostrar que ao decodificarmos um bloco codificado, obteremos
de volta o bloco correspondente da mensagem original.
Precisamos verificar que se b ∈ Z e 1 ≤ b ≤ n− 1 enta˜o D(C(b)) = b.
Na verdade, vamos provar que D(C(b)) ≡ b (mod n). Note que a con-
grueˆncia so´ sera´ verificada seD(C(b)) = b, pois 1 ≤ D(C(b)), b ≤ n−1.
E´ por isso que na pre´-codificac¸a˜o “quebramos” a mensagem em blocos
menores que n e os mantemos separados mesmo apo´s a codificac¸a˜o.
Pela definic¸a˜o de D e C temos que
D(C(b)) ≡ (be)d ≡ bed (mod n)
Como d e´ o inverso de e mo´dulo φ(n), enta˜o
ed = 1 + k · φ(n) = 1 + k · (p− 1)(q − 1), k ∈ Z (3)
Lembremos que n = p · q, onde p, q: primos distintos. Calcularemos a
forma reduzida de bed mo´dulo p e mo´dulo q. Vejamos a forma reduzida
de bed mo´dulo p.
De (3) temos que
bed ≡ b · (bp−1)k(q−1) (mod p) (4)
Usaremos o teorema de Fermat. Para isto, vamos supor que p - b. Enta˜o
bp−1 ≡ 1 (mod p). E assim obtemos bed ≡ b (mod p).
Para o caso em que p | b temos b ≡ 0 (mod p). O fato de p ser primo
nos garante que bed ≡ b (mod p).
Analogamente, mostramos que bed ≡ b (mod q). Assim sendo, temos
que p | (bed − b) e q | (bed − b). Como p e q sa˜o primos distintos, temos
que mdc(p, q) = 1 e isto implica que pq | (bed − b). Mas n = p · q e
portanto bed ≡ b (mod n), ∀b ∈ Z. Disto, conclu´ımos que
D(C(b)) ≡ b (mod n).
Logo, D(C(b)) = b.
4.5 A Seguranc¸a do RSA
O RSA e´ um me´todo de chave pu´blica. A chave de codificac¸a˜o cor-
responde a` chave pu´blica do sistema. Assim, o par (n, e) e´ acess´ıvel a
qualquer usua´rio. O me´todo de codificac¸a˜o RSA so´ sera´ seguro se for
dif´ıcil calcular d quando apenas n e e sa˜o conhecidos.
Para calcularmos d precisar´ıamos aplicar o algoritmo euclidiano esten-
dido a φ(n) e e. Pore´m, para calcularmos φ(n) ter´ıamos que fatorar n
para obtermos p e q. Portanto, na pra´tica, so´ podemos quebrar o co´digo
se conseguirmos fatorar n. Mas, fatorar n com 150 algarismo ou mais,
pode ser um trabalho um tanto dif´ıcil ja´ que na˜o disponibilizamos de
algoritmos ra´pidos de fatorac¸a˜o.
5 Refereˆncias Bibliogra´ficas
[1] COUTINHO, S. C. Nu´meros inteiros e criptografia RSA. Segunda
Edic¸a˜o. Rio de Janeiro: IMPA/SBM, 2000.
[2] SANTOS, Jose´ Pl´ınio de Oliveira. Introduc¸a˜o a` Teoria dos
Nu´meros. Segunda Edic¸a˜o. Rio de Janeiro: IMPA, CNPq, 2000.
6 Apoio
ARRUDA, Rafael Lucas de. Introduc¸a˜o a` Teoria dos Nu´meros com Aplicac¸o˜es em Criptografia. Bolsista PET/SESu. Orientador: Je´fferson Luiz Rocha Bastos.

Outros materiais