62
Implementa¸ ao e An´ alise comparativa de quatro varia¸ oes do criptossistema RSA Cesar Alison Monteiro Paix˜ ao Trabalho apresentado ao Instituto de atematica e Estat´ ıstica - IME/USP, como requisito parcial para obten¸ ao do grau de Mestre em Ciˆ encias, na ´ Area de Ciˆ encia da Computa¸ ao. Orientador: Prof. Dr. Routo Terada ao Paulo setembro de 2002

Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Embed Size (px)

Citation preview

Page 1: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Implementacao e Analise comparativa de quatro

variacoes do criptossistema RSA

Cesar Alison Monteiro Paixao

Trabalho apresentado ao Instituto deMatematica e Estatıstica - IME/USP, comorequisito parcial para obtencao do grau deMestre em Ciencias, na Area de Ciencia daComputacao.

Orientador: Prof. Dr. Routo Terada

Sao Paulo

setembro de 2002

Page 2: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do
Page 3: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Resumo

Em 1976 foi publicado o artigo “New Directions in cryptography”dos autores W. Diffie e M. E. Hellman [12], o qual inspirou oschamados algoritmos de chave publica. Desde entao, varios crip-tossistemas desta categoria foram criados, sendo o RSA o mais po-pular e utilizado destes. Uma das razoes para isso e que quandoimplementado adequadamente o RSA pode ser considerado seguro,ou seja, a maioria dos ataques no RSA simplesmente ilustram umaimplementacao inadequada do mesmo.

Entretanto, com a disseminacao e a popularizacao da Internet,o numero de usuarios, informacoes sigilosas e ataques cresceu es-pantosamente obrigando aos desenvolvedores de criptossistemas aaumentarem o tamanho do modulo RSA. Como resultado o RSAvem se tornando cada vez mais lento, o que contribuiu para o apare-cimento de variacoes que propoem diminuir o tempo de execucao domesmo. O principal objetivo deste documento e estudar as quatrovariacoes mais populares do criptossistema RSA, tendo como segundoobjetivo a analise das mesmas em relacao a seguranca, velocidade,interoperabilidade com sistemas atuais, alem da analise de uma novavariacao baseada em duas das tecnicas estudadas.

i

Page 4: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do
Page 5: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Sumario

Resumo i

1 Introducao 11.1 O documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Organizacao do Documento . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Conceitos Fundamentais 52.1 Inteiros, Primos e Outras Definicoes . . . . . . . . . . . . . . . . . . . . . . 52.2 Resto de divisao, Modulo, ZN e Z∗

N . . . . . . . . . . . . . . . . . . . . . . 62.3 Inversa Multiplicativa modulo N . . . . . . . . . . . . . . . . . . . . . . . . 72.4 Teorema Chines do Resto - TCR . . . . . . . . . . . . . . . . . . . . . . . 82.5 Grupo e Anel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.5.1 Grupo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.5.2 Anel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3 Criptografia eCriptografia de Chave Publica 113.1 Criptografia de Chave Publica . . . . . . . . . . . . . . . . . . . . . . . . . 123.2 Criptossistema RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.2.1 Exemplo Numerico . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.3 Metodo de Quisquater-Couvreur . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3.1 Exemplo Numerico . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.4 Correcao e Seguranca do RSA . . . . . . . . . . . . . . . . . . . . . . . . . 173.5 Alguns Ataques Elementares no RSA . . . . . . . . . . . . . . . . . . . . . 19

3.5.1 Expoente Publico Pequeno (Low Public Exponent) . . . . . . . . . . 193.5.2 Expoente Particular Pequeno (Low Private Exponent) . . . . . . . . 203.5.3 Modulo Comum (Commom Modulos) . . . . . . . . . . . . . . . . . 203.5.4 Ocultamento (Blinding) . . . . . . . . . . . . . . . . . . . . . . . . 21

3.6 Consideracoes sobre o criptossistema RSA . . . . . . . . . . . . . . . . . . 21

iii

Page 6: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

4 Variacoes do RSA 234.1 RSA em lote (Batch RSA) . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.1.1 Exemplo Numerico . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.2 RSA com multiplos fatores (Multi-factor RSA) . . . . . . . . . . . . . . . . 29

4.2.1 RSA com multiplos primos (Multi-prime RSA) . . . . . . . . . . . . 304.2.2 Exemplo Numerico . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.2.3 RSA com multiplas potencias (Multi-power RSA) . . . . . . . . . . 324.2.4 Algoritmo para o calculo de Mp’ . . . . . . . . . . . . . . . . . . . . 344.2.5 Exemplo Numerico . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.3 RSA rebalanceado (Rebalanced RSA) . . . . . . . . . . . . . . . . . . . . . 374.3.1 Exemplo Numerico . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

5 Plano de Trabalho 435.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5.1.1 Public-Key Cryptography Standards - PKCS . . . . . . . . . . . . . 445.1.2 GNU MP - GMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

5.2 Cronograma das Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Indice Remissivo 48

Referencias Bibliograficas 51

iv

Page 7: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Lista de Figuras

3.1 RSA - Criptografia e Decriptografia . . . . . . . . . . . . . . . . . . . . . . 153.2 RSA - Assinatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.1 RSA em lote - Calculo do Produto . . . . . . . . . . . . . . . . . . . . . . 264.2 RSA em lote - Exponenciacao . . . . . . . . . . . . . . . . . . . . . . . . . 264.3 RSA em lote - Quebra do Produto . . . . . . . . . . . . . . . . . . . . . . 274.4 RSA em lote - Quebra do Produto (Continuacao) . . . . . . . . . . . . . . 284.5 RSA com multiplos primos- Criptografia e Decriptografia . . . . . . . . . 314.6 RSA com multiplas potencias - Decriptografia . . . . . . . . . . . . . . . . 344.7 RSA rebalanceado - Criptografia e Decriptografia . . . . . . . . . . . . . . 39

v

Page 8: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do
Page 9: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Lista de Tabelas

5.1 Cronograma das Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . 47

vii

Page 10: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Capıtulo

1Introducao

O RSA e o criptossistema de chave publica mais amplamente aceito e implementado.

Foi criado por R.L Rivest, A. Shamir e L. Adleman [1] em agosto de 1977 no (M.I.T)

recebendo esta sigla devido as iniciais dos nomes de seus criadores.

Ele tem sido usado para seguranca no trafego da web e em alguns ambientes sem fio,

gracas a caracterısticas que permitem atraves da criptografia, a geracao e verificacao de

assinatura digital. Outro fato importante que justifica a ampla utilizacao do RSA ainda

nos dias de hoje vem de que, desde que foi introduzido em Agosto de 1977 pelo Scientif

American, nenhum ataque sobre este criptossistema obrigou a mudanca na estrutura do

mesmo, ou seja, o criptossistema nao precisou ser alterado desde sua criacao. Na literatura

cientifıca encontramos casos onde o RSA e inseguro, mas tais casos podem ser evitados

com a simples escolha dos parametros e portanto sao muitas vezes considerados exemplos

de utilizacao inadequada do criptossistema. O interessante e que normalmente, mesmo os

novos ataques acabam apontando para um desses casos.

Apesar das notaveis caracterısticas mencionadas acima, o RSA possui tambem des-

vantagens e a principal delas e o alto tempo computacional necessario para a criptografia

1

Page 11: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

2 1.1. O DOCUMENTO

e decriptografia. Objetivando diminuir esse tempo algumas implementacoes do RSA

utilizam um expoente de criptografia ou decriptografia pequeno, mas como veremos na

secao 3.5 e necessario tomar cuidado na escolha destes expoentes e assim limita-se o

ganho de desempenho. Neste contexto, nos ultimos anos alguns algoritmos que buscam

melhorar o desempenho de criptografia e principalmente de decriptografia do RSA tem

sido propostos, merecendo alguns destes atencao especial.

1.1 O documento

Este documento contem um resumo dos topicos relacionados com a criptografia de

chave publica concentrando a atencao no algoritmo RSA e quatro variacoes recentes deste

que visam diminuir o tempo de decriptografia do algoritmo original. Preparamos aqui o

caminho para um estudo mais aprofundado destes algoritmos e possıveis novas variacoes.

1.2 Organizacao do Documento

Neste capıtulo foi apresentado as motivacoes a que levaram um estudo do criptossis-

tema RSA e algumas de suas variacoes.

No segundo capıtulo serao introduzidos os conceitos necessarios para a compreensao

dos algoritmos de chave publica abordando desde a definicao de numeros inteiros ate a

introducao de teoremas fundamentais na criptografia.

No terceiro capıtulo sera apresentado o criptossistema RSA atraves dos algoritmos de

geracao de chaves, criptografia e decriptografia. Em seguida apresentaremos o metodo de

Quisquater-Couvreur, o qual e utilizado para aumentar a performance da decriptografia

RSA. Provaremos a correcao do RSA e analisaremos sua seguranca descrevendo alguns

ataques elementares sobre o criptossistema, fechando o capıtulo com algumas conside-

racoes sobre o mesmo.

No quarto capıtulo serao apresentadas as quatro variacoes do RSA que pretendemos

analisar durante o projeto. Novamente descreveremos os algoritmos de geracao de chaves,

Page 12: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 1. INTRODUCAO 3

criptografia e decriptografia de cada variacao seguidos de um exemplo numerico 1 de cada

uma delas.

O quinto Capıtulo e destinado ao plano de trabalho, ou seja, a um planejamento das

atividades exercidas desde o ınicio do estudo ate sua defesa.

1Todos os exemplos apresentados neste documento, foram criados utilizando o programa Maple V.

Page 13: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do
Page 14: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Capıtulo

2Conceitos Fundamentais

Para iniciarmos nosso estudo em criptografia de chave publica, mais precisamente no

estudo do criptossistema RSA, necessitamos relembrar algumas definicoes e conceitos

da teoria dos numeros e assim formar o alicerce necessario para a compreensao dos

algoritmos apresentados posteriormente. Portanto este capıtulo serve como base para

todos os algoritmos e ideias apresentadas ao longo deste documento e deve ser consultado

assim que uma duvida surgir.

2.1 Inteiros, Primos e Outras Definicoes

Na criptografia o ınicio de tudo esta nos numeros inteiros, mais especificamente na

criptografia de chave publica temos como ponto fundamental os numeros primos. A

seguir, relembraremos estes conceitos e alguns outros de vital importancia para o decorrer

do texto.

