Você está na página 1de 7

How-To para factorizar a RSA N

1 Preambulo
1.1 Porquê factorizar a RSA N ?
A razão principal é a descoberta da RSA D (*). E para quê? Para poder utilizar uma netcard.

No meu caso, preciso de uma netcard ligada diretamente no meu recetor oficial da NOZ!!!!
Porque quero poder partilhar o meu cartão oficial e também poder utilizar as funcionalidades
que a operadora me fornece como o TIMEWARP (visualização dos programas dos últimos 7
dias e que não gravei) etc….

A netcard não funciona, puro e simplesmente, sem a tal RSA D e poucos ou nenhuns tiveram
essa chave aquando da leitura da ROM do seu recetor oficial. Só mesmo as RSA N E BK são
fornecidas.

Todo o processo explicado neste documento é baseado no Windows sendo que também é
possível fazer em Linux.

(*)NOTA: O programa de factorização não encontra diretamente a RSA D. Ele só encontra os


números primos P e Q. Deveremos utilizar um programa para encontrar a tal RSA D.

2 Pré-requisitos

2-1 O computador.
Um Computador com vários cores (quanto mais cores melhor) e disco com mais de 10GB e boa
memoria 4GB já deve ser bom.

2.2 GGNFS
O programa GGNFS para a arquitetura do vosso Sistema Operativo (X86 ou X64).

64bits : http://gilchrist.ca/jeff/factoring/ggnfs-svn413-win64-core2.zip

ou

32Bits : http://gilchrist.ca/jeff/factoring/ggnfs-svn413-win32-p4.zip

2.3 MSIEVE
O programa MSIEVE para a arquitetura do vosso Sistema Operativo (X86 ou X64).

64Bits : http://gilchrist.ca/jeff/factoring/msieve152_svn883_win64_i7.zip

ou

32Bits : http://sourceforge.net/projects/msieve/files/latest/download

Nota1: as versões 64Bits não são oficiais, elas foram compiladas por outras pessoas
Nota2 : EVITE a versão 1.52 X64 svn939, tem um bug (nomeadamente na 3 fase do processo)

2.4 FACTMSIEVE.PY
O script de trabalho FACTMSIEVE.PY na versão mais recente possível (aconselho V0.83 ou 0.84
ou 0.86, são mais rápidas na 1ª fase)

83 http://www.mersenneforum.org/attachment.php?attachmentid=6752&d=1308581106

84 http://www.mersenneforum.org/attachment.php?attachmentid=6757&d=1308596785

86 Não encontro o link!!!! Mas está o ficheiro nos anexos

2.5 PYTHON 3.5


Instalar o Python 3.5, seguindo os passos do wizard.

https://www.python.org/ftp/python/3.5.0/python-3.5.0-webinstall.exe

2.6 VISUAL C++ REDISTRIBUTABLE


Instalar todas as atualizações do Visual C++ redistributable 2005, 2008, 2010, 2012 e 2013
(outra vez para a arquitetura do SO utilizada embora podem passar ambas versões x86 e x64
que não faz mal).

Nota : Verifiquem a que vos falta pois muitos programas instalam automaticamente o runtime
visual c++.

X86:

2005 http://www.microsoft.com/en-us/download/details.aspx?id=3387

2008 http://www.microsoft.com/en-us/download/details.aspx?id=29

2010 http://www.microsoft.com/en-us/download/details.aspx?id=5555

2012 http://www.microsoft.com/en-us/download/details.aspx?id=30679

2013 http://www.microsoft.com/en-us/download/details.aspx?id=40784

X64:

2005 http://www.microsoft.com/en-us/download/details.aspx?id=18471

2008 http://www.microsoft.com/en-us/download/details.aspx?id=15336

2010 http://www.microsoft.com/en-us/download/details.aspx?id=14632

2012 http://www.microsoft.com/en-us/download/details.aspx?id=30679

2013 http://www.microsoft.com/en-us/download/details.aspx?id=40784
3 Preparação das pastas de trabalho

3.1 A pasta dos executáveis


Escolher uma unidade de disco que tenha pelo menos 10GB, por example D:

Criar uma pasta por exemplo D:\GGNFS

Extrair o conteúdo do GGNFS.zip dentro da pasta D:\GGNFS

Extrair o conteúdo do MSIEVE.ZIP dentro dessa mesma pasta D:\GGNFS (responder sim às
questões sobre ficheiros com mesmo, eles não têm importância são readme’s)

Colocar o ficheiro Factmsieve.8X.py (onde X representa 3, 4 ou 6) nessa mesma pasta


D:\GGNFS

3.2 A pasta dos log e ficheiros criados durante o trabalho


Criar uma pasta com o nome que querem na pasta D:\GGNFS, por exemplo “example”.

Fica assim criado a pasta D:\GGNFS\example

Nesta pasta iremos colocar o ficheiro “example.n” que irá conter a nossa chave RSA N no
formato DECIMAL.

Está feito…

4 Personalização dos ficheiros


4.1 Configuração do script FACTMSIEVE.8X.py
Editar o ficheiro FACTMSIEVE.8X.PY que colocaram na pasta de trabalho com o editor “idle”
(clique direito no ficheiro e escolher edit with IDLE) que foi instalado com o PYTHON ou
notepad++ ou o editor que mais gosta…

