Você está na página 1de 13

ESTUDO DO MÉTODO DE FATORAÇÃO DE INTEIROS

CRIVO QUADRÁTICO

Aline de Paula Sanches (Bolsista UEMS), Adriana Betânia de Paula Molgora


Universidade Estadual de Mato Grosso do Sul
Cidade Universitária de Dourados, Caixa postal 351, CEP: 79804-970
alinee_sanches@hotmail.com, abmol@terra.com.br

Resumo. Um dos métodos mais poderosos utilizados na fatoração de inteiros é O Crivo


Quadrático. Este método explora os conceitos da Teoria dos Números para encontrar um
fator primo de um número inteiro. O principal objetivo deste trabalho é apresentar uma
descrição do método Crivo Quadrático.
Palavras-chave: Criptografia. RSA. Fator.

Abstract. One of the most powerfull methods for integer factorization is the Quadratic Sieve.
This method explores the concepts of the Theory of Numbers to find a prime factor of an
integer number. The main goal of this work is to present a description of method Quadratic
Sieve.
Key-words: Criptography. RSA. Factor.

1. Introdução
A fatoração de números inteiros tem sido de grande destaque e importância na área de
Teoria dos Números. Essa importância deve-se ao fato de que sistemas criptográficos, como o
RSA, têm sua segurança comprometida caso seja desenvolvido um método de fatoração que
fatore qualquer inteiro dado.
O método de fatoração denominado Crivo Quadrático, criado por Pomerance (1985,
p.169), é um dos métodos mais importantes já desenvolvidos, pois tem como objetivo a
fatoração de números inteiros grandes.
O entendimento do funcionamento do método Crivo Quadrático requer um estudo
aprofundado de seus aspectos matemáticos. Nesse sentido, esse trabalho tem como objetivo
principal apresentar um estudo teórico do método Crivo Quadrático de forma a disponibilizar
conhecimentos, sobre este método de fatoração, visando publicação na área de trabalho e
possibilitando estudos mais avançados em pesquisas posteriores.
Esse estudo é descrito como segue. Na Seção 2 é apresentada a metodologia utilizada
durante o desenvolvimento do trabalho. Na Seção 3 são apresentados os resultados obtidos
durante a pesquisa. Por fim, na Seção 4, encontra-se uma discussão desse trabalho.

2. Metodologia
Para alcançar o objetivo proposto o trabalho foi distribuído em quatro etapas
compreendendo:
• Estudo das pesquisas mais recentes relacionadas com o método Crivo Quadrático.
Esse estudo foi realizado através de pesquisa bibliográfica.
• Estudo dos fundamentos matemáticos para o entendimento do método Crivo
Quadrático, também realizado através de pesquisa bibliográfica.
• Estudo do processo de fatoração de números inteiros realizado pelo método Crivo
Quadrático.
• Documentação do processo de fatoração pelo método Crivo Quadrático, de forma a
facilitar o entendimento do mesmo.

3. Resultados
3.1 Fatoração de inteiros e Criptografia RSA
A criptografia de chave pública, como é o caso do RSA, é um sistema de fundamental
importância para a segurança das informações. No entanto, esse criptossistema pode ter sua
eficácia comprometida caso seja desenvolvido um método de fatoração que fatore qualquer
número inteiro dado. Ou seja, estudos sobre métodos de fatoração são imprescendíveis no
sentido de analisar a vulnerabilidade do RSA. A implementação do RSA utiliza dois
parâmetros básicos: dois números primos p e q que constituem o segredo do sistema. A
partir do cálculo de φ (n) = ( p − 1)(q − 1) , onde n = p ⋅ q , obtêm-se o par (n, e) , onde
e satisfaz a seguinte condição mdc(e, φ (n)) = 1 . O par (n, e) corresponde a chave pública do
sistema que é utilizado para a codificação das mensagens.
Para decodificar a mensagem é necessário o uso da chave privada dada pelo par
(n, d ) onde d é o inverso de e módulo φ (n) . O receptor da mensagem é o proprietário da
chave privada e d constitui o segredo do sistema. É possível o cálculo de d sendo
conhecidos os fatores p e q de n .
A escolha dos primos p e q que compõem n é um dos pontos principais da
segurança do RSA. A possibilidade de fatorar n implica na obtenção dos fatores p e q e
consequentemente na decodificação da mensagem. Essa relação direta entre a segurança do
RSA e o problema de fatoração constitui uma boa razão para o estudo dos métodos de
fatoração de inteiros. Isso tem servido como um estímulo para o estudo do método Crivo
Quadrático, que figura como um dos principais métodos de fatoração já desenvolvidos.

