You are on page 1of 220

O Sistema Criptogrfico

de Chave Pblica RSA

Samris Ramiro Pereira


D ISSERTAO A PRESENTADA
U NIVERSIDADE C ATLICA DE S ANTOS
S ANTOS SP B RASIL
PARA

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

Este exemplar corresponde a redao final


da dissertao de mestrado devidamente
revisada aps anlise da banca de defesa.
Santos, fevereiro de 2008.

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.

Agradeo aos professores que participaram deste curso de mestrado e em especial ao


prof. Dr. Antonio Manuel Mendes por ter me acrescido muito com suas excelentes aulas
e ao prof. Dr. Auri Marcelo Rizzo Vincenzi pela sua valiosa contribuio ao ter revisado
minha dissertao to minuciosamente.
Por fim, agradeo em especial ao meu orientador, prof. Dr. Jorge Nakahara Junior.
Que Deus o abenoe e que possibilite a muitos a oportunidade de serem orientados por uma
pessoa amiga, humilde e com o conhecimento como o que ele possui. Eu no poderia ter
tido melhor orientador.

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.

Key Words: RSA, Public Key, Digital Signature, Number Theory.

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.

Palavras Chaves: RSA, Chave Pblica, Assinatura Digital, Teoria dos


Nmeros.

Sumrio

Agradecimentos

iii

Abstract

iv

Resumo

Lista de Smbolos

xi

Lista de Siglas

xiv

Lista de Tabelas

xvii

Lista de Figuras

xix

Lista de Algoritmos Computacionais

xx

Introduo

1.1

Foco desta Dissertao . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2

Sistemas Criptogrficos de Chave Pblica . . . . . . . . . . . . . . . . . .

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

Algumas Propriedades da Congruncia Mdulo n . . . . . . . . .

16

2.5

Complexidade Computacional . . . . . . . . . . . . . . . . . . . . . . . .

16

2.6

Algoritmo de Euclides . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

2.7

Algoritmo de Euclides Estendido . . . . . . . . . . . . . . . . . . . . . . .

19

2.8

Teorema Chins do Resto

. . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.9

Teorema de Euler e Conceitos Relacionados . . . . . . . . . . . . . . . . .

23

2.10 Anlise do Grupo Zn . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

2.11 Algoritmo Eficiente para Exponenciao Modular . . . . . . . . . . . . . .

36

2.12 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

Fundamentos de Criptologia e de Computao

41

3.1

Sistema Binrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

3.2

Conceitos Preliminares de Criptologia . . . . . . . . . . . . . . . . . . . .

43

3.3

Ataque a Algoritmos Criptogrficos . . . . . . . . . . . . . . . . . . . . .

47

3.4

Algoritmo Criptogrfico de Chave Pblica . . . . . . . . . . . . . . . . . .

50

3.5

Assinatura Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

3.5.1

Ataques a Assinatura Digital . . . . . . . . . . . . . . . . . . . . .

59

3.5.2

Funo de Hash . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

3.6
4

O Algoritmo RSA

62

4.1

Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

62

4.2

Processamento do Algoritmo RSA . . . . . . . . . . . . . . . . . . . . . .

66

4.3

Anlise do Algoritmo RSA . . . . . . . . . . . . . . . . . . . . . . . . . .

70

4.4

Assinatura Digital RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

4.5

Anlise Matemtica dos Parmetros no RSA . . . . . . . . . . . . . . . . .

77

SUMRIO

viii

4.6

85

Variaes

88

5.1

RSA utilizando o Expoente Universal . . . . . . . . . . . . . . . . . . . .

89

5.2

RSA com Chave Privada Particionada . . . . . . . . . . . . . . . . . . . .

91

5.3

RSA em Lote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

5.4

RSA CRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

95

5.4.1

RSA CRT pelo Algoritmo de Gauss . . . . . . . . . . . . . . . . .

95

5.4.2

RSA CRT pelo Algoritmo de Garner . . . . . . . . . . . . . . . . .

97

5.4.3

RSA CRT pelo Algoritmo de ART . . . . . . . . . . . . . . . . . .

100

5.5

MRSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

102

5.6

RSA P k Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

103

5.7

DRSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

107

5.7.1

DRSA por Padhye . . . . . . . . . . . . . . . . . . . . . . . . . .

108

RSA Redistribudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

109

5.8.1

MRSA Redistribudo . . . . . . . . . . . . . . . . . . . . . . . . .

110

5.8.2

DRSA por Padhye Redistribudo . . . . . . . . . . . . . . . . . . .

110

RSA Desbalanceado . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

110

5.10 Twin RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

112

5.11 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

113

Ataques e Defesas

115

6.1

Ataques Elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

116

6.1.1

Utilizao de mdulo n em comum . . . . . . . . . . . . . . . . .

116

6.1.2

Utilizao de mdulo n com Fator Primo em Comum . . . . . . .

117

6.1.3

Ataque por tabela . . . . . . . . . . . . . . . . . . . . . . . . . . .

117

Ataque a Assinatura Digital RSA . . . . . . . . . . . . . . . . . . . . . . .

118

6.2.1

118

5.8

5.9

Consideraes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2

Falsificao de Assinatura Digital RSA . . . . . . . . . . . . . . .

SUMRIO
6.2.2

Ataque por Erro Aleatrio na Assinatura . . . . . . . . . . . . . . .

119

6.2.3

Ocultamento I . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

121

6.2.4

Ocultamento II . . . . . . . . . . . . . . . . . . . . . . . . . . . .

121

Ataques Exponenciao Modular . . . . . . . . . . . . . . . . . . . . . .

122

6.3.1

Ataque Temporal em Cartes Inteligentes . . . . . . . . . . . . . .

122

6.4

Ataques por Expoente Privado Pequeno . . . . . . . . . . . . . . . . . . .

124

6.5

Ataques ao Expoente Pblico Pequeno . . . . . . . . . . . . . . . . . . . .

128

6.5.1

Ataque em Mensagem que No sofre Reduo Modular . . . . . .

128

6.5.2

Ataque de Hastad . . . . . . . . . . . . . . . . . . . . . . . . . . .

129

6.5.3

Exposio Parcial da Chave - LSB . . . . . . . . . . . . . . . . . .

130

6.5.4

Exposio Parcial da Chave - MSB . . . . . . . . . . . . . . . . .

131

Ataques Cclicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

134

6.6.1

Ataque Cclico de Simmons e Norris . . . . . . . . . . . . . . . . .

135

6.6.2

Ataque Cclico Generalizado . . . . . . . . . . . . . . . . . . . . .

135

6.7

Ataques por Fatorao . . . . . . . . . . . . . . . . . . . . . . . . . . . .

139

6.8

Ataques variao MRSA . . . . . . . . . . . . . . . . . . . . . . . . . .

143

6.9

Ataques variao RSA P k Q . . . . . . . . . . . . . . . . . . . . . . . .

146

6.10 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

Problemas de Pesquisa em Aberto . . . . . . . . . . . . . . . . . . . . . .

156

8.2

Granularidade dos Valores Numricos . . . . . . . . . . . . . . . . . . . .

157

SUMRIO

8.3

Dados Histricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

157

8.4

Concluses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

160

A Teste de Primalidades

164

A.1 Conceitos Preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . . .

164

A.2 Teste de Solovay-Strassen . . . . . . . . . . . . . . . . . . . . . . . . . . .

166

A.3 Teste de Miller-Rabin . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

167

A.4 A Hiptese de Riemann . . . . . . . . . . . . . . . . . . . . . . . . . . . .

168

A.5 Teste Determinstico de Primalidade AKS . . . . . . . . . . . . . . . . . .

168

B Fatorao de Nmeros Inteiros

171

B.1 Mtodo de Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

172

B.2 Crivo Quadrtico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

172

B.3 Mtodo ECM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

173

B.4 Algoritmo NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

173

C Exemplos Numricos

175

C.1 Implementaes com Biblioteca GMP . . . . . . . . . . . . . . . . . . . .

175

C.2 Exemplo Numrico Gerado pelo OpenSSL . . . . . . . . . . . . . . . . . .

176

C.3 Exemplos Numricos de Mdulos Fatorados . . . . . . . . . . . . . . . . .

180

D Complexidade Computacional e Probabilidades

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:

conjunto dos nmeros naturais;

Z:

conjunto dos nmeros inteiros;

Q:

conjunto dos nmeros racionais;

I:

conjunto dos nmeros irracionais;

R:

conjunto dos nmeros reais;

a (mod b) :

o resto da diviso inteira de a por b;

a b mod n :

a e b pertencem a mesma classe de equivalncia mdulo n;

a 6 b mod n :

a e b no pertencem a mesma classe de equivalncia mdulo n;

ab:

a aproximadamente igual a b;

ab:

a muito menor do que b;

ab:

a muito maior do que b;

A:

existe A;

A:

para qualquer A;

AB:

o conjunto A est contido propriamente no conjunto B;

AB:

o conjunto A est contido ou igual ao conjunto B;

BA:

o conjunto B contm propriamente o conjunto A;

BA:

o conjunto B contm ou igual ao conjunto A;

aA:

o elemento a pertence ao conjunto A;

a
/A:

o elemento a no pertence ao conjunto A;


xi

Lista de Smbolos

xii

AB :

unio dos conjuntos A e B;

AB :

interseco dos conjuntos A e B;

conjunto vazio;

/:

tal que;

A\B :
:

A exceto B;
infinito;

a := b :

preencha a com o valor de b;

a|b :

a divide b;

dxe :

menor inteiro maior ou igual a x;

bxc :

maior inteiro menor ou igual a x;

max{a, b} :

maior valor entre a e b;

min{a, b} :

menor valor entre a e b;

mdc(a, b) :

mximo divisor comum entre a e b;

mmc(a, b) : mnimo mltiplo comum entre a e b;


Pk

somatrio com i variando de x a k;


i=x :
Qk
i=x : produtrio com i variando de x a k;
limix :
ab:

limite com o valor de i tendendo ao valor de x;


a implica em b. Se a verdadeiro ento b verdadeiro, se a falso ento

b falso;
ab:

a verdadeiro se e somente se b verdadeiro;

f :XY :
f 1 :

funo inversa da funo f ;

a1 (mod n) :
loga b :
ln b :

x2 :

inverso multiplicativo de a (mod n);

logaritmo de b na base a;
logaritmo de b na base e, sendo e 2, 71828183;

log b :
lg b :

funo f que mapeia o conjunto X no conjunto Y ;

logaritmo de b na base 10;


logaritmo de b na base 2;
nmero x representado em sistema binrio;

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)) :

notao de complexidade computacional de pior caso no comporta-

mento assinttico da funo f (n);


:

funo de Euler;

(n) :

nmero de primos menores que n;

a||b : concatenao das seqncias a, b;


L

: 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:

Autoridade Certificadora Raiz;

Advanced Encryption Standard;

ANSI:

American National Standards Institute;

API:

Application Programming Interface;

AR:

Autoridade Registradora;

ART:

Aryabhata Remainder Theorem;

ASCII:
BIT:
CCE:

American Standard Code for Information Interchange;


Simplificao para dgito binrio, binary digit;
Criptografia de Curvas Elpticas;

CG ICP-Brasil:

Comit Gestor no Brasil da ICP;

CRT:

Chinese Remainder Theorem;

DSA:

Digital Signature Algorithm;

DSS:

Digital Signature Standard;

ECM:

Elliptic Curve Method;

ECDSA:

Elliptic Curve Digital Signature Algorithm;

EME-OAEP:
GMP:
GNFS:
GPL:

Encoding Method for Encryption OAEP;

GNU Multiple Precision;


General Number Field Sieve;
General Public License;
xiv

Lista de Siglas

xv

I2OSP:

Integer-to-Octer-String primitive;

ICP-Brasil:
IEC:
IP:

Infra-estrutura de Chaves Pblicas Brasileira;

International Electrotechnical Commission;


Internet Protocol;

ITI:

Instituto Nacional de Tecnologia da Informao;

LR:

Left to Right;

LSB:

Least Significant Bits;

MD2:

Message Digest Algorithm 2;

MD5:

Message Digest Algorithm 5;

MDC:

Mximo Divisor Comum;

MIPS:

Million of Instructions per second;

MIT:

Massachusetts Institute of Technology;

MITM:

Man-in-the-Middle;

MMC:

Mnimo Mltiplo Comum;

MSB:

Most Significant Bits;

NFS:

Number Field Sieve;

NFSNET:
NIST:

Number Field Sieve Network;

National Institute of Standards and Technology;

OAEP:

Optimal Asymmetric Encryption Padding;

OS2IP:

Octet-String-to-Integer primitive;

PFI:

Problema da Fatorao de Inteiros;

PLD:

Problema do Logaritmo Discreto;

PLDCE:
PGP:
PKCS:
PKI:
PKIX:

Problema do Logaritmo Discreto sobre Curvas Elpticas;

Pretty Good Privacy;


Public-Key Cryptography Standards;
Public Key Infrastructure;
Public Key Infrastructure X.509;

PSS:

Probabilistic Signature Scheme;

QC:

Quisquater-Couvreur;

QS:

Quadratic Sieve;

RAM:
RL:

Random Access Memory;


Right to Left;

Lista de Siglas

xvi

RSA:

Rivest, Shamir e Adleman;

RSA-KEM:

RSA Key Encapsulation Mechanism;

RSA-REACT:

RSA Rapid Enhanced-security Asymmetric Cryptosystem Trans-

form;
RSADP:

RSA Decryption Primitive;

RSADS:

RSA Decryption Scheme;

RSAEP:

RSA Encryption Primitive;

RSAES:

RSA Encryption Scheme;

RSASP1:

RSA Signature Primitive 1;

RSAVP1:

RSA Verification Primitive 1;

S/MIME:

Secure MIME (Multipurpose Internet Mail Extensions);

SHA-1:
SET:
SNFS:

Secure Hash Algorithm 1;


Secure Electronic Transactions;
Special Number Field Sieve;

SSL:

Secure Socket Layer;

USC:

University of Southern California.

Lista de Tabelas
2.1

Multiplicao mdulo 5

. . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.2

Complexidade computacional de tempo - operaes bsicas em Z . . . . .

18

2.3

Complexidade computacional de tempo - operaes bsicas em Zn . . . . .

18

2.4

Processamento - algoritmo de Euclides . . . . . . . . . . . . . . . . . . . .

19

2.5

Processamento - algoritmo de Euclides estendido . . . . . . . . . . . . . .

21

2.6

Exponenciao modular em Z5 . . . . . . . . . . . . . . . . . . . . . . . .

33

2.7

Exponenciao modular em Z5 . . . . . . . . . . . . . . . . . . . . . . . .

33

2.8

Exponenciao modular em Z15 . . . . . . . . . . . . . . . . . . . . . . .

35

2.9

Exponenciao modular em Z15 . . . . . . . . . . . . . . . . . . . . . . .

35

2.10 Processamento - exponenciao modular RL . . . . . . . . . . . . . . . . .

37

2.11 Processamento - exponenciao modular LR . . . . . . . . . . . . . . . . .

39

3.1

Prefixos padres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

3.2

Exemplos e comparaes entre prefixos padres . . . . . . . . . . . . . . .

42

3.3

Criptografia Simtrica Criptografia Assimtrica . . . . . . . . . . . . . .

55

3.4

Assinatura digital - representao simblica . . . . . . . . . . . . . . . . .

57

3.5

Assinatura digital - notaes . . . . . . . . . . . . . . . . . . . . . . . . .

57

4.1

PKCSs relacionados ao RSA . . . . . . . . . . . . . . . . . . . . . . . . .

65

4.2

Definio do tamanho do bloco RSA . . . . . . . . . . . . . . . . . . . . .

67

4.3

Clculo de d com base em e e em (n) . . . . . . . . . . . . . . . . . . .

69

xvii

LISTA DE TABELAS

xviii

5.1

RSA CRT: nmero de inverses mdulo pi por algoritmo . . . . . . . . . .

102

5.2

Ganho de velocidade: MRSA sobre o RSA e sobre o RSA CRT (2 primos) .

103

5.3

Processamento - algoritmo Hensel Lift . . . . . . . . . . . . . . . . . . . .

107

5.4

Ganho prtico de velocidade do RSA P 2 Q sobre o RSA CRT (2 primos) .

108

5.5

Variaes RSA e suas finalidades . . . . . . . . . . . . . . . . . . . . . . .

114

6.1

Processamento - algoritmo para ataque de Wiener . . . . . . . . . . . . . .

128

6.2

Fatorao: Mdulo RSA MIPS anos . . . . . . . . . . . . . . . . . . . .

142

6.3

Fatorao: Mdulo RSA (qtd. de dgitos decimais) data da fatorao . .

143

6.4

Fatorao: Mdulo RSA (qtd. de bits) data da fatorao . . . . . . . . .

143

6.5

MRSA: tamanho do mdulo quantidade mxima de fatores . . . . . . . .

145

6.6

Ataques RSA: Complexidade de Tempo de Processamento . . . . . . . . .

148

D.1 Probabilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

183

D.2 Complexidade computacional de tempo de processamento . . . . . . . . .

184

Lista de Figuras
1.1

Carto Inteligente suporta Criptografia RSA [19] . . . . . . . . . . . . . .

1.2

Chave Pblica RSA criada pelo PGP . . . . . . . . . . . . . . . . . . . . .

3.1

Esquema de Criptografia Simtrica . . . . . . . . . . . . . . . . . . . . . .

51

3.2

Iniciando da esquerda: Merkle, Hellman e Diffie - 1977 [67] . . . . . . . .

52

3.3

Diffie - 2007 [92] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

3.4

Hellman - 2007 [20] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

3.5

Esquema de Criptografia Assimtrica . . . . . . . . . . . . . . . . . . . .

53

3.6

Distribuio de Chaves Simtricas [34] . . . . . . . . . . . . . . . . . . . .

54

4.1

Iniciando da esquerda: Shamir, Rivest, Adleman - 1977 [97] . . . . . . . .

62

4.2

Iniciando da esquerda: Rivest, Shamir, Adleman - 2003 [98] . . . . . . . .

63

5.1

Variaes RSA: Linha do Tempo . . . . . . . . . . . . . . . . . . . . . . .

114

6.1

Fatorao de Inteiros . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

144

6.2

Ataques RSA: Linha do Tempo . . . . . . . . . . . . . . . . . . . . . . . .

149

7.1

Esquema de codificao no RSA-OAEP [78] . . . . . . . . . . . . . . . . .

153

7.2

Esquema de codificao no RSA-PSS [78] . . . . . . . . . . . . . . . . . .

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

C.3 Criptograma gerado com chave privada RSA 1024 bits . . . . . . . . . . .

180

xix

Lista de Algoritmos Computacionais


1

Algoritmo de Euclides. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

Algoritmo de Euclides Estendido. . . . . . . . . . . . . . . . . . . . . . .

21

Algoritmo RL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

Algoritmo LR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

Algoritmo de Gauss. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

97

Algoritmo de Garner. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

98

Algoritmo ART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

101

Algoritmo Hensel Lift. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

106

Algoritmo para ataque de Wiener. . . . . . . . . . . . . . . . . . . . . . .

127

10

Algoritmo Solovay-Strassen. . . . . . . . . . . . . . . . . . . . . . . . . .

167

11

Algoritmo de Miller-Rabin. . . . . . . . . . . . . . . . . . . . . . . . . . .

167

12

Algoritmo AKS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

169

13

Algoritmo de fatorao por Fermat. . . . . . . . . . . . . . . . . . . . . .

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)

1.1. Foco desta Dissertao


Cada vez mais transaes comerciais, financeiras, governamentais e mesmo pessoais
migram para o mundo digital. Esse fato implica em que as informaes antes armazenadas
em papel, filme e outros meios fsicos passam a serem armazenadas na forma eletrnica,
facilitando seu armazenamento e compartilhamento. No entanto, sua manipulao tambm
se torna mais fcil, o que implica em fraude e falsificao.
Mtodos criptogrficos so a forma mais adequada de fornecer integridade, confidencialidade e autenticao de dados e entidades sobre informaes digitais pois independem da
natureza dos dados e dos meios fsicos onde eles so armazenados. Neste contexto, crescem
as pesquisas na rea de segurana da informao e entre elas as de criptologia.
As motivaes pelo estudo do RSA incluem o fato deste algoritmo criptogrfico de
chave pblica ser um padro mundial tanto para confidencialidade, como para assinatura
digital e o fato dele incluir conceitos matemticos fundamentais para a compreenso da criptografia moderna, sendo um alicerce para estudos mais avanados.
1

CAPTULO 1. INTRODUO

O objetivo desta dissertao analisar e documentar os 30 anos de pesquisa sobre


o RSA, desde o seu anncio, em 1977, concentrando as informaes, apresentando anlises
e possibilitando um domnio amplo sobre o mesmo. Esta dissertao abrange conceitos
matemticos, padronizaes, variaes, ataques, a evoluo dos cuidados com o algoritmo
ao longo dos anos e outras consideraes. Esta pesquisa apresenta sua contribuio ao
agilizar estudos e anlises para pesquisadores que venham a se interessar pelo tema e ao
divulgar o estudo da criptografia e em particular, da criptografia de chave pblica RSA.

1.2. Sistemas Criptogrficos de Chave Pblica


Um sistema criptogrfico de chave pblica se baseia em uma funo unidirecional
com segredo, conceito que ser definido no decorrer desta dissertao. Este tipo de funo
unidirecional permite que, em um sistema criptogrfico de chave pblica, para cada par de
chaves, pblica e privada, a chave pblica seja de conhecimento geral. Porm, a chave
privada deve ser apenas de conhecimento do proprietrio do par de chaves. O proprietrio
da chave secreta pode calcular eficientemente a funo em ambas as direes, cifrando e
decifrando facilmente, enquanto que os demais, possuidores apenas da chave pblica, s
tero tratabilidade para calcular a funo de ciframento.
Desde 1976, quando foi apresentado o conceito de chave pblica, diversos sistemas
de chave pblica foram criados. Alguns apresentaram quebras na segurana. Outros
apresentaram grande dificuldade de implementao. Atualmente, trs tipos de sistemas
criptogrficos de chave pblica predominam no mercado, os quais se baseiam nos problemas
envolvidos com as funes unidirecionais com segredo que seguem [18]: o problema da
fatorao de inteiros (PFI), o problema do logaritmo discreto sobre corpos finitos (PLD) e o
problema do logaritmo discreto sobre curvas elpticas (PLDCE).

Problema da Fatorao de Inteiros


Apesar do RSA estar relacionado com mais de um problema encontrado em funes
unidirecionais com segredo, ele o exemplo mais conhecido de algoritmo de chave pblica
que utiliza o problema da fatorao de inteiros.

Problema do Logaritmo Discreto sobre Corpos Finitos

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].

Problema do Logaritmo Discreto sobre Curvas Elpticas


Em meados da dcada de 80, Koblitz [50] e Miller [59], chegaram, de forma independente, concluso que a rica estrutura matemtica das curvas elpticas era uma fonte de
problemas matemticos de difcil soluo e, portanto, poderia ser utilizada como base para a
construo de sistemas criptogrficos de chave pblica. A partir desta data, foram propostos
diversos sistemas criptogrficos baseados no problema do logaritmo discreto sobre curvas
elpticas, anlogos aos sistemas criptogrficos de chave pblica j existentes.
Os sistemas criptogrficos com base no PLDCE anlogos ao RSA, no apresentam vantagens sobre o RSA original, e por este motivo, apresentam apenas contribuio
acadmica e no prtica. Como exemplo, tm-se [27, 53].
Pode-se encontrar tambm o problema do logaritmo discreto sobre curvas elpticas,
no algoritmo de assinatura digital ECSA [47], o qual anlogo ao algoritmo de assinatura
digital DSA.

Alguns algoritmos com base no PLDCE anlogos a algoritmos baseados no PLD


podem apresentar vantagens, em relao ao nvel de segurana: o algoritmo com base
no PLDCE possui complexidade exponencial e o anlogo com base no PLD possui complexidade subexponencial, isto , seu custo de tempo de processamento apesar de no ser
representado por uma funo polinomial, no cresce to rapidamente quanto em uma funo
exponencial. Assim, tais sistemas criptogrficos apresentam um mesmo nvel de segurana

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.

1.3. Aplicaes RSA


O algoritmo RSA um padro mundial e suas aplicaes so muitas, sendo que
abaixo, seguem alguns exemplos de aplicativos que utilizam o RSA entre as suas ferramentas
de segurana.

Linguagem Java - Pacote de Segurana

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.

Figura 1.1. Carto Inteligente suporta Criptografia RSA [19]

PGP - Software para Criptografia


O PGP um software para implementao de segurana em correio eletrnico,
originalmente escrito por Philip Zimmermann, em 1991 [102]. um software criptogrfico
com fonte aberta, escrito em linguagem C, com algumas verses gratuitas. Roda sobre o
sistema operacional Windows ou Linux e considerado um padro para a criptografia de
correio eletrnico. Por meio do PGP, entre outras tarefas, podem-se realizar ciframentos e
deciframentos, assinaturas digitais e verificaes de assinaturas e efetuar a gesto de chaves
pblicas de usurios do software. Desde a primeira verso do software PGP foi utilizado
o algoritmo RSA, motivo pelo qual, o programa ficou proibido por cerca de dois anos nos
Estados Unidos. Na poca, ele infringia a patente do algoritmo RSA.

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

O algoritmo RSA utilizado na ICP-Brasil e o nico algoritmo de chave pblico


que pode ser utilizado pela AC-Raiz, a qual a raiz das Autoridades Certificadoras de assinaturas digitais no Brasil. A poltica de certificado da ICP-Brasil dispe de vrios tipos
de certificado conforme a necessidade do usurio, os quais operam como uma terceira parte
confivel entre o emissor de uma assinatura digital e o verificador desta.
Independente do nvel de segurana do certificado, o comprimento do par de chaves,
privada e pblica, da AC-Raiz tem que ser RSA de, no mnimo, 2048 bits, devendo ser este
valor revisto periodicamente, de acordo com as definies estabelecidas pelo CG ICP-Brasil
[42].

CAPTULO 1. INTRODUO

O certificado prprio da AC-Raiz utilizar o algoritmo SHA-1, ou outro de segurana


superior, com ciframento RSA, devendo estes algoritmos serem revistos periodicamente,
de acordo com as definies estabelecidas pelo CG ICP-Brasil [42], e a implementao do
algoritmo RSA dever estar de acordo com o PKCS #1 [42].

1.4. Estrutura da Dissertao


A presente dissertao est dividida em captulos. Este captulo apresenta tema, motivao, objetivo e contribuio da dissertao, assim como a estrutura na qual foi elaborado
o texto.
O captulo 2 apresenta os fundamentos matemticos necessrios para o bom entendimento do tema e acompanhamento das anlises realizadas, sendo que o texto pode ser lido a
partir do prximo captulo, sem detrimento do entendimento do contedo da dissertao.
O captulo 3 possui a mesma estrutura do captulo anterior, apresentando os fundamentos em criptologia e informtica.
O captulo 4 apresenta o algoritmo RSA, o processo de criao das chaves, o ciframento e deciframento, a sua utilizao em assinaturas digitais, anlises e cuidados indispensveis para a utilizao do algoritmo RSA.
O captulo 5 apresenta as principais variaes do RSA, desde sua criao em 1977,
at o momento, algumas inclusive em desuso.
O captulo 6 apresenta os principais ataques ao RSA e suas respectivas defesas, incluindo a anlise de alguns ataques a variaes RSA. Assim como no captulo anterior, alguns ataques so obsoletos. Porm, seu conhecimento no o , pois, por meio dele, podem-se
definir cuidados necessrios para uma implementao segura e ter embasamento tcnico para
novas anlises.
O captulo 7 analisa a necessidade de uma codificao para a mensagem a ser processada pelo algoritmo RSA e apresenta a codificao RSA-OAEP.
O captulo 8 apresenta as consideraes finais da dissertao, questes em aberto e
concluses.
No apndice A so apresentados algoritmos para teste de primalidade, devido necessidade deste teste na implementao do RSA e no apndice B so apresentados algorit-

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].

2.1. Conceitos Preliminares


Definio 2.1.1 Conjunto Numrico. ([43]) Conjunto Numrico um conjunto cujos elementos so formados exclusivamente por nmeros e estes guardam entre si algumas caractersticas comuns. Um conjunto numrico possui seus elementos perfeitamente caracterizados.
Definio 2.1.2 Conjunto N.

([43]) Conjunto dos nmeros naturais:

{0, 1, 2, 3, . . . , }.

Definio 2.1.3 Conjunto N . ([43]) Conjunto dos nmeros naturais exceto {0}.