Mudar estas cadeias para ‘../’

Quantos cores verdadeiros


tem o computador

Se tiver hyperthreading
meter 2.

Por ex. um i7 tem 4 cores e


mais 4 do hyperthreading =
NUM_CORES = 4
THREADS_PER_CORE=2
PS: Quem tiver placa CUDA pode ter um tratamento muito mais rápido (mas também li que
muitos tiveram azares pelo meio): altere USE_CUDA = True e o GPU_NUM que tiver. Eu não
tenho e de toda a maneira é um parâmetro opcional

Ver ultimo capitulo para mais infos…

4.2 Ficheiro “example.n”

4.2.1 Conversão da chave RSA N para o formato Decimal


O programa de factorização utilizado só trabalha em decimal para isso devemos converter a
nossa RSA N em Decimal em por o resultado num ficheiro.

Existem vários programas que permitem a conversão da vossa RSA N de Hexadecimal para
Decimal.

Eu utilizei o rsatoolsv2,

- em cima à direita verificam (ou mudam) que está a number base 16.

- Coloquem a chave RSA N no sitio onde a pediam

A vossa chave RSA N Hexa deve comportar 128 Digitos.


- E depois ir em cima à direita e selecionar number base a 10.

A mesma RSA N, em Decimal, passa a ter 155 Digitos

4.2.2 criação do ficheiro “example.n”


O numero de 155 digitos, retirado do RSATOOL, deve ser colocado num ficheiro texto que
deverá ter o mesmo nome da pasta de trabalho (no nosso exemplo “example”) com a
extensão .n = example.n

Criar um novo ficheiro de texto que se vai chamar example.n (verificar que o vosso Windows
não o chame example.n.txt para isso desbloqueiam a visualização das extensões dos ficheiros
no Windows) dentro da pasta example.

Edite o com um editor clássico como o notepad. Este deverá ter esta forma:

n: 89385386199617313997160166654705640849862438803949289184823742958………

Fechar e Guardar no Fim…

5 Lançamento do script
5.1 Algum esclarecimento prévio sobre as fases
Antes de lançar convém explicar sucintamente como trabalha o script.
Ele passa por 3 fases polynomial selection, sieving e finalmente linear álgebra. O script ocupa-
se de ligar estas 3 fases distintas. Ele vai alimentando um ficheiro example.log na pasta
example.

Tempos das fases:

A 1ª demora basicamente entre 2 a 4 horas com um bom processador

A 2ª é a mais morosa pode ir de 2% ao dia com um i5 a 13% com um server bi-processor ou


mais % se utilizarem maquinas mesmo muito potentes. Ao que vi um i7 em média vai uns 5 a
7% ao dia por isso há-de fazer o trabalho entre 20 e 30 dias 7/7 e 24/24h. Esta é a única fase
onde se pode parar com um “CTRL+C” e esperar alguns segundos que o script crie os índices
para poder continuar de onde ficou (por exemplo se quiserem reiniciar o computador ou outra
razão).

PS : é recomendável que façam nesta 2ª fase pelo menos uma cópia de todos os ficheiros da
pasta EXAMPLE (mesmo sem parar o script) o mais perto dos 100% do sieving. De maneira que
se houver problemas mais a frente não sejam obrigados a recomeçar desde o início.

A 3ª demora entre 10h a 24h e acaba ai o processo com as chaves P (r1) e Q (r2) metidas no
ficheiro g155.example.log que o script cria.

5.2 Lançamento do script


Abrir uma janela DOS (como administrador)

Ir a pasta D:\GGNFS\Example

Digitar : D:

Digitar: cd \GGNFS\example

Digitar: ..\factmsieve.8X.py example (onde X corresponde a 3, 4 ou 6 em


função da versão que escolheu 83, 84 ou 86)

6 Fim
No fim um ficheiro g155-example.TXT é criado onde dentro vão se encontrar os 2 numeros
primos r1 e r2 (que correspondem a p e q).

Abrem novamente o RSATOOL.

Mudar no CAMPO “PUBLIC EXPONENT” : 3, em vez de 10001 (que lá está predefinido)

Meter o campo “number base” a 10

Colocar os valores r1 e r2 no sítio de P e Q

Mudar o campo “number base” a 16

Carregar no botão “calc. D”


Os campos RSA N e RSA D vão preencher-se.

Verifiquem que a RSA N corresponde bem à vossa RSA N (no formato original em
HEXADECIMAL).

Recuperam e colam a chave RSA D num ficheiro de texto para futuro uso na netcard.

PS : não se esqueçam que para a netcard necessitam os valores seguintes :


- BK (que veio com a RSA N após leitura da vossa box)
- RSA N
- RSA D ( que acabaram de arranjar)
- IRD (ou CAS ID BOX que recuperam da box em decimal, os 10 primeiros dígitos, sendo que os
2 últimos não são para recuperar, e que deverão converter para HEX).
- CAMID (ou SN CARTAO que recuperam da box, ou do próprio cartão, em decimal, os 10
primeiros dígitos, sendo que os 2 últimos não são para recuperar, e que deverão converter
para HEX)

8 Biblioteca
http://gilchrist.ca/jeff/factoring/nfs_beginners_guide.html

Boa Factorização…

Mig28

Você também pode gostar