3.2. Crivo Quadrático


O método Crivo Quadrático, ou QS, foi criado em 1981, por Pomerance (1985, p.169).
Esse método de fatoração de inteiros é conhecido como um dos algoritmos mais rápidos de
fatoração existentes, já tendo possibilitado a fatoração de números contendo mais de 100
dígitos decimais (ver Tabela 1).
Tabela 1

Métodos Número de dígitos decimais dos números


fatorados
NFS acima de 100 dígitos decimais
Crivo Quadrático aproximadamente 100 dígitos decimais
ECM até aproximadamente 70 dígitos
Comparativo entre os métodos de fatoração mais importantes da atualidade.

Para um melhor entendimento do funcionamento do método Crivo Quadrático, antes


de descrevê-lo, serão introduzidos os conceitos de Resíduo Quadrático, Símbolo de Legendre
e Crivo de Eratóstenes que são utilizados no processo de fatoração. Informações adicionais
sobre os conceitos matemáticos envolvidos nesse processo podem ser encontradas em
Crandall e Pomerance (2002, p.01), Barros (2008, p.01) e em Antunes (2002, p.52).

3.2.1 Resíduo Quadrático


Seja o conjunto Ζp * , onde p é um número primo maior que 2 e a ∈ Zp * . Dizemos
que a é um resíduo quadrático módulo p se:

b 2 ≡ a (mod p ) para algum b ∈ Zp *


Exemplo 1:
Tomamos como exemplo o conjunto Z11* e os quadrados dos cinco primeiros
elementos do conjunto, a seguir:
12 ≡ 1 (mod 11)
2 2 ≡ 4 (mod 11)
3 2 ≡ 9 (mod 11)
4 2 ≡ 16 ≡ 5 (mod 11)
5 2 ≡ 25 ≡ 3 (mod 11)
Nesse exemplo 1, tem-se como resíduos quadráticos os números 1, 3, 4, 5, 9. Observe
que para calcular o resíduo quadrático módulo 11, tomamos os quadrados, apenas dos cinco
primeiros elementos de Z11*. Calculando o quadrado dos demais elementos do conjunto,
podemos verificar que serão obtidos resultados iguais aos anteriores:
6 2 ≡ 36 ≡ 3 (mod 11)
7 2 ≡ 49 ≡ 5 (mod 11)
8 2 ≡ 64 ≡ 9 (mod 11)
9 2 ≡ 81 ≡ 4 (mod 11)
10 2 ≡ 100 ≡ 1 (mod 11)
Nesse sentido, os demais elementos do conjunto podem ser ignorados devido ao fato
de fornecerem os mesmos resultados. Ou seja, vimos que em Z11* temos dez elementos dos
quais apenas cinco são Resíduos Quadráticos. Logo conclui que:
Lema 1.1: Dado um número primo p > 2 , exatamente metade dos elementos de Zp* são
Resíduos Quadráticos.
Demonstração: Vamos denotar por a1, a2,...,ap-1, os elementos de Zp* , com
a1 = 1, a 2 = 2,..., a p −1 = p − 1 . É fácil observar que:

a1 + a p −1 = a 2 + a p − 2 = ... = p

Exemplo 2: 1+10 = 2+9 = 3+8 = 4+7 = 5+6 = 11


Ou seja a soma dos elementos eqüidistantes dos extremos é sempre igual a p .
Portanto:
(a k ) 2 ≡ (−a p −k ) 2 ≡ (a p −k ) 2 (mod p)