10

CAPTULO 2. FUNDAMENTAO MATEMTICA


Definio 2.1.4 Conjunto Z.

11

([43]) Conjunto dos nmeros inteiros:

{, . . . , 3, 2, 1, 0, 1, 2, 3, . . . , }.

Definio 2.1.5 Conjunto Z . ([43]) Conjunto dos nmeros inteiros exceto {0}.

Definio 2.1.6 Conjunto

Zn .

([58])

Conjunto

maiores do que n e menores do que n,

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.

Observa-se que Zn forma uma estrutura algbrica de grupo multiplicativo para o


conjunto dos inteiros relativamente primos com n, nas operaes de soma e multiplicao
mdulo n.

Definio 2.1.8 Conjunto Q.


a
{ / a Z e b Z }.
b

([43]) Conjunto dos nmeros racionais:

Definio 2.1.9 Conjunto Q . ([43]) Conjunto dos nmeros racionais exceto {0}.

Definio 2.1.10 Conjunto I.

([43]) Conjunto dos nmeros irracionais: composto

por todo nmero que no se pode expressar como quociente de dois nmeros inteiros,

CAPTULO 2. FUNDAMENTAO MATEMTICA


ou seja, que possui representao infinita, porm no peridica, como por exemplo

12

(1, 414213...), (3, 141592...), e (2,718281...).

Definio 2.1.11 Conjunto I . ([43]) Conjunto dos nmeros irracionais exceto {0}.

Definio 2.1.12 Conjunto R. ([43]) Conjunto dos nmeros reais: R = {Q I}.

Definio 2.1.13 Conjunto R . ([43]) Conjunto dos nmeros reais exceto {0}.

Definio 2.1.14 Logaritmo. ([86]) Sejam a R e b R, tais que ab = c. Ento b


chamado de logaritmo de c na base a, denotado por b = loga c.

Geralmente, devido a sua grande utilizao, quando a base do logaritmo o nmero


10, a notao do mesmo dada por log c = b, omitindo-se a base. Da mesma forma ln c = b,
denota o logaritmo de c na base e, sendo e 2, 71828.

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.

Teorema da Diviso. ([86]) Sejam a e b inteiros positivos. Existem nmeros inteiros q e r


tais que a = bq + r com 0 r < b. Os valores de q e r so nicos.

Se r = 0, ento diz-se que b divisor de a, ou que b divide a, denotado por b|a.

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.

Os nmeros 1 e 0 no so considerados primos nem compostos.

CAPTULO 2. FUNDAMENTAO MATEMTICA

13

Definio 2.2.2 Nmeros Relativamente Primos. ([86]) Dois nmeros a e b so ditos


co-primos, relativamente primos ou primos entre si, se o maior divisor de a e b 1.

Definio 2.2.3 Primos Gmeos. ([86]) Dois nmeros primos a e b so ditos primos
gmeos, quando b = a + 2.

Teorema dos Nmeros Primos.

([86]) Seja (n) a quantidade de nmeros primos


(n)
existentes no intervalo [0, n], ento: lim n = 1.
n

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)

de ser primo, isto , tem-se que

examinar aproximadamente ln (n) inteiros prximos de n para acharmos um nmero primo


da mesma ordem de grandeza que n.

Teorema Fundamental da Aritmtica. ([58]) Dado um inteiro positivo n 2 pode-se


Q
escrev-lo, de maneira nica, exceto pela ordem dos fatores, na forma n = ki=1 pei i , onde
pi , so fatores primos distintos, 1 < p1 < p2 < . . . < pk , e ei so inteiros positivos,
e1 , e2 , . . . , ek , denotando multiplicidades.

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.

Dado dois inteiros a e b com suas respectivas fatoraes:

a=

t
Y

pai i

b=

m
Y

pbi i ,

i=1

i=1

o mdc de a e b denotado por:


max{t,m}

(a, b) =

Y
i=1

min{ai ,bi }

pi

CAPTULO 2. FUNDAMENTAO MATEMTICA

14

A notao grfica dada por: mdc(a, b) ou (a, b).


Observaes: mdc(0, a) = a, para a 6= 0; mdc(0, 0) = e mdc(a, b, c, . . . , z) =
mdc(a, mdc(b, mdc(c, . . . , z))).
Caso a fatorao de a ou de b no sejam conhecidas, ento, usa-se o algoritmo de
Euclides (ver seo 2.6) para a determinao do mdc(a, b).

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.

Dado dois inteiros a e b com suas respectivas fatoraes:

a=

t
Y

pai i

b=

i=1

m
Y

pbi i ,

i=1

o mmc de a e b denotado por:


max{t,m}

< a, b >=

max{ai ,bi }

pi

i=1

A notao grfica dada por: mmc(a, b) ou < a, b >.


Observaes: mmc(0, a) = a, para a 6= 0; mmc(0, 0) = 0; mmc(a, b)mdc(a, b) =
a b e mmc(a, b, c, . . . , z) = mmc(a, mmc(b, mmc(c, . . . , z))).

2.3. Aritmtica Modular


Aritmtica a ramificao da matemtica que opera sobre o conjunto do nmeros
naturais (N).
Aritmtica Modular a ramificao da aritmtica, que opera em um subconjunto
dos nmeros naturais a um determinado nmero natural chamado de mdulo. Os relgios
trabalham com mdulos 12 ou 24 para horas e 60 para minutos e segundos. O calendrio
gregoriano opera com mdulo 12 para os meses e mdulo 7 para os dias da semana.

CAPTULO 2. FUNDAMENTAO MATEMTICA

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

2.4. Congruncia Mdulo n


Existe uma relao de equivalncia no conjunto dos inteiros. Dois inteiros cuja diferena um mltiplo de n so equivalentes.
Formalmente, dois inteiros a e b so ditos congruentes mdulo n se a b mltiplo
de n. Devido aos estudos formulados por Gauss, a representao matemtica de congruncia
modular historicamente denotada a b (mod n). Exemplo:

(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).

CAPTULO 2. FUNDAMENTAO MATEMTICA

16

2.4.1. Algumas Propriedades da Congruncia Mdulo n


Sejam m N e a1 , b1 , a2 , b2 Z. Pode-se afirmar que [85]:
1. a1 b1 (mod m) a1 b1 0 (mod m).
2. Se a1 b1 (mod m) e a2 b2 (mod m), ento a1 a2 (mod m) b1 b2
(mod m).

3. Se a1 b1 (mod m) e a2 b2 (mod m), ento a1 a2 (mod m) b1 b2 (mod m).


4. Se a b (mod m), ento ax (mod m) bx (mod m) para todo x Z.

5. Seja x Z tal que (m, x) = 1. Se ax bx (mod m), ento a b (mod m).

6. Se a b (mod m) e c d (mod m) ento para todo x Z:


ax c (mod m) bx d (mod m).

2.5. Complexidade Computacional


Definio 2.5.1 Complexidade computacional. ([33]) Estudo dos recursos necessrios
durante o processamento de um algoritmo, a fim de se determinar o custo computacional de
execuo deste algoritmo. Este estudo deve ser independente do equipamento utilizado para
o processamento. Os recursos estudados so principalmente de tempo de processamento e
de espao em memria.

Para mensurar o custo computacional de execuo de um algoritmo define-se uma


funo custo ou funo de complexidade f , onde f (n) a medida de tempo, por exemplo, necessria para executar um algoritmo, considerando-se uma entrada de tamanho n.
Observa-se que a complexidade de tempo (neste caso) no representa tempo diretamente,
mas o nmero de vezes que determinada operao considerada relevante executada.
Existem trs medidas de custo computacional com base nos valores de entrada do
algoritmo que est sendo analisado: para o melhor caso (menor custo de execuo sobre
todas as entradas possveis de tamanho n), para o caso mdio (mdia do custo de execuo

CAPTULO 2. FUNDAMENTAO MATEMTICA

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)).

Definio 2.5.2 Custo Computacional Tratvel. ([33]) Um algoritmo apresenta custo


computacional tratvel, quando possvel a sua execuo em tempo polinomial no tamanho
dos dados de entrada.

Definio 2.5.3 Custo Computacional Intratvel. ([33]) Um algoritmo apresenta custo


computacional intratvel, quando no se sabe se existe uma soluo para execut-lo em
tempo polinomial para todas as instncias deste algoritmo.

Definio 2.5.4 Algoritmo com Execuo em Tempo Polinomial. ([33]) Um algoritmo


apresenta execuo em tempo polinomial quando seu custo computacional de tempo de
execuo dado pela funo O(p(n)) onde p denota uma funo polinomial e n denota o
tamanho da entrada.

Definio 2.5.5 Algoritmo com Execuo em Tempo Exponencial. ([33]) Um algoritmo


apresenta soluo em tempo exponencial quando no possvel se encontrar soluo em
tempo polinomial, por exemplo O(nlg 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]:

CAPTULO 2. FUNDAMENTAO MATEMTICA

18

Tabela 2.2. Complexidade computacional de tempo - operaes bsicas em Z

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

Custo em operaes binrias


O(lg n)
O(lg n)
O(lg 2 n)

Definio 2.5.6 Custo de Armazenamento em Memria. O custo de armazenamento em


memria a quantidade de memria necessria para a execuo do algoritmo.

Multiplicao Binria de Dois Fatores


Sejam x e y, dois valores numricos em sistema binrio. Sejam X e Y o tamanho em
nmero de bits dos valores x e y respectivamente. O tamanho do produto dos fatores x e y
igual a O(X + Y ) bits. [49].
Por exemplo, se o tamanho X de x for 512 bits e o tamanho Y de y for 64 bits, o
tamanho de xy 576 bits. Se tanto x como y tiverem tamanho de 512 bits, o tamanho de xy
de 1024 bits.

2.6. Algoritmo de Euclides


O algoritmo de Euclides permite calcular o mximo divisor comum de dois inteiros
e baseia-se no seguinte lema [58]:
Lema 2.6.1 Se a e b so dois inteiros positivos, ento (a, b) = (b, a (mod b)).
Complexidade Computacional
O custo de tempo de processamento deste algoritmo O(lg 2 n) operaes binrias,
sendo n =max{a, b} [49].
1

Comportamento assinttico o limite da funo de complexidade computacional f (n), quando n cresce


arbitrariamente.

CAPTULO 2. FUNDAMENTAO MATEMTICA

19

Algoritmo Computacional 1 Algoritmo de Euclides.


Entrada: dois nmeros inteiros positivos a e b
Sada:

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

A execuo pra no passo 9 pois b = 0, e retorna mdc(a, b) = 1, pois a = 1.

2.7. Algoritmo de Euclides Estendido


Definio 2.7.1 Equao Diofantina. ([101]) Uma equao diofantina do primeiro grau a
duas variveis x e y uma equao do tipo ax + by = c, com a, b, c Z.
A equao diofantina ax + by = c tem soluo em Z quando existem x, y Z,
e isto ocorre se e somente se mdc(a, b)|c. Observa-se que caso c seja um nmero primo,
obrigatoriamente mdc(a, b) = 1 ou mdc(a, b) = c. No caso de mdc(a, b) = 1 s existe um
valor possvel para x e um para y que satisfaa a equao ax + by = 1 = mdc(a, b) [101].

CAPTULO 2. FUNDAMENTAO MATEMTICA

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.

Algoritmo de Euclides Estendido


O algoritmo de Euclides Estendido, alm de retornar mdc(a, b), cujo valor obtido
com o clculo do mximo divisor comum entre a e b, ainda retorna os valores para x e y tais
que ax + by = mdc(a, b), ou seja, a soluo desta equao diofantina [58].
Em equaes diofantinas do tipo ax+by = 1, quando mdc(a, b) = 1, ou seja, quando
existe soluo (valores para x e y), com esta soluo pode-se obter o inverso multiplicativo
de a (mod b) e o inverso multiplicativo de b (mod a). Por exemplo, na equao diofantina
23x + 6y = 1 (a = 23, b = 6 e mdc(23, 6) = 1), com o algoritmo de Euclides estendido
obtm-se o valor de x = 1 e de y = 4, e pode-se afirmar que:
23 o inverso multiplicativo de 1 (mod 6);
6 o inverso multiplicativo de 4 (mod 23).
Complexidade Computacional
O custo de tempo de processamento deste algoritmo O(lg 2 n) operaes binrias,
sendo n =max{a, b} [49].

CAPTULO 2. FUNDAMENTAO MATEMTICA

21

Algoritmo Computacional 2 Algoritmo de Euclides Estendido.


Entrada: nmeros inteiros positivos a e b
Sada:

mdc(a, b) e inteiros x e y, tais que ax + by = mdc(a, b)

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).

Tabela 2.5. Processamento - algoritmo de Euclides estendido

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

A execuo pra no passo 10 pois b = 0, e retorna mdc(a, b) = 1, x = 1 e y = 4


(pois a = 1, x2 = 1 e y2 = 4), obtendo a equao diofantina 23 1 + 6 4 = 1.

CAPTULO 2. FUNDAMENTAO MATEMTICA

22

Definio 2.7.2 Crivo de Eratstenes. ([86]) O crivo de Eratstenes garante que se n no

primo, ento n tem um fator primo menor ou igual a n. Assim, se n no for divisvel por

nenhum nmero primo menor ou igual a n, ento n primo.

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

de tempo de processamento do crivo de Eratstenes (O( n lg 2 n) operaes binrias).

2.8. Teorema Chins do Resto


Sejam os nmeros inteiros n1 , n2 , . . . , nk relativamente primos entre si e
a1 , a2 , . . . , ak nmeros inteiros, ento o sistema de congruncias:
x a1

(mod n1 )

x a2

(mod n2 )
..
.

x ak

(mod nk )

tem uma nica soluo mdulo n = n1 n2 . . . nk [58].


A soluo para este sistema de congruncias conhecido como teorema chins do
resto, dada pelo algoritmo de Gauss:

k
X

ai Ni Mi

(mod n)

i=1

onde

Ni = n/ni

Mi = Ni1 (mod ni ),

para 1 i k.

O custo computacional do algoritmo de Gauss de O(lg 2 n) operaes binrias [58].


Exemplo: O sistema de congruncias:

CAPTULO 2. FUNDAMENTAO MATEMTICA

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

tem uma nica soluo mdulo 105 = 3 5 7, dada por:


x = ((2 35 2) + (3 21 1) + (2 15 1)) mod 105 = 23,
onde:
N1 =

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.

2.9. Teorema de Euler e Conceitos Relacionados


Definio 2.9.1 Ordem de a (mod n). ([85]) O menor inteiro positivo s tal que as 1
(mod n) chamado de ordem de a (mod n) e denotado por ordn (a).

Definio 2.9.2 Ordem de um Grupo. ([85]) Se o nmero de elementos pertencentes a um


grupo G for finito, este nmero chamado de ordem de G e representado por |G|.

Teorema de Lagrange. ([85]) Se (G, ) um grupo finito e (H, ) um subgrupo de


(G, ), ento |H| divide |G|.

Portanto, se g G, a ordem de g divide |G|.

CAPTULO 2. FUNDAMENTAO MATEMTICA

24

Definio 2.9.3 Funo. Sejam u e v duas variveis e sejam U e V , respectivamente, o


conjunto a que as variveis pertencem. Se entre u e v existe uma relao tal que a cada
valor de v V , corresponde um valor de u U , seja qual for a maneira como essa correspondncia estabelecida, diz-se que u funo de v (funo de uma varivel), definida
nos conjuntos V U , e escreve-se u = f (v) [43] .
O conjunto V chamado de domnio da funo e o conjunto U de contradomnio da
funo.
Definio 2.9.4 Funo de Euler. ([101]) (n) a ordem de Zn , isto , simboliza o
nmero de elementos em Zn . chamada de Funo de Euler.
Dado [86] n =

Qt
i=1

pei i , ei > 0, ento:


(n) =

t
Y

pei i 1 (pi 1),

i=1

ou:
(n) = n

t
Y

(1 p1
i )

(1) = 1 por definio;

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

pi , onde pi so nmeros primos distintos, ento:

(n) =

k
Y
i=1

(pi 1).

CAPTULO 2. FUNDAMENTAO MATEMTICA

25

Caso n = pk q, onde p e q so dois nmeros primos distintos, ento:


(n) = (p 1)pk1 (q 1).

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).

Corolrio 2.9.1 ([86]) Se ax (mod n) = 1, com n sendo um inteiro positivo, a e x inteiros


e mdc(a, n) = 1, ento: x = a1 = a(n)1 (mod n).

Pequeno Teorema de Fermat. ([86]) Seja p um nmero primo e a um nmero inteiro.


Ento: ap a (mod p)

ou ainda: se mdc(a, p) = 1, ento ap1 1 (mod p).

Definio 2.9.5 Funo de Carmichael. ([101]) Para um inteiro positivo n, a funo de


Carmichael, denotada (n), retorna o menor inteiro tal que T (n) 1 (mod n), para todo

CAPTULO 2. FUNDAMENTAO MATEMTICA


inteiro T relativamente primo com n.

Sendo pi os fatores primos distintos de n e ei suas respectivas multiplicidades:

(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

pi , onde pi so nmeros primos, ento:


(n) = mmc(p1 1, p2 1, . . . , pk1 1, pk 1).

Caso n = pk q, onde p e q so dois nmeros distintos, ento:


(n) = mmc((p 1)pk1 , (q 1)).

Caso n seja o produto de dois nmeros inteiros primos distintos p e q, ento:


(n) = mmc(p 1, q 1).
Uma vez que:
mdc(p 1, q 1) mmc(p 1, q 1) = (p 1)(q 1) = (n),

26

CAPTULO 2. FUNDAMENTAO MATEMTICA

27

pode-se calcular (n) como segue:


(n) = mmc(p 1, q 1) =

(n)
.
mdc(p 1, q 1)

Observa-se que (n) divisor de (n), sendo chamado de expoente universal de n.

2.10. Anlise do Grupo Zn


Definio 2.10.1 Resduo Mdulo n. ([58]) Um resduo r mdulo n um nmero inteiro,
pertencente a alguma classe de equivalncia mdulo n.
Por exemplo: 5 (mod 6) = 5, logo, 5 resduo mdulo 6.

Definio 2.10.2 Sistema Completo de Resduos Mdulo n. ([85]) Um sistema completo


de resduos mdulo n o conjunto de todos os possveis resduos mdulo n.
Exemplo: O conjunto {0, 1, 2, 3, 4, 5} um sistema completo de resduos mdulo 6.
Observa-se que:
1. Se Rk = {a1 , a2 , . . . , ak } um sistema completo de resduos mdulo n e
Rl = {b1 , b2 , . . . , bl } tambm um sistema completo de resduos mdulo n, ento, o
nmero de elementos de Rk igual ao nmero de elementos de Rl , ou seja, k = l.
2. {0,1,2, . . . , n-1} um sistema completo de resduos mdulo n.

3. Um sistema completo de resduos mdulo n tem n elementos.

Definio 2.10.3 Sistema Reduzido de Resduos Mdulo n. ([85]) Um sistema reduzido


de resduos mdulo n um subconjunto de um sistema completo de resduos mdulo n, no
qual, todos os elementos so relativamente primos com n.

Definio 2.10.4 Sistema Reduzido Mximo de Resduos Mdulo n. ([85]) Um sistema


reduzido mximo de resduos mdulo n o subconjunto de um sistema completo de resduos

CAPTULO 2. FUNDAMENTAO MATEMTICA

28

mdulo n, no qual esto inclusos todos os elementos que so relativamente primos com n.

O conjunto R6 = {1, 5} um sistema reduzido mximo de resduos mdulo 6, o


conjunto R60 = {1} um sistema reduzido de resduos mdulo 6.
Seja p um nmero primo e Rp = {0, 1, 2, . . . , p 1} um sistema completo
de resduos mdulo p. Rp0 = {1, 2, . . . , p 1} um sistema reduzido mximo de resduos mdulo p. Os demais subconjuntos de Rp0 so sistemas reduzidos de resduos mdulo p.

Definio 2.10.5 Resduo Quadrtico. ([85]) Se a congruncia x2 a (mod n) tem


soluo, diz-se que a resduo quadrtico mdulo n e x uma raiz quadrada modular de a.

Dado um inteiro positivo n > 2, escrito na forma n =

Qk
i=1

pei i , onde 1 < p1 < p2 <

. . . < pk , so nmeros primos, e e1 , e2 , . . . , ek , so inteiros positivos, ento se a resduo


quadrtico, a possui pelos menos 2k razes quadradas distintas mdulo n.
Para a = 1, sempre h soluo para a congruncia, seja qual for o valor de n, pois
12 1 mod n: 1 raiz quadrada de 1 mod n e raiz quadrada de n 1 mod n.
Se n primo, qualquer resduo quadrtico a mdulo n possui exatamente 2 razes
quadradas mdulo n.
Exemplos: 1 mod 7 possui 2 razes quadradas mdulo 7: 1 e 6. 1 mod 15 possui 4
razes quadradas mdulo 15: 1, 4, 11 e 14.

Definio 2.10.6 Smbolo de Legendre. ([58]) Seja p um nmero primo mpar e a Z. O


smbolo de Legendre para a em relao a p definido por:

0, se p|a,

L(a, p) =
1, se a resduo quadrtico (mod p),

1, se a no resduo quadrtico (mod p).

CAPTULO 2. FUNDAMENTAO MATEMTICA

29

Dado um nmero primo mpar p e um nmero a Z, o smbolo de Legendre uma


ferramenta til para se rastrear se a resduo quadrtico mdulo p.

Definio 2.10.7 Smbolo de Jacobi. ([58]) Seja a Z e m 3, um nmero inteiro


Q
mpar no necessariamente primo representado na forma m = ki=1 pei i , onde pi , so fatores
primos distintos, 1 < p1 < p2 < . . . < pk , e ei N , e1 , e2 , . . . , ek . O smbolo de Jacobi
para a em relao a m definido por:

J(a, m) =

k
Y

L(a, pi )ei .

i=1

O Smbolo de Jacobi uma extenso do Smbolo de Legendre para os inteiros m


mpares e como conseqncia, se m um nmero primo p, ento:
L(a, p) = J(a, m).

Dado um nmero inteiro mpar m e um nmero a Z, o smbolo de Jacobi


determina se a um provvel resduo quadrtico mdulo m.

Definio 2.10.8 Provvel Resduo Quadrtico.

Provvel resduo quadrtico todo

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.

CAPTULO 2. FUNDAMENTAO MATEMTICA

30

O termo homomorfismo deriva do grego homo (semelhana) e morfismo (formar).

Dados os grupos (Z, +) e (Zn , +), a funo f : Z Zn um exemplo de


homomorfismo pois, f (x + y) = (f (x) + f (y)) mod n.

Definio 2.10.11 Isomorfismo de Grupos. ([86]) Se um homomorfismo possui um inverso


que tambm um homomorfismo, ento chamado um isomorfismo e os dois grupos so
chamados isomrficos, ou seja, dois corpos so ditos isomrficos se eles so estruturalmente
os mesmos, embora a representao dos seus elementos seja diferente.

O termo isomorfismo deriva do grego iso (igual) e morfismo (formar).

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,

ento f : A B um automorfismo de grupo.

Informalmente, automorfismo um isomorfismo de um conjunto de elementos sobre


ele mesmo.

Dado o grupo (Zn , ) um exemplo de automorfismo de grupo qualquer funo


f : Zn Zn dado por f (x y), pois, f (x y) = f (x) f (y); x, y Zn .

CAPTULO 2. FUNDAMENTAO MATEMTICA

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) ).

Observa-se que |Zn | = (n).

CAPTULO 2. FUNDAMENTAO MATEMTICA

32

Seguem os lemas [85]:


Lema 2.10.1 Se as 1 (mod n), ento s um mltiplo da ordem de a, ou seja, ordn (a)|s.

Lema 2.10.2 Se Zn possui um gerador, pode-se afirmar que n um inteiro igual a 2, 22 , pk


ou 2pk , sendo p um primo mpar e k um inteiro positivo.

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.4 Se g um gerador, g j (mod n) tambm um gerador, se e somente se


mdc(j, (n)) = 1. Desta forma, deduz-se que se Zn possui um gerador, ento existem
((n)) geradores de Zn .

Lema 2.10.5 Se g um gerador, ento qualquer outro gerador, ter a forma g k (mod n)
com k Z(n) .

Lema 2.10.6 Se g um gerador, ento g

(n)
p

6 1 (mod n) para cada primo p divisor de

(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.8 Se a b (mod n), ento a ordem de a igual a ordem de b.

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;

CAPTULO 2. FUNDAMENTAO MATEMTICA

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

Tabela 2.7. Exponenciao modular em Z5

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}.

CAPTULO 2. FUNDAMENTAO MATEMTICA

34

3. Z5 possui gerador e portanto n = 5 (lema 2.8.2).


4. Como n primo, existem dois geradores (2 e 3), pois ((5)) = (4) = 2, de forma
que, Z4 possui 2 elementos: {1, 3} (lema 2.8.3).
5. Pode-se observar na tabela 2.7 que os geradores so o 2 e 3 e a ordem para ambos
4 ((5)) (lema 2.8.3).

6. As bases 2 e 3 so geradores. 23 (mod 5) = 3 e 33 (mod 5) = 2. No existe outra


combinao 2j (mod 5) ou 3j (mod 5) com mdc(j, 2) = 1, caracterizando assim
um gerador (lemas 2.8.4 e 2.8.5).
4

7. O divisor 2 de 4 ((5)) primo, ento 2 2 6 1 (mod 5) e 3 2 6 1 (mod 5) (lema


2.8.6).

8. {21 , 22 , 23 , 24 } e {31 , 32 , 33 , 34 } so dois sistemas reduzidos mximos de resduos


mdulo n (lema 2.8.7).

9. As bases de ordem 2 so 1 e 4 pois: 12 1 mod 5; 42 1 mod 5 (lema 2.8.9).

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).

2. Como a fatorao de 15 dada por 31 51 , o grupo Z15 no cclico (lema 2.8.2).

3. No existem geradores para n = 15 (lema 2.8.2).

CAPTULO 2. FUNDAMENTAO MATEMTICA

x1

x2

x3

Tabela 2.8. Exponenciao modular em Z15

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

Tabela 2.9. Exponenciao modular em Z15

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

4. A tabela 2.9 tem composio semelhante a anterior (tabela 2.8).

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).

CAPTULO 2. FUNDAMENTAO MATEMTICA

36

7. 4 produz um ciclo de ordem 2.

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.

9. As bases de ordem 2 so 1, 4, 11 e 14 pois (lema 2.8.10):


b 1 mod 3 (b {1, 4, 7, 10, 13}) e b 1 mod 5 (b {1, 6, 11}):
b mod 15 = 1;
b 1 mod 3 (b {1, 4, 7, 10, 13}) e b 1 mod 5 (b {4, 9, 14}):
b mod 15 = 4;
b 1 mod 3 (b {2, 5, 8, 11, 14}) e b 1 mod 5 (b {1, 6, 11}):
b mod 15 = 11;
b 1 mod 3 (b {2, 5, 8, 11, 14}) e b 1 mod 5 (b {4, 9, 14}):
b mod 15 = 14.

2.11. Algoritmo Eficiente para Exponenciao Modular


No algoritmo para exponenciao modular direita/esquerda2 (RL), o clculo da exponenciao realizado com base na decomposio binria do expoente, partindo do bit menos
significativo at o mais significativo (da direita para a esquerda) [101].
Analogamente, o clculo pode ser realizado do bit mais significativo ao menos significativo, como pode ser observado no algoritmo esquerda/direita3 (LR).
Processamento do algoritmo RL
2
3

RL - right to left.
LR - left to right.

CAPTULO 2. FUNDAMENTAO MATEMTICA

37

Algoritmo Computacional 3 Algoritmo RL.


Entrada: trs nmeros inteiros positivos: m, e, n
m base da exponenciao
e expoente
n valor do mdulo
Sada:

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.

Tabela 2.10. Processamento - exponenciao modular RL

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

O processamento do algoritmo RL para exponenciao modular (tabela 2.10), foi


realizado para a entrada: m = 115 , e = 103 e n = 143, com o objetivo de obter me
(mod n) = 115103 (mod 143).

CAPTULO 2. FUNDAMENTAO MATEMTICA

38

A execuo no algoritmo RL pra no passo 18 pois i = k = 6, e retorna me


(mod n) = 115103 (mod 143) = 15.
Algoritmo Computacional 4 Algoritmo LR.
Entrada: trs nmeros inteiros positivos: m, e, n
m base da exponenciao
e expoente
n valor do mdulo
Sada:

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