O conjunto dos inteiros {... -2, -1, 0, 1, 2, ...} e denotado pelo sımbolo Z.

5

Page 15: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

6 2.2. RESTO DE DIVISAO, MODULO, ZN E Z∗N

Definicao 2.1.1 Sejam a e b inteiros. Entao a divide b se existe um inteiro c tal que b

= ac. a divide b e denotado por a|b e pode ser dito como a e um divisor de b, ou a e um

fator de b.

Definicao 2.1.2 Um inteiro c e um divisor comum de a e b se c|a e c|b.

Definicao 2.1.3 Um inteiro positivo d denotado por mdc(a,b) e o maximo divisor comum

dos inteiros a e b se d e um divisor comum de a e b e sempre que c|a e c|b entao c|d. Da

mesma forma podemos dizer que d e o maior inteiro positivo que divide ambos a e b, com

excecao de mdc(0,0) = 0.

Definicao 2.1.4 Dois inteiros a e b sao ditos relativamente primos ou coprimos se mdc(a,b)

= 1.

Definicao 2.1.5 Um inteiro p ≥ 2 e dito primo, se seus unicos divisores positivos sao 1

e p. Caso contrario p e chamado composto.

2.2 Resto de divisao, Modulo, ZN e Z∗N

Se a e N sao inteiros e N > 0, o resto de a dividido por N e o menor inteiro r ≥ 0

que difere de a por um multiplo de N e sera representado por a mod N (a modulo N).

Exemplo: 7, 17, -3 possuem resto 7 quando divididos por 10. Escrevemos a = qN + r ou

a ≡ r (mod N), onde o inteiro q e chamado quociente e o sımbolo ≡ e conhecido como

congruencia 1 .

O conceito de congruencia foi introduzido por Carl F. Gauss em 1801 (veja [16]) onde

foi definido que a e b sao congruentes ou equivalentes modulo N se N |(a − b) para N >

0, ou seja, a - b = kN para algum inteiro k. Repare que isso e o mesmo que dizer que

a e b sao congruentes modulo N se possuem o mesmo resto sobre N e por isso 7, 17, -3

sao congruentes modulo 10. Observe ainda, que existem apenas N inteiros que nao sao

equivalentes modulo N, pois o resto da divisao por N e tal que 0 ≤ r ≤ N - 1. Definimos

entao:

1Neste documento trataremos a ≡ b (mod N) por a = b mod N, por questao de conveniencia.

Page 16: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 2. CONCEITOS FUNDAMENTAIS 7

Definicao 2.2.1 O conjunto dos inteiros modulo N e denotado por ZN .

Observe que ZN forma o conjunto dos inteiros 0, 1, 2, ..., N − 1 onde a adicao, a subtracao

e a multiplicacao sao executadas modulo N (veja secao 2.5.2).

Definicao 2.2.2 O conjunto de todos os elementos em ZN que sao relativamente primos

a N e denotado por Z∗N .

Definicao 2.2.3 O numero de elementos em Z∗N e simbolizado por φ(N), este numero

e tambem conhecido como ordem de Z∗N . Em particular para N =

∏ki=1 pi onde N e o

produto de primos distintos φ(N) =∏k

i=1(pi − 1).

Com os conceitos e definicoes vistos acima podemos enunciar o seguinte teorema que

garante o funcionamento do algoritmo RSA (veja secao 3.4).

Teorema 2.2.1 (Euler) Sejam p1, p2...pk, k primos distintos e N =∏k

i=1 pi. Entao para

todo a ∈ Z∗N temos aφ(N) ≡ 1 mod N 2.

Atraves do Teorema de Euler chegamos ao seguinte corolario.

Corolario 2.2.1 Sejam p1, p2...pk, k primos distintos e N =∏k

i=1 pi. Entao para todo a

∈ Z∗n e um inteiro positivo r temos arφ(N)+1≡ a mod N. Pois, arφ(N)+1 = arφ(N)a = 1ra =

a mod N.

2.3 Inversa Multiplicativa modulo N

Seja a ∈ ZN . A inversa multiplicativa de a modulo N e um inteiro x ∈ ZN tal que

ax ≡ 1 (mod N). Se tal x existir ele e unico, neste caso dizemos que a e inversıvel e sua

inversa e denotada por a−1. Sabemos que a e inversıvel se e somente se mdc(a,n) = 1, e

podemos calcular a inversa de a pelo algoritmo de euclides estendido [24].

2Este teorema e uma extensao do Teorema de Fermat [23, 24]

Page 17: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

8 2.4. TEOREMA CHINES DO RESTO - TCR

2.4 Teorema Chines do Resto - TCR

O teorema chines do resto pode ser visto informalmente como um algoritmo que

permite resolver sistemas de congruencias lineares. Possui este nome porque um dos

primeiros lugares em que apareceu foi o livro Manual de Aritmetica do Mestre Sun, escrito

em torno de 100 D.C, pelo matematico Sun-Tsu. O matematico resolveu o problema de

calcular inteiros x que possuem restos 2, 3, 2 quando divididos respectivamente por 3,

5, 7 [17, 23]. A solucao e dada por x = 23 ou mais especificamente x = 23 + 105s

para qualquer inteiro s (Repare que 105 e o produto de 3, 5 e 7). O problema pode ser

enunciado da seguinte forma:

Se os inteiros n1, n2, ..., nk sao relativamente primos entre si, entao o sistema de

congruencias

x ≡ a1 (mod n1)

x ≡ a2 (mod n2)...

x ≡ ak (mod nk)

tem uma unica solucao modulo N = n1n2...nk, onde a1, a2, ..., ak sao inteiros.

A solucao do sistema acima para k ≥ 2 e descrita a seguir:

Sejam N1 = (∏k

j=1 nj)/n1, ..., Nk = (∏k

j=1 nj)/nk. Pelo Algoritmo de Euclides

Estendido (veja [24] e secao 2.3) calculamos os unicos inteiros,

N1’ = N−11 mod n1, ..., Nk’ = N−1

k mod nk

desde que cada nj e relativamente primo ao correspondente Nj e assim pelo Teorema

Chines do Resto como mostrado em [20] obtemos:

x =k

j=1

ajNj(N−1j mod nj) mod N (2.1)

Page 18: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 2. CONCEITOS FUNDAMENTAIS 9

Enunciaremos este resultado mais formalmente a seguir:

Teorema 2.4.1 (TCR) Suponha n1, ..., nk inteiros positivos relativamente primos entre

si e sejam a1, ..., ak inteiros. O sistema de k congruencias x ≡ aj (mod nj) (1 ≤ j ≤ k)

possui uma unica solucao modulo N = n1n2...nk que e dada por

x =∑k

j=1 ajNjuj mod N

onde Nj = N/nj e uj = N−1j mod nj, para 1 ≤ j ≤ k.

Ou seja, para o caso particular de k = 2 temos N1 = (n1n2)/n1 = n2 e N2 = (n1n2)/n2

= n1 e portanto

x = a1N1N′1 + a2N2N

′2 mod (n1n2) (2.2)

onde N1’ = n−12 mod n1 e N2’ = n−1

1 mod n2. Note que se a1 = a2 entao podemos

reescrever a solucao para o caso k = 2 da seguinte maneira

x = a1N1N1’ + a2N2N2’ mod (n1n2)

x = a1(N1N1’ + N2N2’) mod (n1n2)

x = a1 mod (n1n2)

pois N1N1’ + N2N2’ = sn1n2 + 1, para algum inteiro s ≥ 1 [23] .

2.5 Grupo e Anel

2.5.1 Grupo

Um Grupo (G,*) e um conjunto G com uma operacao binaria * definida sobre G tal

que:

1 - A operacao * e associativa, isto e, para qualquer a, b, c ∈ G: a*(b*c) = (a*b)*c;

2 - Existe um elemento 1 ∈ G, chamado identidade, tal que para qualquer a ∈ G:

a*1 = 1*a.

Page 19: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

10 2.5. GRUPO E ANEL

3 - Para cada elemento a ∈ G existe um elemento a−1 ∈ G, chamado o inverso de a,

tal que a ∗ a−1 = a−1 ∗ a = 1.

Um exemplo e o grupo (Z, +) ou seja, o grupo formado pelos inteiros Z com a operacao

soma usual. Este grupo e conhecido como grupo aditivo, a identidade e representada por

0 e o inverso de a e representado por -a. Um grupo e dito comutativo ou abeliano se para

qualquer a, b ∈ G : a*b = b*a.

2.5.2 Anel

Um Anel (A,+,*) e um conjunto A com duas operacoes binarias: soma + e multipli-

cacao * definidas sobre G tais que:

1 - (A,+) e um grupo aditivo comutativo com identidade 0.

2 - A operacao * e associativa, isto e, para qualquer a, b, c ∈ A: a*(b*c) = (a*b)*c.

3 - Existe um elemento chamado identidade 1 ∈ A, 1 6= 0, tal que para todo a ∈ A:

a*1 = 1*a = a.

4 - A operacao * e distributiva sobre +, isto e, para qualquer a, b, c ∈ A: a*(b+c) =

(a*b) + (a*c) e (b+c)*a = (b*a) + (c*a).

A e dito comutativo se para qualquer a,b ∈ G temos a*b = b*a. Um exemplo de um

anel comutativo e o conjunto Z dos inteiros com as operacoes de soma e multiplicacao

usuais. Um outro anel importante ao nosso trabalho e o conjunto ZN com a soma e

multiplicacao mod N, pois e sobre este anel que o criptossistema RSA atua. Quando

N e primo o anel ZN forma um Grupo, ou seja, um anel comutativo no qual todos os

elementos nao nulos possuem inverso multiplicativo (veja a secao 2.3).

Page 20: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Capıtulo

3Criptografia e

Criptografia de Chave Publica

Em grego, kryptos significa secreto ou oculto e grapho se refere a escrita, portanto

poderıamos definir a criptografia como a ciencia de escrever em codigo secreto. Informal-

mente a criptografia estuda os metodos para codificar uma mensagem de modo que so seu

destinatario legıtimo consiga interpreta-la [5, 14]. O metodo mais simples consiste em

substituir uma letra pela seguinte no alfabeto, isto e, transladar o alfabeto uma casa para

diante de forma circular. Uma codificacao semelhante a esta foi utilizada por Cesar afim

de estabelecer uma comunicacao segura com as legioes em combate pela Europa, ficando

assim conhecida como cifra de Cesar, 1 um dos primeiros metodos de codificacao de que

se tem notıcia.

