AritméticaModular VF
AritméticaModular VF
AritméticaModular VF
Santo André - SP
Agosto de 2013.
Aritmética Modular e Criptografia
Banca examinadora:
Assinatura do autor:
Assinatura do orientador:
Dedico este trabalho à minha mãe, que está sempre no meu coração e no
meu pensamento, e à minha famı́lia, em especial ao meu filho Pedro.
Agradecimentos
Resumo
Acreditando que a aritmética modular possa ser introduzida no ensino médio
e usando como centro de interesse a criptografia, discorremos sobre as cifras
de César, Vigenère e de Hill, mostrando a aritmética modular por detrás de
cada uma delas, até chegarmos à moderna criptografia de chave pública RSA
utilizada na Internet. O texto é uma introdução à aritmética modular, mos-
trando algumas de suas aplicações, como por exemplo, criptografia, cálculo
de dı́gitos de verificação e regras de divisibilidade.
Palavras-Chave
Aritmética Modular, Criptografia, Criptografia RSA
9
Abstract
We believe modular arithmetic can be introduced to high school students
and cryptography plays an important motivational role. We discourse about
the ciphers of Caesar, Vigenere and Hill, and the modular arithmetic behind
each one, until we reach the modern RSA public key encryption used on the
Internet. The text is an introduction to modular arithmetic, with some of
its applications, for example, cryptography, calculation of check digits and
divisibility rules.
Keywords
Modular Arithmetic, Cryptography, RSA public key encryption
10
Sumário
3 Criptografia RSA 53
3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2 A matemática do RSA . . . . . . . . . . . . . . . . . . . . . . 54
3.3 Uma Função e dois Teoremas Importantes . . . . . . . . . . . 56
3.4 Como Funciona a Criptografia RSA . . . . . . . . . . . . . . . 60
3.4.1 Algoritmo Estendido de Euclides . . . . . . . . . . . . 61
3.5 Exemplificando o uso da RSA . . . . . . . . . . . . . . . . . . 63
11
12 SUMÁRIO
1.1 Introdução
O matemático suı́ço Leonhard Euler (1707-1783) foi quem introdu-
ziu, por volta de 1750, a aritmética modular (também chamada aritmética
do relógio). Em 1801, Carl Friedrich Gauss, matemático alemão, utilizou
e desenvolveu a aritmética modular em seu livro “Disquisitiones Arithmeti-
cae”. Durante muito tempo não houve aplicações importantes da aritmética
modular até que na segunda metade do século XX uma aplicação surpre-
endente dessa idéia veio resolver um problema que desafiava matemáticos e
criptógrafos, o problema da troca de chaves criptográficas.
Vamos utilizar uma ideia simples para ilustrar o conceito básico da
aritmética modular. Imagine um relógio comum de ponteiros registrando 3
horas. Se quisermos saber que hora ele estará marcando após se passarem
38 horas, verificamos que o resultado é 5 horas e não 41. A cada 12 horas
o ponteiro volta ao ponto de partida, portanto após 36 horas (3 voltas com-
pletas) o ponteiro estará novamente sobre as 3 horas, adicionando mais 2
horas chegamos ao resultado. A ideia permanece válida para um relógio com
um número qualquer de subdivisões. Um relógio com 7 subdivisões apenas,
numeradas sequencialmente no sentido horário, por exemplo. Se o ponteiro
está sobre o número 5 e o fazemos saltar 43 subdivisões, a adição comum
resultaria 48, mas não temos esse resultado no mostrador do relógio. Agora,
o ponteiro volta ao 5 a cada 7 saltos, ou seja, após 42 voltas completas, que
é o múltiplo de 7 mais próximo de 43, o ponteiro estará novamente sobre o
5, adicionando 1 chegamos ao resultado: 6.
13
14 CAPÍTULO 1. ARITMÉTICA MODULAR PARA O ENSINO MÉDIO
p ≡ q mod m.
1.1. INTRODUÇÃO 15
p−q = k1 m+r1 −k2 m−r2 = (k1 −k2 )m+(r1 −r2 ) =⇒ p−q = (k1 −k2 )m =⇒
m|p − q.
p ≡ q mod m.
Solução Basta efetuar a divisão euclidiana de 139 por 11, cujo resultado
é quociente 12 e resto 7. Portanto, x = 7.
Exemplo 2. Dentre os inteiros 111, 370, 341, 80 e 203 qual(is) é(são) con-
gruente(s) a 139 módulo 11?
Solução Procuramos x ≡ 139 mod 11, x ∈ {111, 370, 341, 80, 203}.
Pela proposição 1 acima, x é tal que 11|(x − 139). Verificamos que somente
x = 370 é solução.
Observe que
a1 mod r =⇒
Logo,
an = a1 + (n − 1)r =⇒ 6 + (n − 1) · 7 = 21888 =⇒
21888−6
n= 7
+ 1 =⇒ n = 3127 =⇒ 21888 = a3127 .
1) a ≡ a mod m; (reflexiva)
4) Se a ≡ b mod m então
a ± c ≡ b ± c mod m;
a × c ≡ b × c mod m;
a ≡ b + cm mod m;
5) a + c ≡ b mod m =⇒ c ≡ b − a mod m;
e b = mq 0 + r0 =⇒ r0 = b mod m, 0 ≤ r0 < m
e segue que
a ± b = m(q ± q 0 ) ± (r ± r0 ) =⇒
(a ± b) mod m = (r ± r0 ) mod m =⇒
(a1 +a2 +. . .+an ) mod m = (a1 mod m+a2 mod m+. . .+an mod m) mod m
(a1 a2 · · · an ) mod m = [(a1 mod m)(a2 mod m) · · · (an mod m)] mod m.
Exemplo 9. Calcule:
Solução
(0 + 1 + 1 + 0) mod 2 = 2 mod 2 = 0
(1 · 2 · 2) mod 3 = 4 mod 3 = 1
Solução
[(23 mod 7) · (8 mod 7) + (13 mod 7) · (6 mod 7) − (25 mod 7)] mod 7 =
Solução
Como mdc(7, 12) = 1, isto significa que 7 tem inverso módulo 12. Então
existem inteiros a e b, tais que 7a + 12b = 1. Usando o algoritmo estendido
de Euclides, temos:
(1) 12 = 7 × 1 + 5
(2) 7=5×1+2
(3) 5=2×2+1
(4) 2=2×1+0
De (3): 5 − 2 × 2 = 1 (5)
3 × 5 − 2 × 7 = 1 (6)
3 × 12 − 5 × 7 = 1
aX + b ≡ c mod m =⇒ aX ≡ c − b mod m =⇒
Solução
Portanto, X = 4 + 5k, k ∈ Z.
Solução
9X ≡ 6 mod 15 =⇒ 3X ≡ 2 mod 5,
1.2.5 Potenciação
Solução
31 mod 5 = 3 mod 5 = 3
32 mod 5 = 9 mod 5 = 4
16 mod 5 = 1
327 = 163 × 2 + 1
327 = (81 × 2 + 1) × 2 + 1
327 = 81 × 22 + 1 × 2 + 1
327 = (40 × 2 + 1) × 22 + 1 × 2 + 1
327 = 40 × 23 + 1 × 22 + 1 × 2 + 1
327 = (20 × 2 + 0) × 23 + 1 × 22 + 1 × 2 + 1
327 = 20 × 24 + 0 × 23 + 1 × 22 + 1 × 2 + 1
327 = (10 × 2 + 0) × 24 + 0 × 23 + 1 × 22 + 1 × 2 + 1
327 = 10 × 25 + 0 × 24 + 0 × 23 + 1 × 22 + 1 × 2 + 1
327 = (5 × 2 + 0) × 25 + 0 × 24 + 0 × 23 + 1 × 22 + 1 × 2 + 1
327 = 5 × 26 + 0 × 25 + 0 × 24 + 0 × 23 + 1 × 22 + 1 × 2 + 1
327 = (2 × 2 + 1) × 26 + 0 × 25 + 0 × 24 + 0 × 23 + 1 × 22 + 1 × 2 + 1
327 = 2 × 27 + 1 × 26 + 0 × 25 + 0 × 24 + 0 × 23 + 1 × 22 + 1 × 2 + 1
=⇒ 32710 = 1010001112
1.3. CÁLCULO DE POTÊNCIAS X Y MOD M COM AUXÍLIO DA BASE 227
Então,
[(117256 mod 143) · (11764 mod 143) · (1174 mod 143) · (1172 mod 143) · (1171
mod 143)] mod 143 =⇒ (continua mais abaixo)
1174 mod 143 = (1172 )2 mod 143 = (1172 mod 143)2 mod 143 =
1042 mod 143 = 10816 mod 143 = 91
1178 mod 143 = (1174 )2 mod 143 = (1174 mod 143)2 mod 143 =
912 mod 143 = 8281 mod 143 = 130
11716 mod 143 = (1178 )2 mod 143 = (1178 mod 143)2 mod 143 =
1302 mod 143 = 16900 mod 143 = 26
11732 mod 143 = (11716 )2 mod 143 = (11716 mod 143)2 mod 143 =
262 mod 143 = 676 mod 143 = 104
11764 mod 143 = (11732 )2 mod 143 = (11732 mod 143)2 mod 143 =
1042 mod 143 = 10816 mod 143 = 91
117128 mod 143 = (11764 )2 mod 143 = (11764 mod 143)2 mod 143 =
912 mod 143 = 8281 mod 143 = 130
117256 mod 143 = (117128 )2 mod 143 = (117128 mod 143)2 mod 143 =
1302 mod 143 = 16900 mod 143 = 26
28 CAPÍTULO 1. ARITMÉTICA MODULAR PARA O ENSINO MÉDIO
[(117256 mod 143) · (11764 mod 143) · (1174 mod 143) · (1172 mod 143) · (1171
mod 143)] mod 143 =
(26 · 91 · 91 · 104 · 117) mod 143, que calculamos em etapas como segue:
Concluimos que 117327 mod 143 = 39. As contas podem ser feitas
numa calculadora comum, entretanto, calcular diretamente 117327 na calcula-
dora não é possı́vel porque o número é muito grande chegando a ”estourar”a
capacidade de armazenamento de um computador pessoal.
Pode-se implementar o algoritmo a seguir em linguagem de pro-
gramação para efetuar o cálculo da potência y = xk mod m, onde k está
escrito na base 2.
...
1.3. CÁLCULO DE POTÊNCIAS X Y MOD M COM AUXÍLIO DA BASE 229
y = 1; A = x % m;
while (x ! = 0)
{
if (k & 1) // verifica se o bit menos significativo é 1
{
y = y ∗ A % m;
}
A = A ∗ A % m;
k = k >> 1; // elimina o bit menos significativo de k
}
Exemplo em linguagem C.
B1 : x B2 : 117
C1 : k C2 : 327
D1 : m D2 : 143
B4 : A C4 : y
A5 : vazia A10 : 5
A6 : 1 A11 : 6
A7 : 2 A12 : 7
A8 : 3 A13 : 8
A9 : 4 A14 : 9
B5 : 0 C5 : 1
B6 :=MOD(B2; D2) C6 :=MOD(B6 ∗ C5; D2)
B7 :=MOD(B6 ∗ B6; D2) C7 :=MOD(B7 ∗ C6; D2)
B8 :=MOD(B7 ∗ B7; D2) C8 :=MOD(B8 ∗ C7; D2)
B9 :=MOD(B8 ∗ B8; D2) C9 : vazia
B10 :=MOD(B9 ∗ B9; D2) C10 : vazia
B11 :=MOD(B10 ∗ B10; D2) C11 : vazia
B12 :=MOD(B11 ∗ B11; D2) C12 :=MOD(B12 ∗ C8; D2)
B13 :=MOD(B12 ∗ B12; D2) C13 : vazia
B14 :=MOD(B13 ∗ B13; D2) C14 :=MOD(B14 ∗ C12; D2)
Criptografia e Aritmética
Modular
2.1 Criptografia
A necessidade de sigilo nas comunicações militares, diplomáticas e
comerciais levou à criação de códigos para mascarar mensagens de modo
que somente os legı́timos destinatários pudessem decifrá-las. Assim surgiu a
criptografia (do grego kryptos = secreto), a arte de codificar uma mensagem
segundo uma convenção pré-estabelecida entre o emissor e o receptor, impe-
dindo que qualquer outra pessoa que a intercepte consiga ler o seu conteúdo.
As técnicas criptográficas consistem na transposição e na substituição. A
transposição é o rearranjo das letras da mensagem original gerando um ana-
grama. O número de anagramas cresce rapidamente quanto maior o texto a
ser cifrado. Matematicamente, uma transposição nada mais é do que uma
das possı́veis permutações com repetição do conjunto das letras da mensa-
gem original. Para que seja eficiente, a transposição deve ser feita segundo
um sistema objetivo conhecido pelo receptor da mensagem, ou seja, o ana-
grama não pode ser gerado de forma aleatória, caso contrário o alto número
de anagramas possı́veis torna inviável a decifração. Um exemplo de cifra por
transposição consiste em escrever a mensagem original em blocos de n letras
e a seguir copiar as n colunas resultantes de cima para baixo, da esquerda
para a direita. Preliminarmente, excluı́mos os espaços entre as palavras e
excluı́mos também os sinais gráficos (cedilha, til, pontuação, etc.), se houver.
Além disso, os dı́grafos (rr, ss, oo, etc.) na mensagem são substituı́dos por
uma só letra. Tais medidas visam dificultar a quebra do código. Vamos cifrar
a frase “O matemático é um cego numa sala escura, procurando um gato que
não está lá”, atribuı́da a Charles Darwin (1809-1882), naturalista inglês (na
31
32 CAPÍTULO 2. CRIPTOGRAFIA E ARITMÉTICA MODULAR
o m a t e m a
t i c o e u m
c e g o n u m
a s a l a e s
c u r a p r o
c u r a n d o
u m g a t o q
u e n a o e s
t a l a a m a
“otcaccuutmiesuumeaacgarrgnltoolaa
a a a e e n a p n t o a m u u e r d o e m a m m s o o q s a”,
c(λ) = (λ + k) mod 26
Português
A 14,63 E 12,57 I 6,18 M 4,74 Q 1,20 U 4,63 Y 0,01
B 1,04 F 1,02 J 0,40 N 5,05 R 6,53 V 1,67 Z 0,47
C 3,88 G 1,30 K 0,02 O 10,73 S 7,81 W 0,01 - -,-
D 4,99 H 1,28 L 2,78 P 2,52 T 4,74 X 0,21 - -,-
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A a b c d e f g h i j k l m n o p q r s t u v w x y z
B b c d e f g h i j k l m n o p q r s t u v w x y z a
C c d e f g h i j k l m n o p q r s t u v w x y z a b
D d e f g h i j k l m n o p q r s t u v w x y z a b c
E e f g h i j k l m n o p q r s t u v w x y z a b c d
F f g h i j k l m n o p q r s t u v w x y z a b c d e
G g h i j k l m n o p q r s t u v w x y z a b c d e f
H h i j k l m n o p q r s t u v w x y z a b c d e f g
I i j k l m n o p q r s t u v w x y z a b c d e f g h
J j k l m n o p q r s t u v w x y z a b c d e f g h i
K k l m n o p q r s t u v w x y z a b c d e f g h i j
L l m n o p q r s t u v w x y z a b c d e f g h i j k
M m n o p q r s t u v w x y z a b c d e f g h i j k l
N n o p q r s t u v w x y z a b c d e f g h i j k l m
O o p q r s t u v w x y z a b c d e f g h i j k l m n
P p q r s t u v w x y z a b c d e f g h i j k l m n o
Q q r s t u v w x y z a b c d e f g h i j k l m n o p
R r s t u v w x y z a b c d e f g h i j k l m n o p q
S s t u v w x y z a b c d e f g h i j k l m n o p q r
T t u v w x y z a b c d e f g h i j k l m n o p q r s
U u v w x y z a b c d e f g h i j k l m n o p q r s t
V v w x y z a b c d e f g h i j k l m n o p q r s t u
W w x y z a b c d e f g h i j k l m n o p q r s t u v
X x y z a b c d e f g h i j k l m n o p q r s t u v w
Y y z a b c d e f g h i j k l m n o p q r s t u v w x
Z z a b c d e f g h i j k l m n o p q r s t u v w x y
...
...
14-18-13-20-12-04-17-14-18-06-14-21-04-17-13-00-12-14-12-20-13-03-14
A sequência obtida,
16-18-06-24-05-18-19-14-11-10-07-09-06-17-06-04-05-02-14-20-06-07-07,
Deciframos com a mesma chave k = {02, 00, 19, 04, 19, 14}, obser-
vando que, se a = c(λ) − ki < 0, então d[c(λ)] = a mod 26 = (a + 26) mod
26.
14-18-13-20-12-04-17-14-18-06-14-21-04-17-13-00-12-14-12-20-13-03-14
como chave.
00 04 00 00 20
X1 = X2 = X3 = X4 = X5 =
19 17 04 25 11
7 5 00 95
Y10 = =
3 8 19 152
7 5 04 113
Y20 = =
3 8 17 148
44 CAPÍTULO 2. CRIPTOGRAFIA E ARITMÉTICA MODULAR
7 5 00 20
Y30 = =
3 8 04 32
7 5 00 125
Y40 = =
3 8 25 200
7 5 20 195
Y50 = =
3 8 11 148
Y1 = Y10 mod 26
17
Y1 =
22
Y2 = Y20 mod 26
09
Y2 =
18
Y3 = Y30 mod 26
20
Y3 =
06
Y4 = Y40 mod 26
21
Y4 =
18
Y5 = Y50 mod 26
13
Y5 =
18
2.1. CRIPTOGRAFIA 45
17 09 20 21 13
Y1 = Y2 = Y3 = Y4 = Y5 =
22 18 06 18 18
4 17 17 442
X10 = =
5 23 22 591
4 17 09 342
X20 = =
5 23 18 459
4 17 20 182
X30 = =
5 23 06 238
4 17 21 390
X40 = =
5 23 18 519
4 17 13 358
X50 = =
5 23 18 479
X1 = X10 mod 26
00
X1 =
19
46 CAPÍTULO 2. CRIPTOGRAFIA E ARITMÉTICA MODULAR
X2 = X20 mod 26
04
X2 =
17
X3 = X30 mod 26
00
X3 =
04
X4 = X40 mod 26
00
X4 =
25
X5 = X50 mod 26
20
X5 =
11
confiança. Era uma falha de segurança, pois as chaves podiam cair em mãos
indevidas e além disso, esse expediente consumia cada vez mais recursos. O
grande problema dos criptógrafos nessa época era a logı́stica da distribuição
de chaves, que infelizmente parecia ser insolucionável.
A crença geral era de que o problema da troca de chaves de ma-
neira segura não tivesse solução. Foi então que, em 1976, os pesquisadores
Whitfield Diffie e Martin Hellman publicaram um artigo onde descreveram
um método pelo qual emissor e receptor podem combinar uma chave utili-
zando um canal inseguro, que mesmo sujeito a interceptação não permite a
dedução da chave por um espião. O método de Diffie-Hellman mostrou que
o problema da distribuição de chaves podia ser superado e lançou as bases
da criptografia de chave pública, amplamente utilizada nas transações pela
internet.
Diffie e Hellman encontraram na aritmética modular a solução que
buscavam. Quando calculamos valores de uma função f (x) usando a aritmética
normal, esta função pode apresentar um comportamento previsı́vel (cres-
cente, decrescente, periódica, etc.). Agora, se calculamos os mesmos valores
para a função modular correspondente a f (x), ou seja, calculamos f (x) mod
m, m ∈ N, m > 1, observamos que, em geral, a função modular não apre-
senta regularidade. Isto significa que com a aritmética normal, conhecendo
f (x) podemos inferir x por tentativas ou usando métodos computacionais,
se necessário, baseados no comportamento da função. O mesmo não ocorre
com a maioria das chamadas funções modulares, onde o conhecimento de
f (x) não ajuda em nada na dedução de x. Um exemplo disso é a função ex-
ponencial y = ax . Na tabela 1 a seguir calculamos alguns valores da função
exponencial de base a = 3 e na tabela 2 fazemos o mesmo para esta função
módulo 7.
Aritmética Normal
x 1 2 3 4 5 6
x
f (x) = 3 3 9 27 81 243 729
Tabela 1
Aritmética Modular
x 1 2 3 4 5 6
x
f (x) = 3 mod 7 3 2 6 4 5 1
Tabela 2
2.2. CRIPTOGRAFIA DE CHAVE PÚBLICA 49
36 = 729 ≡ 1 mod 7;
32 = 9 ≡ 2 mod 7;
31 = 3 mod 7;
34 = 81 ≡ 4 mod 7;
35 = 243 ≡ 5 mod 7;
33 = 27 ≡ 6 mod 7.
Pois bem, suponha que Alice e Bob queiram combinar uma chave
por telefone. Primeiro um liga para o outro e eles escolhem um número primo
p e um gerador g do grupo multiplicativo Z∗p . Depois cada um faz o seguinte:
Por exemplo, Bob liga para Alice e eles combinam usar o primo
p = 7 e o gerador g = 3. Então Alice pode escolher, por exemplo, xA = 2 e
Bob, xB = 3. Vejamos:
Criptografia RSA
3.1 Introdução
Em 1977 Ronald Rivest, Adi Shamir e Leonard Adleman apresen-
taram à comunidade cientı́fica o método que ficaria conhecido como cripto-
grafia RSA. A criptografia de chave pública RSA tornou-se a mais utilizada
na internet em transações comerciais e na codificação de mensagens que cir-
culam pela rede. O método se baseia em uma função exponencial modular
C(X) = X e mod n. Nesta função, X é o bloco a ser codificado (um número
inteiro, obtido após um processo de pré-codificação que consiste na subs-
tituição das letras da mensagem original por números, encadeados em um
único grande número que depois é quebrado em blocos cujo valor é menor do
que n). O par de números (n, e) é a chave pública do destinatário da mensa-
gem, n consiste no produto de dois números primos p e q muito grandes, da
ordem de 100 dı́gitos cada enquanto e é um expoente escolhido de maneira
que exista o seu inverso d mod (p − 1) · (q − 1). Obviamente, os números
primos p e q são de conhecimento exclusivo do usuário do RSA, que os uti-
liza para obter o expoente d com o qual decodifica as mensagens que recebe
segundo a fórmula D(C) = C d mod n. Uma vez obtido o expoente d, os
primos p e q não são mais necessários, podendo ser descartados. A segurança
do método consiste na dificuldade de fatorar o produto de números primos
muito grandes (da ordem de 100 dı́gitos decimais), mesmo tendo à disposição
recursos computacionais. Para se ter uma idéia, o tempo estimado para a
fatoração do produto de dois primos dessa magnitude supera, em muito, a
idade do universo e só poderia ser realizada num tempo aceitável por um
computador quântico, uma tecnologia que ainda está mais no plano teórico
do que no operacional.
53
54 CAPÍTULO 3. CRIPTOGRAFIA RSA
Uma ressalva deve ser feita, com relação à segurança, no que diz
respeito a mensagens falsas que podem ser enviadas para o usuário do RSA.
Como a chave pública (n, e) é acessı́vel a qualquer pessoa, as mensagens
recebidas devem ser verificadas quanto à origem. Isto é feito utilizando-se
uma assinatura digital. O remetente também deve possuir uma chave pública
(n0 , e0 ) e uma chave privada d0 , com a qual assina digitalmente a mensagem,
ou seja, o remetente cifra a assinatura digital com sua chave privada d0 , à
qual somente ele tem acesso, e o destinatário decifra a assinatura digital com
a chave pública (n0 , e0 ) do remetente. Procedendo assim, fica garantida a
procedência da mensagem.
10100 1099
π(10100 ) − π(1099 ) = − ≈ 4 × 1097
ln 10100 ln 1099
Para se ter uma idéia da magnitude desse número vamos fazer cálculos.
A densidade do universo é equivalente a aproximadamente 5,9 prótons por
metro cúbico 1 enquanto o raio do universo conhecido é atualmente estimado
1
http://map.gsfc.nasa.gov/universe/uni matter.html 02/03/2013 23H29min.
3.2. A MATEMÁTICA DO RSA 55
1 2 3 ... a−1 a
a+1 a+2 a+3 ... a + (a − 1) 2a
2a + 1 2a + 2 2a + 3 ... 2a + (a − 1) 3a
.. .. .. .. ..
. . . . .
(b − 1)a + 1 (b − 1)a + 2 (b − 1)a + 3 ... (b − 1)a + (a − 1) ba
ap−1 ≡ 1 mod p
ar ≡ as mod p
2. Se r > 0 e s > 0 então, para todo a ∈ Z
ar ≡ as mod p.
58 CAPÍTULO 3. CRIPTOGRAFIA RSA
ou seja,
Agora
r ≡ s mod (p − 1) =⇒ r = k(p − 1) + s
e
aφ(n) ≡ 1 mod n
ar ≡ as mod n
2. Se n for produto de primos distintos, r > 0 e s > 0, então
ar ≡ as mod n, ∀a ∈ Z.
3.3. UMA FUNÇÃO E DOIS TEOREMAS IMPORTANTES 59
Y Y
ax mod n = x mod n
x ∈ Z∗n x ∈ Z∗n
ou seja,
Y Y
aφ(n) x mod n = x mod n
x ∈ Z∗n x ∈ Z∗n
2. Se n = p1 p2 . . . pk , onde pi 6= pj , ∀ i, j com 1 ≤ i, j ≤ k
de + bk = 1 =⇒ de mod k + bk mod k = 1 =⇒
Para cifrar:
Para decifrar:
a = r1 q2 + r2 , com r2 < r1 .
r1 = q3 r2 + r3 , com r3 < r2 .
Exemplo
Solução
1247 = 69 × 18 + 5 (1)
18 = 3 × 5 + 3 (2)
5 = 1 × 3 + 2 (3)
3 = 1 × 2 + 1 (4)
2 = 2 × 1 + 0 =⇒ mdc(1247, 18) = 1
De (4): 3 − 2 = 1 (5)
(485 × 18) mod 1247 − (7 × 1247) mod 1247 = 1 =⇒ (485 × 18) mod 1247 = 1
Exemplo
Calcular d, tal que 19d = 1 mod 120 (observe que mdc(19, 120) = 1).
Solução
19 = 6 × 3 + 1 =⇒ 19 − 6 × 3 = 1 (2)
7 = 1112 = 22 + 21 + 20 = 4 + 2 + 1
(144 mod 143 × 142 mod 143 × 14 mod 143) mod 143
Mas,
144 mod 143 = (142 )2 mod 143 = (142 mod 143)2 mod 143 =
Então,
C(14) = 53;
(234 mod 143 × 232 mod 143 × 23 mod 143) mod 143
Mas,
234 mod 143 = (232 )2 mod 143 = (232 mod 143)2 mod 143 =
Então,
C(23) = 23.
d = 103
A função modular que decodifica é, então, D(C) = C 103 mod 143.
Para decifrar, primeiro escrevemos o expoente d = 103 na base 2:
103 = 11001112 = 26 + 25 + 22 + 21 + 20 = 64 + 32 + 4 + 2 + 1
[(5364 mod 143) × (5332 mod 143) × (534 mod 143) × (532 mod 143) ×
534 mod 143 = (532 )2 mod 143 = (532 mod 143)2 mod 143 =
538 mod 143 = (534 )2 mod 143 = (534 mod 143)2 mod 143 =
5316 mod 143 = (538 )2 mod 143 = (538 mod 143)2 mod 143 =
5332 mod 143 = (5316 )2 mod 143 = (5316 mod 143)2 mod 143 =
5364 mod 143 = (5332 )2 mod 143 = (5332 mod 143)2 mod 143 =
D(53) = [(27 × 92) mod 143 × (27 × 92)mod 143 × 53] mod 143 =⇒
D(53) = [(2484 mod 143) × (2484 mod 143) × 53] mod 143 =⇒
D(53) = 14;
68 CAPÍTULO 3. CRIPTOGRAFIA RSA
[(2364 mod 143) × (2332 mod 143) × (234 mod 143) × (232 mod 143) ×
234 mod 143 = (232 )2 mod 143 = (232 mod 143)2 mod 143 =
238 mod 143 = (234 )2 mod 143 = (234 mod 143)2 mod 143 =
2316 mod 143 = (238 )2 mod 143 = (238 mod 143)2 mod 143 =
2332 mod 143 = (2316 )2 mod 143 = (2316 mod 143)2 mod 143 =
2364 mod 143 = (2332 )2 mod 143 = (2332 mod 143)2 mod 143 =
D(23) = [(133 × 100) mod 143 × (133 × 100) mod 143 × 23] mod 143 =⇒
D(23) = [(13300 mod 143) × (13300 mod 143) × 23] mod 143 =⇒
D(23) = 23.
3.5. EXEMPLIFICANDO O USO DA RSA 69
Aplicações da Aritmética
Modular
71
72 CAPÍTULO 4. APLICAÇÕES DA ARITMÉTICA MODULAR
2 3 4 4 0 0 5 6 2
× × × × × × × × ×
1 2 3 4 5 6 7 8 9
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
2 6 12 16 0 0 35 48 18
Depois somamos os resultados e calculamos o total módulo 11 (se o
resultado for 10 consideramos 0 como dı́gito).
2 2 3 4 5 2 9 3 0 0 0 1
× × × × × × × × × × × ×
6 7 8 9 2 3 4 5 6 7 8 9
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
12 14 24 36 10 6 36 15 0 0 0 9
4.2. CÁLCULO DO DÍGITO DO RG 73
2 2 3 4 5 2 9 3 0 0 0 1 8
× × × × × × × × × × × × ×
5 6 7 8 9 2 3 4 5 6 7 8 9
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
10 12 21 32 45 4 27 12 0 0 0 8 72
10 + 12 + 21 + 32 + 45 + 4 + 27 + 12 + 0 + 0 + 0 + 8 + 72 = 243 −→
243 mod 11 = 1
9 7 8 8 5 0 1 0 5 5 9 8
× × × × × × × × × × × ×
1 3 1 3 1 3 1 3 1 3 1 3
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
9 21 8 24 5 0 1 0 5 15 9 24
9 + 21 + 8 + 24 + 5 + 0 + 1 + 0 + 5 + 15 + 9 + 24 = 121
(a1 10 + a0 ) mod 4 = 0
Portanto
(a1 a0 ) mod 4 = 0
Como 10 mod 5 = 0,
a0 mod 5 = 0
Portanto,
α mod 5 = 0 ⇐⇒ a0 mod 5 = 0
α mod 5 = 0 ⇐⇒ a0 mod 5 = 0 ⇐⇒ a0 = 5 ou a0 = 0
10 mod 6 = 4;
4 · 4 mod 6 = 16 mod 6 = 4
α ≡ 0 mod 11 ⇐⇒
an − an−1 + an−2 + . . . + a2 − a1 + a0
1001 ≡ 0 mod [7, 11, 13] =⇒ 1000 ≡ −1 mod [7, 11, 13] =⇒
Agora,
α = an an−1 . . . a2 a1 a0 =
a2 a1 a0 + a5 a4 a3 × 103 + a8 a7 a6 × 106 + . . . ≡
a2 a1 a0 − a5 a4 a3 + a8 a7 a6 + . . .
(a2 a1 a0 ) mod 8 = 0.
α mod 2 = 0 ⇐⇒ a0 mod 2 = 0 e
α mod 10 = 0 ⇐⇒ a0 mod 10 = 0.
4.5. CONSIDERAÇÕES FINAIS 81
[6] Simon Singh: O Livro dos Códigos, Record, São Paulo (2007)
[7] http://map.gsfc.nasa.gov/universe
83