CAPTULO 2. FUNDAMENTAO MATEMTICA

39

Tabela 2.11. Processamento - exponenciao modular LR

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].

2.12. Consideraes Finais


A fundamentao matemtica utilizada no algoritmo RSA envolve entre outros, o
conceito de congruncia formulado pelo matemtico alemo Karl Friedrich Gauss (1777
1855), a utilizao de um teorema do matemtico suo Leonhard Euler (1707 1800),
o qual uma generalizao do Pequeno teorema de Fermat, enunciado pelo matemtico
francs Pierre de Fermat (1601 1665) e ainda algoritmos clssicos como o algoritmo de
Euclides, que leva o nome do matemtico grego que demonstrou a existncia de infinitos
nmeros primos, Euclides de Alexandria (cerca de 360 a.C. - 295 a.C.), e do algoritmo
chins do resto, do qual a mais antiga citao provavelmente seja a obra Manual de aritmtica do mestre Sun, do matemtico chins Sun-Tsu escrita entre 287 d.C. e 473 d.C.
[25].

CAPTULO 2. FUNDAMENTAO MATEMTICA

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)

Para a compreenso do algoritmo RSA necessrio o conhecimento de conceitos de


criptologia e de cincia da computao, os quais so sinteticamente descritos a seguir.
Para aprofundamento nestes conceitos h, por exemplo, as referncias bibliogrficas
[48, 58].

3.1. Sistema Binrio


Bit a menor unidade de informao utilizada em informtica, embora existam
pesquisas em computao quntica com qubits1 . Um bit tem um comportamento binrio,
podendo assumir apenas dois valores: 0 ou 1.
Grupos de oito bits so chamados de bytes ou octetos.
metade de um byte, d-se o nome de nibble ou semiocteto.
1

bit quntico.

41

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

42

Em dezembro de 1998, o IEC, principal organizao para padronizao mundial em


tecnologia eletrnica, aprovou como norma internacional do IEC, os nomes e smbolos de
prefixos para mltiplos binrios a serem utilizados em computao conforme descritos na
tabela 3.1 [61].

Tabela 3.1. Prefixos padres

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

Tabela 3.2. Exemplos e comparaes entre prefixos padres

um kibibit
um kilobit
um mebibyte
um megabyte
um gibibyte
um gigabyte

1 Kibit = 210 bit = 1024 bits


1 kbit = 103 bit = 1000 bits
1 MiB = 220 B = 1.048.576 B
1 MB = 106 B = 1.000.000 B
1 GiB = 230 B = 1.073.741.824 B
1 GB = 109 B = 1.000.000.000 B

Os smbolos utilizados em uma linguagem natural, so representados por caracteres.


Esses caracteres precisam estar codificados, por exemplo, em cdigo ASCII, Unicode ou
Base64.
O cdigo ASCII uma codificao de caracteres na forma de valores inteiros. Os
caracteres so mapeados para valores numricos representveis em um byte, abrangendo caracteres passveis de impresso, por exemplo caracteres alfabticos e numricos e caracteres
especiais utilizados para controles.
O Unicode uma codificao que se propem a ser um padro internacional para a
representao unificada de caracteres de diversas linguagens. Os caracteres so representados em dois bytes. O Unicode foi desenvolvido pelo Consrcio Unicode, uma organizao
sem fins lucrativos fundada para desenvolver, ampliar e promover o uso do padro de codificao Unicode [96].

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

43

Base64 uma codificao com o objetivo de possibilitar a transferncia de dados via


Internet. constituido por sessenta e quatro caracteres, o que deu origem ao seu nome. Os
caracteres so representados em seis bits. Para completar um byte os dois ltimos dgitos
so preenchidos com zeros.
Devido a dificuldade de tamanho encontrada ao se manipular bits, comum a utilizao do sistema hexadecimal (base 16), para manipulao de bytes. Desta forma, cada
byte, assim como cada cdigo ASCII representado por dois dgitos em hexadecimal e cada
cdigo Unicode representado por quatro dgitos hexadecimais.
Dado um inteiro n na base decimal, o nmero de bits necessrios para a representao
binria deste nmero dado pela frmula [49]:

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.

Por exemplo, dado n=16, como 16 potncia de 2, o tamanho em bits


lg(16) + 1 = 5. 16D = 10000B . Dado n=17, como 17 no potncia de 2 o tamanho em
bits dlg(17)e = 5. 17D = 10001B .

3.2. Conceitos Preliminares de Criptologia


A segurana da informao tem por objetivo, assegurar uma ou mais, das seguintes
propriedades [58]:
1. Confidencialidade: assegura o sigilo de determinada informao;

2. Integridade: garante que a informao no seja manipulada sem autorizao. Por


manipulao entende-se incluses, excluses ou modificaes de dados;

3. Disponibilidade: garante o acesso informao quando esta for requerida por um


usurio legtimo;

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

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;

5. No repdio: garante que o emissor de uma mensagem ou a pessoa que executou


determinada transao de forma eletrnica, no poder posteriormente negar sua
autoria, visto que somente sua chave privada poderia ter gerado aquela assinatura
digital. Deste modo, a menos que haja um uso indevido do certificado digital, fato
que no exime de responsabilidade, o autor no pode negar a autoria da transao.

Definio 3.2.1 Espao de Mensagens. ([58]) Denotado por M, o conjunto formado


pelas seqncias finitas de smbolos de um determinado alfabeto.

Definio 3.2.2 Mensagem. ([58]) Tambm chamada de texto legvel, consiste em um elemento do espao de mensagens.

Definio 3.2.3 Espao de Criptogramas. ([58]) Denotado por C, o conjunto formado


pelas seqncias finitas de smbolos de um determinado alfabeto, processadas por um ou
mais algoritmos criptogrficos.

Definio 3.2.4 Criptograma. ([58]) Tambm chamado de texto cifrado, consiste em um


elemento do espao de criptogramas.

Definio 3.2.5 Ciframento. ([17]) Consiste na transformao de texto legvel em texto


cifrado.

Definio 3.2.6 Deciframento. ([17]) Processo de converso do texto cifrado em legvel.

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

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.

Definio 3.2.8 Algoritmo. ([33]) Um algoritmo uma seqncia de instrues em uma


ordem lgica para se resolver um problema.

Definio 3.2.9 Algoritmo Criptogrfico.

Um algoritmo criptogrfico um algoritmo

computacional que processa ciframento e deciframento utilizando como parmetro de


entrada, uma chave criptogrfica (ver definio 3.2.17) e, uma mensagem ou criptograma,
e devolvendo como sada, um criptograma ou uma mensagem, com objetivo de adicionar
alguma segurana mensagem.

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.

Definio 3.2.10 Variao de um Algoritmo Criptogrfico. Uma variao de um algoritmo


criptogrfico, consiste em uma modificao realizada na definio original deste, a fim de
trazer algum benefcio ao processo, seja este de segurana, de tempo de processamento, de
espao de armazenamento em memria ou outras vantagens.

Definio 3.2.11 Primitiva Criptogrfica.

([58]) Uma primitiva criptogrfica uma

ferramenta utilizada para prover segurana de informao, como por exemplo esquemas de
ciframento.

Definio 3.2.12 Codificao de Mensagem. Uma codificao de mensagem, tambm


chamada de Esquema de Codificao, uma primitiva criptogrfica constituda por uma

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

46

seqncia de passos que especificam precisamente aes que modificam a mensagem, de


forma que a mesma possa ser recuperada posteriormente, a fim de alcanar um objetivo de
segurana especfico.

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.

Definio 3.2.14 Criptografia. ([58]) A palavra criptografia de origem grega2 , sendo


definida como o estudo de tcnicas matemticas relacionadas a aspectos de segurana de
informao tais como confidencialidade, integridade de dados e autenticao.

Definio 3.2.15 Criptoanlise. ([58]) Estudo de tcnicas matemticas com o objetivo de


analisar algoritmos criptogrficos quanto a sua segurana.

Definio 3.2.16 Criptologia. ([58]) A palavra criptologia de origem grega3 , sendo


definida como o estudo da criptografia e da criptoanlise.

A criptografia, conhecida desde a poca do Antigo Egito, ganhou fora na segunda


guerra mundial. Pode-se ler sobre a histria da criptografia no livro de Kahn [48]. O advento
dos computadores e da Internet tornou a criptologia um pilar de todo o comrcio eletrnico,
possibilitando a realizao de transaes seguras e fez dela um dos ramos mais pesquisados
da matemtica aplicada.

Definio 3.2.17 Chave Criptogrfica.

([17]) Uma chave criptogrfica um valor

(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

krypts - escondido, oculto, secreto; graphia - escrever.


lgos - estudo, cincia.

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

47

que modifica o comportamento deste algoritmo, permitindo o ciframento/deciframento,


conforme o caso.

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.

Definio 3.2.19 Ciframento em Bloco. um ciframento resultante de transformao com


as seguintes caractersticas:
1. A mensagem a ser cifrada dividida em blocos de tamanho fixo;
2. Dois blocos que contenham a mesma mensagem, sero sempre cifrados como um
mesmo criptograma, quando submetidos a mesma chave criptogrfica.

3.3. Ataque a Algoritmos Criptogrficos


Definio 3.3.1 Ataque a um Algoritmo Criptogrfico. ([58]) Um ataque qualquer
tentativa de invaso a um servio de segurana da informao da mensagem que est sendo
utilizada por um remetente e um receptor.

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.

Kerckhoff definiu um conjunto de exigncias para o desenvolvimento de um algoritmo criptogrfico [58].

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO


Ataque por mensagem conhecida.

48

O criptoanalista tem acesso a pares

(criptograma, mensagem).

Ataque por mensagem escolhida. O criptoanalista pode escolher determinada(s)


mensagen(s) e ter acesso ao(s) par(es) (criptograma, mensagem).

Ataque por criptograma escolhido. O criptoanalista pode escolher determinado(s)


criptograma(s) e ter acesso ao(s) par(es) (criptograma, mensagem), sem ter acesso
chave.

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.

Existem variaes para um ataque de fora bruta, conforme o cenrio do ataque:


Ataque de fora bruta por mensagem conhecida. O adversrio utiliza uma mensagem fixa e testa seqencialmente cada elemento do espao de chaves at encontrar
o respectivo criptograma para esta mensagem. Ao encontrar a chave que funcione
no par (criptograma, mensagem) testado, conforme o algoritmo criptogrfico
que est sendo atacado, pode haver a necessidade de se verificar se a chave
correta para outros pares (criptograma, mensagem), evitando a possibilidade
de que a chave descoberta no seja a procurada e funcione apenas para alguns
pares de (criptograma, mensagem) [84], o que chamado de falso positivo.
Se for mais adequado para o caso, ele pode processar o ataque de fora bruta no
par (criptograma, mensagem), a partir do criptograma ao invs da mensagem e

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

49

verificando no teste seqencial do espao de chaves a respectiva mensagem para


este criptograma, mas neste caso, ao invs de processar o ciframento, ele dever
processar o deciframento.

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.

Para cada mensagem decifrada, o

adversrio verifica se ela faz sentido dentro do contexto do ataque, em alguma


codificao existente, como por exemplo, constituindo-se de caracteres ASCII ou
Unicode. Caso encontre uma possvel chave, o criptoanalista a testa com outros
criptogramas, at concluir que a chave testada realmente a desejada. Pode haver
a necessidade de se verificar se a chave est correta para outros criptogramas,
evitando um falso positivo, ou seja, a possibilidade de que a chave descoberta no
seja a procurada e funcione apenas para alguns pares de (criptograma, mensagem).

Em geral, um ataque de fora bruta no vivel devido ao nmero exponencial de chaves


possveis. Em um algoritmo criptogrfico que utilize uma chave de k bits, o espao de chaves
Pk
2k e o nmero de possibilidades de tentativas com sucesso 2i=1 . Um ataque por fora
bruta necessitaria, em mdia, de 2k1 deciframentos para ser bem sucedido. Por exemplo,
em um algoritmo criptogrfico que utilize uma chave de 128 bits, o espao de chaves 2128 .
P 128
O nmero de possibilidades de tentativas com sucesso 2i=1 . Um ataque por fora bruta
1 + 2 + 3 + 4 + . . . + 2128
127
= 1, 701411835 1038 )
necessitaria, em mdia, de 2 , (pois
128
2
deciframentos para ser bem sucedido. Teoricamente, um ataque por fora bruta tem complexidade O(2K ), com K sendo o tamanho da chave em bits considerando um processamento
monotarefa.
O ataque de fora bruta pode ter seu custo computacional reduzido, caso seja utilizado processamento paralelo, ou seja, vrios processadores ou ncleos de processamento
em um ou mais equipamentos processando o ataque em intervalos de chaves possveis prdeterminados. Apesar do comportamento assinttico da complexidade em um ou diversos
processadores ser o mesmo, o custo de processamento pode se tornar vivel, devido a re-

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

50

duo de chaves possveis a serem testadas por equipamento. O custo computacional de


2K tentativas ser dividido pelo nmero de processadores que estaro em processamento
simultneo.
Teoricamente, considera-se que um algoritmo criptogrfico foi quebrado, quando
existir um ataque com menor complexidade do que a complexidade exigida pelo melhor
ataque de fora bruta para este algoritmo. Em aplicaes, um algoritmo criptogrfico
considerado quebrado em relao a aplicao em questo, se existir um ataque com menor
complexidade do que a complexidade mnima exigida para processar o melhor ataque de
fora bruta para essa aplicao [16].

3.4. Algoritmo Criptogrfico de Chave Pblica


Definio 3.4.1 Algoritmo Criptogrfico Simtrico. ([17]) Um algoritmo criptogrfico
simtrico utiliza a mesma chave secreta nas operaes de ciframento e deciframento.

A figura 3.1 esquematiza a utilizao de um algoritmo criptogrfico simtrico.

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 .

Para processar uma informao criptografada necessrio o compartilhamento


prvio de chaves, o que possvel com o uso de algoritmos assimtricos ou de chave
pblica, conceito publicado por Whitfield Diffie e Martin Hellman no artigo New Directions in Cryptography de 1976 [28] e que marcou o incio de uma nova fase na criptografia

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

51

Figura 3.1. Esquema de Criptografia Simtrica

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.

Definio 3.4.4 Algoritmo Criptogrfico Assimtrico. ([58]) Um algoritmo criptogrfico


assimtrico aquele que utiliza duas chaves separadas, uma pblica para o ciframento e
outra privada para o deciframento, sendo que, a chave pblica no fornece informao
para obteno da chave privada.

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

52

Figura 3.2. Iniciando da esquerda: Merkle, Hellman e Diffie - 1977 [67]

Figura 3.3. Diffie - 2007 [92]

Figura 3.4. Hellman - 2007 [20]

.
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.

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

53

Figura 3.5. Esquema de Criptografia Assimtrica

Os algoritmos simtricos possuem um custo de tempo de processamento baixo em


relao aos assimtricos mas apresentam dificuldades no gerenciamento de chaves (criao,
transporte, distribuio e destruio de chaves).
Para a utilizao de um algoritmo assimtrico por um grupo de usurios, cada usurio
ter um par de chaves sendo uma pblica e uma privada, possibilitando o ciframento e o
deciframento. Desta forma, dois usurios necessitaro de dois pares de chaves, trs usurios
necessitaro de trs pares e n usurios necessitaro de n pares de chaves. Observa-se um
custo de gerenciamento de chaves com crescimento linear em relao ao nmero de usurios
(O(n)).
Segundo Stallings [91], o maior problema da criptografia simtrica, garantir que
o emissor e o destinatrio de uma mensagem cifrada pelo algoritmo e, somente eles, possam conhecer a chave secreta ora em uso. Alm disso, existe a necessidade de transmitir a
chave secreta por um meio seguro, separadamente da mensagem, e de efetivar combinaes

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

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 )).

Figura 3.6. Distribuio de Chaves Simtricas [34]

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

55

A ttulo de comparao nota-se que para a utilizao de um algoritmo simtrico, cada


usurio ter que ter uma chave distinta para manter comunicao criptografada com cada
um dos usurios do grupo, possibilitando o ciframento e o deciframento da comunicao
entre dois quaisquer dos usurios do grupo.

A tabela 3.3 sintetiza as principais diferenas entre a criptografia simtrica e a


assimtrica.

Tabela 3.3. Criptografia Simtrica Criptografia Assimtrica

Algoritmo

Simtrico

Assimtrico

Origem
Chave

Cerca de 5000 anos


nica

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

3.5. Assinatura Digital


Definio 3.5.1 Autenticidade. ([58]) A autenticidade em um sistema digital um processo
por meio do qual o receptor de uma mensagem pode estar confiante sobre a identidade do
remetente (autenticidade de identidade) e a integridade da mensagem (autenticidade de
dados).

A autenticidade em sistemas de chaves pblicas utiliza assinaturas digitais.


Cada usurio utiliza apenas as chaves pblicas de outros usurios e sua prpria chave
privada. Para possibilitar um processo seguro, as chaves pblicas precisam ser autenticadas

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

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).

Ainda pode-se acrescentar confidencialidade transao de assinatura digital


garantindo que s tenham acesso ao contedo do documento os receptores autorizados. Da
combinao da assinatura digital com o ciframento da mensagem, advm as propriedades de
confidencialidade e autenticao.
Hipoteticamente, uma assinatura manuscrita nica para cada indivduo, uma assinatura digital no. Alm de estar relacionada a uma entidade emissora, uma assinatura digital
se relaciona a transao em questo, sendo nica para cada transao realizada pelo emissor
tendo sempre um prazo de validade determinado. Atualmente (2007) a aceitao jurdica da
assinatura digital no universal.

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

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

As notaes da tabela 3.5 [58] so as comumente encontradas na apresentao de


esquemas de assinaturas digitais.
Tabela 3.5. Assinatura digital - notaes

Notao

Descrio

M
MS
S
R
MR
R1
R
h
Mh

conjunto de elementos que formam o espao de mensagens


conjunto de elementos valor de hash relativo M
conjunto de elementos que formam o espao de assinaturas
funo que mapeia M S
imagem de R
funo inversa de R, S M
conj.de elem.que especificam a transformao:mensagemvalor de hash
funo unidirecional com M como domnio
imagem de h, chamado de espao de valores de hash

Para regulamentar a certificao de assinaturas digitais, possibilitando um certificado


digital com validade jurdica para transaes comerciais e governamentais, foi criado e aperfeioado ao longo do tempo, uma infra-estrutura de chaves pblicas, envolvendo padronizaes, normas, procedimentos, orientaes e leis.
A infra-estrutura de chaves pblicas combina aspectos tecnolgicos e jurdicos, sendo
utilizada para atribuir valor legal a documentos eletrnicos garantindo sua eficcia probatria
(no repdio) e se aplicando para documentos eletrnicos de diferentes tipos de informao
tais como texto, imagem ou voz.
No Brasil a infra-estrutura de Chaves Pblicas definida pela ICP-Brasil [42], sendo
responsvel pelo conjunto de tcnicas, prticas e procedimentos a serem implementados

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

58

pelas organizaes governamentais e privadas brasileiras com o objetivo de estabelecer os


fundamentos tcnicos e metodolgicos de um sistema de certificao digital baseado em
chave pblica. formada por uma AC-Raiz, ACs, ARs e ainda pelo CG ICP-Brasil.
Pelas leis brasileiras em vigor em 2007, toda AC deve utilizar-se de chave pblica
e privada RSA de 2048 bits de comprimento no mnimo, devendo este valor ser revisto
periodicamente, de acordo com as novas definies publicadas pelo CG ICP-Brasil. Existem
diversos tipos de certificados digitais, sendo classificados quanto necessidade de segurana
da assinatura digital e necessidade de sigilo. Independentemente do nvel de segurana ou
de sigilo, a AC deve assegurar que o tamanho das chaves das entidades a ela ligadas deva ser
de no mnimo 512 bits, sendo recomendvel o uso de pelo menos 1024 bits. O formato da
chave pblica deve seguir a padronizao PKCS #10 e o formato da mensagem a ser cifrada
com o algoritmo RSA deve estar de acordo com o padro PKCS #1 (ver seo 4.1, pgina
65).
O ITI a AC Raiz da ICP-Brasil [45]. Vinculado casa Civil da Presidncia da
Repblica, uma autarquia federal, sendo a primeira autoridade da cadeia de certificao,
executora das polticas de certificados e normas tcnicas e operacionais aprovadas pelo CG
ICP-Brasil, credenciando as ACs e as ARs atravs de superviso e auditorias. Atua ainda
sobre questes como sistemas criptogrficos e softwares livres, entre outras.
Nenhuma AC, nem mesmo a AC-Raiz tem acesso chave privada da entidade usuria
de certificados digitais. O par de chaves (pblica e privada) deve ser gerado pela entidade
usuria, a qual deve zelar por sua chave privada.
A credencial que a entidade usuria utilizar para acesso sua chave privada, que
deve ser mantida cifrada, dever utilizar como requisito mnimo uma senha, um dispositivo de controle de acesso em hardware ou uma medio biomtrica, sendo aconselhada a
combinao mnima de dois destes mtodos.
O algoritmo RSA utilizado na ICP-Brasil e o nico algoritmo de chave pblico
que pode ser utilizado pela AC-Raiz. A poltica de certificado da ICP-Brasil dispe de vrios
tipos de certificado conforme a necessidade do usurio. Porm, independente do nvel do
segurana do certificado, o comprimento do par de chaves, privada e pblica, da AC-Raiz
tem que ser RSA de, no mnimo, 2048 bits, devendo ser este valor revisto periodicamente,

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

59

de acordo com as definies estabelecidas pelo CG ICP-Brasil [42].

3.5.1. Ataques a Assinatura Digital


A fim de garantir a segurana da infra-estrutura de chaves pblicas, h a necessidade
de cuidados na distribuio dos pares de chaves (pblica e privada), evitando assim ataques
como o ataque MITM. Neste tipo de ataque, o invasor interage entre duas partes que estejam
se comunicando, sem que nenhuma das partes perceba o que est ocorrendo. Segue um
exemplo.
Suponha que um adversrio obtenha um par de chaves (pblica/privada) para utilizar
no ataque e que de alguma forma ele consiga trocar a chave pblica de A pela sua. O adversrio passa a monitorar a linha de comunicao. Quando for enviado para A um criptograma,
o adversrio intercepta o canal tendo acesso ao criptograma e no deixa que ele chegue ao
destinatrio A. O adversrio decifra o criptograma, altera a mensagem conforme sua convenincia e a envia para A com a chave pblica correta de A, de forma que A consiga abrir
a mensagem. Da mesma forma, quando A enviar uma assinatura digital, o adversrio intercepta a mensagem enviada e a substitui por outra que ele cria conforme sua convenincia e
divulga como se fosse assinada por A.
Para evitar esse tipo de ataque, as ACs operam como uma terceira parte confivel,
certificando a validade do par de chaves no momento da sua criao.
Outra necessidade tcnica para a segurana em assinaturas digitais a utilizao
de algum esquema de codificao, que processe algum tipo de codificao na mensagem
que ser assinada [3], tornando-a pseudo-aleatria e evitando assim, possveis ataques por
mensagem escolhida [8].

3.5.2. Funo de Hash


No h necessidade de se processar a assinatura digital da mensagem completa. Para
tornar o custo de tempo de processamento da assinatura digital mais eficiente, a assinatura
digital gerada a partir do valor de hash da mensagem.

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

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.

Como a funo de hash f no injetora, mensagens distintas podero, ser mapeadas


para o mesmo valor de hash, ao que d-se o nome de coliso, ou seja, x, y Zm
2 , x 6=
y, mas f (x) = f (y) [58].
Nas funes de hash criptogrficas, dado um valor de hash, intratvel encontrar-se
outra mensagem que origine o mesmo valor de hash: se o tamanho em bits do valor de hash
for n, a probabilidade de h(x) ser um valor em especfico de 2n e a probabilidade de
coliso de 2n/2 [58].
So propriedades bsicas de uma funo de hash criptogrfica:
Funo Unidirecional: vide definio 3.4.2;

Compresso da mensagem: dada uma entrada x de tamanho arbitrrio mas finito,


considerando |x| o tamanho mximo da entrada, a sada h(x) tem tamanho fixo de
|h(x)| bits, com |x| |h(x)|.

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 ,

x0 6= x tal que h(x) = h(x0 );


Coliso: intratvel encontrar duas entradas x 6= x0 ; x, x0 Zm
2 tais que h(x) =
h(x0 ).

3.6. Consideraes Finais


O sistema criptogrfico RSA, alm de utilizar vrios conceitos matemticos, engloba diversos conceitos de criptologia, como o de chave pblica, assinatura digital, funo
de hash, codificao de mensagem e protocolo criptogrfico. So realizadas constantes

CAPTULO 3. FUNDAMENTOS DE CRIPTOLOGIA E DE COMPUTAO

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.

Figura 4.1. Iniciando da esquerda: Shamir, Rivest, Adleman - 1977 [97]

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

CAPTULO 4. O ALGORITMO RSA

63

Figura 4.2. Iniciando da esquerda: Rivest, Shamir, Adleman - 2003 [98]

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:

(1) o ciframento e o deciframento de uma mensagem, utilizando o conceito de chave pblica;


(2) a gerao e a verificao de uma assinatura digital;
(3) a combinao de (1) e (2).

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.

CAPTULO 4. O ALGORITMO RSA

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.

Funes Unidirecionais com Segredo e o RSA


Todo algoritmo de chave pblica utiliza uma funo unidirecional com segredo (ver
definio 3.4.3), ou seja, uma funo na qual tratvel de se calcular y, sendo y = f (x), mas
intratvel1 o clculo de x = f 1 (y), a menos que se tenha conhecimento de determinado
parmetro (segredo).
O RSA utiliza trs funes unidirecionais com segredo:
1. Dificuldade da fatorao de nmero compostos grandes [58].
Funo exposta a ataques por fatorao (ver seo 6.7).

Dado dois nmeros primos grandes, p e q, tratvel se calcular n = pq, porm,


fatorar n a fim de descobrir p e q computacionalmente intratvel.

2. Dificuldade de se encontrar a raiz e-sima discreta [58].


Funo exposta a ataques por criptograma conhecido (ver seo 3.3).

Calcular uma exponenciao em mdulo n tratvel: c = me mod n, mas deter


minar m = e c mod n, computacionalmente intratvel, a menos que se tenha
conhecimento do inverso multiplicativo de e mod (n) ou da fatorao de n.

3. Dificuldade de se calcular logaritmos discretos mdulo n [79].


Funo exposta a ataques por mensagem conhecida (ver seo 3.3).

Dado que m = cd mod n, tem-se que logc m = logc cd = d, ento d = logc m.


1

Exceto para um nmero pequeno e finito de valores.

CAPTULO 4. O ALGORITMO RSA

65

Na dcada de 90, o problema do logaritmo discreto foi muito pesquisado porm,


os mais eficientes algoritmos para clculo de logaritmos discretos possuem complexidade computacional de tempo de processamento semelhante aos algoritmos de
fatorao mais eficientes no momento [73]. Geralmente, o logaritmo discreto em um

grupo arbitrrio de tamanho n possui complexidade O( n) [69].

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

Tabela 4.1. PKCSs relacionados ao RSA

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

Segue a nomenclatura utilizada neste texto:


c : bloco de texto cifrado;
C : texto cifrado (C = {c1 , c2 , ..., c });

verso
data
2.1
14/06/2002

1.2
01/11/1993
1.7
26/05/2000

CAPTULO 4. O ALGORITMO RSA

66

m : bloco de texto legvel;


M : texto legvel (M = {m1 , m2 , ..., m });
s : bloco de texto assinado digitalmente;
S : texto (valor de hash) assinado digitalmente (S = {s1 , s2 , ..., s });
Mdulo RSA: n;
Fatores primos de n : p e q;
Chave pblica: (e, n);
Chave privada: (d, n);
Expoente pblico (de ciframento): e;
Expoente privado (de deciframento): d;
Hash: funo de hash.

4.2. Processamento do Algoritmo RSA


