Tipos de Cifrado Asimétrico

Cifrado Asimétrico
Introducción:

Como ya se había visto antes, el cifrado asimétrico es un que requiere dos llaves, una para cifrar y la otra para descifrar. Dentro de este hay algunos tipos de cifrado que ayudan a que sea más seguro la decodificación de datos y lleguen al destinatario de con mayor seguridad y la certeza de que si la llave no fue divulgada solo el que la tiene va a poder descifrar satisfactoriamente.

Desarrollo:

El cifrado asimétrico, también conocido como “Criptografía de Llave Pública”, difiere principalmente de su homólogo el cifrado simétrico, en que esta emplea dos llaves en vez de una para ejercer las funciones de cifrado y descifrado de la información.

En el cifrado asimétrico cada usuario que interviene en la comunicación cuanta con dos llaves: una llave pública y una llave privada.  La llave publica es utiliza para cifrar la información y llave privada para descifrar la información.

RSA
RSA es un algoritmo de cifrado asimétrico, o de clave pública, y es uno de los algoritmos más utilizados en la actualidad. De hecho, la mayor parte de los sitios hoy corren sobre SSL/TLS, y permiten la autenticación mediante cifrado asimétrico basado en RSA.
RSA sirve para cifrar y descifrar información, y por ello también provee servicios de autenticidad y de integridad, mediante lo que se conoce cono Infraestructura de clave pública.

Así es que RSA, al ser un cifrador asimétrico, trabaja con dos claves, una pública y una privada. Todo el contenido de texto plano, o contenido sin cifrar, que sea hecho con la clave pública, podrá ser descifrado mediante la clave privada, y viceversa, todo contenido cifrado con la clave privada podrá ser descifrado mediante la clave pública. El nombre RSA proviene de las iniciales de los tres creadores, Rivest, Shamir y Adleman, allá por 1997.

El funcionamiento del criptosistema RSA se basa en la dificultad para factorizar grandes números enteros.

Digamos que p y q son dos números primos, y d un número entero tal que d se factoriza en (p-1)*(q-1)). De esta manera, el terceto (p,q,d) representa la clave privada.

Así, la clave pública es un doblete (n, e) creado con la clave privada a través de las siguientes transformaciones:

n = p * q e = 1/d mod((p-1)(q-1))

Digamos que M es el mensaje por enviar. El mensaje M necesita factorizarse en la clave n. El descifrado se basa en el teorema de Euler, que estipula que, si M y n se factorizan, entonces:

M^(phi(n)) = 1 mod(n)

Phi(n) será la función totient y, en este ejemplo, tendría un valor de (p-1)*(q-1).
Por lo tanto, es necesario que M no sea un múltiplo de p, q o n. Una solución sería dividir el mensaje M en bits Mi de manera que la cantidad de números en cada Mi sea estrictamente inferior a la de p y q. Esto supone entonces que p y q son grandes, que es lo que sucede en la práctica ya que el principio de RSA yace en la dificultad de encontrar p y q en un período de tiempo razonable cuando se conoce n; esto asume que p y q son grandes.

En la práctica:

Supongamos que un usuario (llamado Bob) quiere enviar un mensaje M a una persona (llamémosla Alice). Simplemente necesita obtener la clave pública de Alice (n,e) y luego calcular el mensaje cifrado c:

c = Me mod(n)

Luego, Bob envía el mensaje c a Alice, quien es capaz de descifrarlo con su clave privada (p,q,d):

M = Me*d mod(n) = cd mod(n)

DSS

Es un sistema de firma digital adoptado como estándar, el cual fue presentado por el Instituto Nacional de Estándares y Tecnología en NIST en 1994. Utiliza la función Hash SHA y el algoritmo asimétrico DSA (Digital Signature Algorithm).

Genera una firma digital para la autenticación de los documentos electrónicos. Un resumen de datos de la información (llamado un digesto de mensaje ) se crea mediante el uso de una función hash  (llamado el Secure Hash estándar , o SHS). El resumen de datos se utiliza en conjunción con el algoritmo DSA para crear la firma digital que se envía con el mensaje. La verificación de firmas implica el uso de la misma función hash.

Generación de claves:
  1. Elegir un número primo p de L bits, donde 512 ≤ L ≤ 1024 y L es divisible por 64.
  2. Elegir un número primo q de 160 bits, tal que p−1 = qz, donde z es algún número natural.
  3. Elegir h, donde 1 < h < p − 1 tal que g = hz(mod p) > 1.
  4. Elegir x de forma aleatoria, donde 1 < x < q-1.
  5. Calcular y = gx(mod p).
  6. Los datos públicos son p, q, g e y. x es la llave privada.