Conforme enunciamos acima elevando ao quadrado dois elementos eqüidistantes dos


extremos, o resultado módulo p será o mesmo. Devido a Zp* ter exatamente p − 1 elementos,
( p − 1)
temos Resíduos Quadráticos.
2

3.2.2 Símbolo de Legendre


Dado um primo p e um número n não divisível por p , definimos o Símbolo de
Legendre por:
 n  1, se a é resíduo quadrático mod p
  = 
 p  − 1, caso contrário

n (p-1)/2
Sabe-se que   ≡ n mod p e, através dessa congruência, o valor do Símbolo de
 p
Legendre pode ser calculado.
Exemplo 3:
 8051  3
Seja n = 8051 e p = 7 . Nesse caso, tem-se   ≡ 8051 mod 7 ≡ 1. Logo, 8051 é
 7 
Resíduo Quadrático mod 7.

3.2.3 Crivo de Eratóstenes


É um método que consiste em dispor os números naturais de 1 a n, em ordem
crescente em um quadro e eliminar, por etapas, os números que não são primos.
Exemplo 4:
1. Listar os números naturais a partir do número 2 (primeiro número natural primo) até um
certo valor limite:
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, …
2. Retirar da lista todos os múltiplos do primeiro número primo (2), maiores que ele:
4, 6, 8, 10, 12, 14, 16, …
3. Retirar da lista todos os múltiplos do próximo número primo (3), maiores que ele:
6, 9, 12, 15, 18, 21, 24, …
4. Retirar da lista todos os múltiplos do próximo número primo (5), maiores que ele:
10, 15, 20, 25, 30, 35, 40, …
5. Repetir o procedimento até o final da lista.
6. Os números que não foram retirados da lista formam a seqüência de números naturais
primos:
2, 3, 5, 7, 11, 13, 17, 19, …

3.2.4 Processo de fatoração de inteiros através do método Crivo Quadrático


A fatoração de inteiros através do Crivo Quadrático tem como base o fato de que se
existirem números x e y que satisfaçam a condição x 2 ≡ y 2 (mod n) , então tem-se que
( x + y ) ⋅ ( x − y ) ≡ 0 (mod n) . Logo, os números d = mdc( x + y, n) e f = mdc( x − y, n)
poderão ser fatores não triviais de n. Ou seja, a idéia básica do método consiste em encontrar
2
congruências da forma xi ≡ yi (mod n) , onde ∏y i = y 2 é um quadrado perfeito. Se

x = ∏ xi , então x 2 ≡ y 2 (mod n) .

De acordo com Crandall e Pomerance (2002, p.01), na prática, para encontrar x e y, em


primeiro lugar deve-se encontrar uma base de fatores, que é um conjunto de números primos
como, por exemplo, o conjunto {−1, 2, p 2 ,..., p k } , tal que pi ≤ B , para um certo limite B e,
para cada primo p, o número n deve ser um resíduo quadrático módulo p . Em seguida, são
2
calculados números f ( xi ) ’s dados por f ( xi ) = xi − n para xi próximo de n.

Usando o Crivo de Eratóstenes, apresentado no item 3.2.3, devem-se determinar xi ’s

suficientes para os quais f ( xi ) pode ser completamente fatorado pela base de fatores. A

quantidade desses f ( xi ) ’s deve ser maior do que o número de primos e menores do que B.

Armazenando os f ( xi ) ’s , em um vetor na base binária, utiliza-se a adição de vetores


para descobrir uma combinação linear que produz um vetor nulo que corresponderá a um
quadrado perfeito. Então x será dado pelo produto dos xi ’s correspondentes módulo n e y

será dado pela raiz do produto dos fatores dos f ( xi ) ’s correspondentes. Em seguida é

calculado d = mdc( x + y, n) . Se d é fator não trivial de n, então um fator foi encontrado e,