Ciframento por Substituio em Blocos
Uma mensagem M cifrada por substituio em blocos de tamanho fixo com k bits:
M = {m1 , m2 , ..., mz }, onde mi um bloco de k bits.
Cada bloco mi deve ter um valor menor que o valor do mdulo n, e portanto, menor
ou igual a lg n bits, mas no pequeno o suficiente para sofrer ataques de fora bruta. Se o
tamanho de k bits do bloco mi fosse pequeno, um ataque de fora bruta seria possvel pela
criao de um dicionrio contendo os pares ordenados (mi , ci ), com ci = (mi )e mod n.
Esta variao de ataque de fora bruta no testa todas as chaves possveis, mas verifica
no dicionrio criado todos os criptogramas possveis encontrando sua respectiva mensagem. O custo computacional deste ataque de 2k ciframentos ci = mei mod n, ou seja
O(2k (lg e)(lg 2 n)) operaes binrias. Um exemplo de bloco suscetvel a este ataque seria o
composto por um caractere ASCII (1 byte) ou por um caractere Unicode (2 bytes). Como o
mdulo n tem valores na ordem de 1024 bits ou maior, o tamanho do bloco tem no mnimo
1023 bits e com |mi | = 1023 bits no tratvel um ataque de fora bruta utilizando um
dicionrio mensagem/criptograma.

CAPTULO 4. O ALGORITMO RSA

67

Para possibilitar o deciframento correto necessrio que o tamanho em bits do bloco


seja menor que o tamanho em bits do mdulo n. Para otimizar o tempo de processamento e o
espao de armazenamento, necessrio que o tamanho do bloco em bits seja o mais prximo
possvel do tamanho em bits do mdulo n, desta forma, se k bits for o tamanho mximo do
bloco e w bits for o tamanho de n, deve-se assegurar k = w 1.
O mdulo n o produto de 2 nmeros primos mpares, portanto n nunca ser potncia
de 2, o que garantiria que n 1 tivesse 1 bit a menos que n. Segue um exemplo de definio
do tamanho do bloco, tabela 4.2, com valor terico para o mdulo n, que por ser pequeno
possibilita melhor visualizao. Para n = 35 (5 7), o valor do bloco tem que ser menor
que 35. O mdulo n = 35 1000112 em binrio logo w = 6. Como um bloco pode ser
no mximo 34 (1000102 ), em princpio k = 6, mas no haveria a possibilidade de que fosse
cifrado qualquer bloco com 6 bits o que dificultaria o controle e portanto k = w 1 = 5.

Tabela 4.2. Definio do tamanho do bloco RSA

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

Sempre que o tamanho da codificao do texto legvel no proporcionar uma diviso


exata pelo tamanho do bloco legvel, haver a necessidade de se completar o tamanho do
ltimo bloco, conforme um padro a ser adotado entre as partes envolvidas, por exemplo,
preenchendo-o com bits nulos.

Processo de Criao das Chaves


Conforme o artigo original de criao do RSA [74], para a criao das chaves RSA
so escolhidos dois nmeros primos grandes e distintos: p e q. O custo de tempo de processamento para a escolha destes primos depende do algoritmo de escolha dos primos (ver
apndice A), mas de qualquer forma, o custo deve ser polinomial no tamanho dos primos.
Computa-se o mdulo RSA, tambm chamado simplesmente mdulo: n = pq.
Calcula-se: (n) = (p 1)(q 1).

CAPTULO 4. O ALGORITMO RSA

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.

CAPTULO 4. O ALGORITMO RSA

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).

Exemplo Numrico Terico


Segue um exemplo numrico terico, considerando que:
m - bloco de mensagem,
c - bloco de criptograma.
1. Criao das chaves
p = 11
q = 13
n = 143
(n) = 120
e=7
..............................................................
Por meio do algoritmo de Euclides estendido calcula-se o valor de d
(tabela 4.3).
A entrada para este clculo a = 120 ((n)) e b = 7 (expoente e). A
execuo pra no passo 7 pois b = 0, e retorna mdc(a, b) = 1, x = 1
e y = 17 (pois a = 1, x2 = 1 e y2 = 17), obtendo a equao
diofantina 120 1 + 7 17 = 1.
Tabela 4.3. Clculo de d com base em e e em (n)

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

CAPTULO 4. O ALGORITMO RSA

70

Obtm-se que, o inverso multiplicativo de 7 -17. Como o RSA opera


com inteiros positivos, utiliza-se o menor inteiro positivo congruente
a 17:

17 103 (mod 120)


..............................................................
d = 103
chave pblica (e, n) = (7, 143)
chave privada (d, n) = (103, 143)
chave privada CRT (p, q, d) = (11, 13, 103).

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.

4.3. Anlise do Algoritmo RSA


Prova de Funcionalidade
Considerando-se c = me mod n o ciframento de um bloco m, 0 < m < n, com
ed 1 mod (n), existe um inteiro k, tal que ed = 1 + k(n) e, n = pq.
O valor de m pode ser ou no mltiplo de p.

CAPTULO 4. O ALGORITMO RSA

71

Caso m no seja mltiplo de p, mdc(m, p) = 1, pelo teorema de Fermat sabe-se que:


mp1 1 mod p.

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.

CAPTULO 4. O ALGORITMO RSA

72

De forma anloga tem-se que, para qualquer valor de m:


med m mod q.

Como p e q so primos distintos e n = pq, ento:


med m mod n.

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.

CAPTULO 4. O ALGORITMO RSA

73

4. Encontrar um expoente equivalente ao expoente privado d


Pode-se tentar encontrar um expoente privado d0 que seja equivalente ao expoente
privado d, ou seja, d0 d (mod (n)), mas seria to intratvel quanto encontrar o
expoente d.

5. Calcular as razes e-simas mdulo n


Resta ainda a possibilidade de quebrar o sistema sem conhecer (n), encontrando
m a partir de c = me mod n, ou seja, calculando-se as razes e-simas mdulo n

(n = e c mod n), o que tambm computacionalmente intratvel, exceto para um


nmero pequeno e finito de valores [58].

4.4. Assinatura Digital RSA


Prazo de Validade
Em assinaturas digitais, necessrio estabelecer um prazo de validade de cada par
de chaves para preveno contra tentativas de fatorao do mdulo n a longo prazo. O
tempo de validade deve ser muito menor do que o tempo esperado para que se consiga sua
fatorao o que indica que, o comprimento do mdulo n deve ser suficientemente grande
para tornar irrisrias as chances de se conseguir sua fatorao antes do trmino da validade.
A data de validade de uma chave acompanha a chave pblica num certificado ou num
repositrio. O sistema de verificao de assinatura deve comprovar a validade da chave e
no aceitar informaes assinadas por uma chave fora da validade.

Processo de Utilizao das Chaves


Na assinatura digital via RSA com ciframento, a ordem de aplicao dos expoentes
importante, no podendo ser alterado. Caso contrrio, haveria uma assinatura sem ciframento, portanto sem confidencialidade e o texto assinado seria uma mensagem cifrada para
determinado usurio. Uma terceira entidade poderia, mesmo desconhecendo o contedo da
mensagem cifrada, assin-la e envi-la para algum.
Considerando que:
Ms = h(M );
Ms : valor de hash (Ms = {ms1 , ms2 , ..., msk });

CAPTULO 4. O ALGORITMO RSA

74

ms : bloco de valor de hash.


Como a sada de uma funo de hash tem de 128 256 bits, para n > 2256 (ou seja,
para qualquer par de chaves com tamanho seguro), Ms = ms .

Exemplo 1 (ms = 15):


Assinatura Digital RSA:
chave pblica (e, n) = (7, 143);
chave privada (d, n) = (103, 143);
s = mds (mod n) = 15103 (mod 143) = 141.
Verificao da Assinatura Digital RSA:
ms = se (mod n) = 1417 (mod 143) = 15.
Exemplo 2 (o valor de hash da mensagem de A, msA = 15, enviado cifrado e
assinado digitalmente para B):

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);

CAPTULO 4. O ALGORITMO RSA

75

VB = (sA (m))eA mod nA = 1417 mod 143 = 15 = msA .

Ciframento em Blocos na Assinatura Digital


Sabe-se que o tamanho binrio do bloco RSA deve ser menor que o tamanho binrio
do mdulo n.
Sabe-se que se mdc(m, n) 6= 1, ento mdc(m, p) 6= 1 e/ou mdc(m, q) 6= 1, e neste
caso mdc(c, n) 6= 1 tambm, e tanto n como c so ambos mltiplos de p e/ou ambos mltiplos de q. Desta forma, ao se particionar a mensagem M em blocos m de tamanho menor do
que n para processar uma assinatura digital, deve-se evitar que (m, n) 6= 1, evitando assim,
um possvel ataque ao criptograma.
A utilizao do algoritmo RSA para Assinatura Digital pode necessitar de outro
cuidado quanto a definio do tamanho do bloco.
Na assinatura digital RSA sem incluso da confidencialidade da informao, no h
problema pois, no h uma dupla exponenciao RSA, mas caso haja uma assinatura digital
com ciframento RSA, o mdulo ns da assinatura no pode ser maior do que o mdulo nc do
ciframento, pois neste caso haveria a necessidade de uma redefinio do tamanho do bloco.
No exemplo 2, o valor de hash de uma mensagem, msA = 15, cifrada e assinada
digitalmente por A foi enviada para B. Caso haja a necessidade de se enviar msB = 12,
tambm cifrada e assinada digitalmente por B para A, tem-se:

sB (m) = (msB )dB mod nB = 12157 mod 2773 = 2042


cA (sB (m)) = (sB (m))eA mod nA = 20427 mod 143 = ???.

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

CAPTULO 4. O ALGORITMO RSA

76

Sugere-se a determinao de um valor limiar h (como por exemplo, h = 10199 ). Cada


usurio de assinatura digital dever ter um par de chaves para assinatura digital, com
ns menor do que h e outro par de chaves para ciframento, com nc maior do que h.
Desta forma, como a assinatura (ns < h) sempre realizada antes do ciframento
(nc > h), e o deciframento (nc > h) sempre realizado antes da verificao da
assinatura (ns < h), nunca haver a necessidade de redefinio do tamanho do bloco.
Esta soluo dobra o custo computacional de espao em memria para o armazenamento de chaves pblicas.

2. Critrio na escolha do mdulo n e sua utilizao


Sugere-se a determinao de um valor limiar h (como por exemplo, h = 10199 ).
Cada usurio dever ter um nico par de chaves, com o valor do mdulo n estando
entre h e 2h. Uma mensagem codificada em blocos de mensagem menores que
h e cifrada normalmente: ci = mei mod n. Caso o criptograma seja maior que h
(ci > h), o ciframento deve ser novamente realizado (reciframento) e repetido at
que o criptograma calculado seja menor que h: c0i = cei mod n. Da mesma forma,
o deciframento deve ser repetido at que a mensagem obtida seja menor que h. Se
o valor atribudo a n for prximo de h, o reciframento ser raro. No haver risco
de um reciframento infinito pois, na pior das hipteses, devido ao ciframento ser
realizada num grupo cclico e finito, o criptograma retornar a mensagem inicial.
Esta soluo pode aumentar significativamente o custo computacional de tempo para
o processamento de uma assinatura digital.

No livro Handbook of applied cryptography [58], seo 11.3.3, apresentada


uma terceira soluo, com a escolha cuidadosa dos primos p e q, mas que no elimina o
problema, apenas diminui sua probabilidade. Na prtica, o RSA no costuma ser utilizado
para ciframento de uma mensagem assinada digitalmente, habitualmente utilizado um algoritmo criptogrfico simtrico, devido ao custo computacional de tempo de processamento
inferior aos algoritmos criptogrficos assimtricos.

CAPTULO 4. O ALGORITMO RSA

77

4.5. Anlise Matemtica dos Parmetros no RSA


Seguem anlises sobre o comportamento dos parmetros RSA.

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.

Desta forma: (n) = pq (p + q 1) = pq p q + 1 = (p 1)(q 1).

CAPTULO 4. O ALGORITMO RSA

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)

Substituindo-se os valores de n e (n) na equao quadrtica em p obtida, pode-se calcular


os valores de p e q.
Por exemplo, para n = 143 e

(n) = 120, p2 24p + 143 = 0. Pela frmula

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

Caso um criptoanalista tenha acesso ao valor de (n), ele no poderia substituir o


(n)
valor de (n) pelo de (n) em (4.1). Mas como o valor de (n) =
e
mdc(p 1, q 1)
como mdc(p 1, q 1) tem que ser pequeno (sendo no mnimo 2), obter o valor de (n)
tratvel e assim poder-se-ia aplicar o mesmo ataque.

Expoentes

CAPTULO 4. O ALGORITMO RSA

79

O expoente pblico e o expoente privado d, pertencem ao conjunto Z(n) . Dado um


determinado mdulo n, o nmero de pares de expoentes pblico/privado disponveis igual
((n))
.
a
2
Caso o expoente pblico e fosse escolhido aleatoriamente sem que pertencesse a
Z(n) , o deciframento no seria assegurado, pois dois valores distintos poderiam ter o mesmo
valor de ciframento, ou seja, no haveria necessariamente um inverso para o expoente
pblico.
Segue um exemplo, com valores pequenos para melhor visualizao, mas convm
ressaltar que, apesar do perfeito funcionamento do algoritmo com valores pequenos, a segurana do RSA exige valores grandes.
Assumindo: n = 15 = (3 5), tem-se que: Z(n) = Z(15) = Z8 = {1, 3, 5, 7}.
Caso fosse escolhido o expoente pblico e = 4, como 4 no pertence a Z8 , teramos
tanto o nmero 3 como o nmero 9 cifrado como 6: 34 mod 15 = 6; 94 mod 15 = 6.
Isto ocorre porque nem todos os nmeros possuem inversa multiplicativa mdulo
15, mas apenas os que pertencem a Z8 , ou seja, apenas os nmeros que so relativamente
primos a 8 ((15)).

Clculo do Inverso Multiplicativo


Dado o expoente pblico e, como o expoente privado d a inversa multiplicativa de
e mod (n), ele calculado, a partir dos valores de e e de (n), pelo algoritmo de Euclides
estendido.
Pode-se afirmar tambm que, dado e, d = e((n))1 mod (n), como demonstrado
a seguir:
Pelo teorema de Euler tem-se que, se e Z(n) , ento e((n)) 1 mod (n).
Analisando:
e((n)) 1 mod (n);
e((n)) e1 e1 1 mod (n);
e(((n))1) e 1 mod (n).

CAPTULO 4. O ALGORITMO RSA

80

O primeiro fator (e(((n))1) ) a inversa multiplicativa do segundo fator (e), o qual


o expoente pblico.
No exemplo numrico da seo 4.2, onde e = 7 e (n) = 120, foi utilizado o
algoritmo de Euclides estendido para se calcular d = 103. O mesmo valor para d pode ser
obtido com o clculo:
d = e((n))1 mod (n) = e(120)1 mod 120 = 7321 mod 120 = 731 mod 120 = 103.
Analogamente, dado d, e = d((n))1 mod (n) = 10331 mod 120 = 7.

Paridade dos Expoentes


Visto que p e q so primos grandes, ambos so nmeros mpares, assim como n.
Como (n) = (p 1)(q 1), ento (n) um nmero composto par e divisvel
por 4.
Como os expoentes devem ser relativamente primos a (n), o qual par, ento, tanto
o expoente e, como o expoente d, so nmeros mpares.

Automorfismo Multiplicativo no RSA


A funo RSA apresenta a propriedade de homomorfismo multiplicativo [58]:
Seja f (x) = me mod n, conforme especificaes do algoritmo RSA.
f (yz mod n) = f (y)f (z) mod n;
f 1 (yz mod n) = f 1 (y)f 1 (z) mod n.
Genericamente:
k
k
Y
Y
f ( xi mod n) =
f (xi ) mod n.
i=1

i=1

Essa propriedade explorada em diversos ataques segurana do algoritmo RSA


e para evitar esta ocorrncia, antes do ciframento, a mensagem RSA codificada, ou seja,

CAPTULO 4. O ALGORITMO RSA

81

modificada para uma mensagem pseudo-aleatria com a utilizao de uma codificao de


mensagem, como ser apresentada mais a frente.

Ciclos da Exponenciao Modular


A escolha do expoente pblico e = 0 ou e = 1, inviabilizaria o algoritmo visto que
o resultado seria sempre c = 1 (para e = 0) ou sempre a prpria mensagem, c = m (caso
e = 1).
Dada a chave pblica (e, n), o expoente pblico e congruente mdulo (n) a qualquer expoente pblico e0 = k(n) + e, com k sendo um nmero inteiro. Por exemplo,
assumindo-se o expoente pblico e = 1, tem-se 1 mod (n) k(n) + 1 mod (n), assumindo o mdulo n = 15 tem-se 1 mod 8 8k + 1 mod 8.
Devido caracterstica cclica apresentada na exponenciao modular (ver seo
2.10), um expoente pblico e e a sua classe de equivalncias mdulo (n), produzem o
mesmo ciframento, porm, o valor do expoente pblico e, se limita, por definio, a valores
menores que (n) pois, para a escolha acima de (n), sempre existe um valor congruente
mdulo (n), menor que (n).
A visualizao desta caracterstica cclica pode ser observada na tabela 2.9. As linhas representam um bloco de mensagem, m, cifrado (base da exponenciao) e as colunas
representam o expoente pblico e. As interseces representam a funo c = me . Nesta
tabela, o mdulo n igual a 15, com o bloco m a ser cifrado variando de 1 a 14 e o expoente
pblico e, variando de 1 a 14. Como neste caso o mdulo n igual a 15, tem-se que (15)
8 pois, Z15 = {1, 2, 4, 7, 8, 11, 13, 14}, 8 elementos. Pode-se observar uma rbita existente
para qualquer base no grupo Z15 , que termina em (15).
Na tabela 2.7, tambm pode ser observada a caracterstica cclica da exponenciao
modular, porm no um exemplo de exponenciao mdulo RSA, pois 5 um nmero
primo.

Pontos Fixos

CAPTULO 4. O ALGORITMO RSA

82

Definio 4.5.1 Ponto Fixo. Dada a funo f : A B, um ponto fixo um valor x A


tal que f (x) = x.

Dada a funo RSA: f (x) = me mod n, com m, e e n conforme especificaes


do algoritmo, no ciframento RSA alguns blocos de mensagem m so pontos fixos pois,
f (m) = me mod n = m = c, como por exemplo m = 0, m = 1 e m = n 1.
Dado um nmero primo p, uma funo f (x) = x3 mod p ser ponto fixo, nas bases
x de ordem 2, se:
x 0 mod p;
x 1 mod p;
x 1 mod p.
Por exemplo, para f (x) = x3 mod 5 tem-se:
03 0 mod 5;
13 1 mod 5;
43 4 mod 5.

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;

CAPTULO 4. O ALGORITMO RSA


m 1 mod p e m 1 mod q;
m 1 mod p e m 1 mod q;
m 1 mod p e m 0 mod q;
m 1 mod p e m 1 mod q;
m 1 mod p e m 1 mod q.

Por exemplo, para f (m) = m3 mod 15 tem-se:


m 0 mod 3 (m {0, 3, 6, 9, 12}) e m 0 mod 5 (m {0, 5, 10}):
m mod 15 = 0;
m 0 mod 3 (m {0, 3, 6, 9, 12}) e m 1 mod 5 (m {1, 6, 11}):
m mod 15 = 6;
m 0 mod 3 (m {0, 3, 6, 9, 12}) e m 1 mod 5 (m {4, 9, 14}):
m mod 15 = 9;
m 1 mod 3 (m {1, 4, 7, 10, 13}) e m 0 mod 5 (m {0, 5, 10}):
m mod 15 = 10;
m 1 mod 3 (m {1, 4, 7, 10, 13}) e m 1 mod 5 (m {1, 6, 11}):
m mod 15 = 1;
m 1 mod 3 (m {1, 4, 7, 10, 13}) e m 1 mod 5 (m {4, 9, 14}):
m mod 15 = 4;
m 1 mod 3 (m {2, 5, 8, 11, 14}) e m 0 mod 5 (m {0, 5, 10}):
m mod 15 = 5;

83

CAPTULO 4. O ALGORITMO RSA

84

m 1 mod 3 (m {2, 5, 8, 11, 14}) e m 1 mod 5 (m {1, 6, 11}):


m mod 15 = 11;
m 1 mod 3 (m {2, 5, 8, 11, 14}) e m 1 mod 5 (m {4, 9, 14}):
m mod 15 = 14.

Pode-se visualizar que so 9 bases distintas.


Como uma mensagem m ponto fixo se e somente se me mod n = m, ento me mod
p = m e me mod q = m. Pode-se reescrever a mesma afirmao de outra forma: uma
mensagem m ponto fixo se e somente se me1 1 mod p e me1 1 mod q ou me1
0 mod p e me1 0 mod q. me1 1 mod p tem mdc(e-1, p-1) solues e me1
0 mod p tem 1 soluo. Analogamente, me1 1 mod q tem mdc(e-1, q-1) solues e
me1 0 mod q tem 1 soluo. Desta forma, o nmero total de pontos fixos calculado
por [6]:
(1 + mdc(e 1, p 1))(1 + mdc(e 1, q 1)) (1 + 2)(1 + 2) = 9.

Visto que e 1, p 1 e q 1 so sempre pares, o nmero de pontos fixos no


mnimo 9. Desde que o mdc(e 1, p 1) e/ou o mdc(e 1, q 1) no apresentem valores
grandes, o nmero de pontos fixos ser pequeno e no apresentar riscos a segurana do
algoritmo.

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.

Fatorao do Mdulo RSA atravs da Chave Privada

CAPTULO 4. O ALGORITMO RSA

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

Sabe-se que g K = 1 mod n, para qualquer g Zn . Portanto g 2 raiz quadrada de


1 mod n.
1 tem 4 razes quadradas mdulo n, sendo que duas delas so 1 e 1 e as outras
duas so x, onde x = 1 mod p e x = 1 mod q. A fatorao realizada calculando-se
mdc(x 1, n).

Por exemplo, dado o par de chaves (e, n) = (3, 15) e (d, n) = (3, 15) tem-se:
K = 3 3 1 = 8.
8

7 Zn , ento: 7 2 mod 15 = 74 mod 15 = 2401 mod 15 = 1.


Desta forma, x2 = 2401, x = 49. O mdc(49 1, 15) = 3, ento os fatores primos
de 15 so 3 e 5.

4.6. Consideraes finais


Para a implementao e utilizao segura do algoritmo RSA, de extrema importncia os cuidados que seguem:
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.

2. Os nmeros primos p e q devem ter aproximadamente o mesmo comprimento em


bits, para evitar ataques com algoritmos de fatorao no nmero primo de menor
tamanho (ver seo 6.7).
Para aplicaes atuais so aceitveis mdulos n com 1024 bits. Nestes casos, os
primos p e q devem ter 512 bits cada um. Para novas aplicaes recomendvel a

CAPTULO 4. O ALGORITMO RSA

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).

3. A diferena |p q| no pode ser pequena, pois se p prximo de q, ento p n.

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).

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).

CAPTULO 4. O ALGORITMO RSA

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.

Existem outros cuidados a serem considerados, os quais sero detalhados ao longo


dos prximos captulos.

Captulo 5
Variaes
Problemas como logaritmo discreto possuem inmeras faces diferentes,
havendo muito a ser descoberto.
(Kevin S McCurley, matemtico)

Conforme definio 3.2.10, pgina 45, uma variao de um algoritmo criptogrfico,


consiste em uma modificao realizada na definio original deste, a fim de trazer algum
benefcio ao processo, seja este de segurana, de tempo de processamento, de espao de
armazenamento em memria ou outras vantagens.
Uma variao pode ocorrer em diferentes partes do algoritmo e atingir objetivos distintos.
Devido ao grande tempo de existncia do RSA, desde 1977, surgiram variaes da
definio inicial, sendo que algumas, foram adotadas como padro em normas tcnicas.
Segue abaixo a lista das variaes apresentadas:

5.1. RSA utilizando o Expoente Universal;


5.2. RSA com Chave Privada Particionada, Coutinho, 1997;
5.3. RSA em Lote, Fiat, 1989;

88

CAPTULO 5. VARIAES

89

5.4.1. RSA CRT pelo Algoritmo de Gauss, Quisquater-Couvreur, 1982;


5.4.2. RSA CRT pelo Algoritmo de Garner;
5.4.3. RSA CRT pelo Algoritmo ART;

5.5. MRSA, Collins, Hopkins, Langford e Sabin, 1998;

5.6. RSA P k Q, Takagi, 1998;

5.7. DRSA, Pointcheval, 1999;


5.7.1. DRSA por Padhye, 2005;

5.8. RSA Redistribudo, Wiener, 1990;


5.8.1. MRSA Redistribudo, Paixo, 2003;
5.8.2. DRSA por Padhye Redistribudo, 2005;

5.9. RSA Desbalanceado, Shamir, 1995;

5.10. Twin RSA, Lenstra e Weger, 2005.

5.1. RSA utilizando o Expoente Universal


Esta variao utiliza a Funo de Carmichael (ver definio 2.9.5), denotada por
(n), tambm chamada de expoente universal de n e foi incorporada ao PKCS #1, como
padro para o clculo do expoente de deciframento d, sendo que o valor de (n) passou a
substituir o valor de (n) para o clculo do inverso multiplicativo do expoente e.
A funo de Carmichael (n) retorna o menor inteiro tal que T (n) 1 mod n, para
todo T relativamente primo com n. Como o mdulo n do RSA o produto de dois nmeros
inteiros primos p e q, tem-se (n) = mmc(p 1, q 1).
Clculo do expoente de deciframento d, pela definio original:
d(n) a inversa multiplicativa de e mod (n), tal que ed(n) = 1 mod (n).

CAPTULO 5. VARIAES

90

Clculo do expoente de deciframento d, utilizando o expoente universal:


d(n) a inversa multiplicativa de e mod (n), tal que ed(n) = 1 mod (n).
A complexidade computacional do deciframento utilizando d(n) ou d(n) a mesma:
O((lg d)(lg 2 n)) operaes binrias. Observa-se que (n) um divisor de (n), e desta
forma, pode-se obter um expoente de deciframento menor que o original, resultando em
um deciframento mais eficiente. Se p e q so escolhidos cuidadosamente, espera-se que
mdc(p 1, q 1) seja pequeno, assim sendo (n) e (n) devero ter valores em nmero de
bits muito prximos ou iguais.
Esta variao no altera a segurana do algoritmo visto que, descobrir (n) sem
fatorar n intratvel tanto quanto se descobrir (n) sem fatorar n.
Utilizando o exemplo numrico apresentado no processo de criao das chaves (ver
seo 4.2), tem-se a modificao a seguir:
p = 11,
q = 13,
n = 143,
e = 7,
(n) = 120, d(n) = 103,
(n) = 60, d(n) = 43.
O ciframento e o deciframento no se alteram.
Como (n)1 divide (n) e como pelas caractersticas da funo de Carmichael ele
um expoente que inicia um ciclo para qualquer base b, d(n) pode ser utilizado como substituto de d(n) , apesar de ser menos eficiente pois, para qualquer valor possvel para e:

e d(n) e d(n) 1 mod (n).

(5.1)

O expoente d(n) no pode ser utilizado como substituto de d(n) pois para qualquer
valor possvel para e:
1

(n) o mmc((p), (q)), possuindo todos os fatores primos de (p) e de (q).

CAPTULO 5. VARIAES

91

e d(n) 1 mod (n)

e d(n) 6 1 mod (n).

(5.2)

Segue um exemplo numrico terico, considerando n = 61063 (227269) e portanto


(n) = 60568 e (n) = 30284. Para e = 3, tem-se o valor d(n) = 40379 e d(n) = 10095.
3 10095 3 40379 1 mod 30284
3 40379 1 mod 60568

(de acordo com 5.1);

3 10095 6 1 mod 60568

