0% encontró este documento útil (0 votos)
376 vistas2 páginas

RSA en Python: Implementación y Análisis

El presente articulo detalla el an´alisis, dise ˜no e implementacion del algoritmo RSA sobre lenguaje python

Cargado por

Luis Sosa
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
376 vistas2 páginas

RSA en Python: Implementación y Análisis

El presente articulo detalla el an´alisis, dise ˜no e implementacion del algoritmo RSA sobre lenguaje python

Cargado por

Luis Sosa
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 2

1

Implementacion del Algoritmo Criptografico RSA


en Lenguaje Python
Luis Alejandro Sosa B.1 - Sandra Ximena Rengifo A.1 - Esteban Andres Guerrero N.1
Criptografia
Especializacion en Proyectos Informaticos
Facultad de Ingeniera
Universidad Distrital Fancisco Jose de Caldas
Bogota D.C. , Colombia
[email protected] - [email protected] - esteban [email protected]

e
AbstractEl presente articulo detalla el analisis, diseno
implementacion del algoritmo RSA sobre lenguaje python
Palabras clavesCifrado, RSA, algoritmo de Euclides,
Euler, primos,coprimos, modulo, clave publica, clave privada.

La lista contiene 26 elementos que indican las letras


del abecedario, pero debido a que la posicion en una lista
comienza en cero(0) la lista ira de la posicion 0 a la posicion
25.
B. Definicion de n

I. I NTRODUCCI ON
Segun el Diccionario de la Real Academia, la palabra
Criptografa proviene del griego y su definicion es: Arte
de escribir con clave secreta o de un modo enigmatico.
Obviamente la Criptografa hace anos que dejo de ser un arte
para convertirse en una tecnica, o mas bien un conglomerado
de tecnicas, que tratan sobre la proteccion ocultamiento
frente a observadores no autorizados de la informacion.
Entre las disciplinas que engloba cabe destacar la Teora de la
Informacion, la Teora de Numeros o Matematica Discreta,
que estudia las propiedades de los numeros enteros, y la
Complejidad Algortmica.

Para definir n R debe escoger dos numeros primos p


y q lo suficientemente grandes para generar dificultad de
factorizacion donde:
n=pq
C. Definicion de la funcion multiplicativa de Euler (n)
El receptor R obtiene el valor de la funcion multiplicativa
de Euler (n) apartir de n calculado en el paso B, de tal
manera que:
(n) = (pq) = (p)(q)

II. A N ALISIS
M ATEM ATICO
El algoritmo RSA va a permitir establecer una comunicacion
segura entre un emisor E y un receptor R. Cuando el emisor
envia un mensaje atraves del canal este no puede asegurarse
que el mensaje no sea interceptado por lo que si sucediera el
atacante no podra conocer el significado del mensaje ya que
este se encuentra cifrado y solo puede ser descifrado con las
claves privadas del receptor R
El procedimiento matematico empleado para implementar
el algoritmos RSA fue el siguiente.
A. Codificacion del mensaje
Debido a que el algoritmo RSA esta basado en la teoria de
matematicas discretas y la factorizacion de numeros primos,
este solomanete puede cifrar numeros, ya que para este caso
en particular se debe cifrar un mensaje en texto plano este
debe ser traducido a numeros, es decir, debe ser codificado,
para tal caso el algoritmo normalmente hace uso del codigo
ASCII
1 Estudiantes

Especializacion en Proyectos Informaticos

(1)

(2)

y dado que p y q son primos entre s, y cada uno de ellos es


primo, entonces:
(n) = (p 1)(q 1)

(3)

D. Definicion de claves publicas y privadas


El emisor E debe realizar el cifrado del mensaje con la
clave publica e del receptor R y este a su vez lo descifra con
su clave privada d.
Para generar e el receptor del mensaje debe escojer un
numero tal que:
1 < e < (n)

(4)

de tal manera que esea primo relativo con (n)


a partir de la porcion de la clave publica e calculamos la
porcion de clave privada d la cual representa el inverso de e
en modulo (n) quedando:
d = (e1 ) (n)

(5)

Calculados e y d las claves publicas y privadas quedaran


definidas por los pares de numeros (e, n) y (d, n) as:
ClaveP ublica = (e, n)

(6)

ClaveP rivada = (d, n)

(7)

E. Cifrado con clave publica


Al tener definida la clave publica se puede pasar a realizar el
cifrado del mensaje m que E le envia a R, para ello el mensaje
luego de ser codificado se cifra elevandolo a la potencia e en
modulo n asi:
mcif rado = (me )n

(8)

F. Descifrado con clave privada

mdescif rado = ((mcif rado )d )n

public = (n, e)
private = (n, d)
return public, private

(9)
C. Procedimiento de cifrado

y reemplazando 9 :
(10)

y como e y d son inversos en modulo (n) entonces


mdescif rado = (med )n = (m)n

def genclaves(bitn):
p = genprime(bitn)
q = genprime(bitn)
n = p * q
phi = (p - 1) * (q - 1)
\seleccionar e
while (phi%e) == 0:
e=genprime(17)
d = inverse_mod(e, phi)

Como lo indica la ecuacion (6) la porcion de la clave


privada d es el inverso de e, por eso cuando R recibe el
mensaje cifrado de E, lo descifra utilizando el inverso d:

mdescif rado = ((me )d )n = (med )n

e y d, genera q y p apartir de la funcion propia de python


genprime(bitn) la cual genera nuemeros primos de cierto
tamano de bits,n ,(n) y la clave privada d apartir de la
funcion inversem od para obtener el inverso.
Todas estas funciones fueron generadas a partir de una
llamada al modulo rsam ath creado por un colaborador de
python.

Para el procedimiento de cirfrado se creo la funcion cif rar(n, public) la cual hace uso de la funcion
modex(base, exponente, modulo) tambien llamada desde el
modulo rsam ath.

En resumen R ya puede conocer el mensaje enviado por E

def cifrar(m, public):


c = modex(m, public[1], public[0])
return c

III. I MPLEMENTACION DEL A LGORITMO EN P YTHON

D. Procedimiento de descifrado

(11)

A. Codificacon de Texto plano


Para realizar la codificacion de la cadena de texto plano que
se desea cifrar se utilizo la funcion ord(), la cual convierte
un caracter unicode a su equivalente en ASCII, para realizar
la codificacion del texto completo se creo una funcion que
realiza el procedimiento recorriendo cada caracter de manera
que codifique el texto entero, esta funcion se definio como
text2ascii para luego de solicitar el texto llamarla y realizar
la codificacion correspondiente
def text2ascii(Cadena):
cod =
for i in Cadena:
cod += str(ord(i)) + ,
return cod
B. Definicion de Claves Publicas y privadas
Para la generacion de claves publicas y privadas se creo la
funcion genclaves(bitn) la cual ademas de calcular la claves

Para el procedimiento de descifrado se utiliza la misma


funcion del paso anterior solamente que que se cambiando
a la clave privada:
def descifrar(c, private):
p = modex(c, private[1], private[0])
return p
E. Decodificacion a Texto Plano
Para realizar la decodificacion y poder tener el texto en
claro y entendible se hizo uso de la funcion chr() la cual es
la inversa de la funcion ord() que se utilizo para codificarla
quedando:
def ascii2text(Cadena):
decod =
Cadena = Cadena.replace(","," ")
for i in Cadena.split(): .
decod += chr(int(i))
return decod

También podría gustarte