Professional Documents
Culture Documents
O BTENO DO G RAU DE
M ESTRE EM I NFORMTICA .
rea de Concentrao: Sistemas Distribudos
Orientador: Jorge Nakahara Jr.
O presente trabalho foi realizado com o apoio da
Coordenao de Aperfeioamento de Pessoal de Nvel Superior
Programa de Suporte Ps-Graduao de Instituies de Ensino Particulares
CAPES-PROSUP, Brasil.
Santos, fevereiro de 2008.
O Sistema Criptogrfico
de Chave Pblica RSA
Banca de qualificao:
Prof. Dr. Jorge Nakahara Junior - Unisantos (Orientador)
Prof. Dr. Auri Marcelo Rizzo Vincenzi - Unisantos
Prof. Dr. Fabrcio Alves Barbosa da Silva- Unisantos
Banca de defesa:
Prof. Dr. Jorge Nakahara Junior - Unisantos (Orientador)
Prof. Dr. Auri Marcelo Rizzo Vincenzi - Unisantos
Prof. Dr. Daniel Santana de Freitas - INE, UFSC
Agradecimentos
Voc no pode ensinar nada a um homem; voc pode apenas ajud-lo a encontrar a resposta dentro dele mesmo.
(Galileu Galilei, fsico, matemtico e astrnomo italiano, 1564-1642)
Agradeo aos meus filhos, pelas muitas vezes se privaram da minha companhia e da
minha ateno para que eu pudesse me dedicar a esta pesquisa.
Agradeo aos amigos Alfredo Santos Loebeling, Carlos Otvio de Azeredo Proena,
Eduardo Takeo Ueda e Eduardo Rosalem Marcelino, pelo suporte tcnico e emocional.
Agradeo aos membros das bancas de qualificao e de defesa, por seus questionamentos e contribuies.
iii
Abstract
The motivations for the study of RSA cryptosystem are the fact that
this cryptographic algorithm is the world de facto standard public key
cryptosystem and that it includes fundamental mathematical concepts for the
modern cryptography, being a foundation for more advanced studies. This
work discusses the last 30 years of research on RSA, since its announcement,
in 1977, synthesizing the information and making possible the mastering of
the main mathematical concepts of this algorithm.
iv
Resumo
As motivaes para o estudo do RSA incluem o fato deste algoritmo
criptogrfico de chave pblica ser um padro mundial tanto para confidencialidade como para assinatura digital e no fato RSA incluir conceitos matemticos fundamentais para a compreenso da criptografia moderna sendo um alicerce para estudos mais avanados. Este trabalho resume os ltimos 30 anos
de pesquisa sobre o RSA, desde o seu anncio, em 1977, concentrando de
forma sinttica as informaes e possibilitando o domnio dos principais conceitos matemticos deste algoritmo.
Sumrio
Agradecimentos
iii
Abstract
iv
Resumo
Lista de Smbolos
xi
Lista de Siglas
xiv
Lista de Tabelas
xvii
Lista de Figuras
xix
xx
Introduo
1.1
1.2
1.3
Aplicaes RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4
Estrutura da Dissertao . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fundamentao Matemtica
10
2.1
Conceitos Preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.2
Primalidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
vi
SUMRIO
vii
2.3
Aritmtica Modular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.4
Congruncia Mdulo n . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.4.1
16
2.5
Complexidade Computacional . . . . . . . . . . . . . . . . . . . . . . . .
16
2.6
Algoritmo de Euclides . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.7
19
2.8
. . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.9
23
27
36
39
41
3.1
Sistema Binrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.2
43
3.3
47
3.4
50
3.5
Assinatura Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
3.5.1
59
3.5.2
Funo de Hash . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
3.6
4
O Algoritmo RSA
62
4.1
Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
4.2
66
4.3
70
4.4
73
4.5
77
SUMRIO
viii
4.6
85
Variaes
88
5.1
89
5.2
91
5.3
RSA em Lote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
5.4
RSA CRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
5.4.1
95
5.4.2
97
5.4.3
100
5.5
MRSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
102
5.6
RSA P k Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
103
5.7
DRSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
107
5.7.1
108
RSA Redistribudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
109
5.8.1
MRSA Redistribudo . . . . . . . . . . . . . . . . . . . . . . . . .
110
5.8.2
110
RSA Desbalanceado . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
110
112
113
Ataques e Defesas
115
6.1
Ataques Elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
116
6.1.1
116
6.1.2
117
6.1.3
117
118
6.2.1
118
5.8
5.9
Consideraes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2
SUMRIO
6.2.2
119
6.2.3
Ocultamento I . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
121
6.2.4
Ocultamento II . . . . . . . . . . . . . . . . . . . . . . . . . . . .
121
122
6.3.1
122
6.4
124
6.5
128
6.5.1
128
6.5.2
Ataque de Hastad . . . . . . . . . . . . . . . . . . . . . . . . . . .
129
6.5.3
130
6.5.4
131
Ataques Cclicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
134
6.6.1
135
6.6.2
135
6.7
139
6.8
143
6.9
146
148
Codificao de Mensagem
150
7.1
Conceitos Preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . .
150
7.2
RSA-OAEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
151
7.3
RSA-PSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
154
7.4
Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
155
6.3
6.6
ix
Consideraes Finais
156
8.1
156
8.2
157
SUMRIO
8.3
Dados Histricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
157
8.4
Concluses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
160
A Teste de Primalidades
164
164
166
167
168
168
171
172
172
173
173
C Exemplos Numricos
175
175
176
180
183
Referncias
193
Lista de Smbolos
Todo smbolo matemtico deve ser to simples quanto a natureza das operaes nas quais este smbolo aplicado.
(Charles Babbage, matemtico ingls, 1791-1871)
N:
Z:
Q:
I:
R:
a (mod b) :
a b mod n :
a 6 b mod n :
ab:
a aproximadamente igual a b;
ab:
ab:
A:
existe A;
A:
para qualquer A;
AB:
AB:
BA:
BA:
aA:
a
/A:
Lista de Smbolos
xii
AB :
AB :
conjunto vazio;
/:
tal que;
A\B :
:
A exceto B;
infinito;
a := b :
a|b :
a divide b;
dxe :
bxc :
max{a, b} :
min{a, b} :
mdc(a, b) :
b falso;
ab:
f :XY :
f 1 :
a1 (mod n) :
loga b :
ln b :
x2 :
logaritmo de b na base a;
logaritmo de b na base e, sendo e 2, 71828183;
log b :
lg b :
L(a, p) :
smbolo de Legendre;
J(a, m) :
smbolo de Jacobi;
D(u) : derivada de u;
np : combinao de n elementos, tomados p a p;
Lista de Smbolos
xiii
O(f (n)) :
funo de Euler;
(n) :
: ou exclusivo;
!:
fatorial;
|x| :
tamanho de x em bits;
#:
nmero.
Lista de Siglas
O rio atinge seus objetivos porque aprendeu a contornar obstculos.
(Lao-Ts, filsofo chins, sculo IV a.C.)
AC:
Autoridade Certificadora;
AC-Raiz:
AES:
ANSI:
API:
AR:
Autoridade Registradora;
ART:
ASCII:
BIT:
CCE:
CG ICP-Brasil:
CRT:
DSA:
DSS:
ECM:
ECDSA:
EME-OAEP:
GMP:
GNFS:
GPL:
Lista de Siglas
xv
I2OSP:
Integer-to-Octer-String primitive;
ICP-Brasil:
IEC:
IP:
ITI:
LR:
Left to Right;
LSB:
MD2:
MD5:
MDC:
MIPS:
MIT:
MITM:
Man-in-the-Middle;
MMC:
MSB:
NFS:
NFSNET:
NIST:
OAEP:
OS2IP:
Octet-String-to-Integer primitive;
PFI:
PLD:
PLDCE:
PGP:
PKCS:
PKI:
PKIX:
PSS:
QC:
Quisquater-Couvreur;
QS:
Quadratic Sieve;
RAM:
RL:
Lista de Siglas
xvi
RSA:
RSA-KEM:
RSA-REACT:
form;
RSADP:
RSADS:
RSAEP:
RSAES:
RSASP1:
RSAVP1:
S/MIME:
SHA-1:
SET:
SNFS:
SSL:
USC:
Lista de Tabelas
2.1
Multiplicao mdulo 5
. . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.2
18
2.3
18
2.4
19
2.5
21
2.6
Exponenciao modular em Z5 . . . . . . . . . . . . . . . . . . . . . . . .
33
2.7
Exponenciao modular em Z5 . . . . . . . . . . . . . . . . . . . . . . . .
33
2.8
35
2.9
35
37
39
3.1
Prefixos padres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.2
42
3.3
55
3.4
57
3.5
57
4.1
65
4.2
67
4.3
69
xvii
LISTA DE TABELAS
xviii
5.1
102
5.2
103
5.3
107
5.4
108
5.5
114
6.1
128
6.2
142
6.3
143
6.4
143
6.5
145
6.6
148
D.1 Probabilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
183
184
Lista de Figuras
1.1
1.2
3.1
51
3.2
52
3.3
52
3.4
52
3.5
53
3.6
54
4.1
62
4.2
63
5.1
114
6.1
Fatorao de Inteiros . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
144
6.2
149
7.1
153
7.2
154
C.1 Chave RSA Privada com 1024 bits gerada pelo OpenSSL . . . . . . . . . .
176
C.2 Chave RSA Privada com 1024 bits gerada pelo OpenSSL em texto . . . . .
177
180
xix
Algoritmo de Euclides. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
21
Algoritmo RL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
Algoritmo LR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Algoritmo de Gauss. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
Algoritmo de Garner. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
Algoritmo ART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
101
106
127
10
Algoritmo Solovay-Strassen. . . . . . . . . . . . . . . . . . . . . . . . . .
167
11
Algoritmo de Miller-Rabin. . . . . . . . . . . . . . . . . . . . . . . . . . .
167
12
Algoritmo AKS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
169
13
172
xx
Captulo 1
Introduo
A cincia feita de fatos, da mesma forma que uma casa feita de tijolos.
Contudo, um agrupamento de fatos no constitui cincia, da mesma forma
que um monte de tijolos no uma casa.
(Jules Henri Poincar, matemtico francs, 1854-1912)
CAPTULO 1. INTRODUO
CAPTULO 1. INTRODUO
O problema do logaritmo discreto sobre corpos finitos, pode ser encontrado por
exemplo, no algoritmo ElGamal [30], publicado em 1985, por ElGamal, apresentando
duas aplicaes do PLD: um sistema criptogrfico de chave pblica e um algoritmo para
assinatura digital. Outro exemplo no contexto de criptografia que se baseia no PLD o
protocolo para troca de chave introduzido por Diffie e Hellman em 1976, no mesmo trabalho
que tambm introduziu a idia de criptografia de chave pblica [28]. Pode-se citar tambm
como exemplo de utilizao do PLD, o algoritmo de assinatura digital DSA, o qual faz parte
do padro de assinaturas digitais DSS e utilizado para gerao e verificao de assinaturas
digitais [60].
CAPTULO 1. INTRODUO
com comprimentos de chave menores, podendo ser indicados para aplicaes nais quais h
limitao de banda ou de armazenamento, visto que uma chave RSA de 1024 bits, apresenta
o mesmo nvel de segurana que uma chave de 160 bits de um algoritmo de curvas elpticas
equivalente.
Comparaes
O algoritmo RSA permite troca de chaves, criptografia e assinatura digital, sendo
mais completo do que o algoritmo DSA que permite apenas assinatura digital e o algoritmo
Diffie-Hellman permite apenas troca de chaves. Apesar do algoritmo ElGamal permitir troca
de chaves, criptografia e assinatura digital, ele bem menos utilizado do que o algoritmo
RSA.
Comparando o RSA com algoritmos de curvas elpticas, observa-se que existem diversas patentes relacionadas a clculos especficos para algoritmos com curvas elpticas e a
patente norte-americana do RSA original est expirada desde 2000. Algoritmos com curvas
elpticas podem prover o mesmo nvel de segurana que o RSA com chaves menores, sendo
mais eficientes do que o RSA na assinatura e deciframento, porm, so mais lentos para
cifrar e verificar assinaturas digitais. Outro aspecto a ser comparado que, devido a data de
criao dos algoritmos com curvas elpticas serem recentes em relao ao RSA, a segurana
do RSA foi muito mais testada do que a dos algoritmos com curvas elpticas.
Devido as comparaes apresentadas, o algoritmo RSA muito utilizado atualmente
e sua utilizao tem crescido ainda mais desde que expirou a validade da sua patente norteamericana, podendo ser encontrado em diversos aplicativos com cdigo aberto sobre licena
GPL, como o OpenSLL.
CAPTULO 1. INTRODUO
Java uma linguagem computacional de alto nvel de programao, orientada a objeto, projetada para ser portvel entre diferentes plataformas e sistemas operacionais, possibilitando que o mesmo programa escrito nesta linguagem seja executado em computadores
com sistemas operacionais diferenciados ou at mesmo em celulares, cartes de credito, etc.
Pelo fato da linguagem Java estar fortemente associada Internet, um dos aspectos mais
divulgados da linguagem sua segurana. Ela oferece vrias camadas de controle de segurana, incluindo a criptografia RSA.
O pacote de segurana da linguagem Java, uma API complexa. Neste pacote, existe
um amplo conjunto de classes, e entre as suas muitas funcionalidades, esta API pode ser
utilizada para gerar criptografia, autenticao, assinatura digital e pares de chaves (pblica
e privada). Para cada uma das opes citadas, h classe disponvel para implementao do
algoritmo RSA. Para assinatura digital, o pacote oferece opo para implementao do RSA
com a funo de hash MD2, MD5 ou SHA-1.
Com o pacote de segurana da linguagem Java podem ser criadas diversas aplicaes
RSA.
Protocolo SSL
O protocolo SSL uma camada do protocolo de rede, situada abaixo da camada
de aplicao, com a responsabilidade de gerenciar um canal de comunicao seguro entre
o cliente e o servidor. Atualmente implementado na maioria dos browsers. O RSA
implementado no protocolo SSL, assim como no OpenSSL, aplicativo composto por uma
biblioteca que serve de base para implementaes de rede seguras, sobre licena GPL, com
cdigo fonte aberto.
Skype - Criptografia
O Skype um software de comunicao de voz sobre IP, permitindo realizar
telefonemas gratuitos via Internet dentro de sua rede privada, bem como ligaes pagas
para usurios da rede de telefonia fixa. O sistema Skype funciona segundo o modelo
ponto-a-ponto e utiliza um sistema criptogrfico que engloba o algoritmo criptogrfico
simtrico AES com chave de 256 bits e para a troca das chaves simtricas utiliza o algoritmo
CAPTULO 1. INTRODUO
criptogrfico de chave pblica RSA com chaves de 1024, 1536 ou 2048 bits [89].
Cartes Inteligentes
O RSA pode ser implementado em cartes inteligentes, como no exemplo apresentado na figura 1.1, a qual apresenta um carto inteligente Gem Safe Xpress.
Na figura 1.2 pode ser visualizada uma chave pblica RSA criada com o software
PGP.
ICP-Brasil
CAPTULO 1. INTRODUO
-----BEGIN PGP PUBLIC KEY BLOCK----Version: PGP 8.0 - not licensed for commercial use: www.pgp.com
mQGiBEcD2csRBADHHPB4QY4KvJZlYl9Syp0bAdnoIHUmKteu4nMPel0ONV4MBv/R
tvktHAeBYP4ztl5ZhwhBGFW0pIRnC0mV1mns0ZaOGo4majpDZAJUZfomOXrHPJGw
dP1JajJQH4RP9i+JyYyyhiGyU1SyG/FWiwvtl1fsFG4Q7mc1seKOxg5BCQCg/7F0
u6ZszLlNkZfi81rnbYxaH90D/3HuRTDIMbcwKMiA1M1IAifHADVa2lEZj2TjkGlK
gm3LCjHMK2aWMLQe1ag94d88mNaAwO1yr1dwPgwWtY+pwHNpJJ1Jw3SxODeuPSgt
1gs3AjEIWVFycLKiF+aDI2cnkupHy7BSWs873MtKwke2Kn/Frw0O/lxyoWejGo5+
WTqYA/4wOzsuY8VUN9AkqPMP2rAxu9yvwVn99RT/tYa0q9brQ/Ht63hs6mQKmSvY
P19PZuut8WTaooLW93EWLJAFrlC7Ok48ZHs/kn1qFyGzhBdFh+iXi8klBPir6uwR
oS6UIIoCtrDhBsS8g80JEFylyA0Ythew8+xpM1eBLgKpXdTMRLQoU0FNQVJJUyBD
QVJGSSA8c2FtYXJpc2NhcmZpQGhvdG1haWwuY29tPokAWAQQEQIAGAUCRwPZywgL
CQgHAwIBCgIZAQUbAwAAAAAKCRAVdiR7gjLZmtTOAKCjeyYrfeoPELcGI//hiPwd
SjpuQwCgiqkFctqZ+0nJwISiSHxWABLG6ZW5Ag0ERwPZyxAIAPZCV7cIfwgXcqK6
1qlC8wXo+VMROU+28W65Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ+AyDvWXp
F9Sh01D49Vlf3HZSTz09jdvOmeFXklnN/biudE/F/Ha8g8VHMGHOfMlm/xX5u/2R
XscBqtNbno2gpXI61Brwv0YAWCvl9Ij9WE5J280gtJ3kkQc2azNsOA1FHQ98iLMc
fFstjvbzySPAQ/ClWxiNjrtVjLhdONM0/XwXV0OjHRhs3jMhLLUq/zzhsSlAGBGN
fISnCnLWhsQDGcgHKXrKlQzZlp+r0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZJrqrol7D
VekyCzsAAgIH+wdExfAsUBlUatH7wtLV7nHDl4dc/RoFvpGmVwKK0918ZBZWnMH/
xwB1n3bJZFDrOclmKQH2l5Od21tdwDugkouEV2u1REwsFt5jDhrfK90qAc/QhPEe
emcQRW/zAOttkNNTFKPK33iFr+mBYjxupKPs3te465dt1F4EfWRj/vfFLPB/PBSJ
vlhfDnmBQM8A1PFzm01uAkO6pRy7oyesMP7Ot0UjHZ96eFuv5YglIPxTWXTO2FZu
r96lgb6TrcYPpuyS55igp4ktQrHLAJO492JLQwQAOoICVy4vGE0/oSrgEOZw/gs5
wMdmV8+gfKsCR3ZAI+lgEoeD6fVlHx15/eyJAEwEGBECAAwFAkcD2csFGwwAAAAA
CgkQFXYke4Iy2ZrANQCgt0RNSqRUJ4r6Qw9zZ7h2grHF/D4AoO7CIo44kdD34vig
dNnF4avfjhFO =49Rm
-----END PGP PUBLIC KEY BLOCK----Figura 1.2. Chave Pblica RSA criada pelo PGP
CAPTULO 1. INTRODUO
CAPTULO 1. INTRODUO
mos para fatorao de nmeros inteiros, devido relao direta destes com a segurana do
RSA.
No apndice C so apresentados exemplos numricos reais de mdulos RSA fatorados, de criao de par de chaves RSA e de ciframento.
O apndice D composto por uma tabela com as probabilidades citadas nesta dissertao e outro contendo complexidades computacionais utilizadas na dissertao.
Captulo 2
Fundamentao Matemtica
Toda a educao cientfica que no se inicia com a Matemtica , naturalmente, imperfeita na sua base.
(Auguste Cont, filsofo e socilogo francs, 1798-1857)
A fundamentao matemtica do algoritmo RSA sinteticamente descrita neste captulo. Para anlise das demonstraes matemticas, assim como para maior aprofundamento
nestes conceitos h, por exemplo, as referncias [21, 25, 58, 85].
{0, 1, 2, 3, . . . , }.
Definio 2.1.3 Conjunto N . ([43]) Conjunto dos nmeros naturais exceto {0}.
10
11
{, . . . , 3, 2, 1, 0, 1, 2, 3, . . . , }.
Definio 2.1.5 Conjunto Z . ([43]) Conjunto dos nmeros inteiros exceto {0}.
Zn .
([58])
Conjunto
com n
dos
nmeros
N
inteiros
Zn
{n + 1, n + 2, . . . , 2, 1, 0, 1, 2, . . . , n 2, n 1}.
O Conjunto Zn pode tambm ser definido como conjunto dos nmeros inteiros mdulo n, onde o resultado de uma operao a (mod n) o resto da diviso inteira de a por n,
com a Z e n N.
Observa-se que Zn forma uma estrutura algbrica de anel comutativo para o conjunto
dos inteiros nas operaes de soma e multiplicao.
Definio 2.1.7 Conjunto Zn . ([58]) Conjunto dos nmeros inteiros mdulo n relativamente primos com n, com n N.
Definio 2.1.9 Conjunto Q . ([43]) Conjunto dos nmeros racionais exceto {0}.
por todo nmero que no se pode expressar como quociente de dois nmeros inteiros,
12
Definio 2.1.11 Conjunto I . ([43]) Conjunto dos nmeros irracionais exceto {0}.
Definio 2.1.13 Conjunto R . ([43]) Conjunto dos nmeros reais exceto {0}.
2.2. Primalidade
Um nmero x Z s divisvel por outro nmero y Z {0}, quando existir um
nmero z Z tal que x = yz. O mesmo ocorre em N.
Definio 2.2.1 Nmeros Primos. ([86]) Um inteiro p de valor absoluto maior que 1
dito um nmero primo se seus nicos divisores positivos forem 1 e o prprio p.
13
Definio 2.2.3 Primos Gmeos. ([86]) Dois nmeros primos a e b so ditos primos
gmeos, quando b = a + 2.
ln (n)
Quanto maior for o tamanho de n, mais preciso ser este resultado. Um inteiro n
escolhido aleatoriamente tem probabilidade igual a
1
ln (n)
Definio 2.2.4 Mximo Divisor Comum. ([86]) O mximo divisor comum (mdc) de dois
nmeros inteiros a e b um inteiro d, se d|a e d|b e se existe c tal que c|a e c|b, ento c|d, ou
seja, d o maior inteiro que divide a e b simultaneamente.
a=
t
Y
pai i
b=
m
Y
pbi i ,
i=1
i=1
(a, b) =
Y
i=1
min{ai ,bi }
pi
14
Definio 2.2.5 Mnimo Mltiplo Comum. ([86]) O mnimo mltiplo comum (mmc) de
dois nmeros inteiros a e b um inteiro m, se a|m e b|m e se existe c tal que a|c e b|c, ento
m|c, ou seja, m o menor inteiro mltiplo de a e b simultaneamente.
a=
t
Y
pai i
b=
i=1
m
Y
pbi i ,
i=1
< a, b >=
max{ai ,bi }
pi
i=1
15
Na Aritmtica Modular, o resultado de uma operao (resolvida atravs da aritmtica convencional), dividido pelo mdulo, e o resto desta diviso o resultado desejado.
Exemplos:
23 (mod 4) = 3 pois 4 5 + 3 = 23.
5 (mod 6) = 5 pois 6 0 + 5 = 5.
1 (mod 6) = 5 pois 6 1 + 5 = 1.
A aritmtica modular cclica, por exemplo, a multiplicao mdulo 5 apresenta
periodicidade a cada mltiplo de 5 (observar tabela Multiplicao mdulo 5).
Tabela 2.1. Multiplicao mdulo 5
x
1
2
3
4
5
6
7
8
9
10
1
1
2
3
4
0
1
2
3
4
0
2
2
4
1
3
0
2
4
1
3
0
3
3
1
4
2
0
3
1
4
2
0
4
4
3
2
1
0
4
3
2
1
0
5
0
0
0
0
0
0
0
0
0
0
6
1
2
3
4
0
1
2
3
4
0
7
2
4
1
3
0
2
4
1
3
0
8
3
1
4
2
0
3
1
4
2
0
9
4
3
2
1
0
4
3
2
1
0
10
0
0
0
0
0
0
0
0
0
0
(mod 6) 5
(mod 6) 11 (mod 6) = 5.
Observa-se que a diferena entre quaisquer dois elementos de {1, 5, 11} mltiplo
de 6. Genericamente:
(a b mod n) (n|a b).
16
17
sobre todas as entradas possveis de tamanho n) ou para o pior caso (maior custo de execuo
sobre todas as entradas possveis de tamanho n).
O estudo do custo computacional dedica-se a valores grandes de n, isto , estuda-se
o comportamento assinttico 1 da funo de complexidade f (n) e usualmente, apresenta-se
a complexidade de pior caso, denotado por O(f (n)).
A definio de um algoritmo com custo computacional tratvel ou intratvel independe dos recursos computacionais especficos para um determinado caso. Um algoritmo
com tempo polinomial pode ser ineficiente para algum caso da mesma forma que um algoritmo com tempo exponencial pode ser eficiente para um determinado caso. Um algoritmo
com custo computacional exponencial O(2n ) mais eficiente que um algoritmo com custo
computacional polinomial O(n5 ) para uma entrada n 20 [33].
Seguem exemplos bsicos de custo de tempo de processamento [58]:
18
Operao
Custo em operaes binrias, sendo n = max{a, b}
Soma (a + b)
O(lg a + lg b) = O(lg n)
Subtrao (a b)
O(lg a + lg b) = O(lg n)
Multiplicao (a b)
O((lg a)(lg b) = O(lg 2 n))
Diviso (a = qb + r)
O((lg a)(lg b) = O(lg 2 n))
Tabela 2.3. Complexidade computacional de tempo - operaes bsicas em Zn
Operao
Soma modular (a + b) mod n
Subtrao modular (a b) mod n
Multiplicao modular (a b) mod n
19
mdc(a, b)
Algoritmo:
1. enquanto b 6= 0 faa:
1.1. r := a (mod b);
1.2. a := b;
1.3. b := r;
2. retorna a.
Processamento
Segue o processamento (tabela 2.4) para a = 23 e b = 6, com o objetivo de obter o
mdc(23, 6).
Tabela 2.4. Processamento - algoritmo de Euclides
passo
0
1
2
3
4
5
6
7
8
9
a
23
b
6
r
5
6
5
1
5
1
0
1
1
20
Exemplo 1:
35x + 49y = 7.
Tem soluo, x = 3 e y = 2, pois mdc(35, 49) = 7:
35 3 + 49 2 = 7.
Exemplo 2:
35x + 49y = 5.
No tem soluo, pois mdc(35, 49) = 7 no divide 5.
Exemplo 3:
35x + 49y = 14.
Tem soluo, x = 6 e y = 4, pois mdc(35, 49) = 7 e 14 divisvel por 7:
35 6 + 49 4 = 14.
Exemplo 4:
23x + 6y = 1.
Tem soluo, x = 1 e y = 4, pois (23, 6) = 1:
23 1 + 6 4 = 1. Neste caso, no h solues para outros valores de c.
21
Algoritmo:
1. x2 := 1; x1 := 0; y2 := 0; y1 := 1;
2. enquanto b 6= 0 faa:
2.1. q := b ab c;
2.2. r := a qb; x := x2 qx1 ; y := y2 qy1 ;
2.3. a := b; b := r; x2 := x1 ; x1 := x; y2 := y1 ; y1 := y;
3. retorna (a, x2 , y2 ).
Processamento
Segue o processamento (tabela 2.5) para a = 23 e b = 6, com o objetivo de obter o
valor dos inteiros mdc(23, 6), x, y tais que 23x + 6y = mdc(23, 6).
passo
0
1
2
3
4
5
6
7
8
9
10
a
23
b
6
x1
x2
y1
y2
3
6
1
1
1 1
1 1
3
5
0
23
23
22
primo, ento n tem um fator primo menor ou igual a n. Assim, se n no for divisvel por
Existem vrios algoritmos para teste de primalidade (ver apndice A), assim como
para fatorao de nmeros inteiros. (ver apndice B). O crivo de Eratstenes um algoritmo tanto para teste de primalidade como para fatorao de nmeros inteiros: dado um in
teiro mpar n > 2, tenta-se dividir n pelos inteiros entre 2 e n. Caso algum desses nmeros
divida n, ento tal nmero um fator de n e n composto, caso contrrio n primo. O custo
(mod n1 )
x a2
(mod n2 )
..
.
x ak
(mod nk )
k
X
ai Ni Mi
(mod n)
i=1
onde
Ni = n/ni
Mi = Ni1 (mod ni ),
para 1 i k.
23
x 2 (mod 3)
a1 = 2;
n1 = 3
x 3 (mod 5)
a2 = 3;
n2 = 5
x 2 (mod 7)
a3 = 2;
n3 = 7
105
= 35
3
N2 =
105
= 21
5
N3 =
105
= 15
7
M1 = 351
(mod 3) = 2
M2 = 211
(mod 5) = 1
M3 = 151
(mod 7) = 1.
24
Qt
i=1
t
Y
i=1
ou:
(n) = n
t
Y
(1 p1
i )
i=1
ou ainda:
(n) =
t
Y
(pei i pei i 1 ).
i=1
Seguem exemplos:
Caso n = pq, para p e q primos, ento:
(n) = (p) (q),
ou:
(n) = mdc ((p), (q)) mmc ((p), (q)).
Caso n =
Qk
i=1
(n) =
k
Y
i=1
(pi 1).
25
Observaes:
1. Um elemento a Zn tem inverso multiplicativo se e somente se mdc(a, n) = 1.
2. O nmero de inteiros positivos menores que n que possuem inverso multiplicativo,
ou seja, que so relativamente primos com n igual a (n) e formam o conjunto Zn .
3. A multiplicao mdulo n associativa e comutativa e o elemento identidade o
nmero 1.
4. O inverso multiplicativo de um elemento a pertencente a Zn pode ser obtido com o
algoritmo de Euclides estendido (ver seo 2.7).
Teorema de Euler. ([86]) Se n um inteiro positivo e a um inteiro tal que mdc(a, n) = 1,
ento: a(n) 1 (mod n).
(n) =
(n),
(n)
,
2
mmc((pei i ))i ,
se n = pe , com p = 2 e e 2, ou p 3,
se n = 2e e e 3,
Q
se n = ki pei i , com i > 1 e
mmc((pei i ))i = mmc(p1 1, . . . , pk1 1, pk 1).
Seguem exemplos:
Caso n =
Qk
i=1
26
27
(n)
.
mdc(p 1, q 1)
28
mdulo n, no qual esto inclusos todos os elementos que so relativamente primos com n.
Qk
i=1
0, se p|a,
L(a, p) =
1, se a resduo quadrtico (mod p),
29
J(a, m) =
k
Y
L(a, pi )ei .
i=1
nmero inteiro que se acredite ser resduo quadrtico, baseado num teste de resduo
quadrtico como o smbolo de Jacobi.
Definio 2.10.9 Pseudo Resduo Quadrtico. Pseudo resduo quadrtico todo provvel
resduo quadrtico mas que no resduo quadrtico.
Definio 2.10.10 Homomorfismo de Grupos. ([86]) Sejam (A, ) e (B, ) dois grupos
comutativos. Uma funo f : A B um homomorfismo de grupos se:
f (x y) = f (x)f (y); x, y A.
30
Definio 2.10.12 Automorfismo de Grupos. ([86]) Sejam (A, ) e (B, ) dois grupos comutativos. Se f : A B um homomorfismo, ou seja:
f (x y) = f (x)f (y); x, y A e A = B,
31
Definio 2.10.13 Gerador. ([85]) Dado o grupo (Zn , ), seja g Zn . Se ordn (g) = (n),
ento g dito um gerador ou elemento primitivo ou ainda raiz primitiva de Zn .
Definio 2.10.14 Ciclo. Seqncia finita ordenada de elementos distintos que eventualmente se repetem, ou seja:
(a1 , a2 , a3 , . . . , an ), onde an+1 = a1 .
Definio 2.10.15 rbita. Seqncia finita ordenada formada por um ou mais ciclos, ou
seja:
(a1 , a2 , a3 , . . . , an , akn+1 , akn+2 , akn+3 , . . . , akn+n ), onde akn+i = ai ,
com k variando de 0 at x, onde 0 x < e 1 i n.
Definio 2.10.16 Ciclo em Zn . Seqncia finita ordenada formada por um sistema reduzido mximo de resduos mdulo n, conforme cada elemento da seqncia se repete ciclicamente conforme a potncia de uma determinada base b acrescida em uma unidade:
(b, b2 , b3 , . . . , bordn (b) ).
Definio 2.10.17 rbita em Zn . Seqncia finita ordenada formada por um ou mais ciclos
em um Grupo:
(b1 , b2 , b3 , . . . , b ordn (b) , bk ordn (b)+1 , bk ordn (b)+2 , bk ordn (b)+3 , . . . , bk ordn (b)+ordn (b) )
onde bk ordn (b)+i = bi , com k variando de 0 at x, onde 0 x < e 1 i ordn (b).
Definio 2.10.18 Grupo Cclico. ([85]) Um grupo dito cclico se existe pelo menos um
gerador do grupo.
Em um grupo cclico, (n) ordem para pelo menos uma base b, a qual um
gerador do grupo, e neste caso, o ciclo do grupo Zn na base b : (b, b2 , b3 , . . . , b(n) ).
32
Lema 2.10.3 Para todo nmero primo p, Zp possui no mnimo um gerador, o nmero total
de geradores ((p)), e o grupo cclico de ordem (p).
Lema 2.10.5 Se g um gerador, ento qualquer outro gerador, ter a forma g k (mod n)
com k Z(n) .
(n)
p
(n).
Lema 2.10.7 Pode-se dizer que g um gerador se, e somente se, K = {g, g 2 , . . . , g (n) }
um sistema reduzido mximo de resduos mdulo n.
Lema 2.10.9 Dado um nmero primo p, em bs (mod p), as bases b de ordem 2 ocorrem se:
b 1 mod p ou b 1 mod p.
Lema 2.10.10 Dado um nmero n composto por dois primos p e q, em bs (mod n), as bases
b de ordem 2 ocorrem se:
b 1 mod p e b 1 mod q;
33
b 1 mod p e b 1 mod q;
b 1 mod p e b 1 mod q ou
b 1 mod p e b 1 mod q.
Exemplos Numricos
Exemplo 1: n primo
Segue um exemplo com o grupo multiplicativo (Z5 , ). A tabela 2.6, apresenta
nmeros inteiros variando de 1 em 1 em ambos os eixos. As linhas representam a base
da exponenciao e as colunas representam o expoente.
Tabela 2.6. Exponenciao modular em Z5
x1
x2
x3
x4
x(5)
0
1
2
3
4
0
1
4
4
1
0
1
3
2
4
0
1
1
1
1
x1
x2
x3
x4
x(5)
1
2
3
4
1
4
4
1
1
3
2
4
1
1
1
1
Tem-se que:
1. Neste caso n primo (n = 5), logo o grupo Z5 cclico.
2. (5) = 5 1 = 4, de forma que, Z5 possui 4 elementos: {1, 2, 3, 4}.
34
Exemplo 2: n composto
Segue outro exemplo com o grupo multiplicativo (Z15 , ). A tabela 2.8 tem composio semelhante a anterior (tabela 2.6).
Tem-se que:
1. Neste caso n composto (n = 15).
x1
x2
x3
x4
x5
x6
x7
x(15)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0
1
4
9
1
10
6
4
4
6
10
1
9
4
1
0
1
8
12
4
5
6
13
2
9
10
11
3
7
14
0
1
1
6
1
10
6
1
1
6
10
1
6
1
1
1
4
1
4
4
1
4
1
1
8
4
13
2
11
7
14
x8
x9
x10
x11
x12
x13
x14
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0
1
4
9
1
10
6
4
4
6
10
1
9
4
1
0
1
8
12
4
5
6
13
2
9
10
11
3
7
14
0
1
1
6
1
10
6
1
1
6
10
1
6
1
1
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0
1
4
9
1
10
6
4
4
6
10
1
9
4
1
x(15)
0 0
1 1
2 4
3 9
4 1
5 10
6 6
7 4
8 4
9 6
10 10
11 1
12 9
13 4
14 1
0
1
8
12
4
5
6
13
2
9
10
11
3
7
14
0
1
1
6
1
10
6
1
1
6
10
1
6
1
1
x4
x5
x6
x7
x(15)
1
2
4
7
8
11
13
14
35
1
1
1
1
1
1
1
1
x8
x9
x10
x11
x12
x13
x14
1
2
4
7
8
11
13
14
1
4
1
4
4
1
4
1
1
8
4
13
2
11
7
14
1
1
1
1
1
1
1
1
1
2
4
7
8
11
13
14
1
4
1
4
4
1
4
1
x(15)
1
2
4
7
8
11
13
14
1
4
1
4
4
1
4
1
1
8
4
13
2
11
7
14
1
1
1
1
1
1
1
1
5. (15) = 8 = (p1 1)(p2 1) = (3 1)(5 1) pois, Z15 = {1, 2, 4, 7, 8, 11, 13, 14},
8 elementos.
6. Produzem ciclos de ordem 4: 2, ciclo: (2, 4, 8, 1); 7, ciclo: (7, 4, 13, 1) e 8, ciclo:
(8, 4, 2, 1).
36
8. Como pode ser observado na tabela 2.8, cada base b em Z15 que no pertence a Z15 ,
ou seja, mdc(b, 15) 6= 1, no possui gerador e portanto a funo de Carmichael no
se aplica para estas bases.
RL - right to left.
LR - left to right.
37
me (mod n)
Algoritmo:
1. Seja ek , ek1 , . . ., e1 , e0 a representao binria de e;
2. Se e0 = 1, c := m, seno c := 1;
3. Para i = 1 crescendo at k faa:
3.1. m := m2 (mod n);
3.2. Se ei = 1 ento c := cm (mod n);
4. retorna c.
passo
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
m
115
e
103
ek : 16 15 04 03 12 11 10
n
143
k
6
115
1
69
70
2
42
80
3
48
4
16
5
113
31
6
42
15
38
me (mod n)
Algoritmo:
1. Seja ek , ek1 , . . ., e1 , e0 a representao binria de e;
2. Se ek = 1, c := m, seno c := 1;
3. Para i = k 1 decrescendo at 0 faa:
3.1. c := c2 (mod n);
3.2. Se ei = 1 ento c := cm (mod n);
4. retorna c.
Processamento do algoritmo LR
O processamento do algoritmo para exponenciao modular LR (tabela 2.11), foi
realizado para a entrada: m = 115 , e = 103 e n = 143, com o objetivo de obter me
(mod n) = 115103 (mod 143), ou seja, a mesma entrada que o algoritmo para exponenciao modular RL.
A execuo no algoritmo LR pra no passo 18 pois i = 0, e retorna me (mod n) =
115103 (mod 143) = 15.
Complexidade Computacional
Ambos os mtodos requerem o mesmo nmero de variveis, porm, no algoritmo RL,
caso se necessite de armazenar o valor de m (base da exponenciao), haver a necessidade
de mais uma varivel.
O custo de tempo de processamento de ambos os algoritmo de exponenciao modular, RL e LR, considerando e o valor do expoente e n o valor do mdulo, o mesmo:
O((lg e) (lg 2 n)) operaes binrias. Porm, no mtodo RL, as operaes do passo 3.1
39
passo
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
m
115
e
103
ek : 16 15 04 03 12 11 10
n
143
k
6
115
5
69
70
4
38
3
14
2
53
89
1
56
5
0
25
15
so independentes, podendo serem processadas paralelamente, o que torna este mtodo mais
eficiente do que o mtodo LR [101].
40
Estes fundamentos matemticos so essenciais no s para a compreenso do algoritmo RSA e de seus ataques como tambm para a compreenso da criptografia moderna,
sendo um alicerce para estudos mais avanados nesta rea de conhecimento.
Captulo 3
Fundamentos de Criptologia e de
Computao
A habilidade humana no pode inventar cdigo que a habilidade humana no
possa decifrar.
(Edgar Allan Poe, escritor norte-americano, 1809-1849)
bit quntico.
41
42
Fator Nome
210
kibi
220
mebi
230
gibi
40
2
tebi
250
pebi
260
exbi
Sigla
Ki
Mi
Gi
Ti
Pi
Ei
Origem
kilobinrio: (210 )1
megabinrio: (210 )2
gigabinrio: (210 )3
terabinrio: (210 )4
petabinrio: (210 )5
exabinrio: (210 )6
Derivao
kilo: (103 )1
mega: (103 )2
giga: (103 )3
tera: (103 )4
peta: (103 )5
exa: (103 )6
um kibibit
um kilobit
um mebibyte
um megabyte
um gibibyte
um gigabyte
43
lg(n) + 1,
Tamanho Binrio de n =
dlg(n)e,
1,
se n for potncia de 2,
se n no for potncia de 2,
se n = 0.
44
4. Autenticao: a idia de autenticao est associada identificao e inclui autenticao de entidade e de dados. A autenticao de entidade o processo que associa
o indivduo a uma identificao nica, ou seja, a forma pela qual o usurio prova
que quem alega ser, estabelecendo a validao de sua identidade. A autenticao
de dados o processo que identifica como legtimas as informaes sobre os dados
tais como: origem, data de origem, hora de envio e contedo;
Definio 3.2.2 Mensagem. ([58]) Tambm chamada de texto legvel, consiste em um elemento do espao de mensagens.
45
Definio 3.2.7 Ciframento por Substituio. um ciframento resultante de transformao que troca a identidade de smbolos da mensagem, porm, mantm a posio relativa
dos smbolos no criptograma.
Os algoritmos criptogrficos devem permitir a utilizao de diferentes chaves e segundo o Princpio de Kerckhoff, a divulgao do seu algoritmo no deve diminuir a sua
segurana.
Os algoritmos criptogrficos podem ser simtricos ou assimtricos.
ferramenta utilizada para prover segurana de informao, como por exemplo esquemas de
ciframento.
46
Definio 3.2.13 Protocolo Criptogrfico. ([58]) Um protocolo criptogrfico uma primitiva criptogrfica constituda por uma seqncia de passos que especificam precisamente
as aes requeridas a duas ou mais entidades para alcanar um objetivo de segurana
especfico.
(conjunto finito de bits preferencialmente aleatrios), com pelo menos uma parte confidencial (chave privada), o qual um parmetro aplicado em um algoritmo criptogrfico
2
3
47
A chave privada deve ser de conhecimento apenas do(s) seu(s) usurio(s) e mantida
sob sigilo por este(s), pois, segundo o Princpio de Kerckhoff4 [58], pressupem-se que o
criptoanalista tem acesso a todos os detalhes do processo de ciframento e deciframento com
exceo do valor da chave. nela que deve residir a segurana do algoritmo criptogrfico.
Definio 3.2.18 Espao de Chaves. ([58]) Denotado por K, o conjunto formado por
todas as chaves possveis em um determinado algoritmo criptogrfico.
Cenrios de ataque. Os ataques podem ser classificados, com base no tipo de cenrio analisado.
Ataque apenas por criptograma. O criptoanalista tem acesso apenas a criptogramas
e a informao estatstica sobre a mensagem.
48
(criptograma, mensagem).
Ataque adaptativo por criptograma escolhido. O criptoanalista pode escolher determinado criptograma e ter acesso ao par (criptograma, mensagem), sem ter acesso
chave. A escolha de um novo criptograma depende dos pares analisados at o
momento de forma que, a escolha de cada novo criptograma est condicionada ao
conhecimento j adquirido analisando-se os pares (criptograma, mensagem) obtidos anteriormente.
Definio 3.3.2 Ataque por Fora Bruta. ([58]) Um ataque por fora bruta consiste no
teste de todas as chaves possveis at se encontrar a correta ou outra equivalente.
49
Ataque de fora bruta apenas por criptograma. Como o adversrio tem acesso
ao algoritmo que est sendo atacado, ele processa o ataque de fora bruta a
partir do criptograma, verificando no teste seqencial do espao de chaves a
possvel mensagem para este criptograma.
50
Definio 3.4.2 Funo Unidirecional. ([58]) Uma funo f : x y dita unidirecional se o clculo da f (x) tratvel, para todo x X mas, para qualquer y Y , a
inverso intratvel, exceto para um nmero finito e pequeno de valores.
Definio 3.4.3 Funo Unidirecional com Segredo. ([58]) Uma funo unidirecional
com segredo, tambm chamada de funo unidirecional trapdoor, uma funo unidirecional f , com uma propriedade adicional (segredo) que permite a inverso eficiente da
funo f .
51
computacional.
A figura 3.2 apresenta da esquerda para a direita os professores Ralph Merkle, Martin
Hellman e Whitfield Diffie em 1977. Merkle tambm pesquisava sobre o tema na poca
em que Diffie e Hellman publicaram o artigo citado. Estes pesquisadores ainda atuam e
apresentam suas contribuies para a criptologia. A figura 3.3 apresenta professor Diffie em
2007. A figura 3.4 apresenta o professor Hellman em 2007.
52
.
Os algoritmos criptogrficos assimtricos so tambm conhecidos como algoritmos
de chave pblica e so utilizados tambm para assinaturas digitais.
A figura 3.5 esquematiza a utilizao de um algoritmo criptogrfico assimtrico.
53
54
prvias sobre futuras alteraes da chave. Isto requer a existncia de um mtodo pelo qual
as duas partes possam se comunicar de modo seguro, capaz de garantir o sigilo das chaves.
Caso esse passo do processo sofresse quebra de sigilo, nessa forma de distribuio de chaves,
qualquer adversrio poderia ter acesso tanto mensagem, quanto chave secreta. Um outro
problema que ocorreria nesse processo seria o caso de trs pessoas, A, B e C; que quisessem
se comunicar utilizando chaves secretas. Seriam necessrias 3 (trs) chaves: uma compartilhada entre A e B, outra entre A e C, e a ltima entre B e C, como representado pela figura
3.6 a seguir. Desta forma, dois usurios necessitaro de uma chave, trs usurios necessitaro de duas chaves, quatro usurios necessitaro de seis chaves e n usurios necessitaro
n(n 1)
de
chaves. Observa-se um custo de gerenciamento de chaves com crescimento
2
quadrtico em relao ao nmero de usurios (O(n2 )).
55
Algoritmo
Simtrico
Assimtrico
Origem
Chave
Sigilo da chave
Manter em sigilo
Compartilhamento de chave
Emissor e receptor
compartilham a mesma chave
Crescimento quadrtico
Rpida (Gb/seg.)
Permite
No permite
Compartilhados entre
emissor e receptor
Cerca de 30 anos
Par de chaves, sendo
uma pblica e uma privada
Manter em sigilo chaves
privadas, chaves pblicas
podem ser divulgadas
Emissor e receptor possuem
pares de chaves distintas
Crescimento linear
Lenta (Mb/seg.)
Permite
Permite
Compartilhados entre
emissor e receptor
Distribuio de chaves
Velocidade de processamento
Ciframento
Assinatura Digital
Protocolo/Algoritmo criptogrfico
56
por uma terceira parte idnea. Para isso existem os certificados digitais definidos nas infraestruturas de chaves pblicas, como na brasileira [42].
Um usurio pode enviar uma mensagem cifrada e/ou verificar uma mensagem assinada, utilizando chaves pblicas, mas apenas este usurio, em posse da sua chave privada,
pode decifrar informaes que lhe so enviadas ou assinar digitalmente alguma mensagem.
Supondo-se que A deseje se comunicar com B, o receptor B pode ter apenas que se
convencer de que a mensagem recebida veio de A, mas pode tambm ter a necessidade de
adicionar confidencialidade a comunicao. Em uma assinatura digital, o receptor tem que
ser capaz de comprovar a autenticidade da mensagem e de sua origem.
Uma assinatura manuscrita um sinal grfico pessoal emitido de prprio punho
para firmar um documento indicando sua aprovao ou autoria. A credibilidade de um
documento tradicional (em papel), com assinatura manuscrita, est ligada essencialmente
sua originalidade, sendo observados autoria e integridade. O conceito de assinatura
digital abrange estes dois aspectos, garantindo computacionalmente a autoria do documento
em questo (no repdio) e assegurando que o documento eletrnico em questo no foi
alterado (integridade).
Definio 3.5.2 Assinatura Digital. Uma assinatura digital uma seqncia de bits que
assegura a um documento especfico, por um prazo de validade finito, a sua originalidade
(integridade) e a sua autoria (no repdio).
57
A assinatura digital no deve ser confundida com uma assinatura digitalizada. Uma
assinatura digitalizada (ou eletrnica) uma reproduo da assinatura manuscrita em formato
eletrnico.
Segue a representao simblica da assinatura digital com utilizao de chave
pblica:
Tabela 3.4. Assinatura digital - representao simblica
B assina a mensagem M
B cifra a mensagem assinada para enviar a A
A recebe a mensagem e a decifra
A verifica a assinatura digital de B
SB (M )
CA (SB (M ))
DA (CA (SB (M )))
VB (SB (M )) = M
Notao
Descrio
M
MS
S
R
MR
R1
R
h
Mh
58
59
60
t
Definio 3.5.3 Funo de Hash. Uma funo de hash h definida por f : Zm
2 Z2 ;
m, t N e m t.
Existem mais trs propriedades fundamentais para uma funo de hash criptogrfica:
Resistente a Pr-imagem: dado y Zt2 , intratvel encontrar uma entrada x Zm
2
tal que h(x) = y;
0
m
Resistente a segunda Pr-imagem: dado x Zm
2 , intratvel encontrar x Z2 ,
61
pesquisas para o desenvolvimento de variaes do algoritmo RSA (ver captulo 5), visando
trazer benefcios ao processo e utilizadas tecnologias em criptoanlise visando verificar a
segurana do RSA (ver captulo 6).
Captulo 4
O Algoritmo RSA
Distinguir nmeros primos de compostos e fatorar os ltimos, reconhecidamente, um dos mais importantes e teis problemas na Aritmtica.
(Disquisitiones Arithmeticae, 1801 de
Karl Friedrich Gauss, matemtico, astrnomo e fsico alemo, 1777-1855)
4.1. Introduo
O RSA um sistema criptogrfico de chave pblica amplamente aceito e divulgado,
desenvolvido em abril de 1977 [74], pelos professores do MIT Ronald Rivest e Adi Shamir
e pelo professor da USC Leonard Adleman, batizado com as iniciais de seus nomes.
A figura 4.1 apresenta da esquerda para a direita os professores Shamir, Rivest, Adleman na poca da publicao do artigo e a figura 4.2 os apresenta da esquerda para a direita
os professores Rivest, Shamir, Adleman em 2003.
62
63
A patente para o algoritmo RSA [76] (patente 4.405.829 norte-americana) foi emitida
no dia 20 de setembro de 1983, com licena exclusiva para a RSA Security Inc. por meio do
Massachusetts Institute of Technology, com data de expirao para 20 de setembro de 2000,
incluindo alm da confeco de produtos com o algoritmo, sua utilizao e sua venda, mas a
RSA Security Inc., permitiu durante todo este perodo, a utilizao no comercial gratuita do
algoritmo, principalmente para uso acadmico em docncia e pesquisas.
No dia 6 de setembro de 2000, a RSA Security Inc. renunciou a patente e tornou
pblico o algoritmo, porm, existem variaes do algoritmo RSA patenteadas por outros
proprietrios e com licena em vigor. Em hardware, o RSA pode ser encontrado em cartes
inteligentes e em linhas telefnicas seguras.
O RSA permite:
De acordo com Boneh [8], a estrutura do RSA no precisou ser alterada desde a sua
criao pois os ataques encontrados so exemplos de utilizaes inadequadas, podendo ser
evitados com a escolha dos parmetros apropriados.
O algoritmo RSA gera a chave pblica e a chave privada a partir de nmeros primos grandes, sendo computacionalmente intratvel obter a chave privada a partir da chave
pblica.
64
O tamanho ideal dos fatores primos do mdulo RSA varia conforme a necessidade
de cada aplicao. Quanto maior forem os nmeros primos usados para a criao das chaves,
maior ser a segurana proporcionada por esse algoritmo e menor ser o seu desempenho.
Pelas ltimas recomendaes dos Laboratrios RSA [76], o mdulo RSA deve ser
de no mnimo 1024 bits e este tamanho deve ser aumentado para 2048 bits a partir de 2010.
65
Padronizao
As notaes aqui utilizadas, seguem as especificaes do PKCS # 1 ver. 2.1. O PKCS
um conjunto de documentos com especificaes produzidas pelos Laboratrios RSA em
cooperao com desenvolvedores de sistemas de segurana de vrias partes do mundo, que
visa acelerar poe meio de padronizao a utilizao e desenvolvimento de algoritmos de
chave pblica. O PKCS surgiu em 1991 como um resultado de encontros com um pequeno
grupo de pessoas precursoras no uso da tecnologia de chave pblica e desde ento tem se tornado referncia at mesmo para padres estabelecidos como ANSI X9, PKIX, SET, S/MIME
e SSL. Atualmente seu desenvolvimento ocorre basicamente via lista de discusses e workshops ocasionais.
O PKCS [77] mais relacionado ao RSA o PKCS # 1 (ver tabela 4.1). A ltima
verso do PKCS # 1 a verso 2.1, de 14 de junho de 2002 [78]. A verso mais antiga do
PKCS #1, entre as disponveis pelas publicaes dos Laboratrios RSA, a verso 1.5, de 1
de novembro de 1993. O padro para assinatura digital especificada no PKCS #1 ver. 1.5
vulnervel a um ataque descrito por Bleichenbacher [7] e aplicado contra o protocolo SSL
ver. 3.0 e portanto, no deve ser utilizado.
PKCS #n
PKCS #1
PKCS #2
PKCS #4
PKCS #8
PKCS #10
descrio
padro para utilizao do RSA
incorporado ao PKCS #1
incorporado ao PKCS #1
padro para utilizao de chaves privadas
padro para utilizao de chaves pblicas
verso
data
2.1
14/06/2002
1.2
01/11/1993
1.7
26/05/2000
66
67
n
(valor)
tamanho de n
(bits)
bloco mximo
(valor)
tamanho do bloco
(bits)
35
33
25
6
6
5
31
31
15
5
5
4
68
Escolhe-se um nmero inteiro positivo mpar e, tal que 1 < e < (n), de forma que
mdc(e, (n)) = 1.
Determina-se o nmero d, o qual a inversa multiplicativa do nmero e mod (n),
tal que (n)|ed 1, ou seja:
d = e1 mod (n)
de forma que
(n)|ed 1.
O valor do nmero d deve ser o menor nmero possvel. O custo de tempo de processamento para o clculo da inversa multiplicativa O(lg 2 n) operaes binrias, para
n =max{e, d} (ver seo 2.7).
O par (e, n) a chave pblica e o par (d, n) a chave privada. Os valores p e q
devem ser mantidos em segredo. O mdulo n o mesmo para a chave pblica e privada.
Tanto os nmeros escolhidos p e q, como o expoente d necessitam ser mantidos em sigilo,
sendo de conhecimento apenas do seu proprietrio o qual se responsabiliza em mant-los
sob sigilo. O conhecimento da chave pblica no deve possibilitar o acesso chave privada.
Ciframento e Deciframento
O ciframento RSA, realizado bloco a bloco, sendo: c = me (mod n), onde m
um elemento de Zn que representa numericamente um bloco (o qual sempre menor que n)
do texto legvel.
O deciframento dado por: m = cd (mod n). Percebe-se que a exponenciao
modular no RSA uma funo bijetora e portanto uma permutao.
A assinatura digital : s = hd (mod n), onde h o valor de hash da mensagem.
A verificao da mensagem assinada digitalmente dada por: h = se (mod n).
O custo de tempo de processamento do algoritmo original do RSA [74] para ciframento, deciframento, assinatura digital ou verificao desta o mesmo do algoritmo de
exponenciao modular (ver seo 2.11), ou seja O((lg j)(lg n2 )) operaes binrias, considerando um processamento realizado em um nico processador, sendo que o valor de j
corresponde ao expoente e ou ao expoente d conforme o caso.
69
O RSA-CRT (ver seo 5.4) uma variao do RSA que agiliza o deciframento
utilizando o teorema chins do resto. Neste caso, a chave pblica permanece a mesma (e, n)
e a chave privada a tripla (p, q, d).
passo
0
1
2
3
4
5
6
7
a
b
120 7
x1
x2
y1
y2
17
120
17
7
17
1
7
120
17
70
2. Ciframento
n = 143 |bloco| < 143
m = 15
c = me (mod n)
c = 157 (mod 143) = 115 (ver seo 2.11).
3. Deciframento
m = cd (mod n)
m = 115103 (mod 143) = 15.
Vale ressaltar que este um exemplo terico, com o objetivo de demonstrar os conceitos apresentados pois na prtica, os parmetros atribudos so bem maiores.
Na seo C.2 pode-se analisar um exemplo numrico real gerado com o OpenSSL.
71
Como:
(mp1 )k 1 mod p, para qualquer k inteiro positivo,
(mp1 )t(q1) 1 mod p;
mt(p1)(q1) 1 mod p.
Se multiplicarmos por m os dois lados da igualdade tem-se:
mmt(p1)(q1) m mod p;
m1+t(p1)(q1) m mod p;
m1+t(n) m mod p;
med m mod p.
Caso m seja mltiplo de p, mdc(m, p) = p:
m 0 mod p.
Logo:
med 0 mod p.
Das duas congruncias obtm-se:
med m mod p.
72
Criptoanlise Inicial
No existe prova formal de que o RSA totalmente seguro. No artigo original de
definio do RSA [74] so citadas as primeiras abordagens de criptoanlise:
1. Fatorao de n
A segurana do RSA reside na dificuldade do problema de fatorao de nmeros
inteiros, ou seja, se fatorar nmeros inteiros fosse computacionalmente tratvel, o
RSA seria inseguro. Ao fatorar n, pode-se descobrir a chave privada para a chave
pblica em questo.
2. Descobrir (n) sem fatorar n
Se fosse possvel descobrir (n) sem fatorar n, poder-se-ia obter d = e1
(mod (n)) utilizando-se o algoritmo de Euclides estendido. Calcular (n) sem
fatorar n tambm no computacionalmente tratvel quando p e q so primos
suficientemente grandes. Os valores de grandeza dos primos so definidos nas
especificaes do RSA [76].
3. Calcular d sem conhecer (n)
Calcular d sem conhecer (n) no tratvel se o expoente pblico e e o expoente privado d forem escolhidos a partir de um conjunto suficientemente grande. Os valores
de grandeza dos expoentes so definidos nas especificaes do RSA [76].
Como (n) par e mdc(d, (n))=1, sabe-se apenas que d tem que ser mpar.
73
74
Usurio A:
chave pblica: (eA , nA ) = (7, 143);
chave privada: (dA , nA ) = (103, 143).
Usurio B:
chave pblica: (eB , nB ) = (17, 2773);
chave privada: (dB , nB ) = (157, 2773).
Assinatura Digital RSA com Ciframento:
sA (m) = (msA )dA mod nA = 15103 mod 143 = 141;
cB (sA (m)) = (sA (m))eB mod nB = 14117 mod 2773 = 47.
Deciframento e Verificao da Assinatura Digital RSA:
DA = (cB (sA (m)))dB mod nB = 47157 mod 2773 = 141 = sA (m);
75
No seria vlido o ciframento, visto que o tamanho do bloco sB (m) maior que o
tamanho do mdulo nA e haveria perda de informao aps a reduo mdulo nA .
No artigo original de definio do RSA [74], este problema foi analisado e so propostas duas solues:
1. Utilizao de dois conjuntos de pares de chaves
76
77
Mdulo RSA
Se no algoritmo RSA o mdulo n fosse incorretamente selecionado como um nmero
primo, o clculo de (n) seria imediato, ou seja (n) = n 1, o que inviabilizaria o
algoritmo, pois desta forma seria possvel se calcular o expoente privado d com base no
expoente que pblico e utilizando-se o algoritmo de Euclides estendido (ver seo 2.7).
Como o mdulo n um nmero composto grande (composto por pelo menos dois primos
grandes distintos com aproximadamente o mesmo tamanho em bits e com valores no muito
prximos), o clculo de (n) se torna computacionalmente intratvel.
Para verificar se o mdulo n primo, um adversrio pode utilizar algum dos testes
de primalidade disponveis no mercado, os quais so computacionalmente tratveis, como
o Teste probabilstico de Solovay-Strassen, o qual apresenta complexidade O(lg3 n) operaes binrias ou o Teste probabilstico de Miller-Rabin, o qual, apesar de mais eficiente,
tambm apresenta complexidade computacional O(lg3 n) operaes binrias (ver apndice
A).
Funo de Euler
O RSA utiliza-se do clculo de (n). Como n composto por dois primos distintos
p e q, (n) = (p 1)(q 1) . Esta frmula pode ser comprovada tomando-se o conjunto Zn
e subtraindo-se os elementos que possuem um fator comum a n:
Mltiplos de p:
{p, 2p, 3p, . . . (q 1)p, pq}.
Total de q elementos.
Mltiplos de q:
{q, 2q, 3q, . . . (p 1)q, pq}.
Total de p elementos.
Mltiplos de p ou de q:
{p, 2p, 3p, . . . (q 1)p, q, 2q, 3q, . . . (p 1)q, pq}.
Total de (p + q 1) elementos.
78
Caso um criptoanalista tenha acesso ao valor de (n), ele poderia, juntamente com
o expoente pblico, calcular utilizando o algoritmo de Euclides estendido, a inversa do expoente pblico obtendo o expoente privado, mas pode tambm fatorar n:
n
p
n = pq q =
(n) = (p 1)(q 1)
(n) = (p 1)(
(n) = p
n
n
p +1
p
p
(n) = n p
n + p +
n
1)
p
n
+1
p
n
1 + (n) = 0
p
( p)
np + p2 + n p + (n)p = 0
p2 p(n + 1 (n)) + n = 0
(4.1)
2
de Bhaskara
sabe-se que, dada a equao quadrtica p = ap + bp + c, tem-se que
2
b b 4ac
p=
. Aplicando a frmula de Bhaskara obtm-se p = 13 e q = 11.
2a
Expoentes
79
80
i=1
81
Pontos Fixos
82
Pode-se visualizar que so 3 bases, sendo as duas razes do resduo quadrtico 1 mod
p e a base 0.
Dado um nmero n composto por dois primos p e q, uma funo f (m) = m3 mod n
ter ponto fixo quando:
m 0 mod p e m 0 mod q;
m 0 mod p e m 1 mod q;
m 0 mod p e m 1 mod q;
m 1 mod p e m 0 mod q;
83
84
Um exemplo interessante d-se com o mdulo 10573 (109 97). Para e = 865,
tem-se c = m = m865 mod 10573, ou seja qualquer mensagem m ponto fixo. Isso ocorre
porque e 1 = 864 = 25 33 , p 1 = 108 = 22 33 , q 1 = 96 = 25 3 e desta forma
mdc(e 1, p 1) = p 1 e mdc(e 1, q 1) = q 1.
85
Dada a chave privada (d, n), possvel se obter a fatorao do mdulo n com auxlio
da chave pblica (e, n):
Dado d, sabe-se que K = de 1, com K = k(n) e k sendo um nmero inteiro.
Como (n) um nmero par, K = 2t r, com r sendo um nmero mpar e t 1.
K
Por exemplo, dado o par de chaves (e, n) = (3, 15) e (d, n) = (3, 15) tem-se:
K = 3 3 1 = 8.
8
86
utilizao de mdulos com 2048 bits e nestes casos, os primos p e q devem ter 1024
bits cada um (ver seo 6.7).
Desta forma, efetuam-se testes sucessivos para todos os primos prximos a n. Este
ataque possibilita a fatorao de n em tempo O(|p-q|), o qual no deve ser tratvel.
Como referncia, pode-se utilizar |p q| 2
|n|
4
4. Cada um dos nmeros p 1 e q 1 deve ter um fator primo grande, caso contrrio,
fica possvel fatorar n em tempo computacional tratvel, como por exemplo, com o
algoritmo de fatorao p 1 de Pollard [80].
No mnimo, p 1 = 2p0 e q 1 = 2q 0 , com p0 e q 0 tambm primos da mesma ordem
de grandeza que p e q.
5. Cada um dos nmeros p + 1 e q + 1 deve ter um fator primo grande, caso contrrio,
torna-se possvel fatorar n em tempo computacional tratvel, como por exemplo, com
o algoritmo de fatorao p + 1 de Pollard [80].
No mnimo, p + 1 = 2p00 e q + 1 = 2q 00 , com p00 e q 00 tambm primos da mesma
ordem de grandeza que p e q.
6. O mdc(e1, p1) e o mdc(e1, q1) so sempre maior ou igual a 2, mas devem ser
ambos pequenos para evitar um elevado nmero de pontos fixos (ver definio 4.5.1).
7. O tamanho do bloco em bits no pode ser pequeno demais para que possibilite a
construo de um tabela de pares ordenados (mensagem, criptograma).
O tamanho de bloco ideal dlg(n)e 1 (ver seo 4.2).
87
9. O algoritmo RSA no deve ser aplicado isoladamente, mas sempre dentro de uma
codificao de mensagem que impede alguns tipos de ataques (ver seo 3.5.1).
10. O par de chaves RSA de cada usurio deve apresentar certificao de validade de AC
credenciada, evitando um ataque MITM (ver seo 3.5.1).
11. Vale ressaltar que, os valores relacionados chave privada, tais como de p, q, (n)
ou suas variaes, devem permanecer secretos assim como o expoente d.
Captulo 5
Variaes
Problemas como logaritmo discreto possuem inmeras faces diferentes,
havendo muito a ser descoberto.
(Kevin S McCurley, matemtico)
88
CAPTULO 5. VARIAES
89
CAPTULO 5. VARIAES
90
(5.1)
O expoente d(n) no pode ser utilizado como substituto de d(n) pois para qualquer
valor possvel para e:
1
CAPTULO 5. VARIAES
91
(5.2)
Para o usurio final do algoritmo RSA, salvo a vantagem de um deciframento possivelmente mais eficiente, qual mdulo ((n) ou (n)) foi utilizado para a criao do expoente d irrelevante. Outras variaes compatveis com o algoritmo RSA original comumente podem ser utilizadas em conjunto com esta variao.
CAPTULO 5. VARIAES
92
d d1 mod l1 ;
d d2 mod l2 ;
..
.
d dt mod lt ;
obtendo-se a soluo d0 pelo CRT:
d0 d(mod l1 l2 ...lt ).
Isto porque como t z e l1 l2 ...lt > d. Pelo CRT, o sistema em questo tem
uma nica soluo menor que l1 l2 . . . lt . Como d uma soluo do sistema e d < l1 l2 . . . lt ,
no h a possibilidade de se encontrar como soluo um valor d0 diferente de d, logo d = d0 .
Segue um exemplo numrico terico, de particionamento do expoente d da chave
privada [25]:
5 usurios, Z = 5;
quaisquer 2 usurios conseguem acesso chave privada, z = 2.
Soluo:
CAPTULO 5. VARIAES
93
6
5
5 5
(m2 )6 = (c5
2 ) = c2 = c2 c2 ;
(m2 )6 =
c25 c25 =
(m)6
m6
m6
=
=
;
1
(m1 )6
c21
(c13 )6
m6
;
c21
(5.3 em 5.4)
(5.3)
(5.4)
CAPTULO 5. VARIAES
94
m2 = c5
2 =
m2 =
m6
mod n ou
c21 c2
m
1
m1 = c3
1 =
Ciframento:
c1 = 53;
mod n;
(c13 )
m
mod n.
m2
CAPTULO 5. VARIAES
95
c2 = 155.
Deciframento:
c = c51 c32 mod 391;
m = 52;
m1 = 382;
m2 = 168.
Foi comprovado ataque eficiente para esta variao (ver seo 6.1), de forma que no
sero apresentados maiores detalhes, os quais podem ser vistos em [58, 66].
mp m mod p
(5.5)
med m mod q
mq m mod q.
(5.6)
CAPTULO 5. VARIAES
96
00 (q)+1
mq mod q
de 5.5
onde k 0 = k(q)
(5.7)
(5.8)
de 5.6
onde k 00 = k(p).
(5.9)
O sistema de congruncias:
m mp
(mod p);
m mq
(mod q);
tem uma nica soluo mdulo n, dada pelo algoritmo de Gauss, que a aplicao
do CRT:
n n
n n
m = (mp (( )1 mod p)) + (mq (( )1 mod q)) mod n.
p p
q q
m = (mp q(q 1 mod p)) + (mq p(p1 mod q)) mod n.
Onde:
mp = cdp mod p,
dp = d mod (p);
mq = cdq mod q,
dq = d mod (q).
CAPTULO 5. VARIAES
97
m = mp + (((mq mp )(p1
CAPTULO 5. VARIAES
Algoritmo Computacional 6 Algoritmo de Garner.
Q
Entrada: n = ki=1 pi , com mdc(pi , pj ) = 1 para todo i 6= j, e um sistema
de congruncias (m1 , m2 , . . . , mk ) onde mi cdi mod pi
Sada: O inteiro m que representa a soluo do sistema de congruncias
apresentado como entrada
Algoritmo:
1. Para i := 2 at k faa:
1.1. Ci := 1;
1.2. Para j := 1 at (i 1) faa:
1.2.1. u := p1
j mod pi ;
1.2.2. Ci := uCi mod pi ;
2. m := m1
3. Para i := 2 at k faa:
3.1. u := ((mi Q
m)Ci ) mod pi ;
3.2. m := m + u i1
j=1 pj ;
4. Retorna m.
d = 103
c = 115
dp = d mod (p 1) = 103 mod 10 = 3;
dq = d mod (q 1) = 103 mod 12 = 7;
mp = cdp mod p = 1153 mod 11 = 4;
mq = cdq mod q = 1157 mod 13 = 2;
p1 mod q = 111 mod 13 = 6;
q 1 mod p = 131 mod 11 = 6.
CRT por Gauss:
m = (mp q(q 1 mod p)) + (mq p(p1 mod q)) mod n =
= (4 13 6) + (2 11 6) mod 143
m = 15.
CRT por Garner:
m = mp + (((mq mp )(p1 mod q)) mod q)p =
= 4 + (((2 4)6) mod 13)11
98
CAPTULO 5. VARIAES
99
m = 15.
(ri , di , ti ),
onde:
(1) ri = i-simo fator primo do mdulo n;
(2) di = dri = d mod (ri 1);
(3) ti = coeficiente CRT do i-simo fator: r1 r2 ... ri1 ti 1 mod ri .
Observa-se que a definio dos coeficientes CRT (ti ) segue o algoritmo de Garner,
porm para compatibilizar com o PKCS #1 verso 2.0 e anteriores, o quinto item da
quntupla (p, q, dP, dQ, qInv), qInv, define a inversa multiplicativa de q mod p e no a de
p mod q como deveria ser pela definio do terceiro item da tripla (ri , di , ti ), ti , o que no
interfere no resultado final, visto que apenas trocado o primeiro fator primo do mdulo n
CAPTULO 5. VARIAES
100
com o segundo.
CAPTULO 5. VARIAES
101
distintos) ou igual (quando o mdulo n composto por dois primos distintos) ao RSA CRT
pelo algoritmo de Garner. Porm, o algoritmo ART no comumente utilizado em processamentos do RSA CRT.
Pelo algoritmo ART, para n = pq tem-se:
m = mp + (((mq mp )(p1
CAPTULO 5. VARIAES
102
que no algoritmo de Garner (k1)k/2, o que torna o algoritmo ART mais eficiente.
No algoritmo de Gauss o nmero de inverses mdulo pi k 1, mas o custo das
redues modulares O((kt)2 ), o que o torna o algoritmo de Gauss menos eficiente
que o algoritmo ART e que o algoritmo de Garner.
Para k = 2 a eficincia do algoritmo ART a mesma do que o algoritmo de Garner,
mas para o caso de k > 2, o algoritmo ART mais eficiente (como pode ser
observado na tabela 5.1).
primos (qtde)
algoritmo ART
k
2
3
4
5
(k 1)k/2
1
3
6
10
(k 1)
1
2
3
4
5.5. MRSA
O MRSA, RSA com mltiplos primos, foi desenvolvido pelos pesquisadores Collins,
Hopkins, Langford e Sabin [22]. O MRSA modifica o mdulo n, constituindo-o de k primos
Q
distintos ao invs dos tradicionais dois primos, n = ki=1 pi , onde pi so nmeros primos
distintos. Esta variao tem registro de patente norte-americana sob nmero 5848159, registrada em 6 de abril de 1998 [22].
O deciframento realizado pelo RSA CRT. Utilizando-se k = 3 primos, obtm-se
um ganho de 2, 25 em relao ao deciframento com o mdulo tradicional (k = 2 primos)
[66].
A gerao de chaves nesta variao a mesma do RSA original, mas deve-se observar
a especificao de tamanho em bits mnimo necessrio para a segurana de cada primo [23].
Dado um mesmo tamanho de mdulo n, esta variao agiliza o tempo de deciframento em relao ao RSA CRT, pois utilizando mais primos, reduz o tamanho em bits de
CAPTULO 5. VARIAES
103
cada um deles.
primos (qtde)
ganho sobre
ganho sobre
MRSA
3
4
5
RSA (tradicional)
9
16
25
5.6. RSA P k Q
O RSA P k Q foi proposto por Takagi [93], e modifica o mdulo n, de n = pq para
n = pk q. Os estudos de Takagi foram realizados assumindo-se k = 2 [95].
Esta variao no est especificada no PKCS #1.
CAPTULO 5. VARIAES
104
CAPTULO 5. VARIAES
105
Para i = k 1 tem-se:
Fk1 (X0 , X1 , . . . , Xk1 ) = (X0 + pX1 + . . . + pk1 Xk1 )e .
Reduzindo-se a equao mdulo pi+1 , a funo ser a mesma funo que cifra mpk .
CAPTULO 5. VARIAES
106
CAPTULO 5. VARIAES
107
passo
0
1
2
3
4
5
6
7
8
pi+1
C dp mod p
2
p
5
k
2
e
c
7 218
3
1
25
3
15
3
1
7
5.7. DRSA
Em 1999, Pointcheval [68] props uma variao do algoritmo RSA, o algoritmo
DRSA. Segundo ele, foram realizados muitos estudos para melhorar o tempo de deciframento do RSA mas poucos estudos para melhorar a sua segurana. O DRSA prope maior
CAPTULO 5. VARIAES
108
Tabela 5.4. Ganho prtico de velocidade do RSA P 2 Q sobre o RSA CRT (2 primos)
tamanho do mdulo n
ganho sobre
(bits)
768
1024
2048
CAPTULO 5. VARIAES
109
n
2
n
2
bits. Considerando
CAPTULO 5. VARIAES
110
CAPTULO 5. VARIAES
111
uma das decises mais importantes em implementaes RSA. Atualmente os ataques de fatorao do mdulo n, dependem do tamanho do mdulo (ataques de fatorao de propsito
geral) ou do tamanho do menor fator primo, mesmo desconhecido, que compem o mdulo
(ataques de fatorao de propsito especial). So considerados atualmente seguros contra
fatorao por algoritmos de propsito geral, mdulos de 2048 bits ou maiores. So considerados seguros contra fatorao por algoritmos de propsito especial, mdulos com primos
de 256 bits ou superiores. Maiores detalhes so vistos na seo 6.7.
A complexidade de tempo de processamento do ciframento e do deciframento cresce
rapidamente com o tamanho do mdulo, e assim, difcil a escolha de um tamanho que
combine eficincia de tempo de processamento e segurana, mais especificamente prazo de
segurana. A escolha particularmente difcil para organizaes chamadas por Shamir de
paranicas, as quais desejam que seus ciframentos permaneam secretos durante vrias
dcadas.
Como quase impossvel predizer o progresso dos algoritmos de fatorao em um
perodo longo de tempo, a nica ao possvel neste caso, utilizar margens enormes de
segurana. Mas esta soluo deixar o tempo de processamento do algoritmo extremamente
lento. O RSA Desbalanceado se propem a solucionar este problema com o objetivo de
prover segurana por muito tempo e sem nenhum custo extra. Ele propem o aumento do
mdulo n, para por exemplo, 5000 bits, onde p teria 4500 bits e q teria 500 bits. Desta forma,
o mdulo n estar protegido dos dois tipos de fatorao existentes at o momento.
O problema em utilizar tal mdulo n, o fato de que uma implementao do RSA
original com este mdulo ficaria extremamente lenta.
usual que o expoente de ciframento seja pequeno e o expoente de deciframento
grande. O expoente de ciframento deve ter no mnimo 10% do tamanho do mdulo n pois,
caso contrrio, a mensagem corre o risco de no sofrer reduo modular. No caso do mdulo
de 5000 bits, o expoente e dever ter 500 bits. usual deciframentos com expoentes de
500 bits e o processamento no considerado lento. Portanto, no haver problemas para o
ciframento no mdulo n desta variao 2 .
Visto que a maioria das implementaes RSA cifram chaves simtricas com cerca
de 168 bits ou menores, a mensagem ser sempre menor do que o valor de q. Garantindo a
2
Quando o artigo foi escrito, em 1995, mdulos com 512 bits ou maiores eram considerados seguros.
CAPTULO 5. VARIAES
112
O artigo de H. Gilbert at al., [36] analisa os cuidados necessrios para a implementao segura desta variao.
n
p
es=
n+t
.
q
Ento n = pr e n + t = qs.
(4) Se r e/ou s forem nmeros compostos, retorna-se ao passo (1), seno o par de mdulos
RSA (n, n + t).
Por exemplo, para t = 2, tem-se o pair (n, n+2), onde n 0 mod p e n 2 mod q,
n = pr = p(q 2) e n + 2 = qs = (p + 2q).
Para expoente pblico e, deve-se escolher um nmero mpar menor do que (n), de
forma que mdc(e, p 1) = 1, mdc(e, q 1) = 1, mdc(e, r 1) = 1 e mdc(e, s 1) = 1.
Calculam-se os expoentes privados dn e dn+t como no RSA tradicional.
O nome Twin RSA se deve utilizao de primos gmeos, os quais apresentam o formato n e n + 2 (ver
definio 2.2.3), visto que a palavra twin significa gmeo em lngua inglesa.
CAPTULO 5. VARIAES
113
A variao foi proposta sem uma definio precisa de onde aplic-la, para que ela
fosse analisada pela comunidade de criptologia, a qual poderia sugerir aplicaes. Inicialmente, foi proposto pelos autores, as possveis aplicaes que seguem:
Um usurio poderia ter dois pares de chaves RSA com o custo de armazenamento em
memria de um par de chaves e de forma bastante simples e elegante.
Se a variao fosse adotada, os usurios poderiam cifrar suas mensagens com o mdulo n e assin-las com o mdulo n+t, sendo mais uma opo para solucionar o problema da relao necessria entre o tamanho do mdulo de ciframento e o tamanho
do mdulo de assinatura digital no caso de ciframento e assinatura digital conjuntos
(ver seo 4.4).
CAPTULO 5. VARIAES
114
Variao
RSA utilizando o Expoente Universal
RSA com Chave Privada Particionada
RSA em Lote
RSA CRT pelo Algoritmo de Gauss
RSA CRT pelo Algoritmo de Garner
RSA CRT pelo Algoritmo ART
MRSA
RSA P k Q
DRSA
DRSA por Padhye
RSA Redistribudo
MRSA Redistribudo
DRSA por Padhye Redistribudo
RSA Desbalanceado
Twin RSA
Finalidade
agilizar o deciframento
compartilhar chave privada
obsoleto
agilizar o deciframento
agilizar o deciframento
agilizar o deciframento
agilizar o deciframento
agilizar o deciframento
segurana
segurana e velocidade
agilizar o ciframento
agilizar o ciframento
agilizar o ciframento com segurana
segurana por longo prazo
no definida
Captulo 6
Ataques e Defesas
A invencibilidade est na defesa; a possibilidade de vitria, no ataque. Quem
se defende mostra que sua fora inadequada; quem ataca, mostra que ela
abundante.
(Sun Tzu, estrategista militar chins, cerca de 350 a.C.)
6.2.1. Falsificao de Assinatura Digital RSA. Ataque por criptograma escolhido adaptativo;
6.2.2. Ataque por Erro Aleatrio na Assinatura. Lenstra, 1996 [54];
6.2.3. Ocultamento I. Ataque MITM, Davida, 1982 [26];
115
116
117
para dois receptores distintos X e Y , desde que mdc(eX , eY ) = 1. Para tal, o adversrio
calcula os valores a e b com o algoritmo de Euclides Estendido: eX a + eY b = 1. Como
m = meX a+eY b mod n = meX a meY b mod n = caX cbY mod n, pode-se recuperar a mensagem.
ento
me2
c
= me1 mod n
mod n
ou seja,
c
= c1 .
c2
118
c
igual a algum c1 da tabela construda.
c2
Caso seja encontrado c1 desejado, calcula-se m = m1 m2 .
s2 = (m2 )d mod n.
119
dp = d mod (p 1);
sq = mdq mod q,
dq = d mod (q 1).
Boneh et al. [9], demonstrou que a assinatura com o RSA CRT pode ser insegura
caso, por algum motivo, haja um clculo errado. A verificao da assinatura evidenciar que
ela no vlida, mas essa assinatura invlida pode possibilitar a fatorao do mdulo n.
Suponha-se que um nico erro acontea durante a gerao da assinatura, ou seja, sp
ou sq foi calculado erroneamente.
Supondo-se que sp correto, mas s0q no , ou seja, ao invs de sq , foi utilizado por
engano s0q 6= sq . A suposta assinatura s0 = (sp q(q 1 mod p)) + (s0q p(p1 mod q)) mod n.
Quando for verificada a assinatura digital s0 , supondo-se que se conhea a mensagem
m que foi assinada, percebe-se que ocorreu um erro pois m 6= (s0 )e mod n. Pode-se julgar que houve um erro de assinatura de forma que (s0 )e = m mod p e (s0 )e 6= m mod q.
Calcula-se mdc(n, (s0 )e mod n m). Caso o julgamento proceda, obtm-se um dos fatores
de n.
Utilizando-se o exemplo de processamento do RSA CRT por Gauss (ver seo 5.4.2),
tem-se:
n = 143;
e = 7;
d = 103;
120
s = 115;
p = 11, dp = 3, sp = 4;
q = 13, dq = 7, sq = 2;
q 1 mod p = 6;
p1 mod q = 6;
m = 15;
m = (mp q(q 1 mod p)) + (mq p(p1 mod q)) mod n
= (4 13 6) + (2 11 6) mod 143
= 312 + 132 mod 143
= 15.
Supondo-se que ouve um erro de assinatura como julgado no ataque e ao invs de ser
processado 312 + 132 mod 143, foi processado 312 + 131 mod 143.
Neste caso, s0 = 53, enquanto s = 115. Ento:
(s0 )e = m mod p: 92 = 4 mod 11;
(s0 )e 6= m mod q: 92 6= 2 mod 13.
Desta forma, ter-se-ia:
mdc(n, (s0 )e m) = mdc(143, 77) = 11.
De fato, 11 um dos fatores do mdulo n = 143.
Para esse ataque, alm de existir o erro de assinatura, o adversrio necessita ter conhecimento preciso da mensagem m.
Utilizando-se alguma codificao de mensagem para o RSA, esse ataque no
funciona.
Vale observar que, este ataque foi proposto em 1997, quando o RSA CRT era comumente processado com o algoritmo de Gauss, mas atualmente o RSA CRT comumente
processado com o algoritmo de Garner ou outro, devido a maior eficincia (ver seo 5.4.2),
eliminando esse ataque, o qual passou a ter valor apenas acadmico.
121
6.2.3. Ocultamento I
Este um ataque MITM proposto por Davida em 1982 [26], funcionando conforme
demonstrado a seguir.
A chave privada do usurio A (d, n) e a pblica (e, n). Suponha que um adversrio
B deseja obter uma assinatura digital de A na mensagem m, lembrando-se que m Zn .
B ter que de alguma forma convencer A a assinar uma mensagem aleatria m0 . Caso o
usurio B obtenha sucesso, ele poder falsificar a assinatura de A em m, se tiver escolhido a
mensagem aleatria como segue [66]:
Escolhe-se um nmero r pertencente a Zn .
Calcula-se m0 = re m mod n, a qual ser a mensagem dita como aleatria.
A dever assinar m0 , obtendo-se assim uma assinatura s0 .
Como s0 = (m0 )d mod n = (re m)d mod n = r(md mod n). B pode calcular s =
s0
r(md mod n)
mod n =
= md mod n, conseguindo assim uma assinatura de A
r
r
na mensagem m escolhida.
Para evitar esse tipo de ataque, o algoritmo RSA no aplicado isoladamente em
uma assinatura digital, mas sim dentro de uma codificao de mensagem que impede este
tipo de ataque.
6.2.4. Ocultamento II
Uma variao do ataque por Ocultamento I, tambm evitada com a utilizao de uma
codificao de mensagem, pode ser aplicado pelo adversrio I, conforme segue:
I intercepta um criptograma c que o usurio A destinou ao usurio B.
I escolhe um nmero aleatrio r pertencente a Zn e calcula c0 = creB mod n, enviando para B o valor c0 no lugar de c.
B obtm c00 assinando c0 = (creB ) mod nB e envia c00 = (c0 )dB mod nB =
(creB )dB mod nB = cdB r mod nB para A.
122
123
Existem duas maneiras para se defender desse tipo de ataque. A mais simples seria
inserir um atraso aleatrio para o clculo de exponenciao modular levar sempre um mesmo
tempo fixo. A outra maneira baseada numa tcnica chamada ocultamento. Antes do
deciframento (ou assinatura), o carto inteligente escolhe um valor aleatrio r pertencente
124
Wiener [99], em 1990, observou que, dado um mdulo n = pq, se o expoente privado
1 1
d for menor que n 4 , pode-se obter d analisando-se a chave pblica correspondente. O
3
1 1
ataque ocorre para e < (n), quando q < p < 2q e d < n 4 .
3
Sabe-se que (n) = n p q + 1 e |n (n)| = n n + p + q 1 = p + q 1.
Foi definido como pr-requisito para o ataque que q < p < 2q. Ento q < n e
|n (n)| < 3 n 1;
|n (n)| + 1 < 3 n;
125
Como ed = 1 mod (n), existe um k tal que |ed k(n)| = 1 e pode-se observar que:
|
ed k(n)
1
|=
;
d(n)
d(n)
ed
k(n)
1
|=
;
d(n) d(n)
d(n)
|
e
k
1
|=
.
(n) d
d(n)
k
e
uma aproximao de
. Como e < (n) e ed k(n) = 1, ento
d
(n)
k
mdc(k, d) = 1 e uma frao reduzida (simplificada).
d
Visualiza-se que
e k
ed kn
|=|
|.
n d
dn
e k
ed k(n) kn + k(n)
|=|
|;
n d
dn
|
e k
1 kn + k(n)
|=|
|;
n d
dn
e k
1 k(n (n))
3k n
| |=|
|<
;
n d
dn
dn
|
|
e k
1 k(n (n))
3k
|=|
|< ;
n d
dn
d n
1 k(n (n))
3k
e k
|=|
|<d 1.
n d
dn
dn 2
Como k < d (pois e < (n) e ed k(n) = 1), 3k < 3d; d <
1
4
3k < n , ento
3k
1
dn 2
<
n4
1
dn 2
:
1
n4
e k
| |<
1 ;
n d
dn 2
1 1
1
n 4 , 3d < n 4 ;
3
126
e k
1
|<
1 .
n d
dn 4
e k
1
1
| < 2 < 2;
n d
3d
2d
e k
1
| < 2.
n d
2d
e
uma frao racional, pode ser expandida para uma frao contnua simples
n
finita, escrita na forma [86]:
Como
q1 +
(6.1)
q2 +
q3 +
1
...
...
+ qm1 +
1
.
qm
k
e
um dos convergentes da expanso em fraes contnuas simples de .
d
n
Por exemplo, para e = 4811 e n = 7387 tem-se a frao contnua:
O valor
4811
=0+
7387
(6.2)
1+
1+
1+
6+
1+
1+
4+
1
1
9+ .
4
127
Existem lg n expanses que convergem para uma frao contnua finita simples [56].
e
k
Neste caso, a frao contnua e uma das lg n expanses . Desta forma, d pode ser
n
d
recuperado em tempo polinomial.
Segue o algoritmo para o ataque de Wiener [80].
fatores p e q do mdulo n
Algoritmo:
1. Faa: c0 := 1; c1 := 1; d0 := 0; d1 := 1; i := 1;
2. Enquanto i m faa:
(ci e) 1
2.1. z :=
;
di
2.2. Se z um nmero inteiro:
2.2.1. calcule p0 e p00 em p2 (n z + 1)p + n = 0;
2.2.2. se p0 e/ou p00 for inteiro e diferente de 1 e de n:
n
n
q := p0 e/ou q := p00 , conforme o caso;
2.2.3. se q um nmero inteiro retorne (p, q).
2.3. i := i + 1;
2.4. ci := qi ci1 + ci2 ;
2.5. di := qi di1 + di2 ;
3. Retorne ERRO.
O processamento do algoritmo para ataque de Wiener (tabela 6.1), foi realizado para
k
a entrada: e = 4811, n = 7387 (83 89), com o objetivo de obter . Foi utilizado um valor
d
maior para e do que para d a fim de exemplificar o ataque com valores pequenos e obter
1 1
d < n4 .
3
A execuo do algoritmo para ataque de Wiener pra no passo 11, pois encontra
p = 83 e q = 89, possibilitando o clculo de d = 3.
Se ao invs da chave pblica (e, n) com e < (n), fosse utilizado (e0 , n), com
e0 = e + t(n), este ataque seria intratvel para um valor grande de t, mas, infelizmente, o
1
ciframento seria muito mais demorado. Por outro lado, para um valor d > 31 n 4 , pode-se uti-
128
passo ci di i
e
n
0
4811 7387
1
1 0 0
0
1
1 1 1
2
3
2
4
1
5
1
6
7
3
8
3
9
2
10
11
* qi com 0 < i 9, na frao 4811
7387
qi
0
4810
1
4810
1
7216
83 89
= {0, 1, 1, 1, 6, 1, 1, 4, 9}
129
c1 = m3 mod n1 ,
c2 = m3 mod n2 ,
130
c3 = m3 mod n3 e
pode-se aplicar o CRT obtendo um c0 que pertena a Zn1 n2 n3 , tal que c0 = m3 . Assim pode-se
recuperar m calculando a raiz cbica de c0 .
Genericamente, se todos os expoentes pblicos dos criptogramas que sero utilizados
so iguais a e, pode-se recuperar m desde que e k, e que este expoente pblico seja
pequeno suficiente para calcular a raiz e-sima.
Para impedir este e outros ataques ao RSA com expoente pblico pequeno,
recomendado utilizar o valor mnimo de e = 216 + 1 = 65537. Outra medida de segurana
[66], seria a utilizao da tcnica de ocultamento, concatenando algum valor aleatrio
mensagem como por exemplo, se m possui w bits, B envia para Ui , m0i = i2w + m, de forma
que as mensagens cifradas pelo RSA fossem todas diferentes, apesar de que a mensagem
final a ser lida por cada usurio seja a mesma. Em 1988, Hastad [40] provou que, qualquer
concatenao linear pode no ser segura, devendo ser utilizada uma concatenao aleatria.
Qk
i=1
ni .
pblico e for menor que n, e desta forma e < (n), d < (n) e k < e.
Coppersmith [24], em 1997, analisou que de posse de
anlise de Coppersmith, se o expoente e da chave privada for menor que n, sempre existe
k tal que:
ed k(n) = 1.
Como (n) = n p q + 1 tem-se:
ed k(n p q + 1) = 1.
131
n
obtendo-se:
p
ed k(n p
n
+ 1) = 1.
p
n
+ 1) = p;
p
edp kp(n p + 1) + kn = p.
Seja w o comprimento do mdulo n em bits. Reduzindo-se a equao mod 2w/4
tem-se:
(ed)p kp(n p + 1) + kn = p mod 2w/4 ;
kp2 + (ed kn k 1)p + kn = 0 mod 2w/4 .
(6.3)
w
bits menos significativos de d, portanto possui o valor
4
ed mod 2w/4 , tendo uma equao quadrtica com incgnitas k e p;
O adversrio possui os
Para cada valor candidato a k, o adversrio resolve a equao 6.3 e obtm os canw
1
4
dos bits
mais significativos (MSB) da chave privada d, possvel se recuperar a chave privada por
completo se o expoente pblico e for menor que n, e desta forma e < (n), d < (n) e
k < e.
132
Considerando a equao:
ed k(n p q + 1) = 1;
d=|
d=|
k(n p q + 1) + 1
|;
e
kn + 1 k(p + q 1)
|.
e
e
Para e < (n), k < e, para cada valor candidato a k, pode-se calcular:
d0 = b
|d0 d| =
Considerando p e q como
(kn + 1)
c;
e
k(p + q 1)
.
e
n:
k(2 n 1)
|d d|
;
e
0
k(2 n)
|d d| <
;
e
0
3k n
|d d| <
.
e
0
Como k < e:
|d0 d| < 3 n.
133
1
4
1
4
dos bits
mais significativos de d.
Por exemplo, considerando-se a chave pblica (e, n) = (3, 7387), a chave privada
1
(d, n) = (4811, 7387), sendo 4811 = 1001011010112 . Caso o adversrio tenha acesso a
4
dos MSB de d = 4811 ou seja (1002 ) tem-se:
d0 = b
d0 = b
(kn + 1)
c;
e
(7387k + 1)
c.
3
|d0 d| =
k(p + q 1)
;
e
2(p +
|d0 d| =
7387
1)
p
.
3
Sabendo-se que:
|d0 d| < 3 n;
1
4
1
4
134
|d0 d| =
114 =
k(p + q 1)
;
e
2(p + q 1)
.
3
135
c0 = ce mod n = ce mod n,
3
k1
mod n corres-
(ce c, n) 6= 1.
136
(mod p)
ce 6 c
(mod p)
ce c
(mod p)
ce c
ce c
ce 6 c
ce c
(mod q);
(6.4)
(mod q);
(6.5)
(mod q).
(6.6)
Como (6.6) ocorre muito menos freqentemente do que (6.4) ou (6.5), ento o ataque
generalizado termina muito antes do que o ataque de Simmons e Norris. Pode-se afirmar que
se o ataque de Simmons e Norris ocorre em tempo T , o ataque Cclico Generalizado ocorre
Probabilidade de Sucesso
A exponenciao modular apresenta caracterstica cclica, podendo-se afirmar que
sempre existem rbitas menores do que (n) no processo de ciframento do RSA para algumas bases e portanto, matematicamente ambos os ataques funcionam.
O custo de tempo de processamento do ataque de Simmons e Norris da mesma
ordem de grandeza do custo dos algoritmos de fatorao (ver seo 6.7), sendo portanto,
intratvel computacionalmente.
137
Em [72], Rivest demonstra que a defesa para ataques cclicos est na forma adequada
de escolher os nmeros primos p e q como primos duplamente fortes. Posteriormente, Maurer em [57], demonstrado que primos fortes so suficientes para proporcionar uma defesa
segura. Em [46], Jamning afirma que este ataque tem pouca chance de sucesso em tempo
tratvel quando os primos foram escolhidos da forma adequada. Estas anlises levaram
construo do mdulo n, com a estrutura abaixo, a qual utiliza primos fortes:
n = pq;
p = a0 p0 + 1;
q = b0 q 0 + 1;
sendo:
n (n)
pq ((p 1)(q 1))
pq pq + p + q 1
p+q1
=
=
=
;
n
n
n
n
1090
1090
=
= 1090 .
10902
10180
Deve-se procurar por um nmero primo r relativamente grande (com ordem de
grandeza de fatorao intratvel) e que divida (n), assumindo-se que para isso divide
(p 1).
138
n
, pois procura-se por um r que possa
4
dividir a ordem de e mod (n). Sabe-se que p e q apresentam ordem de grandeza n. Como
O nmero r procurado deve ser menor que
n
1
4
r so menores que
e (n) maior que r n, ento
=
no pior caso, ou
4
4r
r n
seja, uma probabilidade muito pequena.
ks
(n)
mdc(p1,q1)
ks
(p1)(q1)
s
ks2
ks2
=
, com sendo muito pequeno.
(p 1)(q 1)
n
139
Em [75], 1998, Rivest comenta que a maior fraqueza contra ataques cclicos, est no
fato do usurio, ao utilizar primos fortes, considerar que o sistema est totalmente seguro e
no observar os cuidados necessrios para a criao adequada das chaves RSA.
Os ciclos de exponenciao que ocorrem no RSA foram muito pesquisados desde
a criao do algoritmo. Entre as publicaes encontra-se a de A. Ecker [29], 1998, que
analisou exaustivamente o tema no encontrando novas fraquezas alm das conhecidas.
Vale ressaltar que, para a variao do RSA que utiliza o expoente universal (n) a
anlise que acaba de ser apresentada vlida, visto que (n) o mmc(p 1, q 1).
140
Fatorao de Pollard, 1974, eficiente para fatorar nmeros de 33 bits por exemplo,
em processamento monotarefa [58]:
1
O(n 4 ).
ln ln p) 2
).
O(e(1+o(1))(ln n ln ln n) 2 ).
O(e(1,923+o(1))(ln n) 3 (ln ln n) 3 ).
141
142
Teoricamente, para se fatorar um mdulo de 428 bits, ou seja, 129 algarismos decimais, leva-se cerca de 5 mil MIPS anos1 , utilizando o algoritmo de QS. Outros exemplos so
citados na tabela 6.2 [76].
Tabela 6.2. Fatorao: Mdulo RSA MIPS anos
bits
dgitos decimais
MIPS - medida de velocidade computacional, indica a execuo de um milho de passos por segundo, ou
seja 106 passos. MIPS anos - indica a execuo de um milho de passos por segundo durante o perodo de um
ano, ou seja, cerca de 3 1013 passos [58]. Devido a evoluo computacional substituiu-se MIPS pela tripla
(nmero de equipamentos, freqncia do processador, processador).
143
Tabela 6.3. Fatorao: Mdulo RSA (qtd. de dgitos decimais) data da fatorao
Mdulo
bits
dgitos decimais
data
algoritmo
tempo de processamento
RSA-100
RSA-110
RSA-120
RSA-129
RSA-130
RSA-140
RSA-155
RSA-160
RSA-200
332
365
398
428
431
465
515
531
664
100
110
120
129
130
140
155
160
200
04/1991
04/1992
06/1993
06/1994
04/1996
02/1999
08/1999
04/2003
05/2005
QS
QS
QS
QS
GNFS
GNFS
NFS
GNFS
GNFS
7 MIPS anos
75 MIPS anos
830 MIPS anos
5000 MIPS anos
1000 MIPS anos
2000 MIPS anos
8000 MIPS anos
2,7 1 GHz Pentium anos
75 2,2 GHz Opteron anos
Mdulo
bits
dgitos decimais
data
algoritmo
tempo de processamento
RSA-576
RSA-640
RSA-768
RSA-896
RSA-1024
RSA-2048
576
640
768
896
1024
2048
174
193
232
270
309
617
12/2003
11/2005
GNFS
GNFS
em aberto
em aberto
em aberto
em aberto
meses com 292 computadores, a grande maioria formada por estaes Sun e computadores
pessoais Pentium II, num esforo estimado em 8 mil MIPS anos.
k
Y
i=1
(pi 1);
144
145
tamanho de n (bits)
qtd. de primos
n. de pontos fixos
1024
1536
2048
3
4
5
341
384
409
27
81
243
Pontos Fixos
Para um inteiro positivo n composto por fatores primos distintos, n =
Qk
i=1
pi , 1 <
p1 < p2 < . . . < pk , dado um expoente fixo e, o nmero de bases b tais que ordn (b) = e 1
igual a ki=1 (1 + mdc(e 1, pi 1)).
Desde que cada mdc(e 1, pi 1), com i variando de 1 a k, no apresente valores
grandes, o nmero de pontos fixos ser pequeno e no apresentar riscos a segurana do
algoritmo.
Ataques Cclicos
Utilizando-se a mesma anlise dos ataques cclicos ao RSA original (ver seo
6.6.2), o mdulo n com mltiplos primos estar seguro contra ataques cclicos se forem
k
utilizados primos fortes, pois neste caso r < 4n e (n) > r k n, ento, a probabilidade de
se encontrar r de
1
4r
146
147
log p.
Pontos Fixos
Para um inteiro positivo n da forma n = pk q, o nmero total de pontos fixos
calculado por [95]:
Se mdc(e 1, pq) 6= 1, haver muitos pontos fixos. Desde que e seja menor que p
e que q, no haver muitos pontos fixos. Se o mdc(e 1, (n)) = 2, o nmero de pontos
fixos 9, no oferecendo risco segurana do algoritmo.
Ataques Cclicos
Nesta variao, se a estrutura dos primos p e q for resistente aos algoritmos de
fatorao tais como ECM, NFS, 1 de Pollard, automaticamente estaro seguros contra
ataques cclicos [93].
148
Ataque
Mdulo n em Comum
Mdulo n com Fator Primo em Comum
por Tabela
Falsificao de Assinatura Digital
Erro Aleatrio na Assinatura
Ocultamento I
Ocultamento II
Mensagem que No sofre Reduo Modular
Hastad
Exposio LSB da Chave
Exposio MSB da Chave
|p q| pequeno
Cclico de Simmons e Norris
Cclico Generalizado
Fatorao:
Fatorao: + 1
Fatorao: ECM
Fatorao: QS
Fatorao: NFS
ln ln p) 2
1
(1+o(1))(ln n ln ln n) 2
O(e
O(e
1
2
(1,923+o(1))(ln n) 3 (ln ln n) 3
Cada ataque proposto ao RSA exige uma detalhada anlise dos cuidados necessrios
para que o ataque no obtenha sucesso. A maior vulnerabilidade do RSA se encontra na
falta de ateno quanto aos cuidados a serem observados ao se desenvolver uma aplicao
que utilize o algoritmo RSA. Tanto a gerao das chaves quanto a implementao e utilizao
do algoritmo devem seguir a todos os cuidados determinados. Um nico cuidado que seja
149
Captulo 7
Codificao de Mensagem
No triste mudar de idias, triste no ter idias para mudar.
150
151
7.2. RSA-OAEP
O RSA-OAEP foi a primeira codificao de mensagem desenvolvida para o algoritmo
RSA a ser integrado ao padro do PKCS # 1. O RSA-OAEP foi criado por Mihir Bellare and
Phillip Rogaway, em 1996 [2].
A idia dos autores do RSA-OAEP foi utilizar a funo unidirecional com segredo
RSA, considerada segura devido sua resistncia a ataques por tantos anos e acrescentar um
esquema de codificao de mensagem, o OAEP, eliminando a propriedade determinstica do
algoritmo, a qual utilizada na tentativa de ataques segurana do RSA.
Quando o RSA-OAEP foi proposto, sua segurana foi demonstrada no modelo INDCCA2, isto , contra ataques de criptograma escolhido adaptativo (ver seo 3.3) e a prova
de segurana assumia a utilizao de funes de hash seguras.
O RSA-OAEP capaz de frustar por exemplo, o ataque de Bleichenbacher aplicado
contra o protocolo SSL ver. 3.0 [7]. Bleichenbacher vislumbrou uma maneira de explorar
uma falha no servidor SSL, obtendo a chave simtrica da conexo SSL, a qual era cifrada
com a chave RSA privada do cliente que estava solicitando conexo com o servidor. O
servidor informava se a chave utilizada estava incorreta, informando continuamente, se os
primeiros bytes da chave estavam corretos ou no. A utilizao do RSA-OAEP no permitiu
mais que esta falha fosse explorada.
No RSA-OAEP, em vez de se cifrar a mensagem diretamente, cifra-se uma verso da
mensagem j processada.
O RSA-OAEP utiliza as tcnicas que seguem [78]:
RSAES-OAEP:
RSADS-OAEP:
RSAEP:
Primitiva de ciframento.
RSADP:
Primitiva de deciframento.
RSAVP1:
RSASP1:
152
OS2IP:
MGF:
153
154
7.3. RSA-PSS
Aps anlises de NESSIE [62] sobre diversas propostas de codificao de mensagem,
foi indicada a codificao de mensagem para assinaturas PSS [4], tambm criado por Bellare e Rogaway, autores do RSA-OAEP, como o mais recomendado para assinaturas digitais
usando RSA. O protocolo RSA-PSS foi incorporado ao PKCS #1, com nota de que a universidade da California alega ter entrado com pedido de patente deste protocolo, e que o mesmo
estaria em andamento.
Embora tenha sido provada a vulnerabilidade terica do padro de assinatura digital
PKCS #1 v. 1.5, as aplicaes que envolvem assinaturas com o padro PKCS #1 v. 1.5, muito
utilizadas nos certificados X509, so vlidas e consideradas seguras na prtica, tendo em
vista os ataques conhecidos at o momento, porm recomendvel que as novas aplicaes
utilizem, por precauo, a codificao PSS.
155
Captulo 8
Consideraes Finais
Aqueles que abrem mo da liberdade essencial por um pouco de segurana
temporria no merecem nem liberdade nem segurana.
(Benjamin Franklin, diplomata, cientista e filsofo norte-americano, 1706-1790)
157
158
159
1995: Criado o projeto FAFNER, que busca utilizar o ambiente distribudo na Internet para quebrar algoritmos criptogrficos, [31].
1996: Proposto a codificao de mensagem RSA-OAEP. M. Bellare e P. Rogaway,
[2].
1996: Proposto o ataque Exponenciao Modular. P. Kocher, [51].
1997: Proposto o MRSA. Collins, Hopkins, Langford e Sabin, [22].
1998: Requerida a patente do MRSA.
1998: Pedido de registro de patente norte-americana para o MRSA abril de 1998,
[22].
1998: Publicado PKCS #1 verso 2.0. Esta verso incorpora ao PKCS #1 o RSAOAEP, [77].
1998: Proposto o RSA P k Q. T. Takagi, [93].
1998: Proposto o RSA-PSS. Bellare e Rogaway, [4].
1999: Proposto o DRSA. D. Pointcheval, [68].
2000: Padro ISO/IEC 9796-1 fica obsoleto. Franois Grieu, [38].
2000: Expoente privado no deve ser menos que n0,292 . D. Boneh e G. Durfee,
[10].
2000: Expirada a patente do algoritmo RSA, [76].
2002: Publicado PKCS #1 verso 2.1. Este verso incorpora ao PKCS #1 o RSAPSS e o MRSA, [78].
2002: Proposto o algoritmo de teste determinstico de primalidade AKS. M.
Agrawal, N. Kayal e N. Saxena, [1].
2005: Proposto o dispositivo TWIRL. A. Shamir e E. Tromer, [81].
2005: Proposto o Twin MRSA. A. K. Lenstra e B. M. M. de Weger, [55].
2005: Fatorado Mdulo RSA-640. O mdulo RSA-640, com 640 bits e 193 dgitos
decimais fatorado utilizando-se o algoritmo NFS em processamento paralelo, [76].
2006: Proposto o RSA-CRT pelo algoritmo ART para MRSA. T. R. N. Rao e C.-H.
Yang, [71].
160
8.4. Concluses
O RSA um algoritmo criptogrfico de chave pblica amplamente aceito e disseminado que permite o sigilo de mensagens e a gerao e verificao de assinaturas digitais
(autenticao de originalidade de dados e identidade do remetente), ver captulo 4. Sua
estrutura no precisou ser alterada desde a sua criao, mas existem vulnerabilidades caso
sua implementao no seja cuidadosa. Para sua utilizao fundamental que todas as especificaes descritas a seguir sejam criteriosamente obedecidas. O RSA utiliza uma teoria
matemtica elegante, com vrios conceitos matemticos envolvidos (ver captulo 2), sendo
que a anlise destes fundamentos matemticos possibilita maior confiana na segurana dele,
um embasamento para a criao de variaes que apresentem benefcios e um alicerce
para estudos mais sofisticados.
A maior vulnerabilidade do RSA se encontra na falta de ateno quanto aos cuidados
a serem observados ao se desenvolver uma aplicao que utilize o algoritmo RSA, envolvendo implementao, escolha das chaves e utilizao do algoritmo:
1. Os primos p e q devem ser grandes para evitar ataques de fora bruta. A ordem de
grandeza destes primos deve ser analisada conforme o contexto da aplicao, podendo variar conforme a necessidade de segurana e conforme a capacidade computacional relacionada aplicao.
Atualmente, o tamanho mnimo considerado seguro para os primos p e q de 512 bits.
161
|n|
4
4. Cada um dos nmeros p 1 e q 1 deve ter um fator primo grande, caso contrrio,
fica possvel fatorar n em tempo computacional tratvel, como por exemplo, com o
algoritmo de fatorao p 1 de Pollard [80].
No mnimo, p 1 = 2p0 e q 1 = 2q 0 , com p0 e q 0 tambm primos da mesma ordem
de grandeza que p e q.
5. Cada um dos nmeros p + 1 e q + 1 deve ter um fator primo grande, caso contrrio,
torna-se possvel fatorar n em tempo computacional tratvel, como por exemplo, com
o algoritmo de fatorao p + 1 de Pollard [80].
No mnimo, p + 1 = 2p00 e q + 1 = 2q 00 , com p00 e q 00 tambm primos da mesma
ordem de grandeza que p e q.
6. O mdc(e 1, p 1) e o mdc(e 1, q 1) so sempre maior ou igual a 2, mas devem
ser pequenos para evitar um elevado nmero de pontos fixos (ver definio 4.5.1).
7. O tamanho do bloco em bits no pode ser pequeno demais para que possibilite a
construo de um tabela de pares ordenados (mensagem, criptograma).
O tamanho de bloco ideal dlg(n)e 1 (ver seo 4.2).
8. Em uma assinatura digital, ao se particionar a mensagem M em blocos, no se deve
permitir mdc (m, n) 6= 1, evitando assim, um ataque de fatorao de n via mdc
(c, n) (ver seo 4.2).
9. O algoritmo RSA no deve ser aplicado isoladamente, mas sempre dentro de uma
codificao de mensagem que impede alguns tipos de ataques (ver seo 3.5.1).
162
10. O par de chaves RSA de cada usurio deve apresentar certificao de validade de AC
credenciada, evitando um ataque MITM (ver seo 3.5.1).
11. Vale ressaltar que, os valores relacionados chave privada, tais como de p, q, (n)
ou suas variaes, devem permanecer secretos assim como o expoente d.
12. O usurio detentor da chave privada deve ter cuidado, no s quanto a no divulg-la,
mas tambm estar atento a no utiliz-la sem necessidade, por exemplo em mensagens aleatrias, sem objetivo bem definido, as quais podem ser utilizadas como
parte de algum ataque (ver seo 6.2.3).
13. O expoente privado d, no pode ser menor que n0,292 (ver seo 6.4).
15. O mdulo n no pode ser utilizado por mais de um usurio, assim como no deve
existir na aplicao, dois mdulos n1 e n2 tal que (n1 , n2 ) 6= 1 (ver seo 6.1.1).
16. Para utilizao de uma variao do RSA, como por exemplo o MRSA, deve-se
observar os cuidados especficos para esta variao (ver captulo 5).
17. Ao se implementar uma aplicao RSA, deve-se atentar que somente atendendo a
todos os cuidados, a implementao estar devidamente segura.
18. Estar sempre atento a novas publicaes sobre o algoritmo RSA, visto que sempre
pode surgir novos ataques ao algoritmo como por exemplo, o dispositivo de hardware
terico T W IRL proposto em 2003 por Shamir e Tromer [81] (ver seo 6.7). Pode
surgir tambm variaes que sejam teis a aplicao que est sendo implantada
como por exemplo o RSA CRT pelo algoritmo ART, que agiliza o deciframento do
163
Apndice A
Teste de Primalidades
Testes podem apenas mostrar a presena de erros e no a sua ausncia.
(Edsger Wybe Dijkstra, cientista da computao holands, 1930-2002)
nmero inteiro positivo n, com auxlio de uma base 0 < b < n, tendo como objetivo, o teste
da primalidade de n. Este tipo de teste apresenta probabilidade de erro quando a resposta
for primo, de no mximo ( 12 )t , com t sendo o nmero vezes que o algoritmo utilizado
para se testar o mesmo nmero n, modificando-se a entrada da base para o teste.
165
Os elementos do conjunto W(n) so definidos conforme o algoritmo do teste aplicado, sendo que todo teste probabilstico de primalidade usa as propriedades do conjunto
W(n) para obter informaes acerca da primalidade de n.
Se n um nmero mpar aleatrio, candidato a primo, gera-se um nmero aleatrio
a Zn e verifica-se se a W(n), ou seja, se a uma testemunha de que n composto. Se
a W(n), diz-se que n falhou no teste de primalidade para a base a e, neste caso, tem-se
a certeza de que n composto. Por outro lado, se a
/ W(n), diz-se que n passou no teste
primalidade para a base a. Neste caso, nada se pode concluir acerca da primalidade de n: o
teste responde primo com probabilidade mxima de erro de 21 .
Ao realizar-se um teste probabilstico de primalidade t vezes independentemente
sobre um nmero composto n, a probabilidade deste teste responder primo , no mximo,
( 12 )t .
nmero inteiro mpar n que se acredite ser primo, baseado num teste probabilstico de
primalidade.
Definio A.1.5 Nmero Pseudo-primo. Nmero provavelmente primo mas que composto.
166
positivo n.
Os testes determinstico apresentam geralmente, um custo de tempo de processamento maior do que os testes probabilstico, ento, usual que antes de se aplicar um teste
determinstico, seja aplicado no nmero em anlise um teste probabilstico, partindo assim
para o teste determinstico com um incio provvel [58].
PGP um software criado em 1991, com objetivo de ciframento e assinatura digital e que utiliza o RSA.
167
primo ou composto
Algoritmo:
1. Se mdc(a, n) 6= 1 ento retorne composto.
n1
2. Se J(a, n) 6 a 2 (mod n) ento retorne composto.
3. Retorne primo.
primo ou composto
Algoritmo:
1. Escreva n 1 = 2t q, com q mpar.
2. Calcule sucessivamente a0 = aq mod n, a1 = a20 mod n, . . .,
2
aK = aK1 mod n; at que k = t ou ak 1 mod n.
3. Se k = t e ak 6 1 mod n retorne composto.
4. Se k = 0, retorne primo.
5. Se ak1 6 1 mod n retorne composto.
6. Retorne primo.
168
169
Uma vez encontrada tal a, prova-se que n composto. O algoritmo AKS uma
forma determinstica de se realizar este processo.
Algoritmo Computacional 12 Algoritmo AKS.
Entrada: nmero inteiro positivo mpar n
Sada: primo ou composto
Algoritmo:
1. Se n da forma ab , b > 1, retorne composto.
2. Faa r := 1.
3. Enquanto r < n faa:
3.1. Se mdc(n, r) 6= 1, retorne composto.
3.2. Se r primo, ento:
3.2.1. Faa q o maior primo de r 1.
r1
170
Como so O(lg6 n) iteraes, ento o custo total do lao o(lg9 n(lg lg n)2 ).
Apndice B
Fatorao de Nmeros Inteiros
A mente humana, uma vez ampliada por uma nova idia, nunca mais volta
ao seu tamanho original.
(Oliver Wendell Holmes, escritor norte-americano, 1809-1894)
171
172
[25].
Algoritmo Computacional 13 Algoritmo de fatorao por Fermat.
Entrada: um nmero inteiro mpar n provavelmente composto
Sada:
a e b, dois fatores de n
Algoritmo:
1. r = b nc;
2. Se n = r2 retorne a = r e b = r;
3. Enquanto r < n+1
ou s no for inteiro faa:
2
3.1. r =
r + 1;
3.2. s = r2 n;
4. Faa a = (r + s) e b = (r s);
5. Retorne a e b.
1
2
lg n lg lg n
173
ln ln p) 2
).
174
em nmeros neste formato ele chamado de SNFS. Quando o NFS aplicado em nmeros
aleatrios, independentemente da forma destes nmeros, ele chamado de GNFS.
Apndice C
Exemplos Numricos
Resultados? Mas claro que eu j consegui um monte de resultados! Hoje
eu sei de mil coisas que no funcionam.
(Thomas Edison, cientista e inventor norte-americano, 1847-1931)
176
Desde a sua criao em 1991, a biblioteca vem sendo aprimorada e atualizada com
novas verses, e sua utilizao tem crescido.
177
Figura C.2. Chave RSA Privada com 1024 bits gerada pelo OpenSSL em texto
12894846464355069019950720046888252570850876254325460758918619307153841167965
178
387174690960844066338667747586017011504165773575570634714039079571038687905166
94588832769219427340911724707808958800110336140881687311082069401;
e=
65537;
d=
117301300597533059059790762625984208317899709238103565533228116257975851067
320278485235888290218304168246614990183505663945567526694785342086994806231
7775485915954812335906522090515413232422041109151628671410275290543039380702
2210523220765631297794794441131567791136935829096572829162219733407484267036
4243573;
p=
12583600619556944136024315346123063297572026643881845639154494575899329862
56800310022421353532579819039039441441917922418727727311605273245761730789
0068963;
q=
12043768608241145820527173479166272687027540123235572978199678911087316861
63137571793699249123396739530225947597675180565182573501707401102115301772
7999827;
dp =
2968437151202379668628956394877131369767666080449415346770961230196738326
0646860236121021904593869115680531249053284527203763773498050756640487599
3683669;
179
dp =
771413514302056209634663108068667513898034776924576417757736731389462898
6689965340370189874491176729978530387766850947492968687593446690581426373
272628419;
coefiente CRT =
764896843112914179933187216612108720695373167072896978961935249894610660
6296873489423441473770610943219688699817994783959966607905268105364453328
603757546.
em hexadecimal:
6C616572206F636972E96D756E206F6C706D657865,
e em decimal:
158398211253610171638602402397633183495173710379109.
6710ADDFA2F5C50C4556E43393FDB6D4D0F62B83AD47DF9D8DA455E6B149F162
9F9EBD3AF580755BAC77B5060E14DC4D57639592ED69C881A9F9EEB58BB4347E8A
AB9F2D39D86843D1D98E796CCB199EB033F6F35EBFBA0F6243BECDFFE344C0611A
C2FD0CBD3667E439BBE41DC26956B949862DFD79BC513295C89A535D65B9,
180
Figura C.3. Criptograma gerado com chave privada RSA 1024 bits
e em decimal por:
723748117859051233205777915462620834094261598251911205235568006659743
60400434079007568126180399713496864364472565110130140799727020170440186
21371822876268243360083071607459384233602304427982249530183720365556298
217807140450090021516237336060864214123382197239.
181
32769132993266709549961988190834461413177642967992942539798288533.
182
54482006576775098580557613579098734950144178863178946295187237869221823983,
Apndice D
Complexidade Computacional e
Probabilidades
Este apndice composto por uma tabela com as probabilidades citadas nesta dissertao e outro contendo as complexidades computacionais.
Tabela D.1. Probabilidades
Descrio
Probabilidade de acerto se n primo,
de um teste probabilstico de primalidade
com t bases distintas sobre n
Probabilidade de acerto se n primo,
no Teste de Miller-Rabin,
com t bases distintas sobre n
Probabilidade de acerto se n primo,
no Teste de Solovay-Strassen,
com t bases distintas sobre n
Probabilidade de coliso em
uma funo de hash
Probabilidade da funo de hash
ter um valor em especfico
Probabilidade de n ser primo
Probabilidade de um valor cifrado
ser ponto fixo, dado o nmero y de
pontos fixos de um par de chaves RSA
183
Probabilidade
pelo menos (1 12 )t
pelo menos 1 ( 14 )t .
pelo menos 1 ( 12 )t
2n/2 sendo n o tamanho em bits
do valor de hash
n
2 sendo n o tamanho em
bits do valor de hash
1
ln (n)
y
n
184
Operao
Algoritmo AKS
Algoritmo CRT por ART
Algoritmo de Euclides
Algoritmo de Euclides Estendido
Algoritmo de Fatorao de Crivo Quadrtico
Algoritmo de Fatorao de Pollard
Algoritmo de Fatorao 1 de Pollard
Algoritmo de Fatorao + 1 de Williams
Algoritmo de Fatorao por Fermat
Algoritmo ECM
Algoritmo NFS
Ataque por Fora Bruta na Chave
Ataque por fora bruta no criptograma RSA
Ciframento RSA
Crivo de Eratstenes
Deciframento RSA com Expoente Universal
Deciframento RSA original
Diviso em Z (a = qb + r)
Exponenciao Modular LR
Exponenciao Modular RL
Gerenciamento de chaves assimtricas
Gerenciamento de chaves simtricas
Inversa Multiplicativa
Mximo Divisor Comum entre dois nmeros
Multiplicao em Z (a b)
Multiplicao em Zn (a b) mod n
Soma em Z (a + b)
Soma em Zn (a + b) mod n
Subtrao em Z (a b)
Subtrao em Zn (a b) mod n
Teorema Chins de Resto
Teste Probabilstico de Miller-Rabin
Teste Probabilstico de Solovay-Strassen
O(p0 ),
O(p0 ),
O(e(1+o(1))(ln n ln ln n) 2 )
1
O(n 4 )
onde p0 o maior fator primo de p 1
onde p0 o maior fator primo de p + 1
O( n2 )
O(e(1+o(1))(2 ln p
ln ln p) 2
1
2
(1,923+o(1))(ln n) 3 (ln ln n) 3
O(e
)
O(2n )
O(2k (lg e)(lg 2 n))
O((lg e)(lg 2 n)) sendo e o expoente
O( n)
O((lg d)(lg 2 n)) sendo d o expoente
O((lg d)(lg 2 n)) sendo d o expoente
O((lg a)(lg b) = O(lg 2 n)) n = max{a, b}
O((lg e)(lg 2 n)) sendo e o expoente e n o mdulo
O((lg e)(lg 2 n)) sendo e o expoente e n o mdulo
O(n)
O(n2 )
O(lg 2 n)
O(lg 2 n)
O((lg a)(lg b) = O(lg 2 n)) n = max{a, b}
O(lg 2 n)
O(lg a + lg b) = O(lg n) n = max{a, b}
O(lg n)
O(lg a + lg b) = O(lg n) n = max{a, b}
O(lg n)
O(lg 2 n)
O(lg3 n)
O(lg3 n)
ndice Remissivo
AES, 5
Algoritmo, 45
tempo exponencial, 17
complexidade computacional, 20
Algoritmo de Fatorao por Fermat, 172
tempo polinomial, 17
Algoritmo AES, 5
Algoritmo de Gauss, 22
Algoritmo Criptogrfico, 45
assimtrico, 51
Algoritmo DSA, 3
de chave assimtrica, 52
Algoritmo ECDSA, 3
de chave pblica, 2, 51
Algoritmo ElGamal, 2
de chave simtrica, 50
quebra, 50
simtrico, 50
variao, 45, 88
complexidade computacional, 38
LR - left to right, 38
RL - right to left, 36
Algoritmos de Fatorao, 171
de Pollard, 140
+ 1, 140
Algoritmo de Euclides, 18
1, 140
complexidade computacional, 18
ECM, 140
lema, 18
NFS, 140
185
NDICE REMISSIVO
QS, 140
Aritmtica, 14
186
ocultamento, 121
Ataque a um Algoritmo Criptogrfico, 17
Aritmtica Modular, 14
eficincia, 17
ASCII, 42
tratabilidade, 17
Assinatura Digital, 56
ataque MITM, 59
codificao de mensagem, 59
distribuio de chaves, 59
notaes, 57
representao simblica, 57
tamanho do bloco, 75
prazo de validade, 73
verificao, 74
Assinatura Digitalizada, 57
122
Assinatura Eletrnica, 57
Assinatura Manuscrita, 56
conhecimento de (n), 78
complexidade computacional, 49
conhecimento de (n), 77
fatorao do mdulo n, 72
118
fatorao: n mltiplo de c, 75
MITM, 118
complexidade computacional, 66
utilizao de mdulo n com fator em comum, 117
NDICE REMISSIVO
187
valor de p e q prximos, 86
complexidade computacional, 86
KEM, 153
OAEP, 151
PSS, 154
REACT, 154
Complexidade Computacional, 16
algoritmo AKS, 169
algoritmo CRT por ART, 101
algoritmo CRT por Garner, 100
algoritmo CRT por Gauss, 100
Autenticidade, 55
algoritmo de Euclides, 18
Automorfismo de Grupos, 30
Base64, 42
Bhaskara, 78
Bit, 41
Bleichenbacher, 65, 151
Byte, 41
prefixos padres, 42
Cartes Inteligentes, 6
Cenrios de Ataque, 47
Chave Criptogrfica, 46
gerenciamento, 53
Ciclo, 31
rbita, 31
Ciclo em Zn , 31
rbita em Zn , 31
crivo de Eratstenes, 22
exponencial, 16
fora bruta na chave, 49
gerenciamento de chaves, 54
intratvel, 17
Ciframento, 44
inversa multiplicativa, 68
Ciframento em Bloco, 47
operaes bsicas em Z, 17
NDICE REMISSIVO
operaes bsicas em Zn , 18
188
Custo Computacional, 16
PLD, 4
intratvel, 17
PLDCE, 4
tratvel, 17
polinomial, 16
RSA utilizando o expoente universal, 90
subexponencial, 4
teorema chins do resto, 22
tratvel, 17
Complexidades, tabela, 183
Congruncia Modular, 15
Conjunto I, 12
Conjunto I , 12
Conjunto N, 10
ECDSA, 3
Conjunto N , 10
ElGamal, 2
Conjunto Q, 11
Equao Diofantina, 19
Conjunto Q , 11
Equao Quadrtica, 78
Conjunto R, 12
Espao de Chaves, 47
Conjunto R , 12
Espao de Criptogramas, 44
Conjunto Z, 11
Conjunto Z , 11
Conjunto Zn , 11
Conjunto Zn , 11
Conjunto Numrico, 10
Espao de Mensagens, 44
Esquema de Codificao, 45
Euclides de Alexandria, 39
Euler, Leonhard, 39
Exponenciao Modular, 36
Criptoanlise, 46
Frmula de Bhaskara, 78
Criptografia, 46
Criptografia Assimtrica, 2, 51
Criptografia Simtrica, 50
Criptograma, 44
Funo, 24
Criptologia, 46
ponto fixo, 82
unidirecional, 50
NDICE REMISSIVO
unidirecional trapdoor, 50
unidirecional com segredo, 50
RSA, 64
Funo de Hash, 59
MD2, 5
MD5, 5
189
Koblitz, 3
Linguagem Java, 4
Logaritmo, 12
Logaritmo Discreto, 2, 65
complexidade computacional, 65
sobre Curvas Elpticas, 2
probabilidade de coliso, 60
SHA-1, 5
Funo de Carmichael, 25
Funo de Euler, 24
MD2, 5
MD5, 5
Mensagem, 44
Merkle, Ralph, 51
Miller, 3
Hellman, Martin, 51
MIPS, 142
MIPS-anos, 142
Homomorfismo de Grupos, 29
Homomorfismo Multiplicativo, 80
Infra-estrutura de Chaves Pblicas, 57
Brasileira, 57
Nmero Primo, 12
probabilidade, 13
Nmero Primo Duplamente Forte, 134
Nmero Primo Forte, 134
AC, 58
AC-Raiz, 58
AR, 58
Nmeros Co-primos, 13
CG ICP-Brasil, 58
ICP-Brasil, 57
ITI, 58
ataque MITM, 59
distribuio de chaves, 59
PKI, 57
Isomorfismo de Grupos, 30
Kerckhoff, 47
Nibble, 41
Octetos, 41
OpenSSL, 5
Opteron-anos, 142
Ordem de a (mod n), 23
NDICE REMISSIVO
Ordem de um Grupo, 23
Padro DSS, 3
Pentium-anos, 142
Pequeno Teorema de Fermat, 25
190
Protocolo SSL, 5, 151
exemplo, 176
Provvel Resduo Quadrtico, 29
Pseudo Resduo Quadrtico, 29
PFI, 2
Resduo Mdulo n, 27
PGP, 6
Resduo Quadrtico, 28
PKCS, 65
assinatura digital, 73
PLD, 2
PLDCE, 2
Ponto Fixo, 82
ciframento em blocos, 66
probabilidade, 157
Primalidade, 12
teste de, 22
Primitiva Criptogrfica, 45
Primo, 12
curvas elpticas, 3
probabilidade, 13
estado da arte, 64
Primos Gmeos, 13
expoentes, 78
Princpio de Kerckhoff, 47
Probabilidade de Coliso, 60
chave privada, 84
funo de Euler, 77
funcionalidade, 70
homomorfismo multiplicativo, 80
Protocolo Criptogrfico, 46
inverso multiplicativo, 79
mdulo, 77
NDICE REMISSIVO
mensagens pontos fixos, 81
191
corolrio, 25
nomenclatura, 65
padronizao, 65
Teorema de Lagrange, 23
patente, 63
tamanho de bloco, 66
determinstico , 166
variaes, 88
AKS, 169
Miller-Rabin, 167
Smbolo de Jacobi, 29
Smbolo de Legendre, 28
Segurana da Informao, 43
Semiocteto, 41
SHA-1, 5
Sistema Binrio, 41
Sistema Completo de Resduos, 27
probabilstico, 164
Solovay-Strassen, 166
Teste de Solovay-Strassen, 166
Teste Determinstico de Primalidade AKS,
169
Texto Cifrado, 44
Texto Legvel, 44
Unicode, 42
Tamanho Binrio, 43
Tempo Exponencial, 17
Tempo Polinomial, 17
DRSA, 107
algoritmo de Garner, 97
complexidade computacional, 22
Teorema da Diviso, 12
em lote, 93
Teorema de Euler, 25
expoente universal, 89
NDICE REMISSIVO
mltiplas potncias, 103
mltiplos primos, 102
MRSA, 102
MRSA redistribudo, 110
QC, 95
redistribudo, 109
RSA P k Q, 103
RSA desbalanceado, 110
Twin RSA, 112
Verificao da Assinatura Digital RSA, 74
192
Referncias
[1] M. Agrawal and N. Kayal and N. Saxena, Primes is in P, 2002.
[2] M. Bellare and P. Rogaway, The exact security of digital signatures: How to sign
with RSA and Rabin, Eurocrypt 96 Proceedings, Lecture Notes in Computer Science,
Vol. 1070, Springer-Verlag, 1996.
[3] M. Bellare and P. Rogaway, Optimal asymmetric encryption, Eurocrypt94, Lecture
Notes in Computer Science, Vol. 950, Springer-Verlag, 1994, 92-111.
[4] M. Bellare and P. Rogaway, PSS: Provably Secure Encoding Method for Digital
Signatures, Submission to IEEE P1363a, 1998.
[5] S. Berkovits, Factoring via Superencryption, Criptologia, Vol. 6, NY, USA, 1982,
229-237.
[6] G. R. Blakley and I. Borosh, Rivest-Shamir-Adleman public key cryptosystems do
not always conceal messages, CMA, Vol. 5, 1979, 169-178.
[7] D. Bleichenbacher, Chosen Ciphertext Attacks Against Protocols Based on the
RSA Encryption Standard PKCS #1, Advances in Cryptology, CRYPTO98, Vol.
1462, Springer Berlin / Heidelberg, 1998, 629-660.
[8] D. Boneh, Twenty years of attacks on the RSA cryptosystem, journal
Notices of the American Mathematical Society, Vol. 46, number 2, URL:
citeseer.ist.psu.edu/article/boneh99twenty.html, acesso em dezembro de 2007,
1999, 203-213.
[9] D. Boneh and R. DeMillo and R. Lipton, On the importance of checking cryptographic protocols for faults, Proceedings of Eurocrypt 97, Lecture Notes in
Computer Science, Vol. 1233, Springer-Verlag, 1997, 37-51.
[10] D. Boneh and G. Durfee, Cryptanalysis of RSA with Private Key d Less than
n0,292 . IEEE Transactions on Information Theory, 46(4), 2000, I339-I349.
[11] D. Boneh and G. Durfee and Y. Frankel, An attack on RSA given a fraction of the
private key bits, AsiaCrypt98, Lecture Notes in Computer Science, Springer-Verlag,
193
REFERNCIAS
194
REFERNCIAS
195
[25] S. C. Coutinho, Nmeros inteiros e criptografia RSA, IMPA, Rio de Janeiro, Brasil,
1997.
[26] G. I. Davida, Chosen signature cryptanalysis of the RSA (MIT) public key
cryptosystem, Technical Report TR-CS-82-2, Department of Electrical Engineering
and Computer Science, University of Wisconsin, Milwaukee, WI, 1982.
[27] N. Demytko, A New Elliptic Curve Based Analogue of RSA, Advances in Cryptology, Eurocrypt93, Springer-Verlag, 1994, 40-49.
[28] W. Diffie and M. E. Hellman, New Directions in Cryptography, IEEE Transactions
on Information Theory, Vol. IT-22, number 6, 1976, 644-654.
[29] A. Ecker, Finite semigroups and the RSA-Cryptosystem, Springer-Verlag, Hahn
Meitmer Institut, 1998.
[30] T. ElGamal, A Public Key Cryptosystem and a Signature Scheme Based on
Discrete Logarithms, IEEE Transactions on Information Theory, Vol. IT-31, number
4, Julho 1985, 469-481.
[31] FAFNER
project,
RSA
Factoring-By-Web
project,
http://www.npac.syr.edu/factoring.html, acesso em dezembro de 2007.
URL:
[32] A. Fiat, Batch RSA, Advances in Cryptology: Proceedings of Crypto89, 435, 1989,
175-285.
[33] M. R. Garey and D. S. Johnson, Computers and Intractability, A Guide to the
Theory of NP-Completeness, W. H. Freeman and Co, 2003.
[34] S. Garfinkel, G. Spafford, Comrcio & Segurana na Web, So Paulo, Market Books
do Brasil, 1999.
[35] H. Garner, The residue number system, IRE Transactions on Electronic Computers,
EC-8, 1959, 140-147.
[36] H. Gilbert and D. Gupta and A. Odlyzko and J. Quisquater, Attacks on Shamirs
RSA for paranoids, Information Processing Letters, Vol. 68, number 4, 1998, 197-199.
[37] GMP, GNU, GMP - GNU Multiple Precision Arithmetic Library, Release 4.2.1,
URL: http://swox.com/gmp/#DOWNLOAD, acesso em dezembro de 2007.
[38] F. Grieu, A Chosen Messages Attack on the ISO/IEC 9796-1 Signature Scheme,
Eurocrypt 2000 Proceedings, Lecture Notes in Computer Science, Vol. 1807, SpringerVerlag, 2000.
REFERNCIAS
196
[39] J. Hastad, On using RSA with Low Exponent in a Public-key Network, Advances
in Cryptology, 218, 1986, 404-408.
[40] J. Hastad, Solving simultaneous modular equations of low degree, SIAM J. of
Computing, 17, 1988, 336-341.
[41] M. J. Hinek, Low Public Exponent Partial Key and Low private Exponent Attacks
on Multi-prime RSA, Waterloo, Ontario, Canada, 2002.
[42] ICP Brasil,
Infra-estrutura de Chaves Pblicas Brasileira,
URL: http://www.icpbrasil.gov.br/, acesso em dezembro de 2007.
URL:
REFERNCIAS
197
2.0,
URL:
acesso
em
Factoring,
URL:
REFERNCIAS
198
[66] C. A. M. Paixo, Implementao e anlise comparativa de variaes do criptossistema RSA, Universidade de So Paulo, Dissertao apresentada ao Instituto de
Matemtica e Estatstica, 2003.
[67] PGP
Encryption,
Merkle,
Hellman,
Diffie
1977,
URL:
http://www.pgpcrypt.com/RSA/Diffie-Hellman.html, acesso em dezembro de 2007.
[68] D. Pointcheval, New Public Key Cryptosystems Based on the Dependent-RSA
Problems, Lecture Notes in Computer Science, Vol. 1592, 1999, 239-254.
[69] J. Pollard, Theorems of factorization and primality testing, Proceedings of Cambridge Philosophical Society 76, 1974, 521-528.
[70] J. J. Quisquater and C. Couvreur, Fast decipherment algorithm for RSA public-key
cryptosystem, Electronics Letters, Vol. 18, number 21, 1982, 905-907.
[71] T. R. N. Rao and C.-H. Yang, Aryabhata remainder theorem: relevance to cryptoalgorithms, Circuits, Systems and Signal Processing, 2006, 25:1-15.
[72] R. L. Rivest, Remarks on a proposed cryptanalytic attack on the M.I.T. public-key
cryptosystem, Criptologia 2, 1978, 62-65.
[73] R.L. Rivest, Response to NISTs proposal, Communications of the ACM 35, 1992,
41-47.
[74] R. L. Rivest and A. Shamir and L. M. Adelman, A method for obtaining digital
signatures and public-key cryptosystems, Communications of the ACM, 21, 1978,
120-126.
[75] R. L. Rivest and R. D. Silverman, Are strong primes needed for RSA?, IACR
Cryptology 2001/007, URL: http://theory.lcs.mit.edu/ rivest/publications.html, acesso
em dezembro 2007, 1998, nova verso em 1999.
[76] RSA Security Inc., Laboratrios RSA, URL: http://www.rsasecurity.com/rsalabs/,
acesso em dezembro, 2007.
[77] RSA Security Inc., PKCSs List, URL: webinator/search/?pr=rsalabs&query=pkcs,
acesso em dezembro de 2007.
[78] RSA Security Inc., Public Key Cryptography Standards #1 (PKCS #1), version 2.1,
2002.
[79] RSA Security Inc., What is the discrete logarithm problem?,
http://www.rsa.com/rsalabs/node.asp?id=2193 acesso em dezembro, 2007.
URL:
REFERNCIAS
199
REFERNCIAS
200
372-384.
[95] T. Takagi, New public-key cryptosystems with fast decryption, Vom Fachbereich
Informatik der Technischen Universit at Darmstadt genehmigte, PhD thesis, 2001.
Consortium,
The
Unicode
Consortium,
URL:
[96] Unicode
http://www.unicode.org/consortium/consort.html, acesso em dezembro de 2007.
[97] University
of
Miamis,
image
Rivest,
Shamir,
Adleman
1977,
Department
of
Computer
Science
experimental,
URL:
http://Wiki.http://wiki.cs.miami.edu/pages/home/burt/cryptotalk, acesso em dezembro
de 2007.
[98] University of Southern California, image Rivest, Shamir, Adleman - 2003, URL:
http://www.usc.edu/dept/molecular-science/RSA-2003.htm, acesso em dezembro de
2007.
[99] M. J. Wiener, Cryptanalysis of short RSA secret exponents, IEEE Transactions on
Information Theory, 36, 1990, 553-558.
[100] H. C. Williams and B. Schmid, Some remarks concerning the MIT public key
cryptosystem, BIT, 19, 1979, 525-538.
[101] S. Y. Yan, Number Theory for Computing, Springer, 2a. edio, 2002.
[102] P.
Zimmermann,
Philip
Zimmermann
Home
Page,
URL:
http://www.philzimmermann.com/EN/background/index.html, acesso em dezembro de 2007.