(de acordo com 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.

5.2. RSA com Chave Privada Particionada


Caso haja necessidade de se particionar a chave privada, possvel faz-lo conforme
segue utilizando-se do CRT.
Assumindo-se uma aplicao que necessite que a chave privada seja particionada
entre Z usurios, de modo que cada usurio seja responsvel por uma subchave privada
e qualquer z usurios, com z sendo um subconjunto de Z, conseguem ter acesso chave
privada com a unio de suas subchaves, mas para menos de z usurios intratvel o acesso
chave privada [25].
Seja d o valor do expoente de deciframento. Escolhe-se um conjunto L de Z inteiros
positivos, primos entre si dois a dois. Seja o produto dos z menores nmeros de L e o
produto dos z 1 maiores nmeros de L. Esse conjunto tem limiar z se > d > .
Essa condio implica que o produto de z ou mais elementos de L seja maior que
e o produto de menos de z elementos seja sempre menor que .
O conjunto D ser formado pelos pares (l, dl ) onde l L e dl = d mod l.
Observa-se que h a necessidade de d > l, para qualquer l pertencente a L, de forma
que, dl < d para qualquer l L.

CAPTULO 5. VARIAES

92

Supondo-se que sejam conhecidas t subchaves com t z, tem-se D =


{(l1 , d1 ), (l2 , d2 ), . . . , (lt , dt )}.
Resolve-se o sistema de congruncias:

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:

L deve ter 5 elementos, L = {11, 13, 17, 19, 23};


para atender ao limiar z = 2, 23 < d < 143 (d = 30);
os pares de subchaves so: D = {(11, 19), (13, 17), (17, 13), (19, 11), (23, 7)}.
para acesso a chave privada completa atravs das subchaves (17, 13) e (23, 7), aplicase o CRT no sistema de congruncias: d 13 mod 17; d 7 mod 23: 30 d mod
391. Obtm-se d = 30.

CAPTULO 5. VARIAES

93

5.3. RSA em Lote


A variao denominada RSA em Lote foi proposta por Fiat em 1989 [32], o qual observou que, utilizando-se expoentes pblicos pequenos, possvel decifrar dois criptogramas
com o custo de aproximadamente um criptograma [66].
A gerao de chaves e o ciframento nesta variao so os mesmos do RSA original,
levando-se em conta que:
os expoentes pblicos devem ser pequenos, caso contrrio o deciframento levar mais
tempo;
os expoentes pblicos devem ser distintos;
o mdulo n deve ser o mesmo para as duas chaves pblicas.
Dadas as mensagens m1 e m2 a serem cifradas respectivamente com as chaves pblicas (e1 , n) e (e2 , n). Dadas as respectivas chaves privadas (d1 , n) e (d2 , n). Como d1 a
inversa multiplicativa de e1 mdulo (n) e d2 a inversa multiplicativa de e2 mdulo (n),
devido a propriedade de homomorfismo existente nestas inversas multiplicativas, sabe-se que
a inversa multiplicativa de (e1 e2 ) (d1 d2 ) mdulo (n). Supondo-se c1 = (m1 )e1 mod n
m
m
e c2 = (m2 )e2 mod n, temos m1 =
e m2 =
. Observa-se que m = m1 m2 . Com
m2
m1
estas informaes consegue-se obter o ciframento acelerado de m1 e de m2 utilizando um
algoritmo que percorre uma estrutura de rvore binria completa.
Por exemplo, para as chaves pblicas (3, n) e (5, n) tem-se que c3
1 = m1 mod n e
c25 = m2 mod n e m = (c31 c52 )15 mod n. Calcula-se:
6

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 =

Segue exemplo numrico terico:


p = 17;
q = 23;
n = 391;
e1 = 3;
e2 = 5;
d1 = 235;
d2 = 141;
chave pblica 1: (e1 , n1 ) = (3, 391);
chave pblica 2: (e2 , n2 ) = (5, 391);
chave privada 1: (d1 , n1 ) = (235, 391);
chave privada 2: (d2 , n2 ) = (141, 391);
m1 = 382;
m2 = 168.

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].

5.4. RSA CRT


5.4.1. RSA CRT pelo Algoritmo de Gauss
O RSA CRT, tambm conhecido como RSA QC, devido ao nome dos autores
Quisquater-Couvreur, foi anunciado em 1982 [70] e atualmente faz parte do padro PKCS #1.
O RSA CRT uma tcnica utilizada para deciframento eficiente do RSA que faz uso
do teorema chins do resto. O tempo de execuo do deciframento pelo RSA CRT cerca de
quatro vezes mais rpido do que o tempo gasto pelo RSA original [66] e utiliza uma chave
privada composta pela tripla (p, q, d).
Infelizmente, o RSA CRT no pode ser utilizado para tornar o ciframento mais rpido
porque a alterao que seria necessria na chave pblica exporia a fatorao do mdulo n.
Dado um par de chaves RSA, para qualquer valor de m < n sabe-se que:
med m mod n.

Pode-se afirmar tambm que:


med m mod p

mp m mod p

(5.5)

med m mod q

mq m mod q.

(5.6)

CAPTULO 5. VARIAES

96

As trs congruncias so verdadeiras porque para k(n) + 1, onde k um inteiro


positivo, pode-se escrever a mesma equao de formas diferentes:

ed = 1 + k(p 1)(q 1) = 1 + k(n)


med m1+k(n) m mod n

ed = 1 + k(p 1)(q 1) = k 0 (p 1) + 1 = k 0 (p) + 1


0

med mk (p)+1 mp mod p

00 (q)+1

mq mod q

de 5.5

onde k 0 = k(q)

ed = 1 + k(p 1)(q 1) = k 00 (q 1) + 1 = k 00 (q) + 1


med mk

(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

So utilizados dp e dq em substituio ao expoente d, por serem equivalentes na


aplicao e exigirem um custo computacional menor.
O RSA CRT pode ser utilizado na variao MRSA, a qual apresenta mais de dois
fatores primos distintos, a qual ser analisada no decorrer deste captulo (ver seo 5.5).
Algoritmo Computacional 5 Algoritmo de Gauss.
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 := 1 at k faa:
1.1. Mi := ( pni )1 mod pi ;
2. m := 0
3. Para i := 1 at k faa:
3.1. u := mi pni Mi mod pi ;
3.2. m := m + u mod n;
4. Retorna m.

5.4.2. RSA CRT pelo Algoritmo de Garner


Esta variao do RSA CRT no utiliza o algoritmo de Gauss para aplicar o CRT,
substituindo-o pelo algoritmo de Garner [35], e desta forma, aumentando a eficincia do
deciframento no RSA CRT [58, 66]. Por ser mais eficiente do que o algoritmo de Gauss, o
algoritmo de Garner foi adotado como padro para o RSA CRT.
Pelo algoritmo de Garner, para n = pq (2 fatores primos) tem-se:

m = mp + (((mq mp )(p1

mod q)) mod q)p.

Segue o deciframento do exemplo numrico apresentado na seo 4.2, com o RSA


CRT pelo algoritmo de Gauss e pelo algoritmo de Garner, utilizando a chave privada
(11, 13, 143):

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.

Especificao PKCS#1 para o RSA CRT


O PKCS #1 especifica a chave privada utilizada para o RSA CRT (pelo algoritmo de
Garner), como uma variao da tripla (d, p, q) apresentada anteriormente, a fim de apresentar
os clculos iniciais j processados. Esta variao composta por:
Uma quntupla de elementos inteiros positivos:
(p, q, dP, dQ, qInv),
onde:
(1) p o primeiro fator primo do mdulo n;
(2) q o segundo fator primo do mdulo n;
(3) dP = dp ;
(4) dQ = dq ;
(5) qInv a inversa multiplicativa de q mod p.
Uma seqncia opcional de k triplas de elementos inteiros positivos que caso exista,
com k sendo o nmero total de fatores primos do mdulo n. Esta seqncia pode ser
um conjunto vazio (quando k = 2):

(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.

Ganho terico de velocidade do RSA CRT


Supondo que o mdulo n possui kt bits (ver variao MRSA, seo 5.5) e que cada
um dos k fatores primos que compem o mdulo possua t bits, lembrando que os fatores
primos devem ter o mesmo nmero de bits, uma reduo mdulo n leva O((kt)2 ) operaes
binrias, e uma reduo mdulo pi , com i {1, ..., k}, leva O(t2 ) operaes binrias.
A complexidade computacional do RSA CRT pelo algoritmo de Gauss e pelo de
Garner se diferencia pela ltima etapa, onde no algoritmo de Gauss h uma reduo mdulo
n, com custo O((kt)2 ), e no algoritmo de Garner h k redues mdulo pi , com custo O(kt2 ),
o que o torna mais eficiente e portanto adotado como padro.
A complexidade computacional do deciframento no RSA CRT pelo algoritmo de
Garner, considerando os valores para k e t assumidos acima e a utilizao da chave privada
definida na especificao PKCS #1 O(kt3 ) operaes binrias, sendo este valor obtido com
a soma das fases abaixo:
representao modular (m1 , m2 , . . . , mk ) de m para pi : O(kt3 ) operaes binrias;
passo 4.1: O(kt2 ) operaes binrias;
passo 4.2: O(kt2 ) operaes binrias.
A complexidade computacional do deciframento do RSA original O((lg d)(lg 2 n))
operaes binrias. Considerando os valores para k e t assumidos, tem-se O((kt)(kt)2 ) =
O((kt)3 ) operaes binrias.
Comparando-se um processamento no RSA original e no RSA CRT, tem-se a relao:
(kt)3
= k2.
kt3
Para um mdulo n composto por dois fatores primos, p e q (k = 2), o processamento
quatro vezes mais rpido com o RSA CRT do que com o RSA original.

5.4.3. RSA CRT pelo Algoritmo de ART


Com o algoritmo ART, proposto por Rao e Yang [71], em 2006, processa-se o RSA
CRT com complexidade menor (quando o mdulo n composto por mais de dois primos

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

mod q)) mod q)p.

Nota-se que, para n = pq, o algoritmo ART e o algoritmo de Garner apresentam o


mesmo clculo.

Algoritmo Computacional 7 Algoritmo ART.


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. N1 := 1, X1 := m1 ;
2. Para i := 2 at k faa:
2.1. Ni := Ni1 pi1 ;
2.2. Ci := Ni1 mod pi ;
2.3. ui := ((mi Xi1 )Ci ) mod pi ;
2.4. Xi := Xi1 + ui Ni ;
3. Retorna m = Xt .

O exemplo de deciframento com o algoritmo de Garner tambm exemplo de


deciframento com o algoritmo ART, visto que para n composto por 2 nmeros primos
distintos, estes dois algoritmos so iguais.

Analisando-se o algoritmo ART em relao aos apresentados anteriormente (de


Gauss e de Garner), verifica-se que:
O nmero de redues modulares do algoritmo ART igual ao do algoritmo de
Garner, com custo O(kt2 ), porm o nmero de inverses mdulo pi k 1, enquanto

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).

Concluindo, recomendada a utilizao do algoritmo ART no RSA CRT.

Tabela 5.1. RSA CRT: nmero de inverses mdulo pi por algoritmo

primos (qtde)

algoritmo por Garner

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.

Ganho terico de velocidade do MRSA


Pela anlise do ganho de velocidade do RSA CRT (ver seo 5.4.2), para um mesmo
tamanho de mdulo n, o ganho de velocidade de processamento do RSA CRT sobre o RSA
tradicional de k 2 , com k sendo o nmero de fatores primos, desta forma, para k = 3, tem-se
um ganho de 9 vezes em relao ao RSA tradicional, e de 2, 25 vezes em relao ao RSA
CRT (com dois primos), como apresentado na tabela 5.2.
Segue tabela com comparativo terico de velocidade e tamanho mnimo do mdulo
conforme o nmero de primos utilizados [23]:
Tabela 5.2. Ganho de velocidade: MRSA sobre o RSA e sobre o RSA CRT (2
primos)

primos (qtde)

ganho sobre

ganho sobre

MRSA
3
4
5

RSA (tradicional)
9
16
25

RSA CRT (2 primos)


2, 25
4
6, 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.

O par de chaves (pblica e privada) gerado pelos procedimentos que seguem:


Escolha-se o valor de k.
n
c bits, p e q, e calcula-se n = pk q.
k+1
Escolhe-se um nmero inteiro positivo mpar e, tal que 1 < e < (p 1)(q 1), de

Geram-se dois primos aleatrios distintos de b

forma que mdc(e, (p1)(q1)) = 1 e mdc(e, p) = 1 e calcula-se d = e1 mod (p


1)(q 1).
Calcula-se dp = d mod (p) e dq = d mod (q).
A chave pblica (e, n), a chave privada (p, q, dp , dq ).

CAPTULO 5. VARIAES

104

O ciframento o mesmo do RSA tradicional.

O deciframento no RSA P k Q segue os passos:


Calcula-se: mp = cdp mod p e mq = cdq mod q.
Com o algoritmo de Hensel Lift (demonstrado a seguir) mp transformado em mpk =
cdpk mod pk .
Aplica-se o CRT pelo algoritmo de Garner para o sistema de congruncias dado por:
mpk = cdpk mod pk e mq = cdq mod q.
Observa-se que nesta variao, o expoente pblico e utilizado tambm no deciframento.

Se o algoritmo de Hensel Lift no fosse utilizado, no haveria ganho de velocidade


nesta variao em relao ao RSA CRT com dois primos, pelo contrrio, pois ter-se-ia que
calcular d = e1 mod (pk1 (p 1)(q 1)) [66].
Com o algoritmo de Hensel Lift, mpk calculado com um tempo equivalente ao
clculo de mp .
Segue a demonstrao matemtica do algoritmo Hensel Lift nesta variao do RSA
[94].
Dado m mod pk , como (pk ) = pk1 (p 1), tem-se pk1 vezes ciclos de ordem
(p), podendo-se escrever mpk como:

mpk = (K0 + pK1 + p2 K2 + . . . + pk1 Kk1 ) mod pk .

Ento pode-se definir uma funo:


Fi (X0 , X1 , . . . , Xi ) = (X0 + pX1 + . . . + pi Xi )e com i = {0, 1, . . . , k 1}.

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 .

Colocando-se Fi em funo de Fi1 mais diferencial de Fi Fi1 , tem-se que Fi =


Fi1 + D(Fi ) + variao de Fi para Fi1 :

Fi (X0 , X1 , . . . , Xi ) = Fi1 + pi Gi1 Xi mod pi+1 ;


onde:
Fi1 = Aei1 ;
r
r1 0
Gi1 = eAe1
u );
i1 (lembrando-se que a derivao D(u ) = ru

Ai1 = X0 + pX1 + . . . + px1 Xx1 para i = {0, 1, . . . , k 1}.


Com esta funo, pode-se calcular recursivamente K1 , K2 , . . . , Kk1 .

Assumindo-se K0 = C dp mod p e aplicando na funo (X0 = K0 ), para i = 1,


pode-se calcular K1 (X1 ), e assim recursivamente conforme a necessidade. Para i = 1, K1
a soluo da equao linear abaixo:

c = F0 (K0 ) + pG0 (K0 )K1 mod p2 ;

K1 = (c F0 (K0 ))(pG0 (K0 ))1 mod p2 .

Generalizando, Ki a soluo para a equao linear abaixo:

CAPTULO 5. VARIAES

106

c = Fi1 + pi Gi1 Ki mod pi+1 .


Algoritmo Computacional 8 Algoritmo Hensel Lift.
Entrada: cdp mod p, p,k, c e e
Sada: cdp mod pk
Algoritmo:
1. A := cdp mod p;
2. Para i := 1 at (k 1) faa:
2.1. pi+1 = pi p;
2.2. F := Ae mod pi+1 ;
2.3. E := c F mod pi+1 ;
2.4. B := pEi ;
2.5. K := AB(eF )1 mod p;
2.6. A := A + (pi )K;
3. Retorna A.

Processamento do Algoritmo Hensel Lift


Dados:
chave pblica (e, n): (7, 325);
chave privada (p, q, d): (5, 13, 7);
k = 2;
d = 7;
c = 218;
dp = d mod (p 1) = 3;
dq = d mod (q 1) = 7;
mp = cdp mod p = 2;
mq = cdq mod q = 10.
Segue o processamento (tabela 5.3) para: cdp mod p = 2, p = 5, k = 2, e = 7 e
c = 218 com o objetivo de obter cdp2 mod p.
A execuo pra no passo 8 retorna cdp2 mod p = 7.

CAPTULO 5. VARIAES

107

Tabela 5.3. Processamento - algoritmo Hensel Lift

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

Por meio do CRT obtm-se m = 257.

Ganho terico de velocidade do RSA P k Q


Pela anlise do ganho de velocidade do RSA CRT (ver seo 5.4.2), sabe-se que, para
um mdulo composto por dois primos, p e q, o processamento RSA CRT necessita de duas
n
exponenciaes utilizando um mdulo de bits, enquanto que o RSA P k Q necessita de
2
n
duas exponenciaes utilizando um mdulo de
bits. Considerando o custo de tempo
k+1
de processamento da exponenciao modular tem-se um valor terico da velocidade relativa
de processamento do RSA CRT (dois primos) em relao a velocidade de processamento do
RSA P k Q:
n
2( )3
(k + 1)3
2
=
.
n 3
8
2(
)
k+1
Para k = 2 obtm-se um ganho de 3, 375. Este valor terico, comparando apenas a
operao mais cara do processamento e por isso no dependendo do tamanho do mdulo n.
Na prtica, h uma diferena devido a, por exemplo, o processamento do mpk . A tabela 5.4
apresenta os resultados dos testes prticos segundo Paixo [66].

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

RSA CRT (2 primos)


2, 495
2, 542
2, 798

segurana ao RSA com a incluso de um nmero aleatrio k, o qual elimina as caractersticas


matemticas do algoritmo RSA.
Utilizando-se as mesmas chaves do RSA tradicional, o ciframento segue os passos
abaixo:
Escolhe-se um nmero aleatrio k, 1 < k < n;
Calcula-se c1 = k e mod n;
Calcula-se c2 = m(k + 1)e mod n;
O criptograma composto por (c1 , c2 ).

A partir de (c1 , c2 ), o deciframento segue os passos:


Calcula-se k = cd1 mod n;
c2
Calcula-se m =
mod n.
(k + 1)e

5.7.1. DRSA por Padhye


Em 2005, Padhye [65] props uma variao para o DRSA, a qual substitui a exponenciao modular utilizada para o clculo de c2 , por uma multiplicao modular, tornando
a variao mais eficiente. Utiliza as mesmas chaves do RSA tradicional e o ciframento segue
os passos abaixo:
Escolhe-se um nmero aleatrio k, 1 < k < n;
Calcula-se c1 = (k + 1)e mod n;
Calcula-se c2 = mk 1 mod n;
O criptograma composto por (c1 , c2 ).

A partir de (c1 , c2 ), o deciframento segue os passos:

CAPTULO 5. VARIAES

109

Calcula-se k = cd1 1 mod n;


Calcula-se m = c2 k mod n.

5.8. RSA Redistribudo


O RSA Redistribudo foi proposto por Wiener [99], e sugere a melhora no desempenho do algoritmo de deciframento deslocando parte deste trabalho para o algoritmo de
ciframento, pois o expoente e ser maior do que no RSA tradicional e escolhendo dp e dq
pequenos.
Dado um tamanho de w bits para o mdulo n, as chaves so geradas conforme segue:
w
Geram-se dois primos aleatrios distintos p e q, cada um de b c bits, com mdc(p
2
1, q 1) = 2.
Calcula-se n = pq.
Geram-se dois primos aleatrios distintos dp e dq , com tamanho de s bits (sendo s um
w
tamanho em bits menor ou igual a b c), tais que mdc(dp , p 1) = 1 e mdc(dq , q
2
1) = 1 e dp = dq mod 2.
Calcula-se d tal que d = dp mod (p) e d = dq mod (q), utilizando-se o CRT
dp a
p1
dq a
para resolver o sistema de congruncias: d0 =
(mod
), d0 =
2
2
2
q1
0
(mod
), onde a um valor arbitrado, e calculando-se d = 2d + a.
2
Calcula-se e = d1 mod (n).
A chave pblica (e, n), a chave privada (p, q, dp , dq ).

O ciframento e o deciframento so os mesmos do RSA CRT.


Esta variao til para aplicaes que priorizem o tempo de deciframento pois ela
aumenta o tempo de ciframento.

Ganho terico de velocidade do RSA Redistribudo


Para um mdulo composto por dois primos, p e q, tanto o processamento do RSA
CRT quanto o processamento do RSA Redistribudo necessitam de duas exponenciaes utilizando um mdulo de

n
2

bits. Porm, o RSA Redistribudo executa as exponenciaes com

expoentes de s bits enquanto o RSA CRT as executa com expoentes de

n
2

bits. Considerando

CAPTULO 5. VARIAES

110

o custo de tempo de processamento da exponenciao modular tem-se um valor terico da


velocidade relativa de processamento do RSA CRT (2 primos) em relao a velocidade de
processamento do RSA Redistribudo:
n
2( )3
n
2
n 2 = 2s .
2s( )
2
Para um mdulo n de 1024 bits e s = 160 bits obtm-se um ganho de 3, 2 vezes.

A proposta do RSA redistribudo foi aplicada em diversas variaes conforme pode


ser visto a seguir. Porm, no possvel aplic-la em qualquer variao, por exemplo, no
possvel implementar esta proposta na variao RSA P k Q. A variao RSA P k Q tem como
objetivo acelerar o deciframento e para tal, faz uso do expoente e. Como a proposta do RSA
Redistribudo aumenta o tamanho do expoente e, tanto o deciframento como o ciframento
teriam perda de velocidade. Outra conseqncia negativa seria o aumento das mensagens
no cifradas, o que poderia por em risco a segurana da nova variao.

5.8.1. MRSA Redistribudo


Em 2003, analisando o artigo de Boneh at al. [15], Paixo [66] props o RSA Redistribudo com Mltiplos Primos, combinando o RSA Redistribudo com a variao MRSA
obtendo assim, para um mdulo n de 1024 bits, s = 160 bits e k = 3 um ganho de 4, 8 vezes.

5.8.2. DRSA por Padhye Redistribudo


Em 2005, Padhye [65] props a combinao da sua proposta de variao para o
DRSA com a proposta de Paixo no RSA Redistribudo, unindo assim maior eficincia de
deciframento com maior segurana no processo.

5.9. RSA Desbalanceado


O RSA Desbalanceado foi proposto por Shamir, em 1995, em um artigo em lngua
inglesa intulado RSA for paranoids [83] e se baseia no fato da escolha do mdulo n ser

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

utilizao de blocos de tamanho mximo q 1, o deciframento pode ser calculado apenas


com base no mdulo q, portanto, no mesmo tempo que o deciframento citado acima.

O artigo de H. Gilbert at al., [36] analisa os cuidados necessrios para a implementao segura desta variao.

5.10. Twin RSA


O Twin RSA3 foi criado em 2005 por Lenstra e Weger [55] propondo um mdulo
RSA composto por um par de mdulos: (n, n + t), onde t um valor arbitrado.

A criao do par de mdulos RSA segue os passos:


(1) Gera-se dois nmeros primos aleatrios p e q com N bits de tamanho cada um.
(2) Utiliza-se o CRT para achar um nmero n com aproximadamente 2N bits, tal que: n
0 mod p e n t mod q.
(3) Sejam r =

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.

Os autores analisaram a segurana do par de mdulos proposto, no encontrando


nenhuma fragilidade e analisaram o custo de tempo de processamento para se encontrar um
par de mdulos, verificando que o algoritmo tratvel [55].
3

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).

5.11. Consideraes Finais


No h uma anlise para se determinar qual a melhor variao RSA atualmente.
Cada variao visa um determinado objetivo. Deve-se analisar a melhor opo de variao
para a implementao a ser realizada, levando-se em considerao diversos fatores, tais
como necessidade de segurana, tempo de processamento, capacidade computacional,
possibilidade de investimento, necessidades de pagamento de taxas relativas a patentes e
outros.

A figura 5.1 posiciona as variaes que foram apresentadas no tempo, possibilitando


uma viso abrangente.
A tabela 5.11 apresenta a lista das variaes que foram apresentadas e suas respectivas finalidades.

CAPTULO 5. VARIAES

114

Figura 5.1. Variaes RSA: Linha do Tempo

Tabela 5.5. Variaes RSA e suas finalidades

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.)

A escolha inadequada de parmetros RSA, a divulgao dos mesmos e outros


erros de implementao possibilitam ataques ao RSA, as quais j foram analisadas nos
captulos 3 e 4. O ataque MITM (ver seo 3.5.1) pode ocorrer na distribuio de chaves
de qualquer algoritmo de chave pblica. So apresentados neste captulo, outros ataques ao
RSA e suas respectivas defesas, os quais, esto listados abaixo:

6.1.1. Utilizao de Mdulo n em Comum;


6.1.2. Utilizao de Mdulo n com Fator Primo em Comum;
6.1.3. Ataque por Tabela;

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

CAPTULO 6. ATAQUES E DEFESAS

116

6.2.4. Ocultamento II. Ataque MITM;

6.3.1. Ataque Temporal em Cartes Inteligentes. Kocher, 1996 [51];

6.4. Ataque por Expoente Privado Pequeno. Wiener, 1990 [99];

6.5.1. Ataque em Mensagem que No sofre Reduo Modular;


6.5.2. Ataque de Hastad. Hastad, 1986;
6.5.3. Exposio Parcial da Chave - LSB. Coppersmith, 1997 [24];
6.5.4. Exposio Parcial da Chave - MSB. Boneh et al., 1998 [12];

6.6.1. Ataque Cclico de Simmons e Norris, 1977 [88];


6.6.2. Ataque Cclico Generalizado. Williams e Schmid, 1979 [100] e Berkovits, 1982 [5];

6.7. Ataques por Fatorao;

6.8. Ataques variao MRSA;


6.9. Ataques variao RSA P k Q.

6.1. Ataques Elementares


6.1.1. Utilizao de mdulo n em comum
Um texto cifrado c = me mod n do usurio A para o usurio B, no pode ser decifrado por um adversrio C, mas se o mdulo n que compe a chave de A for o mesmo que
compe a chave de C, C conhece a fatorao do mdulo n, e a partir da chave pblica da A,
ele pode calcular a chave privada de A com o algoritmo de Euclides estendido [8].
Uma defesa para este ataque a no utilizao de mdulo n comum, lembrando que
desta forma, fica inviabilizada a variao RSA em Lote (ver seo 5.3), proposta por Fiat
[32].
Caso o adversrio C no utilize um mdulo comum a A, mesmo no descobrindo
a chave privada de A, o adversrio pode decifrar uma mensagem m que seja enviada

CAPTULO 6. ATAQUES E DEFESAS

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.

Esse ataque tem complexidade computacional O(lg2 max(eX , eY )), a qual a


complexidade do algoritmo de Euclides estendido.

6.1.2. Utilizao de mdulo n com Fator Primo em Comum


Dado o exemplo da seo 6.1.1 de utilizao de mdulo em comum, onde A e B
compartilham o mesmo mdulo n e portanto perdem a segurana de suas chaves. Mesmo
que C no compartilhe do mesmo mdulo de A, mas caso seu mdulo compartilhe de um dos
fatores primos com o mdulo de A, C pode fatorar o mdulo de A pois mdc(nA , nC ) = p,
nA
considerando p o primo em comum. Desta forma,
= qA , sendo qA o outro fator primo
p
nC
do mdulo de A. Analogamente,
= qC , sendo qC o outro fator primo do mdulo de C.
p
Esse ataque tem complexidade computacional O(lg2 max(nA , nC )), a qual a
complexidade do clculo do mximo divisor comum entre os mdulos.

6.1.3. Ataque por tabela


Caso uma mensagem m seja composta por:
m = m1 m2 ,

ento

me2

c
= me1 mod n
mod n

ou seja,

c
= c1 .
c2

Sendo w1 bits o tamanho de m1 , w2 bits o tamanho de m2 e wn bits o tamanho do


mdulo n, o tamanho w bits de m w1 + w2 bits, lembrando-se que o tamanho mximo para
m o tamanho do bloco, normalmente wn 1 bits, ento w wn 1.
Boneh et al., em 2000 [14], mostram que se o tamanho w1 de m1 permitir a construo de uma tabela contendo os pares (m1 , c1 ), pode-se descobrir m correspondente a c, caso
ele seja composto como segue:

CAPTULO 6. ATAQUES E DEFESAS

118

c
igual a algum c1 da tabela construda.
c2
Caso seja encontrado c1 desejado, calcula-se m = m1 m2 .

Para cada m2 , calcula-se c2 e verifica-se se

Na tabela, no necessrio que m1 possa variar de 1 at n 1, mas apenas at o valor


mximo de m1 para que seja possvel existir m < n, tal que m = m1 m2 .
A defesa para esse tipo de ataque est na utilizao de uma codificao de mensagem que altere a mensagem original transformando-a em uma mensagem pseudo-aleatria.

A complexidade computacional deste ataque de 2(1+m1 ) max(w1 , w2 ) bits de custo


de armazenamento de memria, e 2m2 exponenciaes modulares, ou seja O((2m2 )(lg e)(lg2
n)) operaes binrias de custo de tempo de processamento.

6.2. Ataque a Assinatura Digital RSA


6.2.1. Falsificao de Assinatura Digital RSA
Devido ao homomorfismo de anel algbrico existente no processamento do algoritmo
RSA, possvel a aplicao de um ataque por criptograma escolhido adaptativo (ver seo
3.3) no qual, uma assinatura digital RSA de uma entidade A, pode ser falsificada sem que se
conhea a chave privada, caso se conhea duas assinaturas escolhidas pelo adversrio.
Seja m = m1 m2 a mensagem que o adversrio deseja falsificar a assinatura.
Supondo-se que o adversrio consiga as assinaturas realizadas por A:
s1 = (m1 )d mod n,

