Você está na página 1de 6

Criptografia com RSA

Programaao com Arquivos 2011.2

Aluno: Paulo Czar Rocha Matrcula: 21060073

Sumrio
1. Intruduo 1.1 Criptografia simtrica 1.2 Criptografia assimtrica 1.3 RSA 2. Algoritmo RSA 1.1 Gerao das chaves 1.2 Codificao 1.3 Decodificao 3. Exemplo 4. Referncias

1. Introduo
Criptografia o processo de escrever caracteres de forma secreta ou em cdigos. Na criptografia existe a idia de chave, que uma informao utilizada para embaralhar ou desembaralhar a mensagem original, existem duas tcnicas de criptografia a simtria e a assimtrica, que diferem basicamente na utilizacao das chaves.

1.1 - Criptografia simtrica


Nesse mtodo uma mensagem codificada utilizando-se uma chave, para recuperar a mensagem codificada necessrio utilizar a mesma chave na qual ela foi codificada. Claramente podemos ver que utilizando esse mtodo para trocar informaes, os dois lados dessa comunicao devem conhecer exatamente a mesma chave. Exemplos: DES, SHA.

1.2 - Criptografia assimtrica


Na criptografia assimtrica, so utilizadas duas chaves, chamadas de chave pblica e chave privada. A chave pblica serve para codificar a informao mas no possvel recuperar a informao usando essa chave, a chave privada que utlizada para recuperar informaes codificadas. Assim, se voc quiser enviar uma mensagem usando criptografia assimtrica para algum, voc deve conhecer a chave pblica do destinatrio. Exemplos: RSA.

1.3 - RSA
O RSA um algoritmo de criptografia assimtrico, foi criado em 1977 por Ronald L. Rivest, Adi Shamir, e Leonard Adleman, todos professores do MIT. O nome RSA vem da inicial do sobrenome de cada um dos seus criadores. Bsicamente a implementao do RSA baseada em trs etapas, gerao das chaves, codificao e decodificao. Cada etapa ser descrita detalhamente nesse trabalho, por agora apenas ser comentado sobre essas etapas. As chaves so calculadas com base no produto de dois nmeros primos grandes, quanto maiores forem esses nmeros primos, maior ser a segurana da chave, atualmente so escolhidos nmeros que so representados em 128 bits ou mais. Para a codificao necessrio que cada caractere da informao a ser criptograda seje um nmero, e ento para cada caractere da mensagem utilizando a chave pbica e uma frmula matemtica obtemos um novo nmero, que aquele caracter codificado. Para decodificar esse caractere necessrio outra frmula matemtica, mas utilizando agora a chave privada.

2. Algoritmo RSA
2.1 - Gerao das chaves
Como comentado anteriormente para codificar e decodificar informaes com o algoritmo RSA, devemos antes gerar duas chaves, uma pblica e uma privada. A chave pblica composta por dois nmeros, N e E, a chave privada tambm constituida por dois nmeros N e D, como pode-se ver, o nmero N faz parte das duas chaves. N o produto de dois nmeros primos P e Q que so escolhidos aleatreamente, lembrando que quanto maiores forem os nmeros primos escolhidos, melhor ser a segurana das chaves. Para gerar a chave pblica, como j sabemos calcular N, precisamos apenas calcular E, no clculo de E devemos computar o valor de PHI = (P-1)*(Q-1), bom agora com PHI calculado precisamos apenas encontrar um nmero E de forma que PHI e E sejam primos entre si, ou seja, satisfaa a seguinte condio: MDC(E, PHI) == 1. Uma forma de encontrar esse nmero , inicialmente assumir E com o valor 2, ento calcular MDC(E, PHI) se for diferente de 1, soma-se 1 a E (E + 1), e ento repetir o processo at que se encontre um valor para E que satisfaa MDC(E, PHI) == 1. Para a chave privada, tambm temos o valor de N, e o valor de D o nmero que multiplicado por E e ento divido por PHI gera resto 1, ou seja, D o nmero que satisfaz a seguinte condio: (D*E) % PHI == 1. A melhor forma para encontrar esse valor utilizando o "Algoritmo Euclidiano Estendido".