A cifra de Cesar pertence a uma classe de algoritmos conhecidos como algoritmos

de chave secreta. A chave secreta no caso da cifra de Cesar seria o numero de posicoes

deslocadas em relacao ao inıcio do alfabeto (no caso acima somente 1 posicao) . Obser-

1Criptografias elementares sao chamados de cifras [23]

11

Page 21: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

12 3.1. CRIPTOGRAFIA DE CHAVE PUBLICA

vando este metodo notamos que a chave deve ser previamente combinada entre o emissor

e o receptor da mensagem atraves de um meio sigiloso, alem disso, deve ser mantida em

segredo para evitar que uma pessoa nao autorizada consiga ler a mensagem.

3.1 Criptografia de Chave Publica

Os criptossistemas estudados daqui em diante sao conhecidos como algoritmos de chave

publica ou assimetricos. Eles se baseiam na ideia de que cada usuario possui um par de

chaves (d, e) sendo d a chave particular e portanto secreta do usuario ( conhecida tambem

como chave de decriptografia) e e a chave publica que pode ser fornecida a qualquer pessoa

(conhecida tambem como chave de criptografia ou encriptacao).

Para facilitar o entendimento suponha que possuımos uma caixa inquebravel com uma

fechadura que permite a entrada de 2 chaves CE e CD, estas chaves possuem a seguinte

propriedade, a chave CE so permite o movimento de giro para a esquerda enquanto que

a chave CD so permite movimentos giratorios para a direita. Suponha que a caixa esteja

aberta quando a tranca da fechadura esta na posicao central, ou seja, qualquer outra

posicao fecha terminantemente a caixa. Dessa maneira, um emissor pode colocar uma

mensagem na caixa, tranca-la com sua chave, envia-la atraves de um meio qualquer e ter

certeza que ela so sera aberta pelo destinatario. Repare que qualquer uma das chaves pode

trancar a caixa (criptografar a mensagem), usando a outra para abri-la (decriptografar a

mensagem) 2.

Voltando ao par de chaves (d,e) com o texto legıvel M, devemos ter as seguintes relacoes

em um sistema de chave publica:

• Denotando por d() a aplicacao da chave particular d, que transforma M em d(M)

= C. Entao e(C) = M onde e() denota a aplicacao da chave e. Ou seja d(e(M)) =

M (e e a chave inversa da chave d).

2Isso nao acontece em todos os criptossistemas de chave publica veja em [11] mas e uma propriedadereferente ao algoritmo RSA estudado neste documento.

Page 22: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 3. CRIPTOGRAFIA ECRIPTOGRAFIA DE CHAVE PUBLICA 13

• O calculo do par de chaves (d, e) e computacionalmente facil, ou seja, existe

algoritmo de tempo polinomial para tal calculo.

• E computacionalmente difıcil calcular d a partir do conhecimento de e.

• Os calculos de d() e e() sao computacionalmente faceis para quem conhece as chaves.

• E computacionalmente difıcil calcular d() sem conhecer a chave d.

Os criptossistemas de chaves publicas alem de resolver o problema da distribuicao

de chaves que ocorrem nos criptossistemas de chave secreta ou simetricos visam resolver

problemas conhecidos como:

• Autenticacao de Destino - esconder informacoes sigilosas das pessoas que con-

trolam as linhas de comunicacao e os computadores intermediarios (provedores)

garantindo que so o verdadeiro destinatario consiga ler a informacao enviada.

• Autenticacao da Origem - evitar que um mal-intencionado personalize ou fal-

sique a identidade do emissor enviando informacao para o destinatario, ou seja, o

destinatario quer ter certeza de que foi o verdadeiro emissor que enviou a informacao.

• Deteccao de Integridade de Informacao - Evitar que um mal- intencionado leia

e altere parte da informacao transitando na linha de comunicacao antes de chegar ao

destinatario ou apos o recebimento e armazenamento no computador deste. Assim

o emissor gostaria de detectar se alguma alteracao foi feita na linha ou no local de

armazenamento dos dados.

3.2 Criptossistema RSA

Como ja foi dito anteriormente o RSA foi inventado por R.L Rivest, A Shamir e L.

Adleman, e e atualmente, o criptossistema mais usado em aplicacoes comerciais, sendo

utilizado por exemplo no Netscape, o mais popular dos softwares de navegacao pela

Internet.

Em linhas gerais podemos descrever tres algoritmos que constituem o criptossistema

RSA. Por convencao denotaremos daqui para frente Beto como sendo emissor ou remetente

Page 23: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

14 3.2. CRIPTOSSISTEMA RSA

de uma mensagem M, Alice como sendo a receptora ou destinataria desta mensagem e

Carlos um mal-intencionado que deseja ler informacao sigilosa alheia.

Geracao de Chaves - O algoritmo de geracao de chaves possui um parametro de

seguranca n como entrada (Aqui consideramos n = 1024 bits). Para obter um par de

chaves um usuario ou uma entidade U calcula atraves de um algoritmo probabilıstico

(veja [23]) dois primos p e q de bn/2c bits e um inteiro N ← pq 3. A seguir, U escolhe

um e relativamente primo a φ(N) = (p − 1)(q − 1). O valor e e chamado de expoente de

criptografia ou encriptacao, e e normalmente fixado com o valor 65537. A chave publica

de U e dada por < N, e > e a chave particular de U e dada por < N, d > satisfazendo ed

= 1 mod φ(N). Normalmente, a chave publica < N, e > e enviada para uma autoridade

certificadora (CA) 4 a qual gera um certificado para esta.

Criptografia - Para enviar uma mensagem X criptografada para Alice, Beto primeiro

formata X usando o padrao PKCS #1 (veja secao 5.1.1) obtendo assim um inteiro M

pertencente ao anel ZN . A seguir Beto obtem eA (chave publica da Alice) atraves da

propria Alice ou de um repositorio publico e calcula o texto codificado C fazendo C ←

M eA mod N (figura 3.1). A criptografia usando a chave particular da Beto e efetuada da

mesma forma e o texto gerado por esta criptografia e conhecido como mensagem assinada

por Beto, sendo a verificacao da assinatura a operacao de decriptografia usando a chave

publica de Beto (figura 3.2).

Decriptografia - Para decriptografar um texto codificado C, Alice usa sua chave

particular dA para calcular a e-esima raiz de C fazendo M ← CdA mod N (figura 3.1).

Como ambos d e N sao numeros grandes (cada um com aproximadamente n bits, veja

secao 3.6) a decriptografia exige grande tempo computacional. A seguir o processo de

formatacao do algoritmo de criptografia e revertido obtendo X atraves de M.

3O sımbolo bxc denota o maior inteiro menor ou igual a x. Le-se: chao de x.4Uma autoridade certificadora (CA) e uma entidade responsavel por garantir a autenticidade das

chaves de uma determinada pessoa ou companhia.

Page 24: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 3. CRIPTOGRAFIA ECRIPTOGRAFIA DE CHAVE PUBLICA 15

Figura 3.1: Beto criptografa o texto legıvel M com a chave publica eA da Alice. Carlosintercepta o texto ilegıvel C enquanto Alice recupera M atraves de sua chaveparticular dA.

Figura 3.2: Beto assina M com sua chave particular dB e envia o par (M, M’) para Aliceque calcula um texto T atraves de M e da chave publica do Beto eB a seguircompara T com M, validando a assinatura se forem iguais

3.2.1 Exemplo Numerico

Geracao das Chaves:

p = 11

q = 13

N = 143

φ(N) = 120

e = 7;

d = e−1 mod φ(N) = 103

Chave publica < N, e >=< 143, 7 >

Chave particular < N, d >=< 143, 103 >

Criptografia:

Page 25: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

16 3.3. METODO DE QUISQUATER-COUVREUR

Para uma mensagem 0 ≤ M ≤ N − 1 , no caso M = 15 temos

C = M e mod N

C = 157 mod 143 = 115

Decriptografia:

M = Cd mod N

M = 115103 mod 143 = 15

3.3 Metodo de Quisquater-Couvreur

O Quisquater-Couvreur method proposto em [6] e uma tecnica utilizada na decrip-

tografia RSA que faz uso do Teorema Chines do Resto. O metodo consiste em calcular

Mp = Cd mod p e Mq = Cd mod q, (onde pq e o modulo RSA e p,q e d possuem (log2

N)/2 bits) obtendo M atraves da combinacao de Mp e Mq pelo Teorema Chines do Resto

(Teorema 2.4.1). Alem disso, quando calculamos Mp e Mq, podemos reduzir o expoente

particular d modulo p - 1 e q - 1. Em outras palavras, podemos calcular Mp = Cdp mod p

e Mq = Cdq mod q, onde dp = d mod (p - 1) e dq = d mod (q - 1), obtendo M destes valores

utilizando o TCR. Segundo D. Boneh e H. Shacham [18] o tempo de execucao do metodo

de Quisquater-Couvreur e cerca de 4 vezes mais rapido que o tempo gasto pela aplicacao

de Cd mod N diretamente. Essa tecnica ficou tao popular que pode ser considerada um

padrao de implementacao e portanto quando mencionarmos neste documento os termos:

criptossistema RSA, criptossistema RSA padrao ou ainda criptossistema RSA original,

estaremos subentendendo o uso deste metodo.

3.3.1 Exemplo Numerico

Geracao das Chaves:

p = 11, q = 13

N = 143, φ(N) = 120

e = 7, d = 103

Chave publica < N, e >=< 143, 7 >

Page 26: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 3. CRIPTOGRAFIA ECRIPTOGRAFIA DE CHAVE PUBLICA 17

Chave particular < N, d >=< 143, 103 >

Criptografia:

Para uma mensagem 0 ≤ M ≤ n − 1 , no caso M = 15 temos

C = M e mod n

C = 157 mod 143 = 115

Decriptografia:

M = 115103 mod 11

M = 115103 mod 13

Pelo Teorema Chines do Resto (equacao 2.2) temos

M = 115103 mod 143 = 15.

Ou ainda podemos reduzir d modulo p - 1 e q - 1 fazendo

M = 1153 mod 11

M = 1157 mod 13

e aplicando a equacao 2.2 obtemos,

M = (1157*11*(11−1 mod 13) + 1153*13*(13−1 mod 11)) mod 143

M = (1157*11*6 + 1153*13*6) mod 143

M = 15

3.4 Correcao e Seguranca do RSA

A seguir provaremos que o criptossistema RSA realmente funciona provando que (M e)d