para determinar o segundo fator basta calcular a divisão de n por d.
Em resumo, pode-se dizer que os passos para a fatoração de n pelo método Crivo
Quadrático, são:
1º Encontrar uma base de fatores .
2º Executar o Crivo de Erastóstenes para encontrar números que podem ser
completamente fatorados sobre a base de fatores.
3º Usar a Eliminação Gaussiana para encontrar um produto dos números determinados
no 2º passo que seja um quadrado perfeito.
Para um melhor entendimento desse processo apresentaremos, a seguir, alguns
exemplos de fatoração de números inteiros desenvolvidos por meio do método Crivo
Quadrático.
Exemplo 5:
Seja n = 8051 , o número a ser fatorado.
No 1º passo, para encontrar uma base de fatores escolhe-se primeiramente um
limite B . A base deverá conter números primos menores do que B . Existem diferentes
abordagens para a obtenção do limite B , no entanto, em geral, esse valor é obtido de forma
empírica, baseada em experimentação. Por exemplo, suponhamos que queremos uma base
com 2 < p < 105 .
Assume-se que já foram feitas divisões por tentativas em n até B , e sabe-se que p
não divide n . Serão considerados os primos menores que B tais que:
n
  = + 1 (símbolo de Legendre)
 p
n
Sabemos que   ≡ n (p-1)/2
mod p . Logo todos os primos 2 < p < 105 devem ser
 p
testados:
 8051  1
p = 3⇒  ≡ 8051 mod 3
 3 
≡ 2 ≠ 1 , 3 não pertence para a base.
 8051  2
p = 5⇒  ≡ 8051 mod 5
 5 
≡ 1 = 1 , 5 pertence a base.
 8051  3
p = 7⇒  ≡ 8051 mod 7
 7 
≡ 1 = 1 , 7 pertence a base.
 8051  5
p = 11 ⇒   ≡ 8051 mod 11
 11 
≡ 10 ≠ 1 , 11 não pertence a base

E assim sucessivamente. Dessa forma encontra-se a base formada pelos primos:


5 7 13 23 43 47 59 61 79 103
No segundo passo deve-se determinar números f (r )' s completamente fatorados sobre
a base de fatores.
Ao invés de escolher r ' s aleatoriamente, escolhe-se k =  n  e tomam-se para valores
de r = k + 1, k + 2, ...
Por exemplo para n = 8051 tem-se:
k=  
8051 = 89
Se forem tomados 200 valores de r tem-se:
r = 89 + i, p / i = 1, 2, ...,200
Logo, os números r ' s seriam:
90, 91, 92, 93, 94,..., 289
Se f (r ) for definido como f (r ) = r 2 − n e se p (pertencente a base de fatores) não
divide n , mas divide f (r ) então.
Por exemplo, para r = 92 , tem-se:
n ≡ r 2 mod p

⇒ f (r ) = 92 2 − 8051 = 413 = 7.59

⇒ 8051 ≡ 92 2 mod 7
ou
⇒ 8051 ≡ 92 2 mod 59
Observação: Então se n é Resíduo Quadrático mod p , ou seja, n = t2 mod p , e como,

n ≡ r 2 mod p , então t 2 ≡ r 2 mod p , o que significa que r é congruente a t ou − t mod p e,


então p deve dividir f (r ) .
Continuando o processo de fatoração, depois de obtidos os r ' s , são determinados os
f (r )' s completamente fatorados pela base de fatores.
Exemplo:
• r = 90 tem-se f (r ) = r 2 − n

f (90) = 90 2 -8051
= 49
= 7 2 , pode ser utilizado como f (r ) .

• r = 91 tem-se f (r ) = r 2 − n

f (91) = 912 -8051


= 230
= 2.5.23, como 2 não está na base de fatores, então não se
utilizará f (91) = 230 .

• r = 92 tem-se f (r ) = r 2 − n

f (92) = 92 2 -8051
= 413
= 7.59, pode ser utilizado como f (r ) .

E assim sucessivamente até r = 289 tem-se f (289) = 289 2 -8051 = 75470


= 2, que no
caso não será utilizado.
Realizando-se esses cálculos obtém-se os seguintes f(r)’s completamente fatorados:
f (r)' s : 413 = 7.59 = 92 2 -8051