2.2 - Codificao
Para codificar uma mensagem usando o algoritmo RSA, deve-se converter a mensagem original para nmeros, pode-se simplismente substituir cada caractere da mensagem por seu cdigo ASCII equivalente por exemplo. Cada nmero M correspondendo a um caractere da mensagem, poder ser codificado como o nmero C, onde C igual ao resto da diviso de M elevado a E por N, ou seja C = exp(M, E) % N. OBS: Os valores de N e E esto na chave pblica gerada.

2.3 - Decodificao
A decodificao de um caractere C codificado em RSA, feita, calculando-se o nmero M que representa o caractere original, onde M igual ao resto da diviso de C elevado a D por N, ou seja M = exp(C, D) % N. Depois esse nmero M obtido deve ser convertido novamente para um literal caso necessrio. OBS: Os valores de N e D esto na chave privada gerada.

3. Exemplo
Para exemplificar o mtodo apresentado iremos implementar o algoritmo a seguir. Iniciaremos calculando as chaves: 1. Para facilitar o exemplo usaremos P = 7 e Q = 13. 2. Calculando N = 7 * 13, encontramos N = 91. 3. Calculando PHI = (P-1)*(Q-1), encontramos PHI = 72. Para a chave pblica, testaremos a partir do nmero 2, um nmero que satisfaa a seguinte condio MDC(E, PHI) == 1, como os nmeros escolhidos so pequenos, podemos encontrar rapidamente o valor 5 para E. J na chave privada, utilizaremos o alogritmo euclidiano extendido para encontrar esse valor, assim depois de calculado, temos que D = 29 satisfaz a condio (D*E) % PHI = 1. Aps esse processo, j temos as chaves geradas, a chave pblica (91, 5) e a chave privada (91, 29). Nesse ponto como j temos as chaves criadas, podemos criptografar e descriptografar agora qualquer mensagem. Por exemplo considere a seguinte mensagem a ser codificada: "exemplo". Se substituirmos cada letra por seu cdigo ASCII temos: "101 120 101 109 112 108 111". Feito isso devemos criptografar cada nmero desse, calculando o nmero que representa esse caracter codificado. Lembrando que esse nmero pode ser obtido a partir de exp(M, E) % N, onde M o nmero que deseja-se criptografar e N e E esto na chave pblica. Para o caracter "101" fazemos: M = 101 C = exp(101, 5) % 91 = 82 Pronto, obtemos o caractere 101 codificado em RSA, agora repetimos o processo para toda a mensagem. O Processo de decodificao similar, recebido um caractere C codificado, podemos recuperar o numero M que representa aquele caractere original da mensagem. Para encontrarmos M basta efetuar o clculo M = exp(C, D) % N. Para o exemlplo acima. C = 82 M = exp(82, 29) % 91 = 101 Assim procedemos at o final da mensagem, Com isso podemos ver o funcionamento do algoritmo RSA.

4. Referncias
http://pt.wikipedia.org/wiki/RSA http://www.di-mgt.com.au/rsa_alg.html http://pt.wikipedia.org/wiki/Algoritmo_de_Euclides_estendido http://pt.wikipedia.org/wiki/Algoritmo_de_Euclides http://pt.wikipedia.org/wiki/Aritm%C3%A9tica_modular http://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_totiente_de_Euler http://0fx66.com/blog/programacao/criptografia-rsa-algoritmos-e-implementacoes/ http://www.vivaolinux.com.br/artigo/Fundamentos-da-criptografia-assimetrica/ http://www.vivaolinux.com.br/artigo/Criptografia-assimetrica-com-o-RSA/ http://www.asciitable.com/