= M mod N, onde ed = 1 mod φ(N). A prova para M ∈ Z∗N e muito simples e e descrita

a seguir:

(M e)d = Mkφ(N)+1 mod N

Page 27: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

18 3.4. CORRECAO E SEGURANCA DO RSA

Vale lembrar que pela definicao de congruencia se ed = 1 mod φ(N) entao ed - 1 = kφ(N),

logo ed = kφ(N) + 1. Continuando,

(M e)d = (Mφ(N))kM mod N

= M mod N → Pelo Corolario 2.2.1

Entretanto, desejamos provar que o RSA funciona quando M ∈ ZN e nao somente

quando M ∈ Z∗N . Para isso, podemos provar que (M e)d = M mod p e (M e)d = M mod

q ( onde N = pq e p, q sao dois primos distintos), e a seguir resolver o sistema com o

TCR. Como o calculo e analogo a ambos os primos p e q, faremos apenas um deles.

Sabemos que ed = 1 + kφ(N) e portanto ed = 1 + k(p - 1)(q - 1) 5, assim temos que:

(M e)d = M1+k(p−1)(q−1) mod p

= M(M (p−1))k(q−1) mod p

Considerando que o mdc(M,p) = 1 6, temos pelo Teorema 2.2.1 (Euler) que Mφ(p)

≡ 1 mod p (e como p e primo temos que φ(p) = p - 1) assim podemos mostrar o que

desejavamos:

(M e)d = M(1)k(q−1) mod p

= M mod p

Da mesma forma podemos mostrar que (M e)d = M mod q. Ou seja, sabemos que (M e)d

= M mod p e (M e)d = M mod q e pela equacao 2.2 concluımos que (M e)d = M mod N,

como querıamos.

Com relacao a seguranca do criptossistema RSA, percebemos que este so e seguro caso

seja difıcil de calcular o expoente d quando apenas e e n sao conhecidos. Ora, a unica

maneira conhecida para o calculo de d e usar o algoritmo de euclides estendido a e modulo

φ(N), mas para calcular φ(N) precisamos fatorar N e obter p e q. Assim a seguranca do

criptossistema RSA esta baseada na fatoracao de N, que e computacionalmente inviavel

5Veja a definicao 2.2.36Note que caso contrario p divide M, ou seja M = 0 mod p e assim (M e)d = M mod p trivialmente.

Page 28: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 3. CRIPTOGRAFIA ECRIPTOGRAFIA DE CHAVE PUBLICA 19

para primos com centenas de bits (veja [14, 23]). Apesar disso, alguem poderia propor

os seguintes ataques:

1 - Calcular φ(N) sem fatorar N.

2 - Determinar d sem fatorar N e sem calcular φ(N).

3 - Calcular um d’ equivalente a d.

Acontece que como e mostrado em [23], se obtivessemos tais resultados entao por

consequencia terıamos um algoritmo viavel computacionalmente para fatorar N, o que su-

gere que estes ataques sao tao ou mais caros computacionalmente que o melhor algoritmo

para fatorar N conhecido. Na proxima secao descreveremos alguns dos principais ataques

relatados sobre o RSA.

3.5 Alguns Ataques Elementares no RSA

Para reduzir o tempo de criptografia ou tempo de verificacao de assinatura, e comum

usar um expoente publico e pequeno. O menor valor possıvel para e e 3, mas para prevenir

contra certos ataques enunciados a seguir o valor e = 216 +1 = 65537 e recomendado. Ao

usar e = 216 + 1, a verificacao da assinatura necessita de 17 multiplicacoes contra as 1000

necessarias quando um e randomico menor ou igual a φ(N) e usado (Veja em [2]).

3.5.1 Expoente Publico Pequeno (Low Public Exponent)

Esta observacao e tambem conhecida como Hastad Broadcast Attack [2, 10]. Suponha

que Beto deseja enviar uma mensagem M criptografada para um numero k de participantes

P1, P2, ..., Pk. Cada participante tem sua propria chave RSA < Ni, ei > e assumimos que

M e menor que todos os Nis. Assim, Beto criptografa M usando o expoente publico ei

e envia o i-esimo C para Pi (1 ≤ i ≤ k). Um mal-intencionado Carlos pode coletar os k

textos codificados C atraves da linha de comunicacao ou local de armazenamento.

Supondo que todos os expoentes ei sao iguais a 3, podemos mostrar de uma maneira

bem simples que Carlos pode recuperar M se k ≥ 3. Note que se Carlos obter C1, C2, C3,

Page 29: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

20 3.5. ALGUNS ATAQUES ELEMENTARES NO RSA

onde C1 = M3 mod N1, C2 = M3 mod N2, C3 = M3 mod N3 e assumindo que o

mdc(Ni, Nj) = 1 para todo i 6= j (desde que caso contrario, Carlos pode fatorar algum

dos Ni’s), entao aplicando o Teorema Chines do Resto (Teorema 2.4.1) para C1, C2, C3

obtemos um C’ ∈ ZN1N2N3tal que C’ = M 3 sobre os inteiros. E assim, Carlos pode

recuperar M calculando a raiz cubica de C’. Mais genericamente, se todos os expoentes

publicos sao iguais a e, Carlos pode recuperar M desde que k ≥ e e o expoente publico

e utilizado seja pequeno.

Uma alternativa para evitar este ataque seria concatenar algo na mensagem antes

da criptografia. Por exemplo, se M e de m bits, Beto poderia enviar Mi = i2m + M

para o participante Pi. Como Carlos obtem diferentes mensagens ele nao pode montar o

ataque. Infelizmente Hastad mostrou em [10] que uma concatenacao linear nao e segura

e para solucionar este problema deve-se usar uma concatenacao randomica (essa tecnica

e conhecida como salting).

3.5.2 Expoente Particular Pequeno (Low Private Exponent)

Wiener mostrou em [25], que se a chave particular d for menor que N 1/4, onde N e

o modulo RSA, entao pode-se obter total conhecimento de d analisando somente a chave

publica correspondente. Desde entao, outros ataques no RSA que exploram o tamanho

pequeno dos expoentes particulares tem sido apresentados. A descricao da observacao de

Wiener e um pouco extensa e portanto nao sera analisada neste documento mas para uma

visao mais detalhada de ataques sobre expoentes pequenos e outros no RSA, veja [2, 7, 25].

3.5.3 Modulo Comum (Commom Modulos)

Afim de diminuir o tempo computacional ao gerar modulos diferentes N = pq para

cada usuario alguem poderia fixar N de uma vez por todas, ou seja, fixar o mesmo N

para todos os usuarios. Uma autoridade certificadora confiavel poderia fornecer para um

usuario i um unico par ei, di para o qual este usuario tenha uma chave publica < N, ei >

e uma chave particular < N, di >. A primeira vista isto parece funcionar - um texto

codificado C = M eA mod N que deve ser enviado para Alice nao pode ser decriptografado

Page 30: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 3. CRIPTOGRAFIA ECRIPTOGRAFIA DE CHAVE PUBLICA 21

por Beto desde que Beto nao possui dA. Entretanto, isto nao e verdade e o resultado e

um sistema inseguro. Como todos os usuarios possuem o mesmo modulo, Beto pode usar

seus proprios expoentes eB, dB para fatorar o modulo N e assim que N e fatorado Beto

pode recuperar a chave particular da Alice dA e de qualquer outro usuario i atraves da

chave publica correspondente. Esta observacao mostra que um modulo RSA nao deve ser

usado para mais que uma entidade.

3.5.4 Ocultamento (Blinding)

Seja < N, d > a chave particular do Beto e < N, e > sua chave publica. Suponha

que Carlos deseja ter uma assinatura de Beto na mensagem M ∈ Z∗N . E claro que Beto

pode se recusar a assinar M apos ler a mensagem, mas Carlos pode insistir escolhendo

um numero randomico r ∈ ZN , calculando M ’ = reM mod N e atraves da mensagem

aparentemente inocente M’ Beto pode ser convencido a fornecer sua assinatura S’. O que

Beto nao sabe e que S’= (M’)d mod N e agora Carlos pode calcular S = S’/r mod N,

obtendo assim uma assinatura de Beto na mensagem M escolhida por ele. Isso ocorre pois,

S = (S’)/r = (reM)d/r = r(Md)/r = Md (mod N)

Esta tecnica conhecida como blinding, capacita Carlos a obter uma assinatura valida

na mensagem escolhida pedindo a Beto que assine uma mensagem randomica. Beto nao

tem informacao sobre o que esta realmente assinando. Felizmente, a maioria dos esquemas

de assinaturas aplicam uma funcao de hash 7 na mensagem M antes de assinar e portanto

o ataque nao e uma seria preocupacao.

3.6 Consideracoes sobre o criptossistema RSA

Como foi visto o criptossistema RSA e baseado na exponenciacao modulo numeros

grandes e portanto pode ser lento em alguns sistemas com recursos limitados. Um exemplo

disso seria aplicacoes de decriptografia RSA em um pequeno handheld device tal como o

PalmPilot III que pode levar cerca de 30 segundos [18]. Da mesma maneira, em um web

server SSL, a baixa velocidade de decriptografia RSA reduz significativamente o numero

7Funcoes de hashing sao usadas para diminuir o tamanho das assinaturas alem de trazer um nıvel amais de seguranca [19, 23].

Page 31: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

22 3.6. CONSIDERACOES SOBRE O CRIPTOSSISTEMA RSA

de requisicoes (SSL) por segundo que o servidor pode manipular. O que se faz geralmente

e usar um hardware com a finalidade exclusiva de decriptografia RSA para melhorar a

performance 8.

O problema principal esta na decriptografia e geracao de assinatura, ja que a chave

publica ou de criptografia e pode ser utilizada com valores pequenos (por exemplo, e

= 65537), e consequentemente o tempo da criptografia e a verificacao de assinatura e

menor. A chave particular ou de decriptografia d, entretanto, e normalmente da ordem

de N (aproximadamente 1024 bits) e assim quando calculamos Cd mod N ou Md mod N

utilizamos um alto tempo computacional. E importante lembrar que o expoente particular

d precisa ser um numero grande (da ordem de N), pois caso contrario o sistema RSA e

inseguro (veja na secao 3.5).

Acontece que em algumas aplicacoes e desejavel ter o comportamento oposto. Por

exemplo, se um telefone celular precisa gerar uma assinatura RSA que sera posteriormente

verificada em um servidor rapido, e desejavel que este processo seja mais rapido que a