2765 = 5.7.79 = 104 2 -8051


3185 = 5.72.13 = 106 2 -8051
4945 = 5.23.43 = 114 2 -8051
5405 = 5.23.47 = :
9373 = 7.13.103 = :
12685 = 5.43.59 = :
34385 = 5.13.232 = 206 2 -8051
36049 = 13.47.59 = :
60593 = 13.59.79 = :
73745 = 5.73.43 = 286 2 -8051
Depois de determinar os f (r )' s , determina-se uma matriz onde o número de linhas é
determinado pelo número de f (r )' s completamente fatorados e o número de colunas é o
número de primos da base de fatores.
Através dessa matriz será realizada uma Eliminação Gaussiana para encontrar uma
combinação apropriada de f (r )' s que é um quadrado perfeito.
Para n = 8051, determinou-se uma base de 10 fatores e 11 f (r )' s .
Então para cada f (r ) associa-se uma (string) de 10 dígitos binários, cada coluna
correspondendo a um dos primos da base de fatores. Se o primo correspondente tem potência
par, então o dígito que o representa é 0; se a potência é ímpar o dígito é 1. Nesse caso, temos a
matriz B:
1 1 0 0 0 0 0 0 1 0 
0 1 0 0 0 0 1 0 0 0 
 
1 0 1 0 0 0 0 0 0 0
 
1 0 0 1 1 0 0 0 0 0 
1 0 0 1 0 1 0 0 0 0 
 
B= 0 1 1 0 0 0 0 0 0 1 
1 0 0 0 1 0 1 0 0 0 
 
1 0 1 0 0 0 0 0 0 0
0 0 1 0 0 1 1 0 0 0 
 
0 0 1 0 0 0 1 0 1 0 
 
1 1 0 0 1 1 0 0 0 0 
Linha 1: ⇒ 413 = 92 2 − 8051
Linha 2: ⇒ 2765 = 104 2 − 8051
Linha 3: ⇒ 3185 = 106 2 − 8051
Linha 8: ⇒ 34385 = 206 2 − 8051
Uma matriz identidade 11x11 é associada à matriz B a fim de dizer qual combinação de
f (r )' s dará um quadrado perfeito. São realizados os passos da Eliminação Gaussiana nas
duas matrizes. A Eliminação Gaussiana é realizada até que seja encontrada uma linha com
todos elementos nulos. A linha correspondente de I indicará quais f (r )' s devem ser
multiplicados para que se encontre um quadrado perfeito.
Se um fator não trivial de n for encontrado, então deve-se tomar outra base e
recomeçar o processo de fatoração.
Por exemplo, ao realizar a eliminação gaussiana em B a 1º linha a ser zerada é a 8º
linha de B . A linha correspondente em I será:
[ 0 0 1 0 0 0 0 1 0 0 0 ]
As colunas com o dígito 1 indicam quais f (r )' s devem ser multiplicados. Nesse caso
o 3º e o 8º.
Então tem-se:
⇒ No 3º : 3185 = 5.7 2.13 = 106 2 -8051
⇒ No 8º : 34385 = 5.13.23 2 = 206 2 -8051
Então x será o produto dos r ' s correspondentes módulo n e y será dado pela raiz do
produto dos fatores dos f (r )' s. Ou seja:
x = 106.206 mod 8051 ≡ 5734
y= 5 2.7 2.13 2.23 2 mod 8051 = 2414
x − y = 3320
mdc (3320, 8051) = 83 que é fator de n = 8051
ou
x + y = 8148 = mdc (8148, 8051) = 97 que também é fator de
n . Dessa forma o número 8051 foi fatorado.

Exemplo 6:
Seja n = 9487 e B = 30 .
Verifica-se para cada primo p menor do que 30, se n é resíduo quadrático modulo p .

através do teste de Euler, calculando-se n ( p −1) / 2 mod p . Se o resultado for 1, tem-se que n é
resíduo quadrático modulo p . Caso contrário, o número primo deve ser descartado. Assim, a
base de fatores será dada por {-1, 2, 3, 7, 11, 13, 17, 19, 29}.
Depois de obtida a base de fatores, são calculados os f ( xi ) ’s completamente