s2 = (m2 )d mod n.

Ento, s = s1 s2 mod n a assinatura RSA de m pois:


s = s1 s2 = (m1 m2 )d mod n = md mod n.
Para evitar esse tipo de falsificao, o algoritmo RSA no aplicado isoladamente
em uma assinatura digital, mas sim dentro de uma codificao de mensagem que impede
este tipo de falsificao.

CAPTULO 6. ATAQUES E DEFESAS

119

Esse ataque tem complexidade computacional O(lg2 max(s1 , s2 )), a qual a


complexidade do clculo de s.

6.2.2. Ataque por Erro Aleatrio na Assinatura


Este ataque foi proposto por Lenstra em 1996 [54].
Em uma assinatura digital RSA CRT pelo algoritmo de Gauss, a assinatura obtida
de:
s = (sp q(q 1 mod p)) + (sq p(p1 mod q)) mod n.
Sendo:
sp = mdp mod p,

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;

CAPTULO 6. ATAQUES E DEFESAS

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.

CAPTULO 6. ATAQUES E DEFESAS

121

Esse ataque tem complexidade computacional O((lg e)(lg2 n)).

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.

Esse ataque tem complexidade computacional O(lg2 n).

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.

CAPTULO 6. ATAQUES E DEFESAS

122

c00 novamente interceptada por I, o qual j aguardava o criptograma, monitorando


o canal de comunicao.
I calcula a inversa multiplicativa de r mod n.
I calcula (c00 )r1 mod n = (creB )dB r1 mod n = cdB (reB )dB r1 mod n = cdB .

Esse ataque tem complexidade computacional O((lg e)(lg2 n)).

6.3. Ataques Exponenciao Modular


6.3.1. Ataque Temporal em Cartes Inteligentes
Em algoritmos RSA implementados em cartes inteligentes, avaliando-se o tempo
que um carto inteligente leva para fazer um deciframento ou uma assinatura digital, podese recuperar o expoente privado d, devido a relao existente entre o tamanho do expoente e
o tempo de processamento da exponenciao modular [8].
Considerando-se uma implementao RSA que utilize o algoritmo eficiente para exponenciao modular RL (ver seo 2.11), se o adversrio conseguir fazer com que o carto
inteligente calcule assinaturas de um nmero grande de mensagens aleatrias conhecidas
pertencentes a Zn : m1 , m2 , . . . , my , e avaliar para cada mj o tempo Tj (o qual medido),
utilizado para gerar a respectiva assinatura em mj , o ataque possibilitar a recuperao de um
bit de d por iterao do algoritmo de exponenciao citado, considerando-se uma iterao,
cada passagem pelo passo 3.2.
Sabe-se que d tem que ser mpar, ento d0 sempre 1 e o valor da varivel m no
passo 2 do algoritmo ser c.
Na prxima iterao d1 processado mj = m2j mod n e se d1 = 1 o carto inteligente
calcula o produto m = mc mod n em tempo ti1 , caso contrrio, avana para o prximo
passo. Um pr-requisito deste ataque, a verificao das especificaes tcnicas do carto
inteligente em questo, verificando se o algoritmo eficiente para exponenciao modular RL
foi realmente utilizado e o tempo mdio de uma iterao tji .
Os t0j s sero diferentes por que o tempo depende da mensagem mj .

CAPTULO 6. ATAQUES E DEFESAS

123

Algoritmo Eficiente para Exponenciao Modular RL


Entrada:
c - base da exponenciao,
d - expoente,
n - valor do mdulo RSA
Sada:
cd (mod n)
1. Seja dk , dk1 , . . ., d1 , d0 a representao binria de d;
2. Se d0 = 1, m := c, seno m := 1;
3. Para i = 1 crescendo at k faa:
3.1. c := c2 (mod n);
3.2. Se di = 1 ento m := mc (mod n);
4. retorna m.
Observao: Este algoritmo cpia do apresentado na seo 2.11, alterando o
nome das variveis, a fim de facilitar a anlise do ataque.

Kocher observou [51] que se d1 = 1, t0j1 s e os Tj0 s so correlacionados, ou seja, se


para algum valor de mj , tj1 maior do que o esperado devido a multiplicao modular com
mais dgitos, provavelmente, Tj tambm ser maior do que o esperado.
Selecionadas as maiores e as menores mensagens, verifica-se a mdia de tempo das
mensagens de tamanho mdio (o qual deve ser aproximado ao tempo mdio de uma iterao
tji obtido nas especificaes do carto). Escolhe-se uma mensagem grande mj . Caso o
tempo Tj no se modifique em relao mdia de tempo total Tj das mensagens pequenas,
o valor de d1 0, caso contrrio 1.
Para se recuperar d2 , o adversrio desconta o tempo mdio de uma iterao tji
obtido nas especificaes do carto em cada Tj , descontando tambm, conforme o caso,
a diferena de tempo encontrada nas mensagens grandes. Ele altera cada mj calculando
mj = mj cj mod n e repete o mesmo processo, recuperando d2 e assim sucessivamente.

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

CAPTULO 6. ATAQUES E DEFESAS

124

a Zn e calcula m0 = cre mod n. Depois ele aplica d em m0 , a qual desconhecida pelo


adversrio, no possibilitando o ataque. obtido c0 = (m0 )d mod n. Por fim, processado
c = c0 /r mod n.

Kocher props este mesmo ataque medindo precisamente o consumo de energia


eltrica do carto inteligente durante a gerao da assinatura digital, o adversrio provavelmente pode descobrir a chave privada pois, durante uma reduo modular de uma mensagem
muito longa, assim como ocorre com o tempo, o consumo de energia eltrica do carto ser
acima da mdia. Neste caso, como o consumo de energia eltrica pode ser observado ao
longo do tempo, a insero de um atraso no defenderia o algoritmo do ataque, necessitando
da utilizao da segunda defesa apresentada [52].

6.4. Ataques por Expoente Privado Pequeno

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

p + q 1 < 2q + q 1 < 3q 1 < 3 n 1. Portanto:

|n (n)| < 3 n 1;

|n (n)| + 1 < 3 n;

1 + k(|n (n)|) < 3k n;

1 k(n (n)) < 3k n.

CAPTULO 6. ATAQUES E DEFESAS

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

Utilizando-se n no lugar de (n) tem-se:


|

e k
ed kn
|=|
|.
n d
dn

Pode-se afirmar que n = (n) + (n (n)). Logo kn = k(n) + kn k(n).


Ento:
|

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

CAPTULO 6. ATAQUES E DEFESAS


|

126

e k
1
|<
1 .
n d
dn 4

Finalmente, como 3d < n 4 , tem-se:


|

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

Os termos: q1 , q2 , q3 , . . . , qm , so chamados quocientes parciais da frao contnua.

CAPTULO 6. ATAQUES E DEFESAS

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].

Algoritmo Computacional 9 Algoritmo para ataque de Wiener.


Entrada: chave pblica (e, n), gerando quocientes parciais da frao
e
contnua finita simples : {q1 , q2 , ..., qm }
n
Sada:

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-

CAPTULO 6. ATAQUES E DEFESAS

128

Tabela 6.1. Processamento - algoritmo para ataque de Wiener

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}

lizar o RSA CRT para o deciframento, obtendo dp e dq menores. Porm, dp e dq no podem


p p
ser pequenos demais pois, existe ataque de fatorao de n em tempo O(min( dp , dq ) [8].
Boneh e Durfee [10], em 2000, aprimoraram o ataque de Wiener, mostrando que
possvel obter o expoente privado d, conhecendo somente a chave pblica, se d for menor
que n0,292 .

6.5. Ataques ao Expoente Pblico Pequeno


6.5.1. Ataque em Mensagem que No sofre Reduo Modular
Para reduzir o tempo de ciframento e de verificao de assinaturas comum a utilizao de um expoente pblico e pequeno. O menor expoente pblico possvel 3, porm,
recomendvel o tamanho mnimo de 17 bits, um valor mnimo 216 + 1 = 65.537 para
mdulos de 1024 bits.
Com a utilizao do expoente pblico e = 216 + 1, so necessrias no mximo 17
multiplicaes no passo 3.2 do algoritmo para exponenciao modular RL (ver seo 2.11),
o qual varia conforme o tamanho do expoente. Para um expoente pblico aleatrio, com
e < (n), o nmero de exponenciaes pode chegar a 1024 utilizando um mdulo de 1024
bits [8].

CAPTULO 6. ATAQUES E DEFESAS

129

Quando o expoente e pequeno, possvel que me < n e ento me no sofre reduo


1

pelo mdulo n, e a estrutura de m parcialmente revelada, calculando-se (me ) e para obter-se


m.
Para evitar esse ataque, recomendvel que o expoente e possua no mnimo, 10% do
tamanho em bits do mdulo n [83]. Para o mdulo n de 1024 bits, o expoente e deve ter 11
ou mais bits. Foi escolhido como padro o nmero 65.537 por ter mais de 10 bits e por ser
um nmero primo, sendo compatvel com qualquer mdulo n de 1024 bits. Para mdulos n
de 2048 bits devem ser utilizados expoentes e com no mnimo 21 bits.
Esse ataque tem complexidade computacional O(e lg e).

6.5.2. Ataque de Hastad


Este ataque foi proposto em 1986 por Hastad [39].
Suponha que o usurio B deseja enviar uma mensagem m cifrada para um nmero k
de usurios U1 , U2 , . . . , Uk e que cada usurio possua sua prpria chave pblica RSA (ek , nk ).
B codifica m usando cada expoente pblico ei e envia cada ci para o respectivo Ui ,
com 1 i k.
Sabe-se que os cuidados na implementao do algoritmo RSA exigem que
mdc(ni , nj ) = 1 para todo i 6= j.
Um adversrio A pode interceptar os k textos cifrados (c1 , c2 , . . . , ck ) atravs da linha
de comunicao.
Assumindo-se que m seja menor que cada ni e que todos os expoentes pblicos e0k s
so iguais, o que muito utilizado na prtica, pode-se recuperar m se e k.
O valor do expoente pblico e conhecido, supondo-se por exemplo que seja 3, de
posse de c1 , c2 , c3 , onde:

c1 = m3 mod n1 ,

c2 = m3 mod n2 ,

CAPTULO 6. ATAQUES E DEFESAS

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.

Esse ataque tem complexidade computacional O(lg2 N ) com N sendo

Qk
i=1

ni .

6.5.3. Exposio Parcial da Chave - LSB


1
dos bits menos significativos
4
(LSB) 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.
Coppersmith [24], em 1997, analisou que de posse de

Conforme a demonstrao de Boneh et al. [12], o qual acompanhou o processo 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.

CAPTULO 6. ATAQUES E DEFESAS


Pode-se reescrever q =

131

n
obtendo-se:
p
ed k(n p

n
+ 1) = 1.
p

Multiplicando-se os dois lados da equao por p:


edp kp(n 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

didatos ao valor p mod 2 4 . Lembrando-se que d < (n), ento k < e.


Com base no valor obtido de p, tenta-se fatorar n e obter q. Se houver valor inteiro
para q, o adversrio ter obtido sucesso no ataque.
O nmero de possibilidades para k e 1, havendo lg e tentativas para se encontrar
q. Portanto, consegue-se fatorar n com um mximo de e lg(e) tentativas.
Esse ataque tem complexidade computacional O(e lg e).

6.5.4. Exposio Parcial da Chave - MSB


Boneh et al. [11, 12], em 1998, demonstrou tambm que, de posse de

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.

CAPTULO 6. ATAQUES E DEFESAS

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.

CAPTULO 6. ATAQUES E DEFESAS

133

Conseqentemente, d0 uma aproximao de d. Os testes mostram que, na maioria


das vezes, metade dos bits mais significativos de d so iguais a d0 . Para k < e, o ataque
fica tratvel pois o adversrio pode construir uma pequena tabela com e 1 candidatos a k
e utilizar apenas os candidatos a d0 com

1
4

dos bits mais significativos iguais aos

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

Como k < e, necessrio realizar-se o teste para k = 1 e para k = 2, at se obter o


resultado desejado. Considerando-se o teste de k = 2 tem-se d0 = 4925 e:

|d0 d| =

k(p + q 1)
;
e

2(p +
|d0 d| =

7387
1)
p
.
3

Sabendo-se que:

|d0 d| < 3 n;

|d0 d| < 258.


Testa-se cada valor candidato a |d0 d|, que possibilite
de d0 iguais aos

1
4

1
4

dos bits mais significativos

dos bits mais significativos de d. Ao se testar |d0 d| = 114, tem-se:

CAPTULO 6. ATAQUES E DEFESAS

134

|d0 d| =

114 =

k(p + q 1)
;
e

2(p + q 1)
.
3

Obtm-se p = 89 e q = 83 e calcula-se d = 4811.

Sempre que e = 3, ser encontrado k = 2, o que torna o ataque mais eficiente e


inviabiliza a utilizao do expoente pblico e = 3.

Esse ataque tem complexidade computacional O(e lg e).

6.6. Ataques Cclicos


Definio 6.6.1 Primo Forte. ([58]) O nmero primo p dito forte, se existem inteiros r, s
e t tal que:
p 1 tem um fator primo grande denotado por r;
p + 1 tem um fator primo grande denotado por s;
r 1 tem um fator primo grande denotado por t.

A granularidade do adjetivo grande depende do ataque em questo, sendo que no


caso de ataques cclicos, um fator primo de p grande um fator com o mesmo tamanho em
nmero de bits do que p.
Um primo p considerado duplamente forte quando um primo forte e, seu fator
primo r (da definio de primo forte) um primo forte tambm.
Definio 6.6.2 Nmeros Primos Balanceados. Dois fatores primos p e q so considerados
balanceados se ambos tiverem aproximadamente o mesmo tamanho em bits, ou seja:
1
p
< < 2.
2
q

CAPTULO 6. ATAQUES E DEFESAS

135

6.6.1. Ataque Cclico de Simmons e Norris


Publicado em 1977 [88], esse ataque parte do princpio que conhecidos o bloco
cifrado c e a chave pblica (e, n), um criptoanalista pode montar um lista, realizando ciframentos sucessivos (c0 = ce mod n) de c at obt-lo outra vez, quando saber que a mensagem
m a penltima mensagem da lista. Ou seja, visto que:
c = me mod n,
analisa-se o resultado a cada ciframento at que c seja recuperado:
2

c0 = ce mod n = ce mod n,
3

c00 = (c0 )e mod n = ce mod n,


4

c000 = (c00 )e mod n = ce mod n,


..
.
k

c000 000 = (c000 0001 )e mod n = ce mod n = c.


Quando a condio for atingida, o resultado do clculo anterior, ce

k1

mod n corres-

ponde ao bloco decifrado m. Como o espao de criptogramas finito, sempre existe um


valor para k que atenda a essa condio.
Este ataque pode ser visto como um algoritmo de fatorao de n (o que demonstrado em [100]), e assim como todo algoritmo de fatorao conhecido at o momento,
intratvel quando os nmeros escolhidos p e q so primos fortes e suficientemente grandes
conforme as especificaes RSA.

6.6.2. Ataque Cclico Generalizado


Foi proposto um novo ataque cclico em 1979 por Williams e Schmid [100] e outro
em 1982 por Berkovits [5], ambos buscando o menor inteiro positivo u, tal que:
u

(ce c, n) 6= 1.

CAPTULO 6. ATAQUES E DEFESAS

136

Esta condio pode ocorrer em trs casos:

(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

em tempo mximo T [75].


O adversrio no precisa descobrir o valor original do expoente e. Ele procura por
um expoente e0 = eu Z(n) que produza rbitas menores do que as de ordem (n) e assim
quebra o criptograma em tempo tratvel.
Sabendo-se que e Z(p) e supondo-se que x Zp , o tamanho da ciclo de x na
u

permutao x xe (mod p) o menor inteiro positivo u 1, tal que xe = x (mod p).


Supondo-se que denote o ndice de x com relao ao gerador (p), o tamanho do ciclo de
permutao de x o menor inteiro positivo u, tal que (p) divida (eu 1). Se x gerador
em (p) o tamanho do ciclo de permutao de x o menor inteiro positivo u 1.

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.

CAPTULO 6. ATAQUES E DEFESAS

137

Para se analisar se o ataque generalizado pode ter sucesso, deve-se verificar a


probabilidade de se encontrar e0 para algum ciclo de menor tamanho do que (n) e no caso
de haver, se h um nmero significativo de blocos de mensagens que podem ser decifrados
a ponto de ameaar a segurana da instncia RSA.

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:

p e q primos grandes, no mnimo com 512 bits,


p0 e q 0 primos grandes, menores do que p e q mas prximos aos seus tamanho em bits
e
e a0 e b0 pequenos, com valores prximos a 2.
Para p0 e q 0 com tamanho de 1090 , ou seja 299 bits cada um, dado um bloco m, com
0 m < n, a probabilidade de m ser mltiplo de p, q ou de ambos, (m, n) 6= 1, de
1090 , ou seja, praticamente nula, assim como a probabilidade de se fatorar n, a qual seria
este mesmo caso:

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).

CAPTULO 6. ATAQUES E DEFESAS

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

p 1 = a0 p0 e q 1 = b0 q 0 , e a0 e b0 so pequenos, para poder dividir (n) busca-se por p0


ou q 0 ou outro fator de p 1 ou q 1 (caso os fatores primos do mdulo nno sejam primos
n
fortes). Como a0 e b0 so maiores ou iguais a 2, r tem que ser menor que
.
4
H duas opes:
r divide a ordem de e mod (n),
ento a ordem de (p 1) grande, apresentando fatorao intratvel, o que torna o
ataque intratvel.
r no divide a ordem de e mod (n),
ento e = xr mod (n) e com isso e uma potncia de r mod (n).
(n) (p 1)(q 1) e p e q devem ser da mesma ordem de grandeza, a qual

e a ordem de grandeza de (n) a mesma que a de n .


r
A probabilidade de se encontrar r de no mximo
. Como as possibilidades de
(n)

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.

Resta analisar a0 e b0 [75]. Se p e q so primos fortes, o mdc(p 1, q 1) = s dever


ser muito pequeno. A probabilidade de um nmero mdulo n ter ordem ks, com k N de
no mximo:
ks
ks
=
=
(n)
mmc(p 1, q 1)
=

ks
(n)
mdc(p1,q1)

ks
(p1)(q1)
s

ks2
ks2
=
, com sendo muito pequeno.
(p 1)(q 1)
n

Como para primos fortes k pequeno, ento a probabilidade tambm muito


pequena, no oferecendo riscos a segurana do algoritmo.

CAPTULO 6. ATAQUES E DEFESAS

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).

6.7. Ataques por Fatorao


A segurana do RSA depende da intratabilidade da fatorao de nmeros inteiros.
Algoritmos de fatorao tratveis so um item de pesquisa em aberto.

Existem dois tipos de algoritmos de fatorao: os de propsito especial e os de


propsito geral [80].
Os algoritmos de fatorao de propsito especial dependem do tamanho dos fatores
desconhecidos do nmero inteiro n que se deseja fatorar, de forma que, sua eficincia, depende do tamanho do menor fator primo de n. Este tipo de algoritmo mais eficiente para
fatorar nmeros que possuem fatores primos pequenos (com at 256 bits) do que para fatorar
nmeros que possuem fatores primos balanceados.
Os algoritmos de fatorao de propsito geral dependem do tamanho do nmero n
que se deseja fatorar.
O crivo de Eratstenes, publicado por volta do ano 100 d.C. [25], um algoritmo de

fatorao com custo de tempo de processamento (O( n lg 2 n) operaes binrias), eficiente


para fatorar nmeros de 16 bits por exemplo, em processamento monotarefa [90]. Desde a
sua publicao, so realizadas pesquisas para se propor novos algoritmos de fatorao.
Segue o custo de tempo de processamento dos principais algoritmos da fatorao,
considerando:
n - o nmero inteiro a ser fatorado;

CAPTULO 6. ATAQUES E DEFESAS

140

e - a constante de Euler (e = 2, 71828183);


p - o menor fator primo de n e
o(1) - funo assinttica que se aproxima de 0, quando n .

Fatorao de Pollard, 1974, eficiente para fatorar nmeros de 33 bits por exemplo,
em processamento monotarefa [58]:
1

O(n 4 ).

Fatorao 1 de Pollard, 1974, utiliza-se do Mtodo Monte Carlo, sendo eficiente


para fatorar nmeros n com p0 de 13 bits por exemplo, em processamento monotarefa
[58]:
O(p0 ),

onde p0 o maior fator primo de p 1.

Fatorao + 1 de Williams, 1982 [58]:


O(p0 ),

onde p0 o maior fator primo de p + 1.

Mtodo de Curvas Elpticas de Lenstra - ECM, 1987 [58]:


O(e(1+o(1))(2 ln p

ln ln p) 2

).

Crivo Quadrtico de Pomerance - QS, 1981 [58]:


1

O(e(1+o(1))(ln n ln ln n) 2 ).

NFS de Pollard, 1988 [58]:


1

O(e(1,923+o(1))(ln n) 3 (ln ln n) 3 ).

Pode-se encontrar informaes complementares sobre algoritmos de fatorao no


apndice B.

O algoritmo de fatorao de propsito geral mais eficiente o NFS. A complexidade


de tempo de processamento do NFS depende apenas do tamanho do mdulo n. O algoritmo
de fatorao de propsito especial mais eficiente o ECM. A complexidade de tempo de

CAPTULO 6. ATAQUES E DEFESAS

141

processamento do ECM depende do tamanho do mdulo n e tambm do tamanho de p.


Caso n tenha um fator primo p pequeno, o algoritmo ECM pode ser muito mais rpido do
que o algoritmo NFS e por isso, necessrio a utilizao de primos balanceados. Se o
RSA for implementado corretamente, utilizando fatores primos balanceados, o maior risco
sua segurana, em relao a fatorao do mdulo n, ser proporcionado pelos algoritmos
de fatorao de propsito geral. Porm, deve-se analisar quais so os cuidados necessrios
para a segurana do RSA ou de suas variaes, em relao aos dois tipos de algoritmos de
fatorao.
Quando o NFS aplicado para nmeros na forma especial n = re + s, onde r e s so
nmeros pequenos, ele particularmente eficiente. Se o NFS for aplicado especificamente
em nmeros neste formato ele chamado de SNFS. Quando o NFS aplicado em nmeros
aleatrios, independentemente da forma destes nmeros, ele chamado de GNFS.

Outra variao do NFS o NFSNET. O NFSNET o NFS com processamento


paralelo. O projeto NFSNET [63], criado por Leyland e Wackerbarth, tem por meta fatorar
nmeros cada vez maiores com o NFS em processamento paralelo. Qualquer usurio da
Internet, se possuir memria suficiente para carregar o mdulo cliente do NFSNET, pode
contribuir com esse processamento paralelo, pelo tempo que desejar. O NFSNET utiliza
a capacidade inativa do processador do usurio voluntrio, de forma que, o usurio no
costuma perder performance nas suas aplicaes. Segundo a ltima divulgao do NFSNET,
em 23 de abril de 2007, o processamento para 2772 + 1 estava 70% concludo.

Outro projeto com o objetivo de fatorar o mdulo RSA, o FAFNER [31], um


sistema cooperativo pioneiro, criado em 1995, que busca utilizar o ambiente distribudo na
Internet, para quebrar algoritmos criptogrficos e em especial quebrar mdulos RSA. Utilizando o protocolo HTTP, o FAFNER combina tecnologias como: algoritmos sofisticados
de fatorao de nmeros inteiros (como o NFS); algoritmos capazes de executar tanto em
computadores pessoas de baixo custo (com 4MB de memria), quanto em computadores
superescalares; registro annimo de usurios e organizao de uma rede hierrquica com
interveno humana mnima.

CAPTULO 6. ATAQUES E DEFESAS

142

Observa-se a necessidade de se acompanhar as pesquisas e publicaes para que se


possa garantir a segurana do RSA.

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

MIPS anos algoritmo


RSA-100
332
100
7
QS
RSA-110
365
110
75
QS
RSA-120
398
120
830
QS
RSA-129
428
129
5000
QS
RSA-130
431
130
1000 (*)
GNFS
RSA-140
465
140
2000
GNFS
(*) Alguns artigos consideram 500 MIPS anos. Esta divergncia ocorre
conforme o tamanho da memria alocada para o processamento.
Mdulo RSA

bits

dgitos decimais

Os laboratrios RSA, divulgavam desafios para a fatorao de mdulos RSA em


diversos tamanhos. A tabela 6.3 apresenta tamanhos de mdulos RSA (em quantidade de
dgitos decimais), que foram comprovadamente fatorados, muitos conquistando prmios em
dinheiro.
A tabela 6.4 apresenta tamanhos de mdulos RSA (em quantidade de bits), que foram
comprovadamente fatorados e os prximos desafios.
A partir do RSA-129 todas as fatoraes foram realizadas em processamento paralelo.
A seo C.3 apresenta alguns exemplos numricos de mdulos RSA fatorados.

A figura 6.1 apresenta um grfico de fatorao de inteiros ao longo do tempo.


Em 1999, um grupo de pesquisadores estabeleceu na poca, um recorde de fatorao
para um mdulo RSA de 512 bits (ver tabela 6.3). Foi utilizado o NFS e gasto mais de 7
1

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).

CAPTULO 6. ATAQUES E DEFESAS

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

Tabela 6.4. Fatorao: Mdulo RSA (qtd. de bits) data da fatorao

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

13 1 GHz Pentium anos


30 2,2 GHz Opteron anos

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.

Em 2003, Shamir e Tromer [81], descreveram um dispositivo de hardware terico,


o T W IRL, que teoricamente, coloca em risco a segurana de mdulos n de 1024 bits. Na
teoria, o TWIRL fatora um nmero n de 512 bits em menos de 10 minutos e um nmero n de
1024 bits em menos de 1 ano. Aps a publicao deste artigo, passou a ser recomendado a
utilizao do mdulo RSA com 2048 bits para novas aplicaes, apesar das aplicaes atuais
que rodam com mdulos RSA de 1024 bits ainda serem consideradas seguras na prtica.

6.8. Ataques variao MRSA


Para analisar a segurana da variao MRSA (ver seo 5.5), convm lembrar que,
Q
para n = ki=1 pi , onde pi so nmeros primos distintos, tem-se:
(n) =

k
Y
i=1

(pi 1);

CAPTULO 6. ATAQUES E DEFESAS

144

Figura 6.1. Fatorao de Inteiros

(n) = mmc(p1 1, p2 1, . . . , pk1 1, pk 1).


Alguns ataques ao RSA original, so aplicados tambm no MRSA, tais como:
Utilizao de mdulo n em comum (ver seo 6.1.1);
Falsificao de Assinatura Digital RSA (ver seo 6.2.1);
Ocultamento (ver seo 6.2.3);
Ataque por Expoente Privado Pequeno (ver seo 6.4);
Ataque de Hastad ao Expoente Pblico Pequeno (ver seo 6.5.2).
Ataque em Mensagem que no sofre Reduo Modular por Expoente Pblico
Pequeno (ver seo 6.5.1).

CAPTULO 6. ATAQUES E DEFESAS

145

Ataques por Fatorao


O nmero de fatores primos possveis em um mdulo n, depende de que o tamanho
de cada primo forte possibilite segurana contra ataques de fatorao. A complexidade de
tempo do algoritmo de propsito geral NFS a mesma para mdulos RSA de 2048 bits com
2 fatores de 1024 bits cada ou com 4 fatores de 512 bits cada ou com 16 fatores de 128 bits
cada. Contudo, deve ser considerada tambm a complexidade de tempo do algoritmo de
propsito especial ECM. O ECM tratvel para mdulos RSA com fatores primos de 157
bits por exemplo. Segue tabela 6.5 indicativa do nmero de fatores primos dependendo do
tamanho do mdulo n [23].

Tabela 6.5. MRSA: tamanho do mdulo quantidade mxima de fatores

tamanho de n (bits)

qtd. de primos

tamanho de cada primo (bits)

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

no pior caso, ou seja, to pequena quanto no RSA original.

Ataque por Expoente Pblico Pequeno e Exposio Parcial da Chave

CAPTULO 6. ATAQUES E DEFESAS

146

Quando os primos que compem o mdulo RSA so escolhidos aleatoriamente, o


