Blog

Seguridad en Redes: Clave Publica y RSA for dummies

El cifrado simétrico requiere que emisor y receptor compartan un secreto. Entonces surge un problema, como ponerte de acuerdo con otra persona si no la conoces. Además, si compartes ese secreto por la red, puede ser interceptado.

La solución a esto es el cifrado asimétrico. Aqui transmisor y receptor no comparten ningún secreto. Habrá una clave pública que es conocida por todos y la clave privada solo la conoce el propietario. Un esquema basico de como funciona es el siguiente:

key3

Las fotos como ya he dicho, no son mías, si no de un libro en donde no han traducido de forma correcta la palabra cifrar. En la foto podemos ver como Alicia tiene un mensaje en texto claro que será m y lo va a cifrar con la clave pública de Bernardo (Kb+). Esto quiere decir que apartir de ahora este mensaje cifrado solo podrá ser descifrado por la clave privada asociada a esa clave publica, es decir, con la clave privada de Bernardo. Entonces cuando le llegue el mensaje a Bernardo este lo descifrará con su clave privada de la siguiente manera: Kb-(Kb+(m)). Como podeis imaginar Kb+ corresponde con la clave publica de bernardo y Kb- con la clave privada de Bernardo.

Uno de los algoritmos de clave publica mas conocido es RSA. Un mensaje es un patrón de bits, y un patrón de bits puede univocamente interpretado por un numero entero. Entonces, cifrar un mensaje es como cifrar un numero. Para cifrar un mensaje cifraremos el numero o el conjunto de números correspondiente.

Las claves publicas y privadas se generan de la siguiente manera:

  1. Se eligen 2 numeros primos (p y q) suficientemente grandes.
  2. Se calculan n = p*q y z = (p-1)(q-1)
  3. Se elige un valor e < n primo relativo con z
  4. Se elige un valor d tal que (e*d mod z) = 1
  5. La clave publica es (n,e) y la privada (n,d)

Ejemplo:

Se eligen p = 5 y q = 7 entonces:

  • n = p*q = 35
  • z = (p-1)*(q-1) = 24
  • Podemos elegir e = 5 que es primo relativo con z y e < n
  • Podemos elegir d = 29 porque e*d mod z = 145 mod 24 = 1

Para cifrar y descifrar usaremos la siguiente formula:

  • Cifrar: c = m^e mod n
  • Descifrar: m = c^d mod n

key2

Para generarlas en Linux es muy sencillo con la herramienta openssl.

key1

Una propiedad importante, que más adelante veremos su gran utilidad es que lo que cifras con la clave publica lo puedes descifrar con la clave privada, y viceversa, es decir, que lo que cifras con la clave privada, lo puedo descifrar con la clave publica.

  • K+(K-(m)) = m
  • K-(K+(m)) = m

 

Fuente de algunas fotos el libro James Kurose y Keith Ross ¨Computer Networking”.

Autor: Roberto (@leurian)

 

  1. Tomas
    Tomas05-16-2014

    Roberto….Me gusta el artículo pero en castellano se dice CIFRADO…..http://www.paspartus.com/2013/11/cuando-alguien-dice-encriptar-y-quiere.html

Leave a Reply

*

    No Twitter Messages