verificacao. Da mesma maneira, web browsers que fazem criptografia RSA pelo protocolo

SSL normalmente possuem ciclos ociosos para queimar ao passo que web servers SSL

que fazem as decriptografias estao sobrecarregados [3, 18]. Neste ultimo caso, para

decriptografar um texto codificado C um web server usa sua chave particular d para obter

a e-esima raiz de C em ZN que e dada por Cd mod N e como foi mencionado acima alto

tempo computacional e exigido para esta operacao.

Nos ultimos anos alguns algoritmos foram propostos afim de diminuir o tempo compu-

tacional da decriptografia/geracao de assinatura, a maioria deles sugerem para isso uma

maneira de diminuir o tempo da exponenciacao sobre o modulo RSA. As propostas que

consideramos mais significativas sao descritas no proximo capıtulo.

8Os coprocessadores RSA atuais podem executar cerca de 10.000 decriptografias RSA por segundo(usando um modulo de 1024 bits [18].

Page 32: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Capıtulo

4Variacoes do RSA

A seguir estudaremos quatro variacoes do criptossistema RSA projetadas para aumen-

tar o desempenho da geracao de assinatura e decriptografia do mesmo. Estamos apenas

considerando variacoes que possam interoperar com sistemas que ja utilizam o RSA, alem

disso, as Autoridades Certificadoras precisam ser capazes de responder as requisicoes

desses algoritmos, ou seja, e preciso que os algoritmos utilizem parametros aos quais as

Autoridades Certificadoras sao capazes de trabalhar.

A primeira variacao a ser estudada e conhecida como RSA em lote ou Batch RSA

e e caracterizada por fazer um numero de decriptografias no preco de aproximadamente

uma. A segunda e a terceira variacao sao baseadas no uso do modulo na forma N = pqr

e N = p2q, respectivamente e sao conhecidas como RSA com multiplos fatores. A ultima

variacao e conhecida como RSA rebalanceado ou Rebalanced RSA e aumenta o desempe-

nho da decriptografia deslocando a maior parte do trabalho para o encriptador. Todas

essas variacoes aplicam-se da mesma maneira para assinaturas digitais onde aumentam o

desempenho da geracao de assinatura.

23

Page 33: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

24 4.1. RSA EM LOTE (BATCH RSA)

4.1 RSA em lote (Batch RSA)

A decriptografia em lote surgiu devido uma observacao de Fiat (veja [8]) de que quando

usamos expoentes publicos pequenos e1 e e2 e possivel decriptografar dois textos no preco

de aproximadamente um. Suponha que C1 e o texto codificado obtido da criptografia de

M1 usando a chave publica < N, 3 > e que C2 e o texto codificado obtido da criptografia

de M2 usando a chave publica < N, 5 >. Para decriptografar C1 e C2, nos precisamos

calcular C1/31 = M1 mod N e C

1/52 = M2 mod N (lembrando que a e-esima raiz de C em

Zn e dada por Cd mod N). Fiat percebeu que fazendo M = (C51 .C

32)1/15 obtemos

M2 = C1/52 = M6

C21.C2

mod N e M1 = C1/31 = M

M2

E assim, conseguimos decriptografar C1 e C2 com o custo de aproximadamente uma

raiz 15◦ de A. E claro que alguns outros calculos sao necessarios, mas para expoentes e1 e e2

pequenos (por exemplo 3 e 5) esses calculos sao desprezıveis (Naturalmente devemos usar

expoentes publicos pequenos afim de obter melhor desempenho). Outro fato que deve ser

apontado e de que so podemos usar decriptografia em lote com expoentes publicos distintos

entre si, ou seja, a tecnica nao e valida para C1/31 e C

1/32 . Este fato foi mostrado usando

teoria de Galois por D. Boneh e H.Shacham no Apendice A de [3] . Para generalizar a

obsevacao acima para a decriptografia de b textos codificados, Fiat utilizou a estrutura

de uma arvore binaria completa, com a propriedade de que todo no interno possui dois

filhos. Podemos enunciar a generalizacao como segue:

Para b expoentes publicos e1, ..., eb distintos e relativamente primos entre si, compar-

tilhando o mesmo modulo N = pq e b mensagens criptografadas C1, ..., Cb (onde cada Ci

foi criptografada usando ei), desejamos decriptografar simultaneamente Mi = C1/eii para

1 ≤ i ≤ b.

A partir desta generalizacao descreveremos os algoritmos de geracao de chaves, crip-

tografia e decriptografia:

• Geracao de Chaves - Pode ser usado o mesmo algoritmo de geracao de chaves do

RSA tradicional. E claro que deve ser evitado expoentes publicos grandes afim de

Page 34: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 4. VARIACOES DO RSA 25

aumentar o desempenho do algoritmo de decriptografia. A chave publica e < N, e >

e a chave particular e < N, d >.

• Criptografia - Dado uma chave publica < N, e > e uma mensagem M ∈ ZN . Beto

criptografa M exatamente como no padrao RSA, ou seja, M e mod N.

• Decriptografia- Para a facilidade de entendimento denotaremos nos subscritos por

L ou R (de left e right) referindo-se ao valor correspondente do filho esquerdo ou

direito destes, respectivamente. Por exemplo, para uma variavel M, MR e o valor de

M no no do filho direito. O processo de decriptografia proposto por Fiat e dividido

em tres fases descritas abaixo:

Calculo do Produto - Nesta fase, percorremos a arvore calculando o produto

das mensagens criptografadas Ci e formando na raiz da arvore de batch o valor

C =∏b

i=1 Ce/ei

i , onde e =∏b

i=1 ei. Inicialmente, associamos a cada no folha

um expoente publico E ← ei. Os nos internos obtem E atraves do calculo do

produto de seus filhos E ← EL.ER. (Note que o no raiz E sera igual a e, ou seja,

o produto de todos os expoentes publicos). Cada mensagem criptografada Ci e

armazenada em uma variavel C no no folha que contem seu ei correspondente.

Os C’s restantes (nos internos), sao calculados em um processo bottom-up na

arvore usando o seguinte passo recursivo (veja figura 4.1).

C ← CER

L .CEL

R

Exponenciacao - Ao termino da fase anterior, o no raiz contem C =∏b

i=1 Ce/ei

i .

Nesta fase, a e-esima raiz deste C e extraıda 1. A exponenciacao resulta em

C1/e =∏b

i=1 C1/ei

i , e este valor e entao armazenado em M no no raiz. Ou seja,

M contem o produto das decriptografias dos C’s (veja figura 4.2).

Quebra do Produto - Nesta fase, buscamos quebrar o produto M em sub-

produtos ML e MR, e eventualmente, em mensagens decriptografadas Mi nas

1Note que este e o ponto no qual o conhecimento da fatoracao de N e necessaria.

Page 35: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

26 4.1. RSA EM LOTE (BATCH RSA)

Figura 4.1: Primeira Fase - Calculo do Produto (Exemplo para os expoentes publicose1 = 3, e2 = 5, e3 = 7.)

Figura 4.2: Segunda Fase - Exponenciacao

folhas. O metodo proposto por Fiat para efetuar esta quebra e baseado na

solucao de congruencias utilizando o Teorema Chines do Resto (Teorema 2.4.1),

mais propriamente utilizando a equacao 2.2. Em cada no interno obtemos um

X satisfazendo o seguinte par de congruencias:

X ≡

{

0 mod EL

1 mod ER

Page 36: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 4. VARIACOES DO RSA 27

Figura 4.3: Terceira Fase - Quebra do Produto

A seguir calculamos dois numeros auxiliares, XL e XR, definidos em cada no

como segue:

XL = X/EL XR = (X − 1)/ER

Ambas as divisoes sao feitas sobre inteiros e X, XL e XR sao tais que, cada

no interno, MX e igual CXL

L CXR

R .MR. Entao podemos aplicar o seguinte passo

recursivo:

MR ← MX/(CXL

L .CXR

R ) ML ← M/MR

Ao final desta fase, cada folha Mi contem a decriptografia do Ci colocado nela

inicialmente (veja figuras 4.3 e 4.4).

Page 37: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

28 4.1. RSA EM LOTE (BATCH RSA)

Figura 4.4: Terceira Fase - Quebra do Produto (Continuacao)

So uma exponenciacao de grande valor foi necessaria, ao inves de b delas. Outras

quatro pequenas exponenciacoes, duas inversoes e quatro multiplicacoes em cada um dos

b - 1 nos internos, sao necessarias.

4.1.1 Exemplo Numerico

Geracao das Chaves

p = 17

q = 23

N = pq = 391

φ(N) = (p - 1)(q - 1) = 352

Page 38: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 4. VARIACOES DO RSA 29

e1 = 3

e2 = 5

d1 = e−11 mod φ(N) = 235

d2 = e−12 mod φ(N) = 141

Chaves Publicas < N, e1 > e < N, e2 > (ou seja, < 391, 3 > e < 391, 5 >)

Chaves Particulares < N, d1 > e < N, d2 > (ou seja, < 391, 235 > e < 391, 141 >)

Criptografia

M1 = 382

M2 = 168

C1 = M e1

1 mod N = 53

C2 = M e2

2 mod N = 155

Decriptografia

A = (C51C

32)d1d2 mod N

A = 52

M1 = A10

C31C2

2

mod N

M1 = 382

M2 = A6

C21C2

mod N

M2 = 168

4.2 RSA com multiplos fatores (Multi-factor RSA)

Os dois algoritmos a seguir sao baseados na modificacao da estrutura do modulo RSA.

O primeiro usa o modulo na forma N = pqr, assim quando N e de 1024 bits, cada primo e

de aproximadamente 341 bits. Para este adotaremos o nome RSA com multiplos primos

ou multi-prime RSA como foi utilizado por D. Boneh e H. Shacham em [18]. O segundo

algoritmo que descreveremos usa um modulo RSA na forma N = p2q, e e conhecido como

Page 39: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

30 4.2. RSA COM MULTIPLOS FATORES (MULTI-FACTOR RSA)

RSA com multiplas potencias ou multi-power RSA. Ambos os metodos sao totalmente

compatıveis com o RSA desde que nao e conhecido um algoritmo eficiente que diferencie

as chaves publicas destes metodos das chaves publicas RSA (onde N = pq).

4.2.1 RSA com multiplos primos (Multi-prime RSA)

Como dito anteriormente e como o proprio nome sugere o RSA com multiplos primos

e baseado na modificacao da estrutura do modulo RSA (veja [18]) que passa a ser

constituıdo de k primos (N = p1p2...pk) ao inves dos tradicionais dois primos p e q. A

seguir descreveremos os algoritmos de geracao de chaves, criptografia e decritografia.

Geracao de Chaves - O algoritmo de geracao de chaves recebe como entrada um

parametro de seguranca n e um parametro adicional k, que indica o numero de primos a

ser utilizados. O par de chaves publica e particular e gerado atraves dos passos a seguir:

1 - Inicialmente um usuario ou uma entidade U gera randomicamente k primos distin-

tos p1, ..., pk cada um com bn/kc bits de tamanho. A seguir calcula N ←∏k

i=1 pi.

Para um modulo de 1024 bits deve-se usar no maximo k = 3 (isto e, N = pqr), por

razoes de seguranca que nao abordaremos neste documento.

2 - U escolhe um expoente publico e randomico ou o mesmo usado como padrao das

chaves publicas RSA ( e = 65537) e calcula d = e−1 mod φ(N). Naturalmente, U

deve garantir que e e relativamente primo a φ(N) =∏k

i=1(pi − 1) para que exista a

inversa multiplicativa. A chave publica e < N, e > e a chave particular e < N, d >.

Criptografia - Dado uma chave publica < N, e > e uma mensagem M ∈ ZN . Beto

criptografa M exatamente como no padrao RSA, ou seja, M e mod N (figura 4.5).

Decriptografia - A decriptografia e feita usando o TCR (Teorema 2.4.1). Seja di =

d mod (pi - 1). Para decriptografar um texto C, Alice primeiro deve calcular Mi = Cdi

mod pi para cada i, 1 ≤ i ≤ k. A seguir Alice combina os Mi’s usando o TCR para obter

M = Cd mod N (figura 4.5). A utilizacao do TCR leva tempo desprezıvel comparado com

Page 40: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 4. VARIACOES DO RSA 31

Figura 4.5: Beto criptografa M usando a chave publica eA de Alice e envia o textocodificado C para Alice que o decriptografa usando o TCR no sistema decongruencias Mi = Cdi mod pi, onde di = d mod pi - 1.

as k exponenciacoes.

Observe que este metodo propoe diminuir o tempo gasto da exponenciacao modular

reduzindo o tamanho do modulo de n para bn/kc bits e dessa maneira ao inves de termos

na decriptografia uma unica exponenciacao modulo N (n bits) teremos k exponenciacoes

sobre bn/kc bits o que certamente e mais eficiente.

4.2.2 Exemplo Numerico

Geracao das Chaves

p1 = 3

p2 = 5

p3 = 7

N = p1p2p3 = 105

φ(N) = (p1 − 1)(p2 − 1)(p3 − 1)

φ(N) = 48

e = 5

d = e−1 mod φ(N) = 29

Chave Publica < N, e > = < 105, 5 >

Chave Particular < N, d > = < 105, 29 >

Page 41: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

32 4.2. RSA COM MULTIPLOS FATORES (MULTI-FACTOR RSA)

Criptografia

M = 75

C = M e mod N = 45

Decriptografia

d1 = d mod (p1 - 1)

d1 = 1

d2 = d mod (p2 - 1)

d2 = 1

d3 = d mod (p3 - 1)

d3 = 5

M1 = Cd1 mod p1

M1 = 0

M2 = Cd2 mod p2

M2 = 0

M3 = Cd3 mod p3

M3 = 5

M4 = (Cd1p2(p−12 mod p1) + Cd2p1(p

−11 mod p 2)) mod (p1p2)

M4 = 0

M = (M4p3(p−13 mod p1p2) + Cd3p1p2((p1p2)

−1 mod p 3)) mod (p1p2p3)

M = 75

4.2.3 RSA com multiplas potencias (Multi-power RSA)

No RSA com multiplas potencias modificamos a estrutura do modulo RSA de N = pq

para N = pkq (veja [22]). Os algoritmos de geracao de chaves, criptografia e decriptografia

sao descritos abaixo:

Page 42: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 4. VARIACOES DO RSA 33

Geracao das chaves - O algoritmo de geracao de chaves recebe como entrada um

parametro de seguranca n e um parametro adicional k. As chaves sao geradas pelos passos

seguintes:

1 - Inicialmente um usuario ou uma entidade U gera dois primos distintos randomicos

de b nk+1

c bits, p e q, e calcula N ← pkq.

2 - Usando o expoente publico e randomico ou padrao RSA (e = 65537), U calcula d

← e−1 mod (p - 1)(q - 1). Lembrando que U deve garantir que mdc(e, (p - 1)(q -

1)) = 1.

3 - Finalmente, U calcula dp ← d mod (p - 1) e dq ← d mod (q - 1). A chave publica

e < N, e > e a chave particular e < p, q, dp, dq >.

Criptografia - Dado uma chave publica < N, e > e uma mensagem M ∈ ZN . Beto

criptografa M exatamente como no padrao RSA, ou seja, M e mod N.

Decriptografia - Para decriptografar C Alice procede da seguinte maneira (figura

4.6) :

1 - Obtem Mq = M mod q fazendo Mq = Cdq mod q e Mp = M mod p fazendo Mp =

Cdp mod p. Observe que M ep = C mod p e M e

q = C mod q.

2 - Usando o algoritmo proposto por T. Takagi em [22] que foi baseado no algoritmo

Hensel lift [4, 21] Alice constroi um Mp’ tal que (Mp’)e = C mod pk. A vantagem

deste metodo esta no fato de que transformar Mp em Mp’ pelo algoritmo proposto

e muito mais rapido que uma exponenciacao inteira modulo pk.

3 - Usando o TCR (Teorema 2.4.1), Alice calcula um M ∈ ZN tal que M = Mp’ mod

pk e M = Mq mod q. Este M e tal que M = Cd mod N, ou seja, a decriptografia

de C.

Page 43: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

34 4.2. RSA COM MULTIPLOS FATORES (MULTI-FACTOR RSA)

Figura 4.6: Alice recebe o texto criptografado C e calcula Mp e Mq. A seguir Aliceatraves do algoritmo Hensel Lift expande Mp para Mp’ mod pk e usa o TCRpara resolver o sistema M = Mp’, M = Mq.

4.2.4 Algoritmo para o calculo de Mp’

A ordem do grupo Zpk∗ e pk−1(p−1), ou seja pk −pk−1, desde que so os multiplos de p

em Zpk nao sao relativamente primos a pk e existem pk−1 destes multiplos. Dessa maneira,

se utilizassemos o algoritmo de decriptografia RSA para obter Mp’ nao obterıamos ganho

na velocidade se compararmos ao RSA utilizando o Quisquater Couvreur Method com n

= pq (veja secao 3.3), pelo contrario, desde que para isso terıamos que calcular Mp’ = Cd

(mod pk) para d = e−1 (mod pk−1(p - 1)(q - 1))).

No entanto pelo metodo proposto por Takagi em [22] calculamos inicialmente Mp =

Cdp (mod p) e atraves do algoritmo Hensel Lifting descrito em [4] podemos expandir

Mp = Cdp (mod p) para Mp’= Mp mod pk com um tempo equivalente a calcular Mp =

Cdp (mod p) para d = e−1 (mod (p - 1)(q - 1)). Assim se denotarmos o texto codificado

reduzido modulo pk como Cp, temos a relacao Cp = M ′pe (mod pk).

Veja que Mp’ possui a seguinte expansao

M ′p = K0 + pK1 + p2K2 + ... + pk−1Kk−1 (mod pk) (4.1)

Definimos a funcao Fi(X0, X1, ..., Xi) como segue:

Page 44: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 4. VARIACOES DO RSA 35

Fi(X0, X1, ..., Xi) = (X0 + pX1 + ... + piXi)e,

onde i = 0, 1, ..., k - 1 . Note que Fk−1(X0, X1, ..., Xk−1) = (X0 + pX1 + ... + pk−1Xk−1)e,

e equivalente a funcao que criptografa o texto Mp’ na equacao 4.1. Reduzindo modulo

pi+1, temos a relacao

Fi(X0, X1, ..., Xi) = Fi−1 + piGi−1Xi (mod pi+1),

onde Fi−1 = (X0 + pX1 + ... + pi−1Xi−1)e

e Gi−1 = e(X0 + pX1 + ... +pi−1Xi−1)e−1

para i = 0, 1, ..., k - 1. Fazendo K0 = Cdp mod p podemos calcular recursivamente atraves

da relacao acima e do texto codificado C os valores K1, ..., Kk−1. Assim, para i = 1, K1 e

a solucao da seguinte equacao linear de X1:

C = F0(K0) + pG0(K0)X1 (mod p2)

ou seja,

X1 = K1 = (C - F0(K0))(pG0(K0))−1 mod p2

Para generalizar o resultado acima podemos assumir que K1, K2, ..., Ki−1 ja estao

calculados e assim, podemos obter Fi−1(K0, K1, ..., Ki−1) e Gi−1(K0, K1, ..., Ki−1) em Z,

denotando-os por Fi−1 e Gi−1, respectivamente. Agora, de uma maneira mais geral, Ki,

e a solucao da seguinte equacao linear de Xi:

C = Fi−1 + piGi−1Xi (mod pi+1)

E assim depois de calcular K0, K1, ..., Kk−1, podemos obter Mp (mod pk) da equacao

4.1 e finalmente o texto original M (mod pkq), atraves do uso do TCR (Teorema 2.4.1)

combinando Mp (mod pk) e Mq (mod q).

A seguir, descrevemos o algoritmo de decriptografia proposto por T. Takagi [21] em

pseudo-codigo, ou seja, a codificacao do que foi explicado acima.

Funcao Decript

Entrada: d,p,q,e,k,C

Page 45: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

36 4.2. RSA COM MULTIPLOS FATORES (MULTI-FACTOR RSA)

Saıda: M

dp ← d mod (p - 1);

dq ← d mod (q - 1);

K0 ← Cdp mod p;

Mq ← Cdq mod q;

A0 ← K0;

Para i ← 1 ate (k - 1) faca

Fi ← Aei−1 mod (pi+1);

Ei ← C - Fi mod (pi+1);

Bi ← Ei/pi ∈ Z;

Ki ← (eFi)−1Ai−1B − i mod p;

Ai ← Ai−1 + piKi ∈ Z;

Mp ← Ak−1;

p1 ← (pk)−1 mod q, q1 ← q−1 mod pk;

M ← (q1qMp + p1pkMq) mod pkq;

4.2.5 Exemplo Numerico

Geracao das Chaves

p = 5

q = 13

b = 2

N = pbq = 325

e = 7

d = e−1 mod (p - 1)(q - 1)

d = 7

r1 = d mod (p - 1)

r1 = 3

r2 = d mod (q - 1)

r2 = 7

Page 46: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 4. VARIACOES DO RSA 37

Chave Publica < N, e > = < 325, 7 >

Chave Particular < p, q, r1, r2 > = < 5, 13, 3, 7 >

Criptografia

M = 257

C = M e mod N = 218

Decriptografia

dp = d mod (p - 1)

dp = 3

dq = d mod (q - 1)

dq = 7

Mq = Cdq mod q = 10

Usando o algoritmo proposto por Takagi obtemos

Mp = 7 e M = 257

4.3 RSA rebalanceado (Rebalanced RSA)

A ultima das variacoes analisada foi baseada na observacao de Wiener [18, 25] e

propoe a melhora no desempenho do algoritmo de decriptografia deslocando o trabalho

desta para o algoritmo de criptografia. Como mostrado por D. Boneh e G. Durfee em

[7] nao podemos melhorar o desempenho da decriptografia RSA simplesmente usando um

valor pequeno para d , pois se d < N 0.292 o RSA torna-se inseguro. O truque entao e

escolher um d grande (na ordem de N), tal que d mod p - 1 e d mod q - 1 sejam numeros

pequenos, reduzindo o tempo de decriptografia. Abaixo descrevemos os algoritmos de

geracao das chaves, criptografia e decriptografia.

Page 47: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

38 4.3. RSA REBALANCEADO (REBALANCED RSA)

Geracao das Chaves - O algoritmo de geracao de chaves leva dois parametros de

seguranca n e k onde k ≤ n/2. Normalmente n = 1024 bits e k = 160 bits. Um usuario

ou uma entidade U calcula as chaves RSA da seguinte maneira:

1 - Gera dois primos randomicos distintos de bn/2c bits p e q com mdc(p - 1, q - 1)

= 2. E calcula N ← pq.

2 - Mais dois numeros randomicos de k-bits dp e dq sao gerados, tais que mdc(dp, p -

1) = 1, mdc(dq, q - 1) = 1 e dp = dq mod 2.

3 - A seguir U encontra um d tal que d = dp mod p - 1 e d = dq mod q - 1 (Explicado

a seguir).

4 - E finalmente calcula e ← d−1 mod φ(N). A chave publica e < N, e > e a chave

particular e < p, q, dp, dq >.

Repare que para encontrar d no passo 3, nao podemos usar o Teorema Chines do Resto

(Teorema 2.4.1), desde que p - 1 e q - 1 nao sao relativamente primos (eles sao ambos

pares). Entretanto, (p - 1)/2 e relativamente primo a (q - 1)/2, alem disso dp = dq mod

2. Portanto, se fizermos a = dp mod 2, podemos encontrar utilizando o Teorema Chines

do Resto um elemento d’ tal que

d’ = dp−a

2(mod p−1

2) e d’ = dq−a

2(mod q−1

2).

Agora o d necessario no passo 3 e simplesmente d = 2d’ + a. Logo, d = dp mod p - 1

e d = dq mod q - 1.

Para justificar porque d e inversıvel modulo φ(N) no passo 4, lembramos que o mdc(dp,

p - 1) = 1 e mdc(dq, q - 1) = 1 e portanto mdc(d, p - 1) = 1 e mdc(d, q - 1) = 1. Resultando

que o mdc(d, (p - 1)(q - 1)) = 1, ou seja, d e inversıvel modulo φ(N) = (p - 1)(q - 1).

Por razoes de seguranca que nao abordaremos neste documento devemos escolher um

k de no mınimo 160 bits de tamanho. Repare que e e muito grande (da ordem de N) e e

isso o que queremos dizer quando afirmamos que o RSA rebalanceado diminui o tempo de

decriptografia deslocando o trabalho para o algoritmo de criptografia. Esta caracterıstica

Page 48: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 4. VARIACOES DO RSA 39

nao e comum no padrao RSA, onde e e normalmente igual a 65537, entretanto, segundo

D. Boneh e H. Shacham em [18] as atuais Autoridades Certificadoras aceitam gerar

certificados para tais chaves publicas RSA.

Criptografia - A criptografia usando a chave publica < N, e > e identica a criptografia

RSA padrao (figura 4.7). Lembrando, entretanto, que o expoente e e muito maior que

o utilizado normalmente no RSA, e assim a entidade ou o usuario que criptografar uma

mensagem M precisa estar disposto ou capacitado a utilizar tais chaves publicas.

Decriptografia - Para decriptografar C usando a chave particular < p, q, dp, dq >

Alice deve seguir os passos abaixo (figura 4.7):

1 - Alice calcula Mp ← Cdp mod p e Mq ← Cdq mod q.

2 - Usando a equacao 2.2 do TCR Alice obtem um M ∈ ZN tal que M = Mp mod p

e M = Mq mod q, ou seja, M = Cd mod N correspondendo a propria decriptografia

de C.

Figura 4.7: Beto criptografa M usando a chave publica da Alice eA (com tamanho muitomaior do que de costume)e envia o texto codificado C para Alice. Alicerecebe o texto criptografado C e e usa o TCR para resolver o sistema M =Cdp mod p , M = Cdq mod q, onde dp e dp sao calculados no algoritmo degeracao de chaves.

E importante observar que a tecnica utilizada no RSA rebalanceado pode ser usada

em combinacao com a utilizada no RSA com multiplos primos ou ate mesmo com a

utilizada no RSA com multiplas potencias, na tentativa de se obter melhores resultados

na decriptografia. No nosso trabalho pretendemos implementar uma dessas combinacoes,

Page 49: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

40 4.3. RSA REBALANCEADO (REBALANCED RSA)

mais especificamente, envolvendo o RSA com multiplos primos e o RSA rebalanceado

RSA e fazer um estudo comparativo entre essa nova variacao e as demais, incluindo o

algoritmo RSA padrao.

4.3.1 Exemplo Numerico

Geracao das Chaves

Passo 1:

p = 7

q = 5 Repare que mdc(p-1,q-1) = 2

N = pq = 35

Passo 2:

φ(N) = (p - 1)(q - 1)

φ(N) = 24

r1 = 5 Repare que mdc(r1,p-1) = 1

r2 = 7 Repare que mdc(r2,q-1) = 1 e que r1 = r2 mod 2

Passo 3:

a = r1 mod 2

a = 1

Encontrando d’

d’ = (r1−a)2

mod (p−1)2

d’ = 2

d’ = (r2−a)2

mod (q−1)2

d’ = 1

d’ = (2 ∗ 2 ∗ (2−1 mod 3) + 1 ∗ 3 ∗ (3−1 mod 2) mod 6)

d’ = 5

Calculando d

d = 2d’ + a

Page 50: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 4. VARIACOES DO RSA 41

d = 11 Repare que agora d e inversıvel modulo φ(N)

Passo 4:

e = d−1 mod φ(N)

e = 11

Chave Publica < N, e >=< 35, 11 >

Chave Particular < p, q, r1, r2 >=< 7, 5, 5, 7 >

Criptografia

M = 17

C = M e mod N = 33

Decriptografia

M1 = Cr1 mod p

M1 = 3

M2 = Cr2 mod q

M2 = 2

M = (M1q(q−1 mod p) + M2p(p−1 mod q)) mod pq

M = 17

Page 51: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do
Page 52: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Capıtulo

5Plano de Trabalho

5.1 Objetivos

Como mencionado anteriormente, o objetivo deste trabalho e analisar quatro variacoes

do criptossistema RSA que propoe diminuir o tempo de decriptografia em relacao ao

algoritmo original e alem disso, analisar o que acontece quando misturamos duas des-

tas variacoes, mais precisamente quando misturamos as ideias utilizadas pelo RSA com

multiplos primos e pelo RSA rebalanceado (veja o Capıtulo 4). A analise levara em conta

aspectos como seguranca, facilidade de implementacao, aplicabilidade e principalmente

desempenho do algoritmo de decriptografia.

O estudo relacionado a seguranca sera feito atraves da busca de bibliografia sobre

eventuais ataques realizados nos algoritmos enfatizando os mencionados na secao 3.5.

E importante lembrar que a confiabilidade dos algoritmos criptograficos em relacao a

seguranca so e conseguida com o passar dos anos, isso ocorre pelo fato dos metodos de

ataque nem sempre ser de origem matematica inviabilizando uma prova de seguranca

com este teor. Assim a analise de seguranca sera basicamente um resumo dos ataques ja

43

Page 53: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

44 5.1. OBJETIVOS

relatados sobre esses novos algoritmos, citando as consequencias que estes podem trazer,

e algumas observacoes de como estes algoritmos se comportam sobre os ataques da secao

3.5 (Todo o material bibliografico utilizado sera apontado atraves de referencias).

O ponto principal da pesquisa, entretanto, e a comparacao de desempenho dos al-

goritmos propostos em relacao ao algoritmo de decriptografia RSA original. Para tal

estudo, os algoritmos serao implementados utilizando a linguagem C e analisados atraves

de testes posteriormente sintetizados em graficos e tabelas, com o objetivo de facilitar

futuros estudos do assunto.

Os graficos e tabelas do mencionados serao descritos em relacao ao tamanho do

modulo RSA (ou chave) e velocidade de criptografia e decriptografia sobre o mesmo,

sendo analisados os seguintes tamanhos em bits para o modulo RSA 768, 1024, 2048.

Adotaremos tambem como medida de comparacao o termo Speed Up sobre o modulo N

que sera simbolizado como S(N) e definido da seguinte maneira:

S(N) =TRSA(N)

TAP (N)(5.1)

onde TRSA(N) e o tempo do algoritmo RSA em segundos sobre o modulo N e TAP e o

tempo do algoritmo proposto em segundos sobre o modulo N.

Como ultima analise faremos um breve resumo comparando velocidade versus segu-

ranca de cada variacao. Esta analise tem como objetivo descrever o custo/benefıcio de

cada variacao, fornecendo uma visao mais clara e pratica a desenvolvedores que desejarem

implantar um destes metodos.

5.1.1 Public-Key Cryptography Standards - PKCS

O PKCS e um documento, ou melhor, uma serie de especificacoes produzidas pelos

Laboratorios RSA em cooperacao com desenvolvedores de sistemas de seguranca de varias

partes do mundo, que visa acelerar atraves de padronizacao a utilizacao e desenvolvimento

de algoritmos de chave publica. Surgiu em 1991 como um resultado de encontros com

um pequeno grupo de pessoas precursoras no uso da tecnologia de chave publica e desde

Page 54: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 5. PLANO DE TRABALHO 45

entao tem se tornado referencia ate mesmo para padroes ja estabelecidos como ANSI X9,

PKIX, SET, S/MIME e SSL. Atualmente seu desenvolvimento ocorre basicamente atraves

de lista de discussoes e ocasionais workshops.

No nosso estudo analisaremos tambem a aplicabilidade do padrao PKCS #1 (especi-

ficacao correspondente ao RSA, veja [13] ) aos algoritmos propostos afim de verificar a