1
ataque por exposio dos dos LSB da chave privada d tem complexidade exponencial em
4
relao ao tamanho do mdulo n e portanto, no tratvel. Pode-se ler a anlise detalhada
em [41].
H risco na exposio dos MSB da chave privada d, de no mnimo nr 1 lg(r), com
r sendo o nmero de primos que compem o mdulo n. Desta forma, o nmero de MSB
expostos que colocam a segurana do MRSA em risco diminui conforme aumenta o nmero
de primos que compem o mdulo n. Pode-se ler a anlise detalhada em [41].

6.9. Ataques variao RSA P k Q


Para analisar a segurana da variao RSA P k Q (ver seo 5.6), com k = 2, convm
lembrar-se que para n = pk q, onde p e q so dois nmeros distintos, tem-se:
(n) = (p 1)pk1 (q 1);
(n) = mmc((p 1)pk1 , (q 1)).
Alguns ataques do RSA original, so aplicados tambm no RSA P k Q, tais como
[95]:
Utilizao de mdulo n em comum (ver seo 6.1.1);
Falsificao de Assinatura Digital RSA (ver seo 6.2.1);
Ataque em Mensagem que No sofre Reduo Modular (ver seo 6.5.1);
Ataque de Hastad ao Expoente Pblico Pequeno (ver seo 6.5.2).

Ataques por Fatorao


A segurana do RSA P k Q depende da escolha cuidadosa dos primos que compem
o mdulo P k Q.
O tempo de execuo do algoritmo de fatorao NFS estimado em relao ao total
do nmero de bits do inteiro a ser fatorado, sendo intratvel sua aplicao a inteiros com mais
de 768 bits e portanto deve-se utilizar um mdulo n com mais de 768 bits, o que implica em,
no caso de k = 2, primos p e q com no mnimo 256 bits.

CAPTULO 6. ATAQUES E DEFESAS

147

Quanto ao algoritmo de fatorao ECM, o qual tem o tempo de execuo estimado


em relao ao tamanho de bits do menor fator primo, se forem escolhidos fatores primos
com mais que 256 bits, o algoritmo ECM intratvel.
Concluindo, quando utilizando fatores primos p e q maiores que 256 bits, o RSA
P k Q pode ser considerado seguro contra ataques de fatorao.
Observa-se a necessidade de restringir o valor de k conforme o tamanho do mdulo.
Por exemplo, para um mdulo de 768 bits, deve-se utilizar k 2 e para um mdulo de 1024
bits, deve-se utilizar k 3.
Foram propostos alguns algoritmos de fatorao para mdulos n = pk q porm, at o
momento, nenhum deles apresenta tempo tratvel para valores de k pequenos, existindo um
algoritmo de fatorao tratvel, proposto por Boneh et al. [13], em 1999, para k prximo a

log p.

Pontos Fixos
Para um inteiro positivo n da forma n = pk q, o nmero total de pontos fixos
calculado por [95]:

(1 + mdc(e 1, pk1 (p 1)))(1 + mdc(e 1, q k1 (q 1))) (1 + 2)(1 + 2) = 9.

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].

Ataque por Expoente Privado Pequeno

CAPTULO 6. ATAQUES E DEFESAS

148

Takagi afirma que o ataque de Wiener, com expoente privado pequeno, no


possvel para a variao RSA P k Q, apesar de haver a necessidade de maiores anlises [95].
Visto que a variao exige a escolha de um expoente pblico pequeno e, conseqentemente,
o expoente privado no poder ser pequeno, esta anlise no necessria.

6.10. Consideraes Finais


A tabela 6.6 apresenta a lista dos ataques analisados nesta dissertao e suas respectivas complexidade computacional de tempo de processamento.
Tabela 6.6. Ataques RSA: Complexidade de Tempo de Processamento

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

Custo em operaes binrias


O(lg2 max(ex , ey ))
O(lg2 max(nA , nC ))
O((2m2 )(lg e)(lg2 n))
O(lg2 max(s1 , s2 ))
O((lg e)(lg2 n))
O(lg2 n)
O((lg e)(lg2 n))
O(e lg e)
Q
2
O(lg N ) com N sendo ki=1 ni
O(e lg e)
O(e lg e)
O(|p q|)
custo exponencial
custo exponencial
0
O(p ), onde p0 o maior fator primo de p 1
O(p0 ), onde p0 o maior fator primo de p + 1
O(e(1+o(1))(2 ln p

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

CAPTULO 6. ATAQUES E DEFESAS

149

esquecido torna a implementao vulnervel a ataques. Em casos de utilizao de variaes


do RSA, deve-se observar os cuidados especficos para esta variao.
importante tambm, estar sempre atento a novas publicaes sobre o tema, visto
que sempre pode surgir novos ataques ao algoritmo.
A figura 6.2 posiciona os ataques que foram apresentados no tempo, possibilitando
uma viso geral.

Figura 6.2. Ataques RSA: Linha do Tempo

Captulo 7
Codificao de Mensagem
No triste mudar de idias, triste no ter idias para mudar.

(Apparcio Fernando de Brinkerhoff - Baro de Itarar,


jornalista e escritor gacho, 1895-1971)

7.1. Conceitos Preliminares


Ataques conhecidos ao RSA, comprovam a necessidade de uma codificao de mensagem (ver definio 3.2.12, para a utilizao do algoritmo RSA. Em 1994, Bellare e Rogaway publicaram um artigo demonstrando a necessidade de que as mensagens fossem codificadas antes de serem cifradas ou assinadas evitando assim, possveis ataques por mensagem
escolhida [3]. Atravs de uma codificao no criptogrfica da mensagem, ela se torna uma
mensagem pseudo-aleatria e portanto menos suscetvel a manipulao por adversrios.
nesta mensagem pseudo-aleatria que aplicado o RSA, defendendo-o de diversos ataques.
Como exemplo da necessidade de uma codificao de mensagem, tem-se o padro
ISO/IEC 9796-1 para utilizao do algoritmo criptogrfico RSA. Este padro foi elaborado
antes do conceito de codificao de mensagens e por isso est obsoleto, como demonstrou
em 2000 Franois Grieu [38], provando que uma assinatura neste padro poderia ser forjada
com o conhecimento de algumas assinaturas digitais em mensagens escolhidas.

150

CAPTULO 7. CODIFICAO DE MENSAGEM

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:

Esquema de ciframento do algoritmo RSA com o OAEP.

RSADS-OAEP:

Esquema de deciframento do algoritmo RSA com o OAEP.

RSAEP:

Primitiva de ciframento.

RSADP:

Primitiva de deciframento.

RSAVP1:

Primitiva de verificao da assinatura digital.

RSASP1:

Primitiva que cria a assinatura digital.

CAPTULO 7. CODIFICAO DE MENSAGEM


I2OSP:

152

Primitiva que tem como entrada um nmero inteiro no negativo e retorna

como sada uma string em bytes de um determinado tamanho especificado.


1. Entradas:
(a) x - inteiro positivo a ser convertido;
(b) xLen - tamanho determinado em bytes do valor de hash.
2. Sadas:
(a) X - string com xLen bytes correspondente x;
(b) Error - vazio ou integer too larger.

OS2IP:

Primitiva que tem como entrada uma string em bytes de um determinado

tamanho especificado e retorna como sada um nmero inteiro no negativo.


1. Entradas:
(a) X - string em bytes a ser convertida.
2. Sadas:
(a) x - inteiro positivo correspondente X.

MGF:

Mscara de Gerao da funo de hash, recomendando a funo SHA-1,

mas indicando que futuras revises apresentaro outras sugestes.


1. Opes:
(a) Hash - funo de hash que ser utilizada;
(b) hLen - tamanho em bytes do valor de hash.
2. Entradas:
(a) seed - string em bytes que semente para a mscara;
(b) maskLen - tamanho em bytes da mscara, no mximo 232 hLen.
3. Sadas:
(a) mask - string de maskLen bytes;
(b) Error - vazio ou mask too long.

EME-OAEP: Primitiva que apresenta o mtodo de codificao para o ciframento


no OAEP, utilizando para tal, algumas das tcnicas citadas acima. A figura 7.1

CAPTULO 7. CODIFICAO DE MENSAGEM

153

[78] apresenta o esquema da operao de codificao. As variveis no citadas


que constam na figura so criadas durante os passos de codificao e podem ser
analisadas no PKCS #1 verso 2.1 [78]. A sada o valor a ser cifrado EM =
00||maskSeed||maskDB.

Figura 7.1. Esquema de codificao no RSA-OAEP [78]

A operao de decodificao do criptograma segue esquema anlogo.

O RSA-OAEP a combinao das primitivas RSAEP e RSADP ou das primitivas


RSAVP1 e RSASP1, com o mtodo de codificao EME-OAEP. Todos os detalhes podem
ser encontrados no PKCS #1 verso 2.1 [78].
Anlises feitas pelo projeto Europeu NESSIE [62], mostraram que existem falhas na
prova matemtica do OAEP. O resultado final do NESSIE recomenda um esquema de codificao chamado RSA-KEM [44] que tambm foi incorporado ao padro ISO/IEC 18033-2.
Entre outras anlises, uma pesquisa de Shoup [87], mostrou fraquezas na estrutura original do OAEP e Shoup apresentou uma proposta de mudana na codificao de mensagem
para torn-lo mais seguro. Essa mudana foi aprovada pelos pesquisadores do NESSIE e
incorporada ao padro ISO/IEC.

CAPTULO 7. CODIFICAO DE MENSAGEM

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.

Figura 7.2. Esquema de codificao no RSA-PSS [78]

A codificao da mensagem com o esquema PSS segue o esquema da figura 7.2


(EMSA-PSS) [78]. As variveis no citadas que constam na figura so criadas durante os
passos de codificao e podem ser analisadas no PKCS #1 verso 2.1 [78]. A sada o valor
a ser cifrado EM = maskDB||H||bc.

CAPTULO 7. CODIFICAO DE MENSAGEM

155

Existem outros esquemas de codificaes de mensagens para o RSA, como o


RSA-REACT, proposto por Okamoto e Pointcheval [64], como alternativa de substituio
do RSA-OAEP.

7.4. Consideraes Finais


Ataques conhecidos ao RSA, comprovam a necessidade de uma codificao de mensagem para a utilizao do algoritmo RSA, assim como para a utilizao de outros algoritmos
criptogrficos que utilizem substituio por bloco. Com uma codificao no criptogrfica
da mensagem, ela se torna uma mensagem pseudo-aleatria, na qual aplicado o RSA e
portanto tornando o ciframento menos suscetvel a manipulao por adversrios.

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)

8.1. Problemas de Pesquisa em Aberto


Devido aos 30 anos de existncia (1977-2007) e ao volume de pesquisas realizadas no
algoritmo RSA, novas pesquisas exigem, cada vez, mais um elevado nvel de conhecimento
matemtico e computacional. Existem problemas em abertos tais como:
Proposta de teste de primalidade determinstico com tempo computacional menor do
que o algoritmo AKS [1], o mais eficiente no momento, apresentando custo computacional de tempo de processamento O(lg 19 n) operaes binrias [90] (ver apndice
A);
Proposta de algoritmo para fatorao de propsito geral mais eficiente que o NFS, o
mais eficiente no momento (ver seo 6.7);
Proposta de algoritmo para fatorao de propsito especial mais eficiente que o ECM,
o mais eficiente no momento (ver seo 6.7);
Proposta de algoritmo eficiente para clculo da raiz e-sima mdulo n (ver seo
4.1);
156

CAPTULO 8. CONSIDERAES FINAIS

157

Proposta de algoritmo para clculo de logaritmo discreto mdulo n mais eficiente do


que os existentes atualmente (ver seo 4.1);
Proposta de variaes do algoritmo RSA que apresente algum benefcio em relao
as variaes atuais como por exemplo, maior eficincia no deciframento e ciframento
ou utilizao de chaves menores (ver seo 5);
Proposta de novo ataque ao algoritmo RSA que explore fraquezas diferentes das trs
funes unidirecionais com segredo com compem o estado da arte RSA (ver seo
4.1);
Anlise da repercusso de novas tecnologias sobre o algoritmo RSA como por exemplo o aumento da capacidade computacional ou a proposta de um novo algoritmo de
fatorao (ver seo 6.7).

8.2. Granularidade dos Valores Numricos


Em algumas citaes desta dissertao, encontram-se referncias a valores pequenos
ou a valores grandes. Em cada caso, a granularidade do valor foi a mais detalhada possvel.
Devido ao carter abrangente do texto, a ordem de grandeza necessria para que o valor
seja considerado pequeno ou grande relativa, dependendo do contexto da aplicao. Por
exemplo, o nmero y de pontos fixos existentes nos ciframentos para um determinado par de
chaves RSA pode ser calculado com uma frmula fechada (ver seo 4.5), sendo um valor
mnimo de 9 e mximo de n. A probabilidade de um valor cifrado ser ponto fixo de ny . A
porcentagem aceitvel de pontos fixos, depende do contexto da mensagem a ser cifrada: a
ordem de grandeza de n, o tipo de mensagem que est sendo cifrada, a necessidade de sigilo
da mensagem e outros critrios.

8.3. Dados Histricos


Foram realizadas pesquisas ao longo dos trinta anos de existncia do algoritmo RSA.
Muitas pesquisas ficaram obsoletas como as que testam resistncia aos algoritmos de fatorao mais eficientes da poca, variaes para assinaturas digitais sem empacotamento, estudos para implementaes em hardware, indicaes de procedimentos para implementao
segura na poca em que foram escritas. Segue abaixo, referncias que marcaram rumos
importantes na histria do algoritmo RSA.

CAPTULO 8. CONSIDERAES FINAIS

158

1976: Proposto o conceito de Chave Pblica. W. Diffie and M. E. Hellman, [28].


1977: Publicao do algoritmo RSA. Rivest, Shamir e Adleman, [74].
1977: Proposto o ataque cclico de Simmons e Norris. G. J. Simmons e M. J.
Norris, [88].
1979: Anlise de pontos fixos no ciframento RSA. G. R. Blakley e I. Borosh, [6].
1979: Proposto o ataque cclico generalizado. H. C. Williams e B. Schmid, [100].
1981: Proposto o algoritmo de fatorao Crivo Quadrtico. Pomerance, [58].
1982: Proposto o RSA CRT. J. J. Quisquater and C. Couvreur, [70].
1985: Proposto o algoritmo ElGamal. ElGamal, [30].
1985: Proposto o conceito de Curvas Elpticas. N. Koblitz, [50] e V. S. Miller, [59].
1986: Proposto o ataque de Hastad (expoente pblico pequeno). J. Hastad, [39].
1988: Proposto o algoritmo de fatorao NFS. Pollard, [58].
1990: Proposto RSA Rebalanceado. M. J. Wiener, [99].
1991: Publicado PKCS #1. A verso 1.0 foi publicada em maro, sofrendo correes
at estabilizar em junho, com a publicao da verso 1.4, [77].
1991: Publicado o software PGP. P. Zimmermann, [102].
1991: Fatorado Mdulo RSA-100. O mdulo RSA-100, com 332 bits e 100 dgitos
decimais fatorado utilizando-se o algoritmo QS, [76].
1992: Proposto ataque MITM, Ocultamento. G. I. Davida, [26].
1992: Proposto algoritmo anlogo ao RSA baseado em curvas elpticas. N. Demytko, [27].
1994: Mensagens passam a ser codificadas. M. Bellare e P. Rogaway, [3].
1994: Proposto outro algoritmo anlogo ao RSA baseado em curvas elpticas. K.
Koyama , U. M. Maurer, T. Okamoto e S. A. Vanstone, [53].
1995: demonstrado que primos fortes so suficientes para proporcionar uma defesa ao RSA contra ataques cclicos (no necessitando de primos duplamente fortes). U.
Maurer, [57].

CAPTULO 8. CONSIDERAES FINAIS

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].

CAPTULO 8. CONSIDERAES FINAIS

160

2007: Em 23 de abril o projeto NFSNET divulgou que o processamento distribudo


de fatorao do nmero 2772 + 1 estava 70% concluda, [63].

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.

2. Os nmeros primos p e q devem ter aproximadamente o mesmo comprimento em


bits, para evitar ataques com algoritmos de fatorao no nmero primo de menor
tamanho (ver seo 6.7).
Para aplicaes atuais so aceitveis mdulos n com 1024 bits. Nestes casos, os
primos p e q devem ter 512 bits cada um. Para novas aplicaes recomendvel a
utilizao de mdulos com 2048 bits e nestes casos, os primos p e q devem ter 1024
bits cada um (ver seo 6.7).

CAPTULO 8. CONSIDERAES FINAIS

161

3. A diferena |p q| no pode ser pequena, pois se p prximo de q, ento p n

e efetuando-se testes sucessivos para todos os primos prximos a n encontra-se p


(ou q). 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(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).

CAPTULO 8. CONSIDERAES FINAIS

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).

14. recomendvel que o expoente pblico e seja no mnimo e = 216 + 1 = 65.537


para mdulos de 1024 bits (ver seo 6.5.2). Para mdulos n de 2048 bits devem ser
utilizados expoentes e com no mnimo 21 bits.

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

CAPTULO 8. CONSIDERAES FINAIS


MRSA, proposto por Rao e Yang [71], em 2006 (ver seo 5.4).

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)

A.1. Conceitos Preliminares


Definio A.1.1 Teste de Primalidade. ([58]) Um teste de primalidade um mtodo pelo
qual pode ser testada a primalidade de um nmero inteiro positivo.

O teste de primalidade de um nmero inteiro n utilizando o Crivo de Eraststenes,


proposto aproximadamente em 240 a.C., apresenta um alto custo de tempo de processa
mento, O( n lg 2 n) operaes binrias. Por isso, outros testes foram propostos.

Definio A.1.2 Teste Probabilstico de Primalidade.

([58]) Teste aplicado sobre um

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.

Conforme Menezes at al. [58], um teste probabilstico de primalidade realizado,


considerando-se, para cada inteiro mpar, um conjunto W(n) Zn que verifica as seguintes
propriedades:
164

APNDICE A. TESTE DE PRIMALIDADES

165

1. Dado a Zn , ento rpido verificar se a W(n);


2. Se n primo, ento W(n) = 0;
3. Se n composto, ento #W(n) n2 .

Definio A.1.3 Se n um nmero composto, os elementos de W(n) so chamados


de testemunhas de que n composto, e os elementos do conjunto complementar
L(n) = Zn W(n) so chamados de mentirosos.

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 .

Definio A.1.4 Nmero Provavelmente Primo.

Nmero provavelmente primo um

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.

Definio A.1.6 Teste determinstico de primalidade. ([58]) Um teste determinstico de


primalidade um teste pelo qual, pode ser testada a primalidade de um nmero inteiro

APNDICE A. TESTE DE PRIMALIDADES

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].

Dentre os diversos algoritmos de testes de primalidade existentes, segue abaixo os


apresentados neste captulo:
Teste Probabilstico de Primalidade Solovay-Strassen, 1977, seo A.2;

Teste Probabilstico de Primalidade de Miller-Rabin, seo A.3;

Teste Determinstico AKS, 2002, seo A.5;

A Hiptese de Riemann, seo A.4.

A.2. Teste de Solovay-Strassen


Este algoritmo, criado em 1977 por Solovay-Strassen, se utiliza das propriedades do
smbolo de Jacobi e foi recomendado no artigo de criao do RSA [74]. utilizado para
teste de primalidade no software PGP1 v.7.0.3 [82].

O custo de tempo de processamento deste algoritmo O(lg 3 n) operaes binrias


[90].
Ao executar-se o teste com t bases distintas (inteiros a Z n ), sobre um mesmo
nmero composto n, a probabilidade deste teste informar corretamente que o nmero n
primo de pelo menos 1 ( 12 )t .
1

PGP um software criado em 1991, com objetivo de ciframento e assinatura digital e que utiliza o RSA.

APNDICE A. TESTE DE PRIMALIDADES

167

Algoritmo Computacional 10 Algoritmo Solovay-Strassen.


Entrada: um nmero inteiro mpar n e um nmero inteiro a Z n
Sada:

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.

A.3. Teste de Miller-Rabin


Este um teste probabilstico de primalidade baseado no conceito de nmero
provavelmente primo.
Algoritmo Computacional 11 Algoritmo de Miller-Rabin.
Entrada: um nmero inteiro mpar n e um nmero inteiro a Z n
Sada:

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.

O custo de tempo de processamento deste teste O(lg 3 n) operaes binrias [90].


Ao executar-se o teste com t bases distintas sobre um mesmo nmero composto
n, a probabilidade deste teste informar corretamente que o nmero n primo de pelo
menos 1 ( 41 )t , o que faz do Miller-Rabin um teste muito mais eficiente do que o de
Solovay-Strassen.

APNDICE A. TESTE DE PRIMALIDADES

168

A.4. A Hiptese de Riemann


A Hiptese de Riemann afirma que, um nmero n primo se, e somente se, passa
por um teste probabilstico de primalidade para todas as bases a, com 1 < a < 2 log2 n [90].
Assumindo-se a hiptese de Riemann como verdadeira, tanto o teste de SolovayStrassen como o de Miller-Rabin se tornam determinsticos para o teste de um nmero n, se
n for testado com todas as bases a, sendo 1 < a < 2 log2 n [90].

A.5. Teste Determinstico de Primalidade AKS


Desenvolvido em 2002 por Agrawal, Kayal e Saxena [1], ambos do Instituto Indiano
de Tecnologia em Kanpur, o algoritmo AKS se baseia no teorema que segue.
Teorema. ([90]) Suponha a Zp . Ento p > 1 primo se, e somente se,
(x a)p (xp a) mod p.
A proposta do AKS tornar o teste de primalidade rpido e ainda ser capaz de provar
que o teste responde corretamente mesmo quando o nmero n em teste composto.
O AKS no utiliza o mdulo n, utiliza como mdulo um polinmio xr 1, onde r
um primo pequeno (com teste eficiente e veloz). Ou seja, no lugar de calcular (x a)n ,
calcula-se o resto da diviso de (x a)n por xr 1, o que feito utilizando o mesmo mtodo
algbrico da diviso de polinmios. Dessa maneira, tem-se no mximo r 1 termos para
examinar, enquanto que na expanso de (x a)n tem-se n 1. Como a congruncia original
funciona sempre que n primo, ento a nova congruncia:

(x a)n (xn a) mod (xr 1, n)


tambm funciona quando n primo, pois se dois valores so congruentes, ento quando se
divide cada um dos valores por xr 1, os restos sero iguais. Esta nova congruncia sempre
falsa quando n composto. O AKS mostra que se n composto, quando escolhido um valor
adequado de r, ento necessrio testar um nmero pequeno de a0 s at se encontrar um tal
que

(x a)n 6 (xn a) mod (xr 1, n).

APNDICE A. TESTE DE PRIMALIDADES

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

3.2.2. Se q d4 r lg ne e n q 6 1 mod r, pare o lao 3.


3.3. Faa r := r + 1.

4. Para a = 1 at d2 r lg ne, faa:


4.1. Se (x a)n 6 (xn a) mod (xr 1, n), retorne
composto.
5. Retorne primo.

O custo de tempo de processamento total do algoritmo AKS O(lg 19 n) operaes


binrias [90], conforme demonstrado abaixo:

O custo de tempo de processamento do passo 1 O(lg3 n) operaes binrias.

O custo de tempo de processamento do lao 3 O(lg6 n) iteraes.


Segue o custo de cada iterao do lao 3:
O passo 3.1 custa O(lg3 n) operaes binrias;

Os passos 3.2 e 3.2.1 custam O( r lg2 n) operaes binrias;


O passo 3.2.2 custa O(lg2 n + lg3 r) operaes binrias.

APNDICE A. TESTE DE PRIMALIDADES


Tem-se um total de O(lg3 n +

170

r lg2 r) operaes binrias para cada iterao.

Como so O(lg6 n) iteraes, ento o custo total do lao o(lg9 n(lg lg n)2 ).

O custo de tempo de processamento do lao 4 O(r2 r lg4 n) operaes binrias.


Sendo o custo de r = O(lg6 n) operaes binrias.

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)

Para se processar um algoritmo de fatorao com o nmero inteiro n como entrada,


usual que antes, seja processado um algoritmo de teste de primalidade a fim de confirmar se
o nmero composto. Isto porque a complexidade computacional de um algoritmo de teste
de primalidade, em geral, bem menor do que a complexidade de um algoritmo de fatorao
de nmeros inteiros.
Alguns algoritmos de fatorao no fornecem todos os fatores primos do nmero n
que est sendo verificado, apenas fatorando n como produto de dois inteiros n = pq, com
p, q > 1. A partir desta sada, caso se deseje obter todos os fatores primos que compem n,
pode-se aplicar o mesmo processo recursivamente nos fatores p e q.
Seguem abaixo os algoritmos de fatorao de nmeros inteiros apresentados neste
captulo, sendo que existem outros, os quais podem ser encontrados em literaturas sobre o
tema:
Teste Mtodo de Fermat, seo B.1;
Crivo Quadrtico - QS, Pomerance, 1981, seo B.2;

171

APNDICE B. FATORAO DE NMEROS INTEIROS

172

Mtodo ECM, Lenstra, 1987, seo B.3;

Algoritmo NFS, Pollard, 1988, seo B.4.

B.1. Mtodo de Fermat


O mtodo de Fermat eficiente para achar um fator de n que seja prximo de

[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.

O custo de tempo de processamento deste algoritmo O( n2 ) operaes binrias.

B.2. Crivo Quadrtico


Este mtodo tem como tcnica uma abordagem similar que foi feita no mtodo
de Fermat, mas no lugar de procurar x e y que satisfaam n = x2 y 2 , procura encontrar
aleatoriamente x e y que satisfaa x2 y 2 mod n. Encontrar tal par (x, y) no significa
encontrar uma fatorao de n, significa que n divide x2 y 2 = (x y)(x + y). A
probabilidade de pelo menos

1
2

de que os primos divisores de n estejam distribudos entre

os divisores de ambos os fatores (x y) e (x + y). Assim, d = mdc(x y, n) ser um fator


de n [90].

A complexidade computacional para o crivo quadrtico fatorar um nmero inteiro


mpar n, no est rigorosamente provada, existem apenas estimativas, as quais assumem a

APNDICE B. FATORAO DE NMEROS INTEIROS

complexidade como sendo dada por e(1+o(1))

lg n lg lg n

173

[90]. Portanto, para n com 1024 bits

ou maior, a fatorao impraticvel.

B.3. Mtodo ECM


Desenvolvido por Lenstra em 1985, o mtodo ECM de curvas elpticas considerado
o algoritmo de fatorao de propsito especial mais eficiente. A complexidade computacional de tempo de processamento do ECM depende do tamanho do mdulo n e tambm do
tamanho do menor fator primo de n [76].
um mtodo sobre curvas elpticas anlogo ao mtodo de fatorao 1 de Pollard.
Seu funcionamento descrito sinteticamente a seguir.

Dado um inteiro N a ser fatorado, seleciona-se aleatoriamente uma curva elptica


mdulo N e um ponto x no grupo de pontos dessa curva elptica.
Primeiro lao: Seleciona-se um inteiro m1 e eleva-se x para a potncia k, onde k
o produto de todas as potncias primas m1 . Se essa computao falhar porque
um fator no-trivial foi encontrado ento termina. Caso contrrio, continua com o
segundo lao.
Segundo lao: Seleciona-se um inteiro m2 > m1 e tenta-se computar xkq para os
primos q entre m1 e m2 , sucessivamente. Se a computao falhar porque um fator
no-trivial foi encontrado, e termina. Seno recomea todo o processo, retornando
seleo inicial.

A complexidade computacional do mtodo ECM O(e(1+o(1))(2 ln p

ln ln p) 2

).

B.4. Algoritmo NFS


O mtodo de fatorao NFS um crivo de corpo numrico, sendo considerado o
algoritmo de fatorao de propsito geral mais eficiente. A complexidade de tempo de processamento do NFS depende apenas do tamanho do mdulo n [63].
Quando o NFS aplicado para nmeros na forma especial n = re + s, onde r e s so
nmeros pequenos, ele particularmente eficiente. Se o NFS for aplicado especificamente

APNDICE B. FATORAO DE NMEROS INTEIROS

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.

A idia do algoritmo comea pelas pesquisas de Coppersmith, Odlyzko e Schroeppel,


que usaram o corpo dos inteiros gaussianos Z[i]. Essas pesquisas, em 1988, foram generalizadas por Pollard para determinar fatores de inteiros da forma x3 k, onde |k| pequeno,

usando o corpo Q( 3 pk) e seu subanel Z[ 3 pk].


O mtodo NFS busca determinar inteiros, X e Y , tais que X 2 Y 2 mod n, e desta
forma, encontrar p = mdc(X Y, n) e q = mdc(X + Y, n), onde p, q so fatores no triviais
de n.
1

A complexidade computacional do algoritmo NFS O(e(1,923+o(1))(ln n) 3 (ln ln n) 3 ).

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)