Parámetros:
  1. KG claves públicas de grupo. Son comunes y públicas para un grupo de usuarios.
  2. KU clave pública. Se genera una por usuario a partir de las KG y es pública
  3. KP clave privada. Es privada de cada usuario, se genera a partir de las anteriores.
  4. k número aleatorio. Se genera uno para cada firma.
  5. s y r. Son dos palabras de 160 que forman la firma de un texto.

El número k permite que el mismo texto del mismo usuario no genere siempre la misma firma.

Podemos utilizar la Firma Digital en una gran cantidad de procesos internos de una organización, así como en la interacción que podemos tener con clientes, proveedores, gobierno, entidades financieras, etc. procurando optimizar tiempos, reducir costos, brindar un mejor servicio con la seguridad y validez jurídica.

Diffie-Hellman

El algoritmo de Diffie-Hellman (en honor a sus creadores, Whitfield Diffie y Martin Hellman) permite acordar una clave secreta entre dos máquinas, a través de un canal inseguro y enviando únicamente dos mensajes. La clave secreta resultante no puede ser descubierta por un atacante, aunque éste obtenga los dos mensajes enviados por el protocolo. La principal aplicación de este protocolo es acordar una clave simétrica con la que posteriormente cifrar las comunicaciones entre dos máquinas.

En la figura siguiente se muestra un ejemplo de funcionamiento del protocolo Diffie-Hellman.



Los valores de “p” y “g” son públicos y cualquier atacante puede conocerlos, pero esto no supone una vulnerabilidad. Aunque un atacante conociese dichos valores y capturara los dos mensajes enviados entre las máquinas A y B, no sería capaz de averiguar la clave secreta.

Curva Elíptica

Las curvas elípticas son utilizadas para implementar criptosistemas basados en el logaritmo discreto, con la ventaja de utilizar claves más pequeñas que repercute directamente en la utilización de menos memoria y hardware más pequeño.

En la Criptografía de curvas elípticas, el punto R se utiliza como clave pública que es la suma de los puntos P y Q, los cuales corresponden a la clave de tipo privada.



De este modo, al conocer un punto de una curva, en este caso R, la información cifrada con este valor no se compromete, ya que la curva elíptica tiene infinidad de puntos y para poder descifrar un mensaje se necesitan conocer los parámetros P y Q para obtener su suma y así poder descifrar el mensaje.

En curvas elípticas, un ataque por fuerza bruta para conseguir la clave privada consiste en sumar todos los puntos de la curva elíptica hasta obtener como resultado el punto R. Para evitar que un ataque de este tipo sea exitoso y lograr que las claves sean lo más eficientes posible se escoge un campo de Galois lo suficientemente amplio, también se cuida que la curva elíptica elegida no sea singular, es decir que no pase por el punto cero, y por último se considera que la curva no sea anómala, es decir que el campo de Galois sobre el que se define la curva no tenga números racionales.

El procedimiento para obtener las claves pública y privada es muy similar en la multiplicación de un punto por un escalar.

De tal forma que se utiliza un punto de una curva elíptica que sea un generador de todos los demás puntos de la misma para utilizarla como clave pública junto con el campo de Galois sobre el que definimos dicha curva y se utiliza un número entero aleatorio definido sobre el mismo campo de Galois que será la clave privada del algoritmo.

Así, se tiene que serán públicos el punto de la curva elíptica, el campo de Galois sobre el que se define dicha curva y finalmente el punto que se encuentra de multiplicar el punto generador por la clave privada elegida. La clave privada será el número entero aleatorio que pertenezca al mismo campo. Se debe considerar que el campo de Galois elegido debe ser un número primo lo suficientemente grande como para evitar ataques por fuerza bruta que se puedan presentar.

Conclusión:

Después de ver algunos tipos de cifrado del modo asimétrico pudimos concluir que hay muchas maneras en que se puede cifrar y la única manera de elegir uno es sabiendo que tan seguro se quiere el mensaje y cómo es que se quiere mandar a través del Internet.





Referencias:

Diego Córdoba (2016) RSA: ¿CÓMO FUNCIONA ESTE ALGORITMO DE CIFRADO?
Recuperado el 22/10/17, de
https://juncotic.com/rsa-como-funciona-este-algoritmo/

Jeff (2008) Cifrado por medio de RSA
Recuperado el 22/10/17, de
http://es.ccm.net/contents/134-cifrado-por-medio-de-rsa

KarenMellado (2014) Sistema de cifrado DSS
Recuperado el 22/10/17, de
http://karenmanzanarezmellado.blogspot.mx/2014/03/sistema-de-cifrado-dss.html

Javier (2011) El algoritmo de Diffie-Hellman
Recuperado el 22/10/17, de
http://www.javiercampos.es/blog/2011/07/22/el-algoritmo-de-diffie-hellman/




Comentarios