viabilidade da utilizacao e possıvel interoperabilidade destes com os sistemas que atual-

mente utilizam o PKCS como padrao de formatacao.

5.1.2 GNU MP - GMP

Para implementar o criptossistema RSA assim como os algoritmos propostos com

primos e consequentemente modulos satisfatorios (grandes tais como 768, 1024 e 2048

bits) precisamos de uma ferramenta que consiga trabalhar com tais numeros. Para a

linguagem C e C++ encontramos disponıvel a biblioteca GMP, a qual utilizaremos no

nosso trabalho devido as vantagens especificadas abaixo.

A biblioteca GMP surgiu em 1991 e e distribuıda gratuitamente sobre o GNU Lesser

General Public License (veja [9, 15] ). Nao existe limite para a precisao do tamanho dos

numeros usando esta biblioteca exceto a quantidade de memoria disponıvel na maquina

onde o GMP esta rodando. A biblioteca GMP possui um rico conjunto de funcoes

(abordando inclusive funcoes de teoria de numeros) e foi cuidadosamente projetada para

ser mais rapida quanto possıvel, para operandos pequenos e extremamente grandes,

tornando-a mais rapida que qualquer outra biblioteca similar. E por possuir algoritmos

assintoticamente mais rapidos o desempenho de suas funcoes aumentam de acordo com o