C.1. Implementaes com Biblioteca GMP


Para implementar um sistema criptogrfico de chave pblica RSA, assim como um
algoritmo para gerao do par de chaves RSA h a necessidade de manipulao de nmeros
de 1024 e 2048 bits. Faz-se necessria uma ferramenta que consiga operar com tais ordens
de grandeza. Para a linguagem C e C++ encontra-se disponvel a biblioteca com cdigo
fonte aberto GMP, distribuda gratuitamente sob a licena GNU GPL [37]. Esta biblioteca
apresenta vantagens tais como [66]:
No impe limites de ordem de grandeza dos nmeros manipulados. A ordem mxima de grandeza depende somente da quantidade de memria disponvel na mquina
onde a biblioteca GMP est sendo executada.
Possui diversas funes, incluindo funes da teoria de nmeros, pois um dos alvos
de aplicao da biblioteca a criptografia.
Os desenvolvedores tiveram o quesito velocidade como principal objetivo. Como
conseqncia, suas funes apresentam bom desempenho tanto para operandos pequenos, quanto para operandos extremamente grandes.
175

APNDICE C. EXEMPLOS NUMRICOS

176

Desde a sua criao em 1991, a biblioteca vem sendo aprimorada e atualizada com
novas verses, e sua utilizao tem crescido.

C.2. Exemplo Numrico Gerado pelo OpenSSL


Segue um exemplo numrico real de par de chaves RSA. Ele foi gerado com
mdulo de 1024 bits no OpenSSL verso 0.9.8b para o sistema operacional Linux. Neste
protocolo a chave privada inclui todas as informaes sobre o par de chaves e informaes
complementares, de forma que, ao apresent-la, automaticamente ser apresentado todos os
parmetros envolvidos.

BEGIN RSA PRIVATE KEY


MIICXgIBAAKBgQDX0e0HU6/+PArHlZo+B1dCicVQF0zE5jxb8U1rBuNQ46DBfjUO
3Avkg7gOKU+4aLfnfmDRSvWcw6HxrQFJ6fXYdQ3GtQPUhJV+O0s/oe7xEUYNqbPd
tDReNsIl6eCWWyngazyLzRN01EBi/BY+0xxrqZtopw5CjgHKDZ2vjrQdmQIDAQAB
AoGBAKcK56AFKTHo/RrvcvvRqLtqcRsFfbjkzxEG2rodEbJZDOLWsXB35oiPXtUv
KnH8M2Ns0LkNgL8+OEkbc+Tmvg3I0HVA1zUIFo8DC8/sJKTEzATLKB+Z47W5KhWo
8Be3Qs+3RpSEoBIE7gLvLQYsXly8wYlMDyisHzEKlTy4sjZ1AkEA8ENbzE/lCD6c
HgJgtfi2FE5KfZWg5vOcADy8rinXaja2Px0HOp7pCn4kjHxWiQgiPaSEVmg8KYlh
S59Nzkut4wJBAOX0tvVBzWIB1CRJFTnKgqAkiOkz5lHCvxwcsgngs6t84KEwDBfl
MWEeKY5piXFGc6CxNcr/Dqr3DFtPRVAm31MCQAWq8R1uvQ5mu7QRhkqEpXbxKdyw
jO0lzgZLaIALSKOeysnOW39MhF7U/vO5cykkYfpmSSDosJKiRQNNrL4zFtUCQQCT
Seg6NTiQ8uznhOwUhRKf8mbDQBvg+KUiI3sh+ov6ZlUWyUilsYasVv51GkIPjPmY
zojPCgliFjUS8zZJPWzDAkEAkgtg/qYBUIxWhphhok7ZjoFLNvMhMkCBnIGptz5f
GhnA6v6JkovyhPlsgW9RpyUh77TjNs5CefRD9Nr/jSa76g== END RSA PRIVATE
KEY
Figura C.1. Chave RSA Privada com 1024 bits gerada pelo OpenSSL

A figura C.1 apresenta a chave privada em Base64.


Quando a chave privada convertida pelo OpenSSL para um arquivo tipo texto, os
valores da chave so apresentados em hexadecimal. A figura C.2 apresenta em hexadecimal,
a mesma chave privada apresentada em ASCII na figura C.1.
O OpenSSL gera a chave privada em binrio e possibilita a sua visualizao em sistema hexadecimal ou em codificao ASCII (com o auxlio da codificao em Base64), no
dispondo de opo para visualizao da chave privada em sistema decimal. Neste exemplo
gerado pelo OpenSSL tem-se, respectivamente, os valores decimais que seguem:
n = 1515539741204637573504486389397560780784661063447529497161393998067809433494

APNDICE C. EXEMPLOS NUMRICOS

177

Figura C.2. Chave RSA Privada com 1024 bits gerada pelo OpenSSL em texto

12894846464355069019950720046888252570850876254325460758918619307153841167965

APNDICE C. EXEMPLOS NUMRICOS

178

387174690960844066338667747586017011504165773575570634714039079571038687905166
94588832769219427340911724707808958800110336140881687311082069401;

e=
65537;

d=
117301300597533059059790762625984208317899709238103565533228116257975851067
320278485235888290218304168246614990183505663945567526694785342086994806231
7775485915954812335906522090515413232422041109151628671410275290543039380702
2210523220765631297794794441131567791136935829096572829162219733407484267036
4243573;

p=
12583600619556944136024315346123063297572026643881845639154494575899329862
56800310022421353532579819039039441441917922418727727311605273245761730789
0068963;

q=
12043768608241145820527173479166272687027540123235572978199678911087316861
63137571793699249123396739530225947597675180565182573501707401102115301772
7999827;

dp =
2968437151202379668628956394877131369767666080449415346770961230196738326
0646860236121021904593869115680531249053284527203763773498050756640487599
3683669;

APNDICE C. EXEMPLOS NUMRICOS

179

dp =
771413514302056209634663108068667513898034776924576417757736731389462898
6689965340370189874491176729978530387766850947492968687593446690581426373
272628419;

coefiente CRT =
764896843112914179933187216612108720695373167072896978961935249894610660
6296873489423441473770610943219688699817994783959966607905268105364453328
603757546.

Segue um exemplo de criptograma gerado no OpenSSL com a chave pblica do par


de chaves do exemplo. Dado um arquivo com o texto plano
em ASCII:
exemplo numrico real,

em hexadecimal:
6C616572206F636972E96D756E206F6C706D657865,

e em decimal:
158398211253610171638602402397633183495173710379109.

Tem-se o criptograma em binrio apresentado na figura C.3, o qual representado


em hexadecimal por:

6710ADDFA2F5C50C4556E43393FDB6D4D0F62B83AD47DF9D8DA455E6B149F162
9F9EBD3AF580755BAC77B5060E14DC4D57639592ED69C881A9F9EEB58BB4347E8A
AB9F2D39D86843D1D98E796CCB199EB033F6F35EBFBA0F6243BECDFFE344C0611A
C2FD0CBD3667E439BBE41DC26956B949862DFD79BC513295C89A535D65B9,

APNDICE C. EXEMPLOS NUMRICOS

180

Figura C.3. Criptograma gerado com chave privada RSA 1024 bits

e em decimal por:
723748117859051233205777915462620834094261598251911205235568006659743
60400434079007568126180399713496864364472565110130140799727020170440186
21371822876268243360083071607459384233602304427982249530183720365556298
217807140450090021516237336060864214123382197239.

Vale ressaltar que por se tratar de um exemplo real, o criptograma no apresenta


apenas o ciframento do texto plano mas todos os dados contidos no protocolo de codificao
incluso no padro OpenSSL, tais como marcadores de incio e de fim de mensagem.

C.3. Exemplos Numricos de Mdulos Fatorados


O mdulo RSA-129 de 428 bits e 129 dgitos decimais, fatorado em 26 de abril de
1994, era o nmero [76]:
1143816257578888676692357799761466120102182967212423625625618429
35706935245733897830597123563958705058989075147599290026879543541,

composto pelos primos:


3490529510847650949147849619903898133417764638493387843990820577
e

APNDICE C. EXEMPLOS NUMRICOS

181

32769132993266709549961988190834461413177642967992942539798288533.

O mdulo RSA-160 de 531 bits e 160 dgitos decimais, fatorado em 1 de abril de


2003, era o nmero [76]:
21527411027188897018960152013128254292577735888456759801704976767781331452188591
35673011059773491059602497907111585214302079314665202840140619946994927570407753,

composto pelos primos:


45427892858481394071686190649738831656137145778469793250959984709250004157335359
e
47388090603832016196633832303788951973268922921040957944741354648812028493909367.

O mdulo RSA-576 de 576 bits (174 dgitos decimais), fatorado em 3 de dezembro


de 2003, era o nmero [76]:
188198812920607963838697239461650439807163563379417382700763356422988859715234665
485319060606504743045317388011303396716199692321205734031879550656996221305168759
307650257059,

composto pelos primos:


3980750864240649373971255005503864911990643623425267084063851895759463889572
61768583317
e
4727721461074353025362230719730482246329146953020971164598521711305207112563
63590397527.

O mdulo RSA-200 de 664 bits e 200 dgitos decimais, fatorado em 9 de maio de


2005, era o nmero [76]:
4285375600099293261284001076093456710529553608560618223519109513657886371059

APNDICE C. EXEMPLOS NUMRICOS

182

54482006576775098580557613579098734950144178863178946295187237869221823983,

composto pelos primos:


353246193440277012127260497819846436867119740019762502364930346877612125367942
3200058547956528088349
e
792586995447833303334708584148005968773797585736421996073433034145576787281815
2135381409304740185467.

O mdulo RSA-640 de 640 bits (193 dgitos decimais), fatorado em 2 de novembro


de 2005, era o nmero [76]:
31074182404900437213507500358885679300373460228427275457201619488232064405
18081504556346829671723286782437916272838033415471073108501919548529007337
724822783525742386454014691736602477652346609,

composto pelos primos:


16347336458092538484431338838650908598417836700330923121811108523893331001
04508151212118167511579
e
19008712816648221131268515739354139754718967899685154936666385390880271038
02104498957191261465571.

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

APNDICE D. COMPLEXIDADE COMPUTACIONAL E PROBABILIDADES

184

Tabela D.2. Complexidade computacional de tempo de processamento

Operao
Algoritmo AKS
Algoritmo CRT por ART

Custo em operaes binrias


O(lg 19 n)
O(kt2 )
sendo k o nmero de primos de n e
t o tamanho dos primo
O(kt2 )
sendo k o nmero de primos de n e
t o tamanho dos primo
O((kt)2 )
sendo k o nmero de primos de n e
t o tamanho dos primo
O(lg 2 n)
O(lg 2 n)

Algoritmo CRT por Garner

Algoritmo CRT por Gauss

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 de Euclides Estendido, 20

Algoritmo, 45
tempo exponencial, 17

complexidade computacional, 20
Algoritmo de Fatorao por Fermat, 172

tempo polinomial, 17

complexidade computacional, 172

Algoritmo AES, 5

Algoritmo de Gauss, 22

Algoritmo AKS, 169

Algoritmo de Miller-Rabin, 167

complexidade computacional, 169


Algoritmo ART, 100

complexidade computacional, 167


Algoritmo de Solovay-Strassen, 166

Algoritmo Criptogrfico, 45

complexidade computacional, 166

assimtrico, 51

Algoritmo DSA, 3

de chave assimtrica, 52

Algoritmo ECDSA, 3

de chave pblica, 2, 51

Algoritmo ElGamal, 2

de chave simtrica, 50

Algoritmo Hensel Lift, 106

quebra, 50

Algoritmo para ataque de Wiener, 127

simtrico, 50
variao, 45, 88

complexidade computacional, 127


Algoritmo para Exponenciao Modular, 36

Algoritmo CRT por ART, 101

complexidade computacional, 38

complexidade computacional, 101

LR - left to right, 38

Algoritmo CRT por Garner, 97


complexidade computacional, 100

RL - right to left, 36
Algoritmos de Fatorao, 171

Algoritmo CRT por Gauss, 97

complexidade computacional, 140

complexidade computacional, 100

de Pollard, 140

Algoritmo de Chave Pblica, 52

+ 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

Ataque Adaptativo por Criptograma Escolhido, 48


Ataque ao RSA, 115

distribuio de chaves, 59

ataque cclico de Simmons e Norris, 135

notaes, 57

ataque cclico generalizado, 135

representao simblica, 57

ataque de Hastad, 129

tamanho do bloco, 75

ataque em mensagem que no sofre re-

terceira parte confivel, 59


Assinatura Digital RSA, 73
ciframento, 73

duo modular, 128


ataque por expoente privado pequeno,
124

prazo de validade, 73

ataque por tabela, 117

verificao, 74

ataque temporal em cartes inteligentes,

Assinatura Digitalizada, 57

122

Assinatura Eletrnica, 57

ataques variao P k Q, 146

Assinatura Manuscrita, 56

ataques variao MRSA, 143

Ataque a Algoritmos Criptogrficos, 47

ataques cclicos, 134

fora bruta na chave, 48

ataques por fatorao, 139

apenas por criptograma, 49

conhecimento de (n), 78

complexidade computacional, 49

conhecimento de (n), 77

fora bruta no criptograma, 66

expoente pblico pequeno, 128

fora bruta por mensagem conhecida, 48

exposio parcial da chave - LSB, 130

Ataque a Assinatura Digital RSA, 118

exposio parcial da chave - MSB, 131

erro aleatrio na assinatura, 119

fatorao do mdulo n, 72

falsificao de assinatura digital RSA,

fora bruta no criptograma, 66

118
fatorao: n mltiplo de c, 75
MITM, 118

complexidade computacional, 66
utilizao de mdulo n com fator em comum, 117

NDICE REMISSIVO

187

utilizao de mdulo n em comum, 116

Codificao de Mensagem, 45, 150

valor de p e q prximos, 86

Codificao de Mensagem RSA, 150

complexidade computacional, 86

KEM, 153

Ataque apenas por Criptograma, 47

OAEP, 151

Ataque por Criptograma Escolhido, 48

PSS, 154

Ataque por Mensagem Conhecida, 48

REACT, 154

Ataque por Mensagem Escolhida, 48


Ataques a Assinatura Digital, 59
MITM, 59
Ataques a Assinatura Digital RSA
MITM, 59

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

algoritmo de Euclides estendido, 20

Base64, 42
Bhaskara, 78
Bit, 41
Bleichenbacher, 65, 151
Byte, 41
prefixos padres, 42
Cartes Inteligentes, 6

algoritmo de fatorao por Fermat, 172


algoritmo de Gauss, 22
algoritmo de Miller-Rabin, 167
algoritmo de Solovay-Strassen, 166
algoritmo para exponenciao modular,
38
algoritmos de fatorao, 140
ataque ao RSA

Cenrios de Ataque, 47

fora bruta no criptograma, 66

Chave Criptogrfica, 46

clculo de logaritmo discreto, 65

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

mximo divisor comum, 18

Ciframento por Substituio, 45

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

Custo de Armazenamento em Memria, 18


multiplicao binria de dois fatores, 18
Custo de Tempo de Processamento, 17
Deciframento, 44
Diffie e Hellman, 2, 51
Diffie, Whitfield, 51
DSA, 3
DSS, 3

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

Fatorao de Nmeros Inteiros, 22

Criptografia Assimtrica, 2, 51

Fermat, Pierre de, 39

Criptografia de Chave Pblica, 2, 51

Frao Contnua Simples Finita, 126

Criptografia Simtrica, 50

Frao Reduzida, 125

Criptograma, 44

Funo, 24

Criptologia, 46

ponto fixo, 82

Crivo de Eratstenes, 22, 139

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

Mximo Divisor Comum, 13

Funo de Carmichael, 25

Mnimo Mltiplo Comum, 14

Funo de Euler, 24

MD2, 5
MD5, 5

Gauss, Karl Friedrich, 39


Gerador, 31
Grupo Cclico, 31

Mensagem, 44
Merkle, Ralph, 51
Miller, 3

Hellman, Martin, 51

MIPS, 142

Hiptese de Riemann, 168

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

Nmero Provavelmente Primo, 165

AC-Raiz, 58

Nmero Pseudo-primo, 165

AR, 58

Nmeros Co-primos, 13

CG ICP-Brasil, 58

Nmeros Primos Balanceados, 134

ICP-Brasil, 57

Nmeros Primos entre Si, 13

ITI, 58

Nmeros Relativamente Primos, 13

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

provvel resduo quadrtico, 29

PKCS #1 - RSA CRT, 99

pseudo resduo quadrtico, 29

PKCS #1 - RSA utilizando expoente univer- RSA, 62


sal, 89

assinatura digital, 73

PLD, 2

ataques e defesas, 115

PLDCE, 2

ciclos da exponenciao modular, 81

Ponto Fixo, 82

ciframento em blocos, 66

probabilidade, 157
Primalidade, 12
teste de, 22

ciframento por substituio, 66


codificao de mensagem, 150
criptoanlise inicial, 72

Primitiva Criptogrfica, 45

cuidados necessrios, 160

Primo, 12

curvas elpticas, 3

probabilidade, 13

custo de tempo de processamento, 68

Primo Duplamente Forte, 134

escolha dos parmetros, 85

Primo Forte, 134

estado da arte, 64

Primos Balanceados, 134

exemplo numrico terico, 69

Primos Gmeos, 13

expoentes, 78

Princpio de Kerckhoff, 47

fatorao do mdulo RSA atravs da

Probabilidade de Coliso, 60

chave privada, 84

Probabilidades, tabela, 183

funo de Euler, 77

Problema do Logaritmo Discreto, 2

funes unidirecionais com segredo, 64

sobre Corpos Finitos, 2

funcionalidade, 70

sobre Curvas Elpticas, 2

homomorfismo multiplicativo, 80

Protocolo Criptogrfico, 46

inverso multiplicativo, 79

Protocolo Diffie e Hellman, 2

mdulo, 77

NDICE REMISSIVO
mensagens pontos fixos, 81

191
corolrio, 25

nomenclatura, 65

Teorema de Fermat, Pequeno, 25

padronizao, 65

Teorema de Lagrange, 23

paridade dos expoentes, 80

Teorema dos Nmeros Primos, 13

patente, 63

Teorema Fundamental da Aritmtica, 13

processo de criao das chaves, 67

Teste de Miller-Rabin, 167

processo de utilizao das chaves, 68

Teste de Primalidade, 22, 164

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

Sistema Criptogrfico de Chave Pblica, 2


Sistema Reduzido de Resduos, 27

Unicode, 42

Sistema Reduzido Mximo de Resduos, 27


Skype, 5
SSL, 5, 151
Sun-Tsu, 39

Variao de um Algoritmo Criptogrfico, 88


Variao RSA
chave privada particionada, 91
CRT, 95

Tamanho Binrio, 43

CRT por ART, 101

Tempo Exponencial, 17

CRT por Garner, 97

Tempo Polinomial, 17

CRT por Gauss, 97

Teorema Chins do Resto, 22

DRSA, 107

algoritmo de Garner, 97

DRSA por Padhye, 108

complexidade computacional, 22

DRSA por Padhye Redistribudo, 110

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

Berlin and New York, 1998.


[12] D. Boneh and G. Durfee and Y. Frankel, Exposing an RSA Private Key given a small
fraction of the private key bits, AsiaCrypt98, Lecture Notes in Computer Science,
Vol. 1514, Springer-Verlag, 1998, 25-34.
[13] D. Boneh and G. Durfee and N. Howgrave-Graham, Factoringn = pr q for Large r,
Proceedings of Crypto99, Lecture Notes in Computer Science, Vol. 1666, SpringerVerlag, 1999, 326-337.
[14] D. Boneh and A. Joux and P. Q. Nguyen, Why textbook ElGamal and RSA encryption are insecure, AsiaCrypt00 Proceedings, Lecture Notes in Computer Science,
Vol. 1976, Springer-Verlag, 2000, 30-44.
[15] D. Boneh and H. Shacham, Fast Variants of RSA, RSA Laboratories, 2002.
[16] J. Borst, Block Ciphers: Design, Analysis and Side-Channel Analysis, Katholieke
Universiteit Leuven, Belgium, PhD thesis, 2001.
[17] S. Burnett and S. Paine, RSA Securitys Official Guide to Cryptography,
Osborne/McGraw-Hill, Berkeley, CA, USA, 2004.
[18] D. P. B. de A. Camara, Criptografia de Chave Pblica baseada em Curvas Elpticas
com Aplicaes, Universidade Federal de Pernambuco, Dissertao apresentada
Universidade Federal de Pernambuco, 2001.
[19] Cartes
&
Cifres,
Cartes
Safe
Xpresso,
URL:
http://www.cartoes-cifroes.com/produtos/cartoes_sc_safex.htm, acesso em dezembro
de 2007.
[20] Certicom ECC Conference 2007, Hellman - 2007, URL: http://www.certicom.jp,
acesso em dezembro de 2007.
[21] H. Cohen, A course in computational algebric number theory, Graduate Texts in
Mathematics, Springer-Verlag, Vol. 138, 1993.
[22] T. Collins and D. Hopkins and S. Langford and M. Sabin, Public Key Cryptographic
Apparatus and Method, US Patent #5.848.159, 1997.
[23] Compaq Computer Corporation.,
Cryptography using Compaq multiprime technology in a parallel processing environment,
URL:
ftp://ftp.compaq.com/pub/solutions/ CompaqMultiPrimeWP.pdf, acesso em dezembro
de 2007, 2002.
[24] D. Coppersmith, Small solutions to polynomial equations, and low exponent RSA
vulnerabilities, J. Cryptology 10, 1997, 233-260.

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:

[43] G. Iezzi e O. Dolce e D. Degenszain e R. Perigo, Matemtica - Volume nico, Editora


Atual, So Paulo, SP, Brasil, 2005.
[44] Information
technology
Security
techniques,
Encryption
algorithms
Part
2:
Asymmetric
ciphers,
URL:
http://
www.iso.ch/iso/en/stdsdevelopment/techprog/workprog/TechnicalProgrammeProject
DetailPage.TechnicalProgrammeProjectDetail?csnumber=37971, acesso em dezembro
de 2007.
[45] Instituto Nacional de Tecnologia da Informao, Autoridade Certificado Brasileira
Raiz - ITI, URL: http://www.iti.gov.br/twiki/bin/view/ITI/Apresentacao, acesso em
dezembro de 2007.
[46] P. Jamnig, Securing the RSA-cryptosystem against attacks, Criptologia, Vol. 12,
1998, 159-164.
[47] D. Johnson e A. Menezes, The Elliptic Curve Digital Signature Algorithm
(ECDSA), Technical Report CORR 99-31, Depto of C&O, University of Waterloo,
Canada, 1999.
[48] D. Kahn, The codebreakers: the story of secret writing, Scribner press, New York,
1996.
[49] N. Koblitz, Algebric Aspects of Crytography, Springer, 1998.
[50] N. Koblitz, Elliptic Curve Cryptosystems, Mathematics of Computation, Vol. 48,
N. 177, 1987, 203-209.
[51] P. Kocher, Timing attack on implementations of Diffie-Hellman, RSA, DSS,
and other systems, Crypto96, Vol. 1109, Lecture Notes in Computer Science,
Springer-Verlag, 1996, 104-113.
[52] P. Kocher and J. Jaffe and B. Jun, Differential Power Analysis, Crypto99, Lecture
Notes in Computer Science, Vol. 1666, 1999, 388-397.

REFERNCIAS

197

[53] K. Koyama , U. M. Maurer, T. Okamoto e S. A. Vanstone, New Public-Key Schemes


Based on Elliptic Curves over the Ring Zn , Advances in Cryptology, Crypto92,
Springer-Verlag, 1992, 40-49.
[54] A. K. Lenstra, Memo on RSA signature generation in the presence of faults, URL:
http://cm.bell-labs.com/who/akl/, acesso em dezembro de 2007, 1996.
[55] A. K. Lenstra and B. M. M. de Weger, Twin RSA, In E. Dawson and S. Vaudenay,
editors, Mycrypt 2005, Vol. 3715, Lecture Notes in Computer Science, Springer
Verlag, Berlin, 2005, 222-228.
[56] D. Lehmer and R. Powers, On factoring large numbers, Bulletin of the AMS: 1931,
37:770-776.
[57] U. Maurer, Fast generation of prime numbers and secure public-key cryptographic
parameters, Journal of Crytology, 8 (1995), 123-155.
[58] A. J. Menezes and P. C. van Oorschot and S. A. Vanstone, Handbook of applied
cryptography, URL:http://cacr.math.uwaterloo.ca/hac, acessado em dezembro de
2007, ISBN 0849385237, CRC Press , 1996.
[59] V. S. Miller, Use of Elliptic Curves in Cryptography, Advances in Cryptology,
Proceedings of CRYPTO85, Springer Verlag Lecture Notes in Computer Science,
218, 1986, 417-426.
[60] National Institute of Standards and Technology - NIST, FIPS Publication 186-2:
Digital Signature Standard (DSS), 2000,
URL:
http://csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf,
acesso em
dezembro de 2007.
[61] National Institute of Standards and Technology - NIST, International System of Units (SI) - Prefixes for binary multiples, URL:
http://physics.nist.gov/cuu/Units/binary.html, acesso em dezembro de 2007.
[62] NESSIE project,
NESSIE Security Report,
version
https://www.cosic.esat.kuleuven.be/nessie/deliverables/D21-v2.pdf,
dezembro de 2007, 2003.
[63] NFSNET project, NFSNET Large-scale Distributed
http://www.nfsnet.org/, acesso em dezembro de 2007.

2.0,
URL:
acesso
em

Factoring,

URL:

[64] T. Okamoto and D. Pointcheval, RSA-REACT: An Alternative to RSA-OAEP,


Second NESSIE Workshop, Egham, 2001.
[65] S. Padhye, An Efficient Variant of RSA Cryptosystem with Semantic Security,
Cryptology ePrint Archive, Report 2005/392, 2005.

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

[80] I. K. Salah and A. Darwish and S. Oqeili, Mathmetical Attacks on RSA


Cryptosystem, Journal of Computer Science 2 (8), 2006, 665-671.
[81] A. Shamir and E. Tromer, Factoring Large Numbers with the TWIRL Device,
Crypto 2003, Lecture Notes in Computer Science, 2729, Springer-Verlag, 2003, 1-26.
[82] J. M. L. Santos, O uso de cifragem para proteo de canais abertos, Universidade
do Porto - Portugal, Dissertao apresentada ao Instituto de Matemtica Pura, 2002.
[83] A. Shamir, RSA for paranoids, A. Shamir, CryptoBytes 1, 1995, 1-4.
[84] C. E. Shannon, Communication Theory of Secrecy Systems, Bell System Technical
Journal, Vol. 28, 1949, 656-715.
[85] S. Shokranian e M. Soares e H. Godinho, Teoria dos Nmeros, Editora UnB, Braslia,
Brasil, 1999.
[86] V. Shoup, A computational introduction to number theory and algebra, Cambridge
University Press, 2005.
[87] V. Shoup, A proposal for an ISO standard for public key encryption (version 2.1),
2001.
[88] G. J. Simmons and M. J. Norris, Preliminary comments on the M.I.T. public-key
cryptosystem Criptologia 1 (4), 1977, 406-414.
[89] Skype Technologies, Guide for Network Administrators - edition 1.0.1,
http://www.skype.com/security/guide-for-network-admins.pdf, acesso em dezembro, 2007.
[90] B. A. de Souza, Teoria dos Nmeros e o RSA, Universidade Estadual de Campinas,
SP, Brasil, Dissertao apresentada ao Instituto de Matemtica, Estatstica e Computao Cientfica, 2004.
[91] W. Stallings, Cryptography and Network Security: principles and practice, New
Jersey, Prentice Hall, 1999.
[92] Sun Microsystems, Diffie - 2007, URL:
http://www.sun.com/featured-articles/2007-0501/feature/index.jsp, acesso em dezembro de 2007.
[93] T. Takagi, Fast RSA-type Cryptosystem Modulo P K Q, In H. Krawczyk,Proceedings
of Crypto98, Vol. 1462, Lecture Notes in Computer Science, Springer-Verlag, 1998,
318-326.
[94] T. Takagi, Fast RSA-Type Cryptosystems Using n-Adic Expansion, Advances in
Cryptology - CRYPTO97, Lecture Notes in Computer Science, 1294, Springer, 1997,

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.

You might also like