miércoles, 3 de julio de 2013

Implementación de protocolo RSA con python

En criptografía, RSA (Rivest, Shamir y Adleman) es un sistema criptográfico de clave pública desarrollado en 1977. Es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente.

La seguridad de este algoritmo radica en el problema de la factorización de números enteros. Los mensajes enviados se representan mediante números, y el funcionamiento se basa en el producto, conocido, de dos números primos grandes elegidos al azar y mantenidos en secreto. Actualmente estos primos son del orden de , y se prevé que su tamaño crezca con el aumento de la capacidad de cálculo de los ordenadores.

Como en todo sistema de clave pública, cada usuario posee dos claves de cifrado: una pública y otra privada. Cuando se quiere enviar un mensaje, el emisor busca la clave pública del receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado llega al receptor, este se ocupa de descifrarlo usando su clave privada.



Con este(click aquí) código podemos generar las llaves publicas y privadas para un "Cliente"/ "Servidor" y para mostrar su funcionamiento, cree dos sockets, uno que funge como "Servidor" y el otro "Cliente", el "Cliente" envia un texto cifrado con la llave publica del "Servidor" y este a su vez decifra el mensaje con su llave privada.
Código Servidor

En el caso del Cliente, requiere pedir la llave publica del servidor, por lo cual busca el archivo de "servpub.key" con lo cual puede mandar un mensaje correctamente cifrado.

Código Cliente













Ejemplo de funcionamiento

Conclusiones:
  • Es recomendable usar llaves largas para obtener una mejor encriptación y que sea mas difícil de romper.
  • El uso de llaves asincronas permite tener un mejor nivel de seguridad.

Fuente de información:

2 comentarios:

  1. Faltó la autenticación por completo... 4 pts

    ResponderEliminar
  2. De donde sacas lo de rprime, randprime, pickone e inversa?? me puedes colaborar con esas clases o lo que sean...

    ResponderEliminar