tamanho dos operandos.

Os principais alvos de aplicacao do GMP sao aplicacoes como criptografia, seguranca

da Internet, sistemas algebricos e algebra computacional. Desde sua criacao a biblioteca

vem sendo aprimorada e atualizada com novas versoes, e sua popularizacao tem crescido

entre os desenvolvedores de sistemas.

Page 55: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

46 5.2. CRONOGRAMA DAS ATIVIDADES

Considerando as caracterısticas acima, principalmente a velocidade alcancada pelas

funcoes relacionadas com a criptografia e teoria de numeros, adotamos a biblioteca GMP

como meio de viabilizar a aritmetica com grandes operandos necessaria para as nossas

aplicacoes.

5.2 Cronograma das Atividades

Para um melhor acompanhamento do cumprimento de prazos segue na tabela 5.1 um

cronograma das atividades que relata desde o inıcio dos estudos ate a defesa e conclusao

do mestrado.

As atividades sao:

1 - Estudo dos algoritmos propostos e de uma possıvel nova variacao.

2 - Implementacao dos algoritmos utilizando a ferramenta Maple V.

3 - Elaboracao da mini-dissertacao.

4 - Exame de Qualificacao

5 - Busca bibliografica referente a analise de seguranca.

6 - Implementacao dos Algoritmos em C utilizando a biblioteca GMP

