Professional Documents
Culture Documents
Paulo J. Almeida
Conte
udo
1 Preliminares
1.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Vocabulario . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4
4
6
2 Complexidade
12
2.1 Estimativas de tempo . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 P versus NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Criptograa Sim
etrica
3.1 Introducao . . . . . . . . . . . . . . . . . . . . .
3.2 Cifra de Substituicao . . . . . . . . . . . . . . .
3.3 Criptoanalise classica . . . . . . . . . . . . . . .
3.4 Criptoanalise da Cifra de Substituicao . . . . .
3.5 Cifra de Deslocamento . . . . . . . . . . . . . .
3.6 Algoritmo de Euclides e inversos mod n . . . .
3.7 Cifra Am . . . . . . . . . . . . . . . . . . . . .
3.8 Funcao de Euler . . . . . . . . . . . . . . . .
3.9 Criptoanalise da Cifra Am . . . . . . . . . . .
3.10 Cifra de Vigen`ere . . . . . . . . . . . . . . . . .
3.11 Criptoanalise da cifra de Vigenere . . . . . . . .
3.12 Cifra de Hill . . . . . . . . . . . . . . . . . . . .
3.13 Ataque `a cifra de Hill . . . . . . . . . . . . . . .
3.14 Cifra de Permutacao . . . . . . . . . . . . . . .
3.15 Cifras de Fluxo . . . . . . . . . . . . . . . . . .
3.16 Cifra de Fluxo baseada no LFSR . . . . . . . .
3.17 Criptoanalise da cifra de uxo baseada no LFSR
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
18
19
20
22
25
26
32
33
34
36
37
42
43
43
44
45
46
4 Criptograa de chave p
ublica
4.1 Teorema Chines dos Restos . . . . . . . . . .
4.2 Lagrange, Euler e Fermat . . . . . . . . . . .
4.3 Razes primitivas . . . . . . . . . . . . . . . .
4.4 Exponenciacao modular rapida . . . . . . . .
4.5 RSA . . . . . . . . . . . . . . . . . . . . . . .
4.5.1 Ataque do expoente p
ublico pequeno .
4.6 Resduos quadraticos . . . . . . . . . . . . . .
4.7 Algoritmo de Tonelli-Shanks . . . . . . . . . .
4.8 Cifra de Rabin . . . . . . . . . . . . . . . . .
4.9 Protocolo Die-Hellman . . . . . . . . . . . .
4.9.1 Ataque do homem no meio . . . . . . .
4.10 Sistema ElGamal . . . . . . . . . . . . . . . .
4.10.1 Ataque da repeticao da chave efemera .
4.11 Sistema Merkle-Hellman . . . . . . . . . . . .
5 Primalidade
5.1 Teste de Fermat . . . . . .
5.2 Teste de Miller-Rabin . . .
5.3 Teste de Solovay-Strassen
5.4 Teste n 1 de Lucas . . .
6 Factorizac
ao
6.1 Metodo p 1 de Pollard
6.2 Metodo ro de Pollard . .
6.3 Factorizacao de Fermat .
6.4 Crivo quadratico . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
49
49
53
53
54
55
56
57
65
66
69
70
71
72
72
.
.
.
.
75
76
77
79
80
.
.
.
.
82
82
83
85
90
7 Logaritmo Discreto
94
7.1 Enumeracao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.2 Algoritmo passos de bebe passos de gigante . . . . . . . . . . . 95
7.3 Calculo de ndices . . . . . . . . . . . . . . . . . . . . . . . . . 96
8 Assinaturas digitais
8.1 Introducao . . . . . . . .
8.2 Assinatura RSA . . . . .
8.3 Assinatura ElGamal . .
8.3.1 Forjar assinaturas
. . . . . .
. . . . . .
. . . . . .
ElGamal
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
99
99
100
101
102
8.4
9 Func
oes de sntese
9.1 Ataque do Aniversario . . . . . . . . . . . . . . . . . .
9.2 Funcoes de sntese comprovadamente seguras . . . . . .
9.2.1 Funcao de sntese Chaum-van Heijst-Ptzmann
9.2.2 VSH . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
109
. 110
. 111
. 113
. 115
Captulo 1
Preliminares
1.1
Introduc
ao
Alice deseja enviar uma mensagem a Bob sem que Olga a perceba, no caso
desta interceptar a mensagem. Com este objectivo, Alice pode cifrar a
mensagem antes de a enviar a Bob. Bob recebe a mensagem e decifra-a.
Critografia e a ciencia que estuda estas duas accoes. Se Carla intercepta
a mensagem cifrada, pode tentar quebrar a cifra e ler a mensagem. Criptoanalise e a ciencia em que se estuda metodos ou processos para quebrar
cifras. Criptologia engloba tanto a Criptograa como a Criptoanalise.
Durante este curso iremos aprender varios sistemas criptogracos, alguns dos quais sao correntemente usados nas diversas comunicacoes de mensagens (militares, espionagem, n
umeros de PIN, conversacoes telefonicas,
transaccoes bancarias, Internet, e-mail, etc.). Ao mesmo tempo, Estudaremos metodos para quebrar certos cifras e a razao pela qual alguns dos sistemas criptogracos sao considerados inquebraveis. Iremos tambem estudar
funcoes de sntese (que sao uma especie de impressao digital), assinaturas
e identicacao digital e diversos protocolos de seguranca. As ferramentas
1.2
Vocabul
ario
Mensagem original (ou texto plano) - Mensagem que se pretende tornar secreta, por exemplo OLA;
Mensagem cifrada - A mensagem secreta que se obtem apos ter sido
4
1.3
Hist
oria
para evitar a sua falsicacao. Apesar da sua aparente semelhanca com criptograa, os metodos de esteganograa sao muito distintos dos utilizados em
criptograa e nao serao estudados durante este curso.
Cerca de 600 a.C., os hebreus criaram alguns sistemas criptogracos
aquando da escrita do livro de Jeremias, nomeadamente o Atbash, que consiste de uma troca simples entre as letras do hebraico, por ordem inversa.
O primeiro sistema criptograco de uso militar tera sido o Scytale ou
Bastiao de Licurgo, utilizado pelo general espartano Pasanius, em 475 a.C..
O scytale consiste em escrever a mensagem numa tira estreita de couro ou
pergaminho quando esta esta enrolada em torno de um bastiao de madeira.
A mensagem original e escrita no sentido do comprimento do bastiao e, portanto, quando a tira e desenrolada obtem-se a mensagem cifrada. Para voltar
a obter a mensagem original, deve-se enrolar outra vez a tira num bastiao
com o mesmo permetro e forma. Este e um exemplo de uma cifra de transposicao. Esta e ainda a ideia de muitas tecnicas populares actuais.
Na India, por volta de 300 a. C., apareceu um livro intitulado Arthasastra, atribudo a Kautilya, onde sao referidos os primeiros metodos de
criptoanalise. Estes processos sao recomendados para diplomatas. O famoso
Kama Sutra de Vatsayana, menciona a criptograa nas artes (yogas) 44 e
45, de entre a sua lista de 64 artes e ciencias que todos devem saber (Part I,
captulo 3, http://www.sacred-texts.com/sex/kama/index.htm).
J
ulio Cesar utilizou uma cifra que consistia em substituir cada letra pela
letra que se encontra tres posicoes depois no alfabeto. Este e um exemplo de
uma cifra de deslocamento.
No seculo VIII, al-Khalil, escreveu o livro Kitab al Muamma (que signica O livro das mensagens criptogracas). Infelizmente este livro desapareceu. al-Khalil decifrou um criptograma bizantino antigo quando supos,
correctamente, que o incio do criptograma era Em nome de Deus. Este
metodo, conhecido como o metodo da palavra provavel, foi usado para ajudar a decifrar mensagens cifradas pelo Enigma, durante a Segunda Guerra
Mundial. Cerca de 100 anos depois, al-Kindi, escreveu um outro livro sobre
criptograa, ainda existente, intitulado Risalah Istikhraj al Muamma (Escritos sobre a decifracao de mensagens criptogracas). al-Kindi considerou
analises estatsticas para quebrar cifras, processo ainda usado na actualidade.
Em 1466, Leon Battista Alberti, escreveu um ensaio, no qual menciona
uma cifra em disco, criando a nocao de cifra poli-alfabetica.
Giovan Batista Belaso inventou, em 1553, um sistema criptograco polialfabetico a que actualmente se chama cifra de Vigen`ere, por ter sido fal7
A L
S T
C D
IJ K
W X
M E
O N
F G
Q U
Y Z
A
D
F
G
V
X
A
K
9
K
E
8
U
D F
Z W
B 6
7 J
V Y
O D
4 I
G
R
C
P
3
H
S
V X
1 F
L 5
G X
A N
0 2
T M
11
Captulo 2
Complexidade
Tudo indica que seja praticamente impossvel criar cifras absolutamente in mais razoavel e suciente para o uso concreto, requerer que
quebraveis. E
um sistema seja praticamente inquebravel por um inimigo, isto e, requerer
que um sistema demore demasiado tempo (usando milhoes de computadores
super-potentes) a ser quebrado. Durante este curso, iremos ver o que isto
signica em casos concretos.
2.1
Estimativas de tempo
(10110)2 = 1 24 + 0 23 + 1 22 + 1 2 + 0 = 22.
As fraccoes podem tambem ser representadas em qualquer base, usandose neste caso o ponto utuante para distinguir a parte inteira da parte fraccionaria, i. e.
n = (dk1 dk2 d1 d0 .d1 d2 dm )b ,
se
n=
k1
dj b j .
j=m
1111
1111000
+0011110
10010110
Suponhamos que ambos os n
umeros tem k bits, adicionando-se zeros `a
esquerda caso necessario. Vejamos em detalhe em que consiste esta adicao.
Basicamente, temos que repetir k vezes os seguintes passos:
1. Se ambos os bits numa coluna sao zero e nao ha transporte. Neste caso,
mete-se um zero e se estivermos na coluna k + 1 o processo termina.
Se nao estivermos na coluna k + 1 passa-se `a coluna seguinte;
2. Se ou (a) ambos os bits sao zero e ha transporte, ou (b) um dos bits e
zero e o outro e um e nao ha transporte, entao mete-se um 1 e passa-se
`a coluna seguinte; se estivermos na coluna k + 1 o processo termina.
13
Denic
ao. Sejam f, g, duas funcoes aritmeticas, i. e. funcoes cujo conjunto
de partida consiste dos inteiros positivos e o conjunto de chegada consiste
dos n
umeros reais (por vezes, o conjunto de chegada sera o conjunto dos
complexos). Se g 0, escrevemos
f (n) = O(g(n))
se existir C > 0 e um inteiro n0 tal que
f (n) Cg(n)
para qualquer n n0 . Mais geralmente, se existe C > 0, tal que
f (n1 , . . . , nk ) Cg(n1 , . . . , nk )
para ni s sucientemente grandes, escrevemos
f = O(g).
Exemplo. Se f = a0 + a1 d + + ad nd e um polin
omio de grau d, com
d
ad > 0 entao f = O(n ).
Exemplo. log n = O(n ), para qualquer > 0.
Exemplo. O n
umero de algarismos de n na base b e O
log n
log b
)
= O(log n).
2.2
P versus NP
Denic
ao. Um algoritmo para efectuar uma computacao (ou responder a
uma questao), envolvendo inteiros n1 , . . . , nr de k1 , . . . , kr bits, respectivamente, e um algoritmo de tempo polinomial se existirem inteiros d1 , . . . , dr
tais que
n
umero de operacoes bit = O(k1d1 krdr )
Denic
ao. Uma operacao (questao, computacao, tarefa) e de tempo polinomial se existir um algoritmo de tempo polinomial para a efectuar (resolver).
Dizemos que estas operacoes estao na classe P.
Denic
ao. Se a prova de uma resposta, dada a uma questao, pode ser efectuada em tempo polinomial, dizemos que esta questao esta na classe NP.
16
17
Captulo 3
Criptograa Sim
etrica
Criptograa e a arte e ciencia de enviar mensagens secretas. O emissor usa
uma chave para cifrar a mensagem, esta e enviada ate ao receptor que usa
outra chave para a decifrar. Escrevendo letras e sinais de pontuacao como
n
umeros, podemos assumir que a mensagem a enviar e um inteiro P que
e codicado num outro inteiro C. O problema consiste em inventar chaves
que tornem impossvel ou computacionalmente irrealizavel que o inimigo (ou
qualquer pessoa que nao queiramos que leia a mensagem) decifre a mensagem interceptada. Muitas vezes a criptograa usa chaves secretas que so
sao conhecidas pelo emissor e pelo receptor. Se o inimigo descobre a chave
de cifrar e intercepta a mensagem cifrada, ele pode conseguir descobrir a
chave de decifrar e recuperar a mensagem original. Este foi o metodo que os
matematicos ingleses usaram para decifrar o Enigma, usado pelos alemaes
para comunicar entre si e, em particular, com os submarinos, na segunda
guerra mundial.
Neste captulo iremos estudar alguns exemplos classicos de criptosistemas.
3.1
Introduc
ao
3.2
Cifra de Substituic
ao
d (y) = 1 (y),
3.3
Criptoan
alise cl
assica
Suponhamos que se deseja decifrar uma mensagem, mas nao se sabe a chave.
Para isso usa-se criptoanalise. Diz-se quebrar o codigo ao processo de descobrir como decifrar mensagens num dado criptosistema sem se saber as
chaves. Para quebrar um codigo necessitamos de dois tipos de informacao:
que tipo de criposistema temos, e quais sao as chaves desse criptosistema.
Iremos assumir que o tipo de criptosistema a quebrar e conhecido (princpio
de Kerckho) e iremos so estudar como descobrir as chaves.
Ha varios nveis de ataques a um criptosistema, os mais comuns sao
S
o mensagem cifrada(ciphertext-only): O oponente possui uma mensagem cifrada;
Texto plano conhecido (known plaintext): O oponente possui um texto
plano e a mensagem cifrada correspondente;
Texto plano escolhido (chosen plaintext): o oponente obteve acesso temporario `a maquina de cifrar. Portanto pode escolher um texto plano e
cifra-lo.
Mensagem cifrada escolhida (chosen ciphertext): O oponente obteve
acesso temporario `a maquina de decifrar. Portanto pode escolher uma
mensagem cifrada e decifra-la.
20
Letra
Probabilidade
Letra
Probabilidade
Letra
Probabilidade
Letra
Probabilidade
E
0.127
H
0.061
W
0.023
K
0.008
T
0.091
R
0.060
F
0.022
J
0.002
A
0.082
D
0.043
G
0.020
X
0.001
O
0.075
L
0.040
Y
0.020
Q
0.001
I
0.070
C
0.028
P
0.019
Z
0.001
N
0.067
U
0.028
B
0.015
S
0.063
M
0.024
V
0.010
A
0.146
D
0.050
H
0.013
J
0.004
E
0.126
M
0.047
G
0.013
X
0.002
O
0.107
T
0.047
Q
0.012
K
0.001
S
0.078
U
0.046
B
0.010
W
0.001
R
0.065
C
0.039
F
0.010
Y
0.001
I
0.062
L
0.028
V
0.009
N
0.051
P
0.025
J
0.004
21
3.4
Criptoan
alise da Cifra de Substituic
ao
Vamos complicar um pouco e analisar como se pode quebrar a cifra de substituicao. Considere a mensagem cifrada
YIFQFM ZRWQFY VECFMD ZPCVMR ZWNMDZ VEJBTX
CDDUMJ NDIFEF MDZCDM QZKCEY FCJMYR NCWJCS
ZREXCH ZUNMXZ NZUCDR JXYYSM RTMEYI FZWDYV
ZVYFZU MRZCRW NZDZJJ XZWGCH SMRNMD
HNCMFQ CHZJMX JZWIEJ YUCFWD JNZDIR
A seguinte tabela apresenta a analise de frequencia desta mensagem
cifrada
Letra
Frequencia
Letra
Frequencia
Letra
Frequencia
A
0
J
11
S
3
B
1
K
1
T
2
C
15
L
0
U
5
D
13
M
16
V
5
E
7
N
9
W
8
F
11
O
0
X
6
G
1
P
1
Y
10
H
4
Q
4
Z
20
I
5
R
10
edh - - e
-----ZWNMDZ VEJBTX
-----n
h-d--FCJMYR NCWJCS
n----- ed - - RTMEYI FZWDYV
- - nh - SMRNMD
- he - - n
JNZDIR
23
-----i
end - - --a-ie - a - in
YIFQFM ZRWQFY VECFMD ZPCVMR
a---ih----i - ea - i
-e-a-CDDUMJ NDIFEF MDZCDM QZKCEY
en - - a e - hi - e
he - a - n
-----i
ZREXCH ZUNMXZ NZUCDR JXYYSM
e---eineand
he - e - - ed - a ZVYFZU MRZCRW NZDZJJ XZWGCH
- hai - a-e-i- ed - - --a-dHNCMFQ CHZJMX
JZWIEJ YUCFWD
edhi - e
-----ZWNMDZ VEJBTX
-a-i-n
had - a FCJMYR NCWJCS
n-i--- ed - - RTMEYI FZWDYV
- inhi SMRNMD
- he - - n
JNZDIR
Das vogais mais frequentes so nos falta determinar a letra que corresponde a o. Sabemos que esta letra e muito comum, portanto sera aceitavel
supor que e uma das letras D, F, J, Y. Mas D, F, J sao facilmente eliminadas senao provocavam sequencias de muitas vogais no texto plano. Conjecturamos entao que dK (Y ) = o. Quando se faz esta substituicao, obtem-se
as sequencias a-ion o que sugere a terminacao ation muito comum em ingles.
Assim, dK (J) = t.
o----i
end - - o
--a-ie - a - in
YIFQFM ZRWQFY VECFMD ZPCVMR
a - - - it
h----i - ea - i
-e-a-o
CDDUMJ NDIFEF MDZCDM QZKCEY
en - - a e - hi - e
he - a - n
t - oo - i
ZREXCH ZUNMXZ NZUCDR JXYYSM
e-o-eineand
he - ett
- ed - a ZVYFZU MRZCRW NZDZJJ XZWGCH
- hai - a - eti ted - - t
o-a-dHNCMFQ CHZJMX
JZWIEJ YUCFWD
edhi - e
--t--ZWNMDZ VEJBTX
- ation
hadta FCJMYR NCWJCS
n-i-o- ed - o RTMEYI FZWDYV
- inhi SMRNMD
the - - n
JNZDIR
Ja tnhamos reparado que dK (D) {r, s, t}. Atendendo `a sequencia dthe, faz sentido considerar que dK (D) = s. Das letras mais frequentes so nos
sobram F e r. Donde dK (F ) = r.
24
o - r - ri
end - ro
- - aris
e - a - in
YIFQFM ZRWQFY VECFMD ZPCVMR
ass - it
hs - r - r
iseasi
-e-a-o
CDDUMJ NDIFEF MDZCDM QZKCEY
en - - a e - hi - e
he - asn
t - oo - i
ZREXCH ZUNMXZ NZUCDR JXYYSM
e - ore ineand
hesett
- ed - a ZVYFZU MRZCRW NZDZJJ XZWGCH
- hair a - eti ted - - t
o - a - ds
HNCMFQ CHZJMX
JZWIEJ YUCFWD
edhise
--t--ZWNMDZ VEJBTX
ration
hadta FCJMYR NCWJCS
n-i-oredso RTMEYI FZWDYV
- inhis
SMRNMD
thes - n
JNZDIR
3.5
Cifra de Deslocamento
mod n
mod m
dK (y) y K
mod m
25
3.6
Antes de vermos mais sistemas criptogracos, necessitamos de alguns resultados elementares da Teoria dos N
umeros.
Denic
ao. Sejam a e b dois inteiros tais que pelo menos um deles e nao
nulo. Chamamos maximo divisor comum ao maior elemento do conjunto dos
divisores comuns de a e b e denotamos este elemento por (a, b).
Sejam a e b dois inteiros positivos. Pelo algoritmo da divisao, existem
dois inteiros q0 e r0 , tais que
a = q0 b + r0 , com 0 r0 < b
Se r0 = 0 podemos utilizar o algoritmo da divisao para os inteiros b por r0 .
Entao existem q1 e r1 tais que
b = q1 r0 + r1 , com 0 r1 < r0
Procedendo desta forma obtemos uma sequencia de inteiros nao negativos
r0 , r1 , . . . , rn , tais que r0 > r1 > > rn 0. Note que este processo tem
de terminar ao m de um n
umero nito de passos e que o u
ltimo resto, que
denotamos por rk+1 , e nulo.
26
a = bq0 + r0
b
= r 0 q1 + r 1
r 0 = r 1 q2 + r 2
(3.1)
..
rk2 = rk1 qk + rk
r
=r q
k1
k k+1
Seja d = (a, b). Vamos provar por inducao que d|ri e d|ri+1 , para todo
o 0 i k 1. Como d|a e d|b, temos d|(a bq0 ), i.e., d|r0 . Como
d|b e d|r0 entao d|(b r0 q1 ) = r1 . Agora, suponhamos que d|ri e d|ri+1 ,
queremos provar que d|ri+1 e d|ri+2 . Usando a hipotese de inducao, obtemos
que d|(ri ri+1 qi+2 ). Mas ri ri+1 qi+2 = ri+2 . Portanto d|ri+2 .
Acabamos de provar que d|ri para todo 0 i k. Em particular, d|rk .
Como d, rk > 0, temos d rk .
Reciprocamente, a u
ltima equacao em (3.1) e o facto de rk = 0, diz-nos
que rk |rk1 . Usando a pen
ultima equacao, obtemos rk |rk2 . Por inducao,
conclumos que rk |ri , para qualquer 0 i k. Usando a segunda equacao,
temos rk |b e usando a primeira, rk |a. Logo, rk |d. Portanto, rk = d.
Agora, provamos a segunda parte do teorema. Seja r2 = a e r1 = b.
Sabemos que
ri = ri2 ri1 qi ,
(3.2)
para qualquer 0 i k. Vamos provar por inducao que, para qualquer
0 i k, existem inteiros ui e vi tais que ri = ui a + vi b. Como r0 = a bq0 ,
o resultado e valido para i = 0. Suponhamos, por hipotese de inducao que o
resultado e verdadeiro para i e para i 1. Entao
ri+1 = ri1 ri qi+1
= ui1 a + vi1 b (ui a + vi b)qi+1
= (ui1 ui qi+1 )a + (vi1 vi qi+1 )b
= ui+1 a + vi+1 b
27
Exemplo. Seja a = 543 e b = 431. A seguinte tabela esquematiza o algoritmo de Euclides para calcular d = (a, b) e descobrir u e v tais que
au + bv = 1.
i
qi
ri
ui
vi
543
1
0
431
0
1
0
1
112
1
1
1
3
95
3
4
2
1
17
4
5
3
5
10
23
29
4
1
7
27
34
5
1
3
50
63
6
2
1
127
160
operacoes bit.
Denic
ao. Sejam a e b inteiros tais que pelo menos um deles e nao nulo. Se
(a, b) = 1 entao dizemos que a e b sao primos entre si.
Teorema 3.3. Se (n, a) = 1 e n|ab, entao n|b.
Demonstrac
ao: Pelo teorema 3.1, se (n, a) = 1 entao existem inteiros u
e v, tais que nu + av = 1, donde nbu + abv = b. Como n|ab, obtemos n|b. 2
x = x0 + t
29
onde t e um inteiro.
Demonstrac
ao: Como d|a e d|b, temos d|(ax + by) para quaisquer inteiros x e y. Portanto, se c = ax + by, entao d|c. Donde, se d - c, (3.3) nao
tem solucoes inteiras. Agora, se d|c, existe um inteiro e tal que c = de. Pelo
teorema 3.1, existem inteiros u e v, tais que
au + bv = d.
Multiplicando por e, obtemos a(ue) + b(ve) = de = c. Portanto, a equacao
(3.3) tem pelo menos uma solucao. Seja (x0 , y0 ) uma solucao de (3.3) e t um
inteiro qualquer. Entao
(
)
(
b
a)
a x0 + t
+ b y0 t
= ax0 + by0 = c.
d
d
O que prova que a equacao (3.3) tem uma innidade de solucoes.
Falta-nos ainda provar que qualquer solucao de ax + by = c e da forma
descrita no teorema. Suponhamos que (x1 , y1 ) e outra solucao. Entao
a(x1 x0 ) + b(y1 y0 ) = c c = 0.
Donde
a
b
(x1 x0 ) = (y1 y0 ),
d
d
(3.4)
a b
,
d d
b a
| (x1 x0 ).
d d
)
= 1, temos
b
| (x1 x0 ). Portanto, existe um inteiro t, tal
d
b
x1 = x0 + t .
d
Substituindo em (3.4), obtemos
a b
b
t = (y1 y0 ),
d d
d
donde
a
y1 = y0 t .
d
Portanto, qualquer solucao de (3.3) e forma acima descrita.
30
mod n
(3.5)
(3.6)
mod n
e, portanto, (3.5) tem solucao. Acabamos de provar que (3.5) tem solucoes
se e so se (3.6) tem solucoes e a partir de uma solucao de (3.6) obtemos
uma solucao de (3.5). Pelo teorema 3.5, (3.6) tem solucoes se e so se d | b.
Portanto, (3.5) tem solucoes se e so se d | b.
Suponhamos agora que (3.6) tem solucoes e seja (x0 , y0 ) uma solucao.
Pelo teorema 3.5 qualquer solucao de (3.6) e da forma
n
a
x = x0 + t , y = y 0 t ,
d
d
onde t e um inteiro. Portanto, qualquer solucao de (3.5) e da forma
x = x0 + t
Como
x0 + t
n
x0
d
n
d
mod
n
,
d
n
entao todas as solucoes de (3.5) sao congruentes com x0 mod , e portanto,
d
n
a solucao de (3.5) e u
nica mod .
d
A u
ltima parte do teorema resulta imediatamente das duas primeiras
partes.
2
31
Denic
ao. Sejam a e n inteiros tais que (a, n) = 1. Ao u
nico inteiro, que e
solucao da equacao
ax 1 mod n
chamamos inverso de a mod n e denota-mo-lo por a1 mod n.
Como o processo para escrever (a, b) como combinacao linear de a e b
e dado pelo algoritmo de Euclides, tambem este processo demora O(log3 a)
operacoes bit. Em particular obtemos:
Corol
ario 3.7. Dado a, n inteiros, com n > 1 e (a, n) = 1. Entao
tempo(determinar a1 ) = O(log3 a).
Exemplo. Como (543, 431) = 1 e 127 543 160 431 = 1, entao o inverso
de 543 mod 431 e 127 e o inverso de 431 mod 543 e 383.
3.7
Cifra Am
da,b (y) a1 (y b)
32
mod m
mod m
3.8
Func
ao de Euler
Denic
ao. Seja n 1. O n
umero de inteiros positivos menores ou iguais a
n que sao primos com n e denotado por (n). Esta funcao de n e chamada
funcao de Euler
Assim, o conjunto das chaves K tem m(m) elementos. Recordamos
agora os seguinte resultados sobre a funcao .
Teorema 3.8. A funcao (n) e multiplicativa.
Demonstrac
ao: Sejam m e n inteiros positivos tais que (m, n) = 1.
Vamos meter os primeiros mn inteiros numa tabela com m colunas e n linhas.
1
m+1
2m+1
..
.
2
m+2
2m+2
..
.
...
...
...
..
.
m
m+m
2m+m
..
.
33
1
1
1
(n) = n(1 )(1 ) (1 ) =
(pai i pai i 1 )
p1
p2
pk
i=1
k
Demonstrac
ao: Vamos comecar por calcular (pa ), para p primo e a
1. Um inteiro e primo com pa excepto se for divisvel por p. Os n
umeros de
1 a pa que sao divisveis por p, sao 1 p, 2 p, . . . , pa1 p. Portanto,
1
(pa ) = pa pa1 = pa (1 ).
p
Mas como a funcao (n) e multiplicativa, temos
(n) = (pa11 )(pa22 ) (pakk )
1
1
1
= pa11 (1 )pa22 (1 ) pakk (1 )
p1
p2
pk
1
1
1
= pa11 pa22 pakk (1 )(1 ) (1 )
p1
p2
pk
1
1
1
= n(1 )(1 ) (1 )
p1
p2
pk
2
3.9
Criptoan
alise da Cifra Am
Suponhamos que e interceptada uma mensagem que se sabe ter sido cifrada
usando um criptosistema am, e que o alfabeto utilizado tem N = 26 letras.
As duas letras mais frequentes na mensagem sao Je C. Sabe-se tambem
que a mensagem esta em ingles, e que nesta lngua, as letras mais frequentes
sao o Ee o T(ver gura 3.1). Deduzimos assim que, provavelmente, o
34
35
3.10
Cifra de Vigen`
ere
Nas cifras estudadas ate agora, dada uma chave, cada letra e transformada
numa so outra letra. Por esta razao, aqueles criptosistemas sao denominados
mono-alfabeticos. A cifra de Vigen`ere, que vamos apresentar nesta seccao, e
o primeiro exemplo de um criptosistema poli-alfabetico.
Cifra (Vigen`ere). Sejam m e n inteiros positivos. Sejam P = C = K =
(Zm )n . Dada uma chave K = (k1 , . . . , kn ) e x P e y C, definimos
eK (x1 , . . . , xn ) (x1 + k1 , . . . , xn + kn ) mod m
e
dK (y1 , . . . , yn ) (y1 k1 , . . . , yn kn ) mod m.
O n
umero de chaves possveis, dados m e n e mn .
Exemplo. Suponhamos que m = 26, n = 8 e a chave e PORTUGAL. Entao
K = (15, 14, 17, 19, 20, 6, 0, 11). Queremos cifrar a frase
este criptosistema nao e seguro
Primeiro codificamos o texto plano depois ciframos grupos de 8 de cada vez
e adicionamos a chave mod 26, da seguinte maneira
4 18 19 4 2 17 8
15 14 17 19 20 6 0
19 6 10 23 22 23 8
12 0 13 0
11 15 14 17
23 15 1 17
14
19
7
4
20
24
15
11
3
18
6
24
19
15
6
4
0
4
6
11
17
14
14
2
20
15
9
18
17
9
17
14
5
36
8
19
1
14
17
5
18
20
12
19
6
25
4
0
4
3.11
Criptoan
alise da cifra de Vigenere
Ic (x)
p2i = 0.065.
i=0
37
Portugues
Ingles
Frances
Italiano
Alemao
Japones
Russo
Texto aleatorio
0.0738
0.0661
0.0778
0.0738
0.0762
0.0819
0.0529
0.0385
25
phki phkj =
h=0
25
ph ph+ki kj .
h=0
ph ph+l =
h=0
25
phl ph ,
h=0
25
fh,i fhg,j
,
mt
onde fh,i e fh,j sao as frequencias da letra correspondente a h em yi e yj ,
respectivamente. Quando g = u o ndice M Ic deve ser proximo de 0.065,
mas quando g = u o ndice deve ser relativamente menor. Para cada i e j
devemos calcular 14 ndices, um para cada chave.
Vamos ilustrar estes metodos com o seguinte exemplo:
M Ic (yi , yig )
h=0
Exemplo. Sabemos que a seguinte mensagem foi cifrada utilizando um criptosistema de Vigenere.
CHREEV OAHMAE RATBIA XXWTNX BEEOPH BSBQMQ
EQERBW RVXUOA KXAOSX XWEAHB WGJMMQ MNKGRF
VGXWTR ZXWIAK LXFPSK AUTEMN DCMGTS XMXBTU
IADNGM GPSREL XNJELX VRVPRT ULHDNQ WTWDTY
GBPHXT FALJHA SVBFXN GLLCHR ZBWELE KMSJIK
NBHWRJ GNMGJS GLXFEY PHAGNR BIEQJT AMRVLC
RREMND GLXRRI MGNSNR WCHRQH AEYEVT AQEBBI
PEEWEV KAKOEW ADREMX MTBHHC HRTKDN VRZCHR
CLQOHP WQAIIW XNRMGW OIIFKE E
Primeiro, vamos tentar descobrir n utilizando o teste de Kasiski. O
trigrama CHR aparece cinco vezes na mensagem cifrada, comecando nas
posicoes 1, 166, 236, 276 e 286. As distancias da primeira ocorrencia `as outras sao 165, 235, 275 e 285 e o maximo divisor comum entre estes valores e
5. Portanto, e de prever que o comprimento da palavra passe seja 5.
Vejamos se com o calculo dos ndices de coincidencia chegamos `a mesma
conclusao. Se r = 1, o ndice de coincidencia e 0.045. Se r = 2 obtemos
Ic (y1 ) = 0.046 e Ic (y2 ) = 0.041. Se r = 3 obtemos Ic (y1 ) = 0.043, Ic (y2 ) =
0.050 e Ic (y3 ) = 0.047. Para r = 4, obtemos os valores 0.042, 0.039, 0.046 e
0.040. Finalmente, para r = 5, obtemos 0.063, 0.068, 0.069, 0.061 e 0.072, o
que tambem sugere que n = 5.
Vamos agora tentar utilizar os ndices de coincidencia m
utua para descobrir a palavra passe. Utilizando um programa no computador, calcula-se
todos os 260 valores de M Ic (yi , yjg ), com 1 i < j 5 e 0 g 25, e
40
procura-se os valores que forem proximos de 0.065. Dado um par (i, j), se
houver um u
nico valor perto de 0.065, conjecturamos que esse e o valor do
deslocamento relativo.
Verifica-se haver grande evidencia que o deslocamento relativo entre y1
e y2 seja 9; o deslocamento relativo entre y2 e y3 seja 13; o deslocamento
relativo entre y2 e y5 seja 7; o deslocamento relativo entre y3 e y5 seja 20;
o deslocamento relativo entre y4 e y5 seja 11. Obtemos assim as seguintes
equacoes nas cinco incognitas k1 , . . . , k5 (todos os calculos sao efectuados
mod 26):
k1 k2
k1 k5
k2 k3
k2 k5
k3 k5
k4 k5
=
=
=
=
=
=
9
16
13
7
20
11.
Donde
k2
k3
k4
k5
=
=
=
=
k1 + 17
k1 + 4
k1 + 21
k1 + 10
Assim, a chave deve ser (k1 , k1 + 17, k1 + 4, k1 + 21, k1 + 10), para algum
0 k1 25, ou seja, a chave e uma das sequencias AREVK ou BSFWL ou
CTGXM. . . . A u
nica destas sequencias que faz sentido e JAN ET . Note-se
que a palavra passe nao tem que fazer sentido. Nesse caso, podemos experimentar qualquer das possveis chaves ate que uma de um texto com sentido,
ou, se quisermos utilizar o computador, verificar qual delas e que corresponde
a um texto plano que tenha uma analise de frequencias de acordo com a lngua
que esta a ser utilizada. Para a chave JANET Obtemos o texto plano
The almond tree was in tentative blossom. The days were longer,
often ending with magnicent evenings of corrugated pink skies.
41
The hunting season was over, with hounds and guns put away for
six months. The vineyards were busy again as the well-organized
farmers treated their vines and the more lackadaisical neighbors
hurried to do the pruning they should have done in November.
3.12
Cifra de Hill
K = ..
..
..
.
.
.
kn,1 kn,2 . . . kn,n
e x P e y C, definimos
e
eK (x1 , x2 , . . . , xn ) (x1 x2 . . . xn )K
mod m
dK (y1 , y2 . . . , yn ) (y1 y2 . . . yn )K 1
mod m.
K=
11 8
3 7
)
7 18
K =
23 11
Para cifrar o texto plano hill, dividimos primeiro nos dois grupos hi e ll e
efectuamos os produtos
(
)
(
) 11 8
(
)
7 8
= 23 8
3 7
e
(
)
(
) 11 8
(
)
11 11
= 24 9
3 7
A mensagem cifrada fica XIYJ.
Neste caso
42
3.13
Ataque `
a cifra de Hill
(
K=
9 1
2 15
)(
15 16
2 5
(
=
7 19
8 3
)
.
3.14
Cifra de Permuta
c
ao
3.15
Cifras de Fluxo
44
3.16
45
n1
cj zi+j
mod 2,
j=0
para i 1.
Note que so estamos realmente a cifrar quando (k1 , . . . , kn ) = (0, . . . , 0).
Se esta hipotese se vericar e se os valores c0 , c1 , . . . , cm1 tambem nao sao
todos nulos, entao vamos obter uma cifra de uxo periodica de perodo 2n 1.
Portanto, uma chave inicial pequenada origem a um uxo de chaves com
um perodo grande.
As cifras A5/1, A5/2, utilizadas nos telemoveis GSM, e a cifra EO, utilizada no Bluetooth, sao cifras do tipo LFSR.
Exemplo. Sejam n = 4, K = (1, 0, 0, 0) e o fluxo de chaves gerado por
zi+4 zi + zi+1
mod 2.
3.17
Criptoan
alise da cifra de uxo baseada
no LFSR
46
zm+i
m1
cj zi+j
mod 2,
j=0
onde c0 , . . . , cm1 Z2 e c0 = 1.
Suponha que o oponente conhece o texto plano x1 , x2 , . . . , xn e a mensagem cifrada correspondente y1 , y2 , . . . , yn , entao pode obter os valores zi
xi + yi mod 2, para 1 i n. Suponhamos que o oponente tambem conhece o comprimento da chave secreta m. Entao precisa apenas de determinar
c0 , c1 , . . . , cm1 . Como para cada i 1, temos
zm+i
m1
cj zi+j
mod 2,
j=0
z1
z2
..
.
z2
z3
..
.
...
...
zm
zm+1
..
.
zm zm+1 . . . z2m1
Pode ser mostrado que a matriz tem inversa se m for o comprimento
da chave secreta (ver exerccio 1.9, pag 42, em Criptography: Theory and
Practice de Douglas Stinson). Neste caso, obtemos
z1
z2
..
.
z2
z3
..
.
...
...
zm
zm+1
..
.
zm zm+1 . . . z2m1
Vejamos um exemplo:
Exemplo. Suponhamos que Oscar obtem a mensagem cifrada
101101011110010
47
(0, 1, 0, 0, 0) = (c1 , c2 , c3 , c4 , c5 )
1
1
0
1
0
1
0
1
0
0
0
1
0
0
1
1
0
0
1
0
0
0
1
0
0
48
mod 2.
Captulo 4
Criptograa de chave p
ublica
Os proximos sistemas criptogracos que iremos estudar ha uma chave para
cifrar que e p
ublica, mas a chave para decifrar e secreta e nao pode ser obtida
a partir da chave p
ublica. Antes de descrevermos estes sistemas, necessitamos
de recordar alguns resultados de teoria elementar dos n
umeros.
4.1
Teorema Chin
es dos Restos
mod n.
mod mn.
Demonstrac
ao: Um inteiro x satisfaz a primeira equacao se e so se
existe um inteiro t tal que
x = a + mt
(4.1)
Agora, a + mt satisfaz a segunda equacao se e so se
mt b a
49
mod n.
(4.2)
x a1 mod m1
x a2 mod m2
..
x a mod m
k
k
tem uma u
nica solucao
mod (m1 m2 mk ).
Demonstrac
ao: Iremos usar o teorema 4.1 (k 1) vezes. Pelo teorema
4.1 as duas primeiras equacoes tem uma u
nica solucao mod (m1 m2 ). Seja
b2 esta solucao, i. e.
x b2 mod m1 m2
(4.3)
A terceira equacao e
x a3
mod m3 .
(4.4)
50
x a1 mod m1
x a2 mod m2
..
x a mod m
k
mod M do sistema
x a1 mod m1
x a2 mod m2
..
x a mod m
k
k
Demonstrac
ao: Pelo teorema do resto chines, sabemos que ha uma
solucao u
nica mod M do sistema anterior. Portanto, basta-nos provar que
N e essa solucao. Seja 1 i k. Como (Mi , mi ) = 1, entao, pelo teorema
3.6, existe yi tal que Mi yi 1 mod mi . Mais, Mi 0 mod mj , para
qualquer j = i. Entao
N a1 M1 y1 + a2 M2 y2 + ak Mk yk
ai Mi yi mod mi
ai Mi (Mi )1 mod mi
ai mod mi
51
mod mi
x2
x3
x2
resolver o sistema
mod 3
mod 5
mod 7
mod 7.
4.2
mod n
5 mod 13
1 mod 13
5 mod 13
1 mod 13
4.3
mod n.
Razes primitivas
4.4
Exponenciac
ao modular r
apida
Por um exerccio, calcular bn demora O(n2 log2 b) operacoes bit. Podemos determinar bn mod m dividindo bn por m o que nos da O(n log b log m)
operacoes bit. Portanto, no total teramos
O(n2 log2 b) + O(n log b log m)
operacoes bit. Este valor e exageradamente superior a O(log n log2 m) se m
nao for muito superior a n, portanto temos que utilizar um algoritmo muito
mais rapido que o indicado para calcular bn . Uma das ideias deste algoritmo
e nunca trabalhar com n
umeros muito grandes, i. e. sempre que zermos
uma multiplicacao, reduziremos logo de seguida o resultado mod m. Assim,
os inteiros envolvidos nos nossos calculos nunca serao maiores que m2 .
Demonstrac
ao: Denotamos por a o produto parcial. Quando o algoritmo terminar, teremos a bn mod m. Comecamos por tomar a = 1 e seja
n = (nk1 n1 n0 )2 a representacao de n na base 2, onde k e o n
umero de
bits de n.
Se n0 = 1, entao tomar a = b, caso contrario a = 1. A seguir calculamos
b2 e seja b1 = b2 mod m.
Se n1 = 1, a passa a ser ab1 mod m, caso contrario a nao e alterado.
Seja b2 = b21 mod m.
Se n2 = 1, a passa a ser ab2 mod m, caso contrario a nao e alterado.
j
Continuando desta maneira, temos, no passo j, bj b2 mod m, com
bj < m. Se nj = 1, i. e. se 2j aparece na expansao binaria de n, entao
inclumos bj no produto para a, caso contrario, nao inclumos bj . Depois de
k 1 passos, obtemos
k1
bn
mod m.
4.5
RSA
O RSA foi inventado por Ron Rivest, Adi Shamir, e Leonard Adleman, no
MIT, em 1977.
Sejam p = q dois primos grandes e seja n = pq. Ja vimos que (n) =
(p 1)(q 1). Seja e um inteiro que e primo com (n). Os n
umeros n e e
sao publicados, da o nome de criptosistema de chave p
ublica. A mensagem
a cifrar deve ser um n
umero P n. A mensagem cifrada sera o u
nico inteiro
0 < C < n tal que
C P e mod n.
importante notar que p, q e (n) sao mantidos secretos. Como sabemos
E
(n), podemos usar o algoritmo de Euclides para encontrar um n
umero d tal
que
ed 1 mod (n),
i. e. ed = 1 + (n)k, para algum inteiro k. Para decifrar a mensagem, basta
calcular o menor resduo nao negativo de
Cd
mod n.
Vejamos porque:
Se (P, n) = 1, o teorema de Euler diz-nos que
C d P ed P 1+(n)k P
mod n
4.5.1
Ataque do expoente p
ublico pequeno
A chave de cifrar e deve ser escolhida o mais pequena possvel, de modo a fazer
a cifra eciente. A escolha e = 2 e impossvel porque (n) = (p1)(q1) que
e par. Portanto, a menor chave de cifrar possvel e e = 3. Porem, pode ser
perigoso usar chaves de cifrar demasiado pequenas, porque o inimigo pode
56
e
dos restos (ha unicidade de solucao mod (n1 ne )), e portanto c = M .
A raiz e de c pode ser calculada de um modo eciente (por exemplo,
usando um generalizacao do algoritmo para obter a raiz quadrada). Portanto,
o ataque do expoente pequeno pode ser realmente eciente. Porem, este
metodo falha se as mensagens originais forem diferentes, e isto pode ser
obtido se acrescentarmos `a mensagem original alguns bits de texto aleatorios.
Podemos tambem usar um maior expoente para cifrar. Um valor muito
utilizado e e = 216 + 1.
4.6
Resduos quadr
aticos
mod p
com 1 x p 1. Dizemos que x esta associado a x. Ha duas possibilidades, ou existe pelo menos um 1 x p 1, que esta associado a si mesmo
ou nao existe tal inteiro. Vamos analisar cada caso.
1. Suponhamos que ha um inteiro x1 que esta associado a si mesmo. Entao
a congruencia
x2 a mod p
(4.5)
57
mod p
p1
i a a
mod p.
p3
2
p1
2
mod p.
i=1
p1
pares de inteiros associados diferentes.
2
(p 1)! =
p1
ia
i=1
58
p1
2
mod p.
mod p
Demonstrac
ao: Se p e mpar entao
( )
1
=1
p
Logo, considerando a = 1 no teorema anterior, obtemos o resultado enunciado. Se p = 2, entao (p 1)! = 1, donde (p 1)! 1 mod 2.
2
59
mod m
Demonstrac
ao: Atendendo ao resultado anterior, basta-nos considerar
m > 1 composto. Entao existe um inteiro 1 < d < m tal que d | m. Mas
entao d | (m 1)!. Logo, d - ((m 1)! + 1). Donde, m - ((m 1)! + 1). 2
Em seguida, vamos introduzir outra caracterizacao do smbolo de Legendre, obtida por Gauss.
Seja p um primo mpar e consideremos o conjunto dos resduos mnimos:
p1 p3
p1
S = {
,
, . . . , 2, 1, 1, 2, . . . ,
}.
2
2
2
Seja (a, p) = 1 e seja o n
umero de resduos mnimos negativos dos inteiros
p1
a, 2a, 3a, dotsa 2 . Por exemplo, seja p = 7 e a = 4. Entao
1 4 3 mod 7
2 4 1 mod 7
3 4 2 mod 7
60
a
p
= (1) .
Demonstrac
ao: Seja ml o resduo mnimo de la, onde ml e positivo.
Claramente, e o n
umero de ocorrencias do sinal negativo, quando l toma
valores entre 1 e (p 1)/2. Note que, se 1 l < k (p 1)/2, entao
ml = mk . Suponhamos que ml = mk . Entao
la ka
mod p.
)
(
)
p1
p1
p1
!a 2 (1)
! mod p.
2
2
Portanto,
a
p1
2
(1)
mod p.
61
Os n
umeros 1 , 2 , 3 , . . .
se
p1
2
)2
, sao todos incongruentes mod p, pois
r 2 s2
mod p
Demonstrac
ao: Pelo teorema 4.11,
( )( )
p1 p1
b
a
a 2 b 2
p
p
p1
= (ab) 2
( )
ab
=
p
Donde,
mod p
mod p
mod p
( )( ) ( )
b
ab
a
=
p
p
p
2
63
7
59
)
59
=
7
( )
3
=
7
( )
7
=
3
( )
1
=
3
=1
64
31
2
4.7
Algoritmo de Tonelli-Shanks
Demonstrac
ao: Se a 0 mod p entao, claramente, a 4 e a raiz
quadrada de a mod p. Suponhamos que a 0 mod p, entao b 0 mod p.
Como p 3 mod 4, temos que p+1
e um inteiro. Basta-nos provar que o
4
p+1
quadrado de a 4 e congruente com a mod p. Temos
( )
p+1
p1
a
2
4
2
(a ) a a
a
a mod p,
p
2
d+1
2
mod p, t nd mod p e s = s.
s i1
6. Seja b c2
mod p, r passa a ser rb mod p, t passa a ser tb2
mod p, c passa a ser b2 mod p e s passa a ser i. Voltar ao passo 4.
p1
d+1
2
p+1
4
mod p.
t2
p1
2
mod p,
2
185 mod 193, r2 184 185 72 mod 193, c2 185 64 mod 193,
t2 64 64 43 mod 193 e s2 = 4.
Continuando desta forma, obtemos as sequencias (r1 , r2 , r3 , r4 , r5 ) = (184, 72, 169, 126, 23)
e (t1 , t2 , t3 , t4 , t5 ) = (64, 43, 112, 1, 1). Portanto 232 143 mod 193.
4.8
Cifra de Rabin
Ha vantagens em utilizar criptosistemas cuja seguranca seja baseada na diculdade de um problema matematico que tambem tenha interesse fora da
66
mod n
67
p
ublicas). Se Bob cifrar apenas mensagens com uma certa forma, por exemplo, os primeiros 64 bits sao iguais aos u
ltimos 64 bits, e pouco provavel que
mais de uma das razes quadradas tenha esta forma. Basta entao escolher a
raiz quadrada que tem esta forma. Note-se que se e escolhido este metodo
para recuperar a mensagem original, a equivalencia entre quebrar o sistema
de Rabin e factorizar inteiros, deixa de existir. Depois de ilustrarmos este
sistema com um exemplo simples, provaremos esta equivalencia.
umeros primos p = 11 e q = 23. Entao n = 253.
Exemplo. Alice usa os n
Bob cifra a mensagem m = 158 calculando
c m2
mod n.
p+1
4
mod p e mq c
q+1
4
mod q,
mod n e m = R(c).
Sabemos que m e uma das razes quadradas, mod n, de c, tal como x, mas
nao e necessariamente igual a x. No entanto, m satisfaz um dos seguintes
68
pares de congruencias:
mx
mx
m x
m x
mod
mod
mod
mod
p
p
p
p
e
e
e
e
m x mod q
m x mod q
m x mod q
m x mod q
4.9
Protocolo Die-Hellman
mod p
Ab g ab
mod p.
e Bob calcula
A chave secreta e k g ab mod p.
O inimigo Orlando, conhece os inteiros p, g, A e B, mas nao conhece os
logaritmos discretos a de A e b de B na base g. Portanto, ele conhece g a
mod p e g b mod p e gostaria de conhecer g ab mod p. Ate agora, nunca foi
encontrado um algoritmo que permita obter k, sabendo A e B. O u
nico
processo conhecido para quebrar o protocolo de Die-Hellman e conseguir
primeiro determinar os logaritmos discretos de A e de B, e os algoritmos
existentes para resolver este problema sao pouco ecientes (demoram muito).
4.9.1
Existe um ataque a este protocolo que explora o facto de Alice nao poder
vericar que as mensagens que recebe vem de facto de Bob. Este ataque
chama-se o ataque do homem no meio. Orlando intercepta todas as mensagens entre Alice e Bob. Faz-se passar por Bob e troca uma chave com
70
Alice e faz-se passar por Alice e troca uma chave com Bob. Sempre que
Bob envia uma mensagem cifrada a Alice, usa a chave que tinha trocado
com Orlando, pensando que esta a usar a chave de Alice. Orlando recebe a
mensagem e decifra-a, depois altera esta mensagem (ou nao) e envia-a para
Alice usando a chave que tinha trocado com ela.
Para prevenir este tipo de ataques, podem ser usadas assinaturas. Este
assunto sera tratado mais tarde.
4.10
Sistema ElGamal
Este sistema usa o facto de ser difcil obter logaritmos discretos, tal como o
protocolo de Die-Hellman.
Alice escolhe um n
umero primo p e uma raiz primitiva g mod p. Depois,
Alice escolhe 0 a p 2 aleatoriamente e calcula
A ga
mod p.
A chave p
ublica de Alice e o terno (p, g, A). A sua chave secreta e o exponente a. O inteiro A e a parte da chave, proveniente do protocolo de DieHellman, que pertence a Alice. O espaco de mensagens originais e o conjunto
{0, 1, . . . , p 1}. Para cifrar uma mensagem e envia-la para Alice, Bob usa
a chave p
ublica de Alice, (p, g, A). Escolhe um inteiro b {1, . . . , p 2} e
calcula
B g b mod p.
O inteiro B e a parte da chave, proveniente do protocolo de Die-Hellman,
que pertence a Bob. Para cifrar a mensagem m, Bob calcula
c Ab m
mod p.
Bob envia a Alice o par (B, c). Note que B depende da chave p
ublica de
Alice (depende de A, g e p escolhidos por Alice) e, portanto nao faz parte da
chave p
ublica de Bob, i. e. da chave que Bob usa para receber mensagens.
Na sua chave p
ublica, Bob tem provavelmente outro primo q e outra raiz
primitiva de q.
Para decifrar a mensagem m, Alice determina x = p 1 a e calcula B x c
mod p que vai ser a mensagem original m pois
B x c g b(p1a) Ab m (g p1 )b (g a )b Ab m Ab Ab m m
71
mod p.
4.10.1
Ataque da repetic
ao da chave efemera
Para cada nova mensagem que envie a Alice, Bob deve escolher um novo
expoente b, caso contrario o seguinte ataque permite decifrar as mensagens:
Se Bob escolher o mesmo expoente b para cifrar as mensagens m e m ,
ele obtem
c Ab m mod p e c Ab m mod p
donde
c c1 m m1
mod p
4.11
mod p.
Sistema Merkle-Hellman
Nesta seccao descrevemos outro tipo de criptosistema que e baseado no problema do saco-mochila (em ingles, Knapsack). Dados k inteiros v0 , . . . , vk1
e um inteiro V , o problema Saco-mochila consiste em determinar se existe
um subconjunto dos k inteiros cuja soma seja V , i.e. se existem i {0, 1},
tais que
k1
i vi = V.
i=0
1. Faca W = V e j = k.
2. Se vi > W para 0 i j 1 ir para o passo 4. Caso contrario,
determine o maior dos vi s, digamos vi0 , tal que vi0 W . Faca i = 0
para i > i0 e i0 = 1.
3. Substitua W por W vi0 e j = i0 . Se W > 0, voltar ao passo 2.
4. Se W = 0 o algoritmo termina e encontrou-se a solucao
= (0 , . . . , k1 ),
(que e u
nica) do problema. Se W > 0, todos os restantes vi s sao
maiores que W , portanto, nao ha solucao do problema.
Exemplo. Considere a sequencia (2, 3, 7, 15, 31) e V = 24. Entao 4 = 0,
3 = 1 (e substituimos 24 por 9), 2 = 1 (e substitui-se 9 por 2), 1 = 0 e
0 = 1. Portanto, a solucao e = (1, 0, 1, 1, 0).
Estamos em condicoes de descrever o criptosistema de Merkle-Hellman
(tambem chamado sistema do saco-mochila), baseado no problema descrito
atras. As mensagens originais vao ser inteiros com k bits. Por exemplo, se
usarmos o alfabeto de 27 letras (com o espaco em branco) e k = 5, temos a
codicacao (letra a letra, neste caso) 2 = (00000)2 , A = (00001), . . . , Z =
(11010). Em seguida, escolhemos uma sequencia super crescente v0 , . . . , vk1 ,
um inteiro n > v0 + v1 + + vk1 e um inteiro 0 < a < n tal que (a, n) = 1
(costuma-se tomar n primo). Calculamos b a1 mod n e a sequencia de
inteiros positivos
wi avi mod n
para qualquer 0 i k 1. A chave secreta de Alice consiste da sequencia
dos vi s e dos inteiros n, a e b. A sua chave p
ublica e (w0 , . . . , wk1 ). Esta e
a chave para cifrar.
Se Bob pretende enviar uma mensagem m = (k1 , 0 )2 a Alice, usa a
chave {wi } e envia
k1
c
i wi .
i=0
k1
i=0
i bwi
k1
i bavi
i=0
k1
i vi
mod n
i=0
k1
Entao V =
encia {vi } e super
i=0 i vi (note que V < n). Como a sequ
crescente, Alice usa o algoritmo descrito atras para obter a solucao =
(0 , . . . , k1 ) e obtem a mensagem m = (k1 , 0 )2 .
Exemplo. Consideremos a codificac
ao em bits do nosso habitual alfabeto de
27 letras. Tomemos a chave secreta
((v0 , . . . , vk1 ), n, a) = ((2, 3, 7, 15, 31), 61, 17)
Entao b = 18 e a chave de cifrar e (34, 51, 58, 11, 39). Queremos enviar
a mensagem SIM. Temos que, S= (10011)2 , I= (01001)2 e M=
(01101)2 . Portanto, enviamos os inteiros 124 = 34 + 51 + 39, 45 = 34 + 11 e
103 = 34+58+11. A mensagem cifrada 124, 45, 103 poderia ser descodificada
usando, neste caso, pares de letras. Como
18 124 36 mod 61, 18 45 17 mod 61 e 18 103 24 mod 61
obtemos os inteiros 36, 17, 24. Em seguida, usamos a nossa sequencia para
resolver o problema do saco-mochila para estes inteiros. Assim 36 = 31+3+2,
obtendo-se a letra (10011) =S, 17 = 15 + 2, obtendo-se (01001) =I, e 24 =
15 + 7 + 2, obtendo-se (01101) =M.
Durante algum tempo, houve algum optimismo acerca do uso deste criptosistema, porque a base da sua seguranca e um problema que se sabe ser
NP-completo (os problemas factorizacao e logaritmo discreto, sao NP, mas
nao se sabe se sao NP completos). Em 1982, Shamir encontrou um algoritmo
que permitia quebrar este sistema em tempo polinomial. Varias variacoes
deste sistema tem sido consideradas, tendo algumas sido tambem quebradas
(e. g. Brickell 1985). Uma das variacoes deste sistema que ainda nao tera
sido quebrado e o sistema de Chor-Rivest, que nao iremos descrever neste
curso.
74
Captulo 5
Primalidade
Existem imensas situacoes em que podemos necessitar de saber se um inteiro enorme e primo. Por exemplo, nos sistemas criptogracos estudados
no captulo anterior, precisamos quase sempre de pelo menos um primo
enorme e aleatorio. Uma interpretacao do que signica primo enorme e
aleatoriopode ser a seguinte: Primeiro geramos um inteiro mpar n0 , usando um gerador de n
umeros aleatorios e depois testar a primalidade de n0 ,
n0 + 2, . . . ate que encontremos o primeiro primo p n0 . Outra situacao
em que se usam testes de primalidade, e quando se quer determinar se inteiros de formas muito especiais sao ou nao primos. Por exemplo, n
umeros
k
de Mersenne (da forma 2p 1) ou n
umeros de Fermat (da forma 22 + 1).
Um teste de primalidade probabilstico e um criterio para um n
umero n
nao ser primo. Se n passa uma aplicacao de um teste de primalidade, entao
pode ser que seja primo. Se n falha um teste de primalidade entao e (obrigatoriamente) composto. Se passar muitas vezes um teste de primalidade entao
tem grande probabilidade de ser primo (podendo por vezes ter-se a certeza
que e realmente primo). No caso de n ser composto camos ainda com o
problema de factorizar n. Com os algoritmos existentes consegue-se vericar
se um n
umero com alguns milhares de algarismos e primo, com grande probabilidade (se n tiver uma forma especial, por exemplo se for um n
umero de
Mersenne ou de Fermat, consegue-se atestar a primalidade de n
umeros com
milhoes de algarismos), enquanto que so se consegue factorizar n
umeros (que
nao tenham nenhuma forma particular) com perto de 200 algarismos.
75
5.1
Teste de Fermat
mod n
mod n
76
5.2
Teste de Miller-Rabin
a2
mod n
Demonstrac
ao: Seja a tal que (a, n) = 1. Como n e primo temos que
(n) = n1 = 2s d. Donde, k = ordn (ad ) e uma potencia de 2. Se k = 1 = 20 ,
temos que
ad 1 mod n.
Se k > 1 entao existe 1 l s tal que k = 2l e
l
a2 d 1 mod n.
Mas entao a2 d 1 mod n e a2 d tem ordem 2 mod n. Logo a2 d e
solucao da congruencia x2 1 mod n. Como n e primo, as u
nicas solucoes
desta congruencia sao 1 e 1. Portanto,
l1
l1
a2
l1 d
l1
1 mod n
2
Denic
ao. Seja n um composto mpar, e sejam s e d tais que n 1 = 2s d,
com d mpar. Seja a tal que (a, n) = 1. Se n e a satisfazem a condicao
rd
1 mod n (5.1)
Denic
ao. Dizemos que um inteiro a e uma testemunha de que n e composto
se (a, n) = 1 e a condicao (5.1) nao e vericada.
Dados a e n, o teste de Miller-Rabin, consiste em vericar se a condicao
(5.1) e ou nao vericada por estes inteiros. Se n falhar esta condicao entao
n e composto e a e uma sua testemunha.
Exemplo. Seja n = 561. Ja vimos que n e um n
umero de Carmichael,
portanto o teste de Fermat nao da para provar que n e composto. Temos que
560 = 24 35. Consideremos a = 2. Entao
235 263 mod 561
2235 166 mod 561
22
2 35
23 35
67 mod 561
1 mod 561
5.3
Teste de Solovay-Strassen
Denic
ao. Seja a um inteiro e n = ki=1 pai i um inteiro mpar. Dene-se o
smbolo de Jacobi, da seguinte maneira
( )a i
(a)
a
k
=
i=1
,
n
pi
( )
onde ap e o smbolo de Legendre.
Para o smbolo de Jacobi tambem e valida a lei da reciprocidade quadratica,
i. e., se m e n sao inteiros impares
(m)
(n)
m1 n1
= (1) 2 2
.
n
m
O lema de Euler diz-nos que se p um primo mpar e a um inteiro tais que
p - a. Entao
( )
p1
a
=a 2
mod p.
p
Dado um inteiro mpar n e a um inteiro, o Teste de Solovay-Strassen
consiste em vericar se
(a)
n1
2
mod n.
a
n
79
Denic
ao. Um inteiro n composto que passe o teste de Solovay-Strassen
para um dado a e chamado pseudoprimo de Euler-Jacobi para a base a
Teorema 5.4. Para qualquer n
umero composto n h
a pelo menos n/2 bases
menores que n tais que n nao e um pseudoprimo de Euler-Jacobi para qualquer uma dessas bases.
5.4
Teste n 1 de Lucas
Nas seccoes anteriores encontramos alguns testes probabilisticos para vericar se n e composto. O proximo teste e determinista, i. e. se n passar o
teste entao n e de facto primo.
Teorema 5.5 (Lucas). Se a e n sao inteiros com n > 1, e
an1 1 mod n, mas a
n1
q
entao n e primo.
Demonstrac
ao: A primeira condicao implica que ordn (a) | n 1. A
segunda condicao, mostra que ordn (a) nao e um divisor proprio de n 1.
Portanto, ordn (a) = n 1. Mas pelo teorema de Euler, ordn (a) | (n),
donde n 1 (n). Mas se n e composto, (n) < n 1, portanto, n e
primo.
2
Demonstrac
ao: Seja k 1. Suponhamos que
3
Fk 1
2
1 mod Fk
80
entao o teorema de Lucas diz-nos que Fk e primo. Reciprocamente suponhamos que Fk e primo. Como 2k e par, entao
k
22 1 mod 3,
donde Fk 2 mod 3. Mas Fk 1 mod 4, logo
( )
3
= 1
Fk
Pelo teorema 4.11, obtemos a congruencia desejada.
81
Captulo 6
Factorizac
ao
Neste captulo, vamos descrever alguns algoritmos importantes de factorizacao. Iremos assumir que n e composto. Este facto pode ser provado
usando, por exemplo, um dos algoritmos do captulo anterior.
Em muitos dos algoritmos de factorizacao, verica-se primeiro, por experimentacao, se n e divisvel por n
umeros primos pequenos, e. g. p B,
com B xo.
Exemplo. Queremos factorizar n = 321 +1 = 10460353204. Experimentando
primeiro todos os primos menores que 50, verifica-se que
n = 22 72 43 1241143.
Seja m = 1241143. Como 2m1 793958 mod m, o pequeno teorema de
Fermat implica que m e composto. Ficamos ainda com a tarefa de factorizar
m.
6.1
M
etodo p 1 de Pollard
Ha algoritmos de factorizacao que funcionam muito bem para inteiros compostos que vericam certas propriedades. O metodo p 1, e um desses
algoritmos e foi inventado por John Pollard. Suponhamos que n e composto
e que tem um factor primo p, tal que p 1 so tem divisores primos pequenos.
Entao e possvel obter um m
ultiplo k de p 1 sem sabermos o valor de p 1.
Basta tomar k como sendo o mnimo m
ultiplo comum de todos os inteiros
ate um limite B. Podemos tambem tomar k como sendo B!.
82
6.2
M
etodo r
o de Pollard
Calculam-se as sucessivas iteracoes xk = f (xk1 ) mod n. Depois fazemse comparacoes entre diferentes xi s, esperando encontrar dois que sejam
diferentes mod n mas que sejam iguais mod l para algum divisor proprio l
de n. Quando encontrarmos xj e xk nestas condicoes (i. e. xj xk mod l),
temos que (xj xk , n) e um divisor proprio de n. Assim como esta, este
metodo ira tornar-se moroso, pois ao m de k iteracoes temos de comparar
aproximadamente k 2 pares de valores. Note que se xj xk mod l e sendo
m 0, temos
xj+m xk+m mod l
Portanto, em vez de efectuar todas as comparacoes possveis podemos apenas
fazer uma comparacao em cada iteracao. Por exemplo, podemos calcular
somente
(x2i xi , n)
em cada iteracao i. Podemos tambem calcular, na iteracao k com 2j k <
2r+1 , o maximo divisor comum
(xk xj , n)
onde j = 2j 1.
Exemplo. Vamos factorizar 4087 usando f (x) = x2 + 1 e x0 = 3. Obtemos
sucessivamente
x1 = 10, x2 = 101 (101 10, 4087) = 1
x2 = 101, x4 = 1263 (1263 101, 4087) = 1
x3 = 2028, x6 = 889 (2028 89, 4087) = 67
Portanto, 67 | 4087. Dividindo, obtem-se 4087 = 67 61.
Exemplo. Sejam n = 845651, f (x) = x2 + x + 1 e x0 = 2. Verifica-se que
(x1 0 x7 , n) = 571. Portanto, n = 571 1481.
Teorema 6.1. O metodo ro permite encontrar um factor de n em
O( 4 n log3 n)
operacoes com uma grande probabilidade. Mais exactamente, existe uma constante C tal que, para qualquer inteiro positivo , aprobabilidade
de o metodo
3
4
oes bit,
ro nao encontrar um factor nao trivial de n em C n log n operac
e menor que exp().
84
O teorema anterior garante-nos que este metodo e, com uma grande probabilidade, signicativamente
mais rapido que irmos experimentando todos os
6.3
Factorizac
ao de Fermat
a+b
ab
, s=
a=t+s b=ts
2
2
Demonstrac
ao: Se n = ab entao
(
)2 (
)2
a+b
a b2
n=
2
2
donde n pode ser escrito como a diferenca de dois quadrados. Se n = t2 s2
entao n = (t s)(t + s). Obtemos assim a correspondencia bijectiva.
2
Se n = ab e a e b est
ao proximos um do outro, entao s e pequeno e t e
Exemplo. Seja n = 200819. Comecamos com [ n] + 1 = 449. Agora,
4492 200819 = 782 que nao e um quadrado perfeito. Em seguida, tentamos
t = 450. Temos 4502 200819 = 1681 = 412 , donde
n = (450 + 41)(450 41) = 491 409.
Note que se a e b nao estiverem proximos, este metodo ainda serve para
factorizar n, mas so apos termos usado imensos valores para t, o que o pode
tornar muito moroso. Ha uma generalizacao do metodo de Fermat que funciona melhor nesta situacao. Comecamos por escolher um multiplicador k
pequeno e tomamos
t = [ kn] + 1, t = [ kn] + 2, . . .
ate que obtenhamos um t para o qual t2 kn = s2 e um quadrado perfeito.
Entao d = (t + s, n) e um factor nao trivial de n.
Exemplo. Seja n = 141467. Se usarmos a factorizac
ao de Fermat directamente, precisamos de experimentar 38 ts ate encontrar
um factor de n. Mas
4 k
valores
se n tem algum divisor
de t. Mais exactamente, primeiro verica-se
n
2 kn 1, 2 kn + ,
4 k
se t2 4kn e um quadrado perfeito s2 . Caso seja, determina-se d = (t + s, n)
que e um factor nao trivial de n. Caso nao se encontre um quadrado perfeito,
podemos concluir que n e primo.
Para provarmos que este algoritmo de facto funciona, necessitamos do
seguinte resultado de Dirichlet:
86
1
.
m+1
Demonstrac
ao: No que se segue iremos representar a parte inteira e a
parte fraccionaria de um n
umero real x por [x] e {x}, respectivamente.
Suponhamos que m = 1. Se {} 12 , basta tomar a = 1 e b = [], se
{} > 12 , basta tomar a = 1 e b = [] + 1. Suponhamos agora que m > 1 e
consideremos os m + 2 n
umeros reais, 0, 1 e
ra = {a} = a [a],
onde 1 a m. Note que se ri rj e i > j entao ri rj = rij .
Analogamente, se ri rj e j > i entao 1 (ri rj ) = rji . Consideremos
tambem a seguinte particao do intervalo [0, 1],
Ik = [
k
k+1
,
), com 0 k m 1
m+1 m+1
m
e Im = [ m+1
, 1]. Como temos m + 2 n
umeros reais em [0, 1] e a particao de
[0, 1] tem m + 1 subintervalos, entao um desses intervalos, digamos Ik , tem
pelo menos dois dos n
umeros reais considerados. Se k = 0 entao existe um
inteiro 1 a m tal que
ra
1
1
, i.e. |a [a]| <
.
m+1
m+1
1
1
, i.e. |a [a] 1|
.
m+1
m+1
1
.
m+1
1
.
m+1
1
.
m+1
2
3
n demora no maximo O( 3 n log2 n) pois para cada inteiro menor que 3 n
fazemos uma divisao (se experimentassemos so primos teramos um factor
log n a menos). Caso tenhamos que passar `a segunda parte do metodo,
temos que vericar
3 n [
6n]
= O( 3 n)
4 k
k=1
vezes se t2 4kn e um quadrado perfeito (cada um demora O(log2 n)). So
no caso de obtermos um quadrado perfeito
e que precisamos de calcular
(d = t + s, n). Portanto, no total temos O( 3 n log2 n) operacoes bit.
Provemos agora que o metodo
de Lehman esta correcto. Podemos assumir
que n
nao tem factores d 3 n. Se n nao e primo
entao n = pq com
3
3
p, q > n. Vamos provar que existe um inteiro k [ n] , k = uv com
1
p
.
|a b|
q
m+1
Mas entao
q
q
n
|ap qb|
< <
= 3 n.
6
q
6
m+1
n
n p
88
1
u 2 p 2
v
pq 1
v < v +
n 3 + 1 = n 3 + 1.
v
q
m
qp
n6
2 kn c < 2 kn + .
4 k
2
4kn + 4E kn (2 kn + E)2 = c2 = 4kn + e2 < 4kn + n 3 ,
logo
1
n6
E< .
4 k
Para terminar, so temos que mostrar que (c + e, n) e um factor nao trivial
de n. Como n | (c + e)(c e), basta mostrar que c + e < n. Temos, para
n 21,
1
1
1
1
n6
n6
1
c + e < 2 kn + + n 3 < 2 (n 3 + 1)n + 1
+ n 3 < n.
4 k
4 n3 + 1
89
6.4
Crivo quadr
atico
mod n
x y
mod n.
e
Entao d = (x y, n) e um divisor proprio de n.
Exemplo. Sejam n = 7429, x = 227, e y = 210. Entao x2 y 2 = n e
x y = 17. Como (n, 17) = 17, temos 17 | n.
O crivo do corpo numerico tambem usa a ideia anterior, a diferenca e na
maneira de determinar x e y. Vejamos como determinar estes inteiros no
crivo quadratico.
Sejam m = [ n] e f (X) = X 2 n. A ideia e encontrar k inteiros si , 1
i k, tais que cada f (si ) so tenha factores primos pequenos (pertencentes a
um conjunto B), e de tal modo que f (s1 ) f (sk ) seja um quadrado mod n,
i. e. os expoentes de cada primo envolvido sao pares. Se k for sucientemente
grande (basta k > #B), os expoentes mod 2 de cada primo, irao formar um
sistema linear com k equacoes e #B incognitas, logo e um sistema resol
uvel.
Para claricar este processo, vejamos outra vez o exemplo anterior.
Exemplo. Temos n = 7429, donde m = 86. Seja B = 8. Neste caso,
f (87) = 872 7429 = 140 = 22 5 7 e f (88) = 882 7429 = 315 = 32 5 7.
Consideremos v1 = (0, 0, 1, 1) e v2 = (0, 0, 1, 1) (neste caso, vi e o (B)-uplo,
que consiste dos expoentes mod 2 dos primos ate B, na decomposic
ao de
f (si )). Como v1 +v2 (0, 0, 0, 0) mod 2, temos que f (1)f (2) e um quadrado
mod n. Portanto, x 87 88 227 mod n e y 2 3 5 7 210 mod n.
Ainda nos falta descrever como escolher B e como escolher os inteiros si .
Ja vimos que os inteiros s tem que vericar uma propriedade que depende
de B. Comecamos por denir essa propriedade.
Denic
ao. Dizemos que um inteiro s e B-suave se p | s p B.
90
operacoes bit. Portanto, muito mais rapido que o metodo de Fermat e suas
variantes.
Em vez de utilizarmos todos os primos menores que B0 (se n for enorme,
podem ser demasiados),
usa-se bases de factores. Queremos encontrar inteiros
i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
25
29
55
83
137
263
f (m + i)
8016
16227
24440
32655
40872
49091
57312
65535
73760
81987
90216
98447
106680
114915
123152
131391
139632
147875
205632
238680
454272
687960
1143072
2227680
2
501
3
167
601
3055
5109
10885
1703
611
2177
13
17
47
311
131
7013
1791
199
21845
2305
4369
461
27329
11277 1253
257
179
5791
13335
445
38305
889
7661
127
7697
8727
14599
2909
1123
1183
3213
29835
3549
85995
35721
69615
119
1105
1183
3185
49
7735
169
17
221
637
1547
169
13
1
221
92
1
17
1
1
17
1
1
Exemplo. Seja n = 16843009. Entao m = [ n] = 4104. Usando o valor
optimo para B0 , obtemos B0 = 30. A base de factores e {2, 3, 5, 7, 13, 17}.
Consideremos S = {m + 1, m + 2, . . . , m + 1000}. A tabela 6.1 mostra como
funciona o crivo. As u
ltimas 7 linhas representam os si s para os quais f (si )
e B-suave. Obtemos os vectores dos expoentes
(0, 0, 3, 1, 2, 0), (6, 3, 0, 1, 0, 1) (3, 3, 1, 0, 1, 1) (7, 1, 0, 1, 2, 0)
(3, 3, 1, 2, 1, 0) (5, 6, 0, 2, 0, 0) (5, 2, 1, 1, 1, 1)
Como so nos interessa a paridade dos expoentes, obtemos
(0, 0, 1, 1, 0, 0), (0, 1, 0, 1, 0, 1) (1, 1, 1, 0, 1, 1) (1, 1, 0, 1, 0, 0)
(1, 1, 1, 0, 1, 0) (1, 0, 0, 0, 0, 0) (1, 0, 1, 1, 1, 1)
Temos (0, 1, 0, 1, 0, 1)+(1, 1, 1, 0, 1, 0)+(1, 0, 1, 1, 1, 1) = (0, 0, 0, 0, 0, 0). Logo,
x 4129 4187 4367 6866803
mod n
e
y 27 34 5 72 13 17 5556063
mod n
93
Captulo 7
Logaritmo Discreto
Como ja vimos alguns sistemas criptogracos dependem da complexidade do
problema do logaritmo discreto, neste captulo iremos descrever algoritmos
para resolver este problema. Muitos destes algoritmos sao validos para qualquer inteiro n para o qual (Zn , ) seja um grupo cclico, mas iremos somente
considerar grupos cuja ordem seja um primo.
Seja p um primo mpar e g uma raz primitiva mod p. Dado um inteiro
b, o problema do logaritmo discreto consiste em encontrar a menor solucao
de
b g x mod p.
(7.1)
7.1
Enumerac
ao
O metodo mais simples para resolver a equacao (7.1) e ir testar sucessivamente x = 0, 1, 2, 3 . . . . A este processo chamamos enumerac
ao.
Exemplo. A menor solucao (positiva) de 3 5x mod 2017 e x = 1030.
Portanto, usando a enumerac
ao, temos que experimentar 1031 valores!
Em criptograa usa-se solucoes x, com x 2160 , portanto este metodo e
totalmente impraticavel.
94
7.2
mod p
95
7.3
C
alculo de ndices
mod p.
q eq mod p.
bg y
qF (B)
Entao
bg y
g x q eq g
qF (B)
xq eq
mod p
qF (B)
donde
bg
qF (B)
xq eq y
mod p.
xq eq y mod p 1.
x
qF (B)
gz
q fq,z mod p.
qF (B)
gz
g xq fq,z g qF (B) xq fq,z mod p
qF (B)
z
xq fq,z
mod p 1.
qF (B)
=
=
=
=
=
33
385
1408
63
1600
21593
2983
21318
2293
21918
mod
mod
mod
mod
mod
2027
2027
2027
2027
2027.
As relacoes obtidas sao (0, 1, 0, 0, 1), (0, 0, 1, 1, 1), (7, 0, 0, 0, 1), (0, 2, 0, 1, 0)
e (6, 0, 2, 0, 0), que sao linearmente independentes. Pelo pequeno teorema de
Fermat, obtemos o seguinte sistema com 5 incognitas e 5 congruencias:
x2 + x 5
x3 + x 4 + x5
7x1 + x5
2x2 + x4
6x1 + 2x3
1593
983
1318
293
1918
mod
mod
mod
mod
mod
2026
2026
2026
2026
2026.
98
mod 2026.
Captulo 8
Assinaturas digitais
8.1
Introduc
ao
8.2
Assinatura RSA
mod na .
mod na .
Bob cara convencido que quem lhe enviou a mensagem x foi Oscar.
Note
100
8.3
Assinatura ElGamal
A assinatura digital ElGamal foi descrita pela primeira vez em 1985 e foi
desenvolvida especicamente para ser uma assinatura, o que contrasta com
o RSA que pode ser usado como um sistema criptograco ou como uma
assinatura. Uma modicacao desta assinatura deu origem `a assinatura digital standard adoptada pelo National Institute of Standards and Technology
(NIST).
Passamos a descrever esta assinatura:
Seja p um primo tal que a resolucao computacional do problema do logaritmo discreto em Zp e impraticavel. Sejam uma raiz primitiva de p,
1 < a < p 1 um valor aleatorio e a mod p. Os valores p, e
sao p
ublicos e a e secreto. Seja K = (p, , a, ) a chave ElGamal de Bob.
Para assinar uma mensagem x, gera-se aleatoriamente k Zp1 (k deve ser
mantido secreto) e dene-se
sigK (x, k) = (, ),
onde
k
e
mod p
(x a)k 1
mod p 1.
mod p
mod p,
porque a + k x mod p 1.
Bob calcula a sua assinatura utilizando o valor secreto a, que faz parte
da sua chave e o valor secreto k (que so deve ser alterado sempre que se quer
assinar uma mensagem x). A vericacao e obtida usando somente informacao
p
ublica.
Exemplo. Seja p = 467, = 2 e a = 127. Entao 2127 132 mod 467.
Suponhamos que Bob quer assinar a mensagem x = 100. Primeiro gera o
101
n
umero aleatorio k = 213 que e primo com 466 (como tinha de ser). Entao
2131 431 mod 466. A assinatura de (x, k) passa a ser (29, 51), porque
2213 29
mod 467
e
(100 127 29) 431 51 mod 466.
Para verificar a assinatura basta calcular
13229 2951 189 mod 467
e
2100 189 mod 467.
Portanto, a assinatura e valida.
8.3.1
102
Em seguida, calcula-se
i j mod p
j 1 mod p 1
x ij 1 mod p 1.
Entao (, ) e uma assinatura valida para a mensagem x porque
(i j )j
ij 1
mod p
mod p
ij 1
mod p
mod p.
Vejamos outro metodo para forjar assinaturas em que Olga utiliza uma
mensagem previamente assinada por Bob. Suponhamos que (, ) e uma
assinatura valida para a mensagem x. Consideremos h, i e j inteiros tais que
0 h, i, j p 2 e (h j, p 1) = 1. Em seguida, calcula-se
h i j mod p
(h j)1 mod p 1
x (hx + i)(h j)1 mod p 1.
Entao
( h i j )(hj)
( jh )
(hj)1
xh(hj)1
(hj)1 (xh+i)
h(hj)1
( )
mod p
i(hj)1
i(hj)1
mod p
mod p
mod p
mod p
mod p.
8.3.2
Falhas de protocolo
mod p.
mod p.
x1 x2 1 2 k(1 2 )
mod p.
Esta u
ltima equacao e equivalente a
x1 x2 k(1 2 ) mod p 1.
(8.1)
d
p1
p
.
d
104
mod p
mod p .
8.4
DSS
A assinatura digital standard (digital standard signature - DSS) e uma modicacao da assinatura ElGamal, adoptada em 1 de Dezembro de 1994 pelo
governo federal dos Estados Unidos da America. Comecamos por explicar
porque foi necessario efectuar modicacoes `a assinatura ElGamal e como e
que estas modicacoes foram conseguidas.
Em muitas situacoes, uma mensagem e cifrada e decifrada uma u
nica
vez, portanto basta que o sistema criptograco seja seguro nesta ocasiao.
Por outro lado, uma mensagem assinada pode ser um documento legal como
por exemplo um contracto ou um testamento, sendo assim muito provavel
que seja necessario vericar a assinatura muitos anos apos a mensagem ser
assinada. Por esta razao e necessario tomar mais precaucoes relativamente `a
seguranca de uma assinatura do que relativamente `a seguranca de um sistema
criptograco. Como a assinatura digital ElGamal nao e mais segura que o
problema do logaritmo discreto, temos que usar um primo p grande, com pelo
menos 512 bits, para garantir alguma seguranca, sendo sugerido por muitas
pessoas que p deve ter pelo menos 1024 bits, para manter a assinatura segura
por varios anos. Mas para muitas aplicacoes, varias envolvendo smart cards,
e desejavel ter assinaturas mais pequenas. A assinatura digital standard
modica a assinatura ElGamal de maneira a usar uma assinar uma mensagem
com 160 bits (usando uma assinatura de 320 bits) e onde os calculos sao
efectuados usando um primo com pelo menos 512 bits. A ideia e trabalhar
num subgrupo de Zp com ordem 2160 .
A primeira alteracao e denir da seguinte maneira
(x + a)k 1
105
mod p 1.
mod p.
mod p.
(8.2)
0 q
mod p.
mod p,
onde k e gerado aleatoriamente. Entao e tambem tem ordem q. Portanto, os expoentes de e em (8.2) podem ser reduzidos mod q. Mas
se reduzirmos mod q em (8.2) entao todo o lado esquerdo da congruencia
tem tambem de ser reduzido mod q.
Resumindo, a assinatura digital standard e obtida do seguinte modo:
Seja p um primo com pelo menos 512 bits e seja q um primo com 160
bits tal que q | p 1. Seja Zp com ordem q, a Zp e a mod p.
Os valores p, q, e sao p
ublicos e a e secreto. Escolhemos 1 k q 1
aleatoriamente e denimos
sig(x, k) = (, ),
onde x Zq ,
(k
e
mod p) mod q
(x + a)k 1
106
mod q.
e1 x 1
mod q
e2 1
mod q
ver(x, , ) = 1 (e1 e2
mod p) mod q.
mod q.
Assim,
17050
e
(22 + 75 94) 99 97
mod 101.
mod 101
Como
17045 456727
107
mod 101
108
Captulo 9
Func
oes de sntese
As assinaturas que estudamos no captulo anterior so nos permitem assinar
mensagens pequenas. Por exemplo, se utilizarmos o DSS, uma mensagem
com 160 bits e assinada com uma assinatura de 320 bits. Em geral, precisamos de assinar mensagens muito maiores, e. g. documentos legais. Uma
maneira de resolver este problema e dividir a mensagem em partes e assinar
cada parte. Este processo levanta varios problemas: Uma mensagem enorme
tera uma assinatura (de facto, a uniao de varias assinaturas) enorme. Outra
desvantagem deste processo e que a integridade da mensagem original e perdida.
A maneira mais utilizada para resolver os problemas descritos e recorrer
a funcoes hash (ou funcoes de sntese). Estas funcoes reduzem a mensagem
original a uma mensagem de tamanho aceitavel (e. g. 160 bits no caso do
DSS). So a mensagem reduzida e que e assinada.
Denic
ao. Seja h uma funcao de sntese. Temos uma colis
ao se dadas duas
mensagens x e y, tivermos h(x) = h(y).
Denic
ao. Seja x uma mensagem. Uma funcao de sntese h e fracamente
livre de colisoes se for computacionalmente impraticavel encontrar uma mensagem x = x tal que h(x) = h(x ).
Denic
ao. Uma funcao de sntese h e fortemente livre de colis
oes se for
109
9.1
Ataque do Anivers
ario
m
,
n
1
2
k1
i
(1 )(1 ) (1
)=
(1 ).
n
n
n
n
i=1
k1
x2 x3
,
2!
3!
i
k(k1)
i
(1 )
e n = e 2n .
n
i=1
i=1
k1
e 2n 1
k(k 1)
log(1 )
2n
k 2 k 2n log(1 )
donde
k
Se tomarmos = 0.5 obtemos
2n log
1
.
1
k 1.177 n.
9.2
Funco
es de sntese comprovadamente seguras
3. JH;
4. Keccak;
5. Skein.
9.2.1
Fun
c
ao de sntese Chaum-van Heijst-Ptzmann
Nesta seccao descrevemos a funcao de sntese de Chaum, van Heijst e Ptzmann que e baseada no problema do logaritmo discreto.
Seja q um primo grande tal que 2q + 1 = p e primo (os primos que
vericam esta condicao chamam-se primos de Sophie Germain). Sejam e
raizes primitivas de p. A funcao de sntese h : Zq Zq Zp e denida por
h(x1 , x2 ) x1 x2
mod p.
ou seja
x1 x2 x3 x4
mod p,
x1 x3 x4 x2
mod p.
mod p.
mod p 1.
mod p 1
ou
log (x1 x3 )y + q
mod p 1,
onde a u
ltima congruencia resulta de
q 1
mod p.
mod p,
isto e
x1 x3
mod p,
o que implica que x1 = x3 . Mas como (x1 , x2 ) = (x3 , x4 ), isto nao pode
acontecer.
Portanto, so podemos ter dois casos e em cada um deles e possvel calcular
o logaritmo discreto de na base .
2
Podemos assim concluir que alguem que consiga descobrir colisoes para
esta funcao de sntese, conseguira calcular um logaritmo discreto considerado
difcil.
O teorema anterior mostra que se for computacionalmente impraticavel
calcular log em Zp entao a funcao de sntese Chaun-van Heijst-Ptzmann
e fortemente livre de colisoes.
114
9.2.2
VSH
pi < n.
i=1
li 2i1 ,
i=1
x2j
pikj+i
mod n.
i=1
5. Devolva xL+1 .
Esta funcao de sntese e fortemente resistente a colisoes.
115
Bibliograa
[1] F. L. Bauer, Decrypted Secrets, Springer, 2007.
[2] J. A. Buchmann, Introduction to cryptography, Springer, 2001.
[3] R. Crandall e C. Pomerance, Prime Numbers - A Computacional Perspective, Springer, 2001.
[4] G. H. Hardy e E. M. Wright, An Introduction to the Theory of Numbers,
Oxford, 1979.
[5] J. Hostein, J. Pipher & J. H. Silverman, An Introduction to Mathematical Cryprography, Springer, 2008.
[6] N. Koblitz, A Course in Number Theory and Cryptography, Springer,
1987.
[7] R. E. Smith, Internet Cryptography, Addison-Wesley, 1997.
[8] W. Stallings, Cryptography and network security, 5th Edition, Prentice
Hall, 2010.
[9] D. R. Stinson, Cryptography, Theory and Practice, 3rd Edition, CRC
Press, 2006.
116