fatorados pela base de fatores para xi próximo de 9487 . Por exemplo, considerando

xi = 98 , tem-se f (98) = 98 2 − 9487 = 117 = 3 2 × 13 , isto é, 117 é completamente fatorado

pela base de fatores. Em seguida, para cada f ( xi ) encontrado é associado um vetor de 9


dígitos binários, cada coluna correspondendo a um dos primos da base. Se o número for
negativo o primeiro dígito será 1, caso contrário será 0. Se o primo correspondente tem
potência par, então o dígito será 0, caso contrário será 1. A seguir são apresentados exemplos
de xi ’s, f ( xi ) ’s e seus dígitos binários correspondentes.

xi f ( xi ) -1 2 3 7 11 13 17 19 29

81 -2926 1 1 0 1 1 0 0 1 0
84 -2431 1 0 0 0 1 1 1 0 0
85 -2262 1 1 1 0 0 1 0 0 1
89 -1566 1 1 1 0 0 0 0 0 1
95 -462 1 1 1 1 1 0 0 0 0
97 -78 1 1 1 0 0 1 0 0 0
98 117 0 0 1 0 0 0 0 1 0
100 513 0 0 1 0 0 0 0 1 0
101 714 0 1 1 1 0 0 1 0 0
103 1122 0 1 1 0 1 0 1 0 0

Calculando v(81)+v(95)+v(100) obtém-se o vetor <0,0,0,0,0,0,0,0,0>, que

corresponde ao quadrado perfeito (81 × 95 × 100)2 = (2 × 32 × 7 × 11 × 19)2 mod 9487 . Então

x = 81 × 95 × 100(mod 9487) ≡ 1053 e y = 2 × 32 × 7 × 11 × 19(mod 9487) = 7360 . Calculando


d = mdc(1053 + 7360,9487) = 179 , obtém-se um fator não trivial de n. O segundo fator é dado
por 9487 ÷ 179 = 53 .

4. Discussão
Esse trabalho apresentou uma descrição do funcionamento do método de fatoração
Crivo Quadrático. Durante o desenvolvimento do projeto observou-se que fatorar um número
através do Crivo Quadrático não é uma tarefa trivial. Ou seja, o processo de fatoração é
complexo, necessitando de estudos mais aprofundados sobre esse método de fatoração.
No entanto, esse estudo, mostrou-se muito importante, servindo como base para
facilitar estudos mais avançados sobre o Crivo Quadrático.

5. Agradecimentos
Os autores agradecem pelo apoio financeiro (bolsa) concedido pela Universidade
Estadual de Mato Grosso do Sul e também por todos os acadêmicos, coordenadores,
professores e técnicos que, diretamente ou indiretamente, contribuíram para a realização desse
trabalho.

6. Referências
Teses e Dissertações
Antunes, S, C. M. 2002. Métodos de Fatoração de Números Inteiros. Dissertação de
Mestrado, Universidade Federal do Rio Grande do Sul, 75p.

Livros
Crandall, R., Pomerance, C. 2002. “Prime Numbers- A Computational Perspective”. New
York: Springer-Verlag, 1º Edição, 227p.

Pomerance, C. 1985. The Quadratic Sieve Factoring Algorithm. New York: Springer-
Verlag , Ed. T. Beth, N. Cot, and I. Ingemarsson , 13p.
Sites de Internet

Universidade Federal do Rio de Janeiro- UFRJ. 2008.


Resíduos Quadráticos e Fatoração: uma aplicação à criptoanálise do RSA. Disponível
em: https://www.dcc.ufrj.br/~collier/CursosGrad/cripto/QuebraRSA.pdf (último acesso em
09/02/2009) .

Wittens, Steven; Nagtegaal, Stefan- 2008.


Crivo de Eratóstenes – Matemática Mania. Disponível em:
http://matematicamania.wordpress.com/tag/crivo-de-eratostenes/ (último acesso em
17/02/2010).

Você também pode gostar