e o padrao PKCS # 1.

7 - Obtencao e analise dos resultados obtidos.

8 - Elaboracao da dissertacao final.

9 - Defesa da dissertacao final.

Page 56: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

CAPITULO 5. PLANO DE TRABALHO 47

2002 2003ativ. Jul Ago Set Out Nov Dez Jan Fev Mar

123456789

Tabela 5.1: Cronograma das Atividades

E claro que algumas atividades podem gastar mais ou menos tempo que o esperado,

mas como foi dito anteriormente o cronograma tem apenas o objetivo de facilitar o

acompanhamento do trabalho.

Page 57: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Indice Remissivo

ZN , 7

Z∗N , 7

Quisquater-Couvreur Method

Exemplo Numerico, 16

Algoritmo de Euclides Estendido, 7, 8

Anel, 10

Ataques Elementares no RSA, 19

Expoente publico pequeno, 19

Expoente Particular Pequeno, 20

Modulo Comum, 20

Ocultamento, 21

congruencia, 6

Consideracoes sobre o criptossistema RSA,

21

Correcao e Seguranca do RSA, 17

Criptografia, 11

Criptografia de Chave Publica, 12

Autenticacao da Origem, 13

Autenticacao de Destino, 13

Integridade de Informacao, 13

Criptossistema RSA, 13

Criptografia, 14

Decriptografia, 14

Exemplo Numerico, 14

Geracao de Chaves, 14

mensagem assinada, 14

verificacao de assinatura, 14

divisor comum, 6

Funcao de Euler - φ(N), 7

GMP, 45

Grupo, 9

inteiros relativamente primos, 6

inversa multiplicativa, 7

maximo divisor comum, mdc, 6

Metodo deQuisquater-Couvreur, 16

numeros primos, 6

PKCS, 44

Plano de Trabalho, 43

Cronograma das Atividades, 46

Objetivos, 43

resto, 6

48

Page 58: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

INDICE REMISSIVO 49

RSA com multiplas potencias, 32

Algoritmo para o calculo de Mp’, 34

Criptografia, 33

Decriptografia, 33

Exemplo Numerico, 36

Geracao de Chaves, 33

RSA com multiplos fatores, 29

RSA com multiplos primos, 30

Criptografia, 30

Decriptografia, 30

Exemplo Numerico, 31

Geracao de Chaves, 30

RSA em lote, 24

Criptografia, 25

Decriptografia

Calculo do Produto, 25

Exponenciacao, 25

Quebra do Produto, 25

Exemplo Numerico, 28

Geracao de Chaves, 24

RSA rebalanceado, 37

Criptografia, 39

Decriptografia, 39

Exemplo Numerico, 40

Geracao de Chaves, 38

Teorema Chines do Resto - enunciado do

teorema, 9

Teorema Chines do Resto - TCR, 8

Teorema de Euler, 7

Variacoes do RSA, 23

Z, 5

Page 59: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do
Page 60: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

Referencias Bibliograficas

[1] R. Rivest , A. Shamir , L. Adleman. A Method for Obtaining Digital Signatures and

Public Key Cryptosystems. Commum. Of the ACM 21(2): 120 - 126, 1978.

[2] D. Boneh. Twenty Years of Attacks on the RSA. Notices of the American

Mathematical Society, vol 46(2):203–213, 1999.

[3] H. Shacham , D. Boneh. Improving SSL Handshake Performance via Batching. In

D. Naccache, ed., Proceedings of RSA 2001, 2020 of LNCS:28–43, 2001.

[4] H. Cohen. A Course in Computational Algebraic Number Theory, Springervol 138

do Graduate Texts in Mathematics. Springer, p.137, 1996.

[5] S. C. Coutinho. Numeros Inteiros e Criptografia RSA. IMPA/SBM, Rio de Janeiro,

1997.

[6] J. Quisquater , C. Couvreur. Fast decipherment algorithm for RSA public-key

cryptosystem. Eletronic Letters, vol 18:905–907, 1982.

[7] D. Boneh , G. Durfee. Cryptanalysis of RSA with Private Key d Less than n0.292.

IEEE Transactions on Information Theory, 46(4)::I339–I349, 2000.

[8] A. Fiat. Batch RSA. Advances in Cryptology: Proceedings of Crypto ’89, 435:175–185,

1989.

[9] GNU. Gnu Lesser General Public License. Disponıvel em

http://www.gnu.org/copyleft/lesser.htm.

51

Page 61: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

52 REFERENCIAS BIBLIOGRAFICAS

[10] J. Hastad. Solving simultaneous modular equations of low degree. SIAM J. of

Computing, pages 17:336–341, 1988.

[11] R. Merkle , M. Hellman. Hiding Information and Signatures in Trapdoor Knapsacks.

IEEE Transactions on Information Theory, IT 24-5:525–530, 1978.

[12] W. Diffie , M. E. Hellman. New Directions in Cryptografy. IEEE Transactions on

Information Theory, vol 22:pp. 644–654, 1976.

[13] RSA Labs. Public Key Criptography Standards (PKCS). Version 2.1 - 2002,

disponıvel em http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/index.html.

[14] C. L. Lucchesi. Introducao a Criptografia. Quarta Escola de Computacao - Instituto

de Matematica e Estatıstica - Universidade de Sao Paulo, Sao Paulo, 1984.

[15] GNU MP. GMP. Version 4.1 -2002, disponıvel em

http://www.swox.com/gmp/.

[16] M. Y. Rhee. Cryptography and Secure Communications. McGraw-Hill - Series on

Computer Communications, Hanyang University - Seoul, Korea, 1994.

[17] Thomas H. Cormen , Charles E. Leiserson , Ronald L. Rivest. Introduction to

Algorithms. McGraw-Hill Book Company, The MIT Press, 1990.

[18] D. Boneh , H. Shacham. Fast Variants of RSA. RSA Laboratories, 2002.

[19] W. Stallings. Protect your Privacy - A Guide for PGP Users. Prentice Hall, Inc,

New Jersey, 1995.

[20] D. R. Stinson. Cryptography - Theory and Practice. CRC Press, Boca Raton, 1995.

[21] T. Takagi. Fast RSA-type cryptosystems using n-adic expansion. Advances in

Cryptology - CRYPTO ’97, LNCS 1294:372–384, 1997.

[22] T. Takagi. Fast RSA-type Cryptosystem Modulo pkq. In H. Krawczyk, ed.,

Proceedings of Crypto ’98, 1462 of LNCS. Springer-Verlag:318–326, 1998.

[23] R. Terada. Seguranca de Dados - Criptografia em Redes de Computador. Editora

Edgard Blucher Ltda, 2000.

Page 62: Implementaç˜ao e Análise comparativa de quatro variaç˜oes do

REFERENCIAS BIBLIOGRAFICAS 53

[24] A. Menezes , P. Van Oorschot , S. Vanstone. Handbook of Applied Cryptography.

CRC Press, 1997.

[25] M. Wiener. Cryptanalysis of Short RSA Secret Exponents. IEEE Transactions on

Information Theory, pages 36(3):553–558, 1990.