Algoritmos asimétricos o de Clave pública

Dentro de los mecanismos de seguridad más completos se encuentra el cifrado, el cual es un mecanismo de seguridad que asegura la confidencialidad de los datos por medio de la ocultación de la información original utilizando una clave y un algoritmo de cifrado. El cifrado se divide en dos tipos: Cifrado simétrico y cifrado asimétrico, el cifrado simétrico utiliza una sola clave para cifrar y descifrar, conocida como “clave secreta”. Aunque existen bastantes algoritmos de cifrado de tipo simétrico bastante robustos y confiables, el gran problema que presentan estos el intercambio de la “clave secreta”, ya que esta puede no ser transmitida de manera adecuada, cayendo en las manos equivocadas y haciendo que el cifrado de datos pierda por completo su utilidad. Entonces ¿Qué tipo de cifrado es más efectivo?, es más efectivo usar el cifrado asimétrico que el simétrico o ¿A caso ambos se complementan entre sí para obtener un mecanismo de seguridad mucho más robusto y confiable?  
El cifrado asimétrico utiliza dos claves, la clave pública del receptor para cifrar y la clave privada del receptor  para descifrar. Se dice que la clave es pública porque más personas a parte del emisor y receptor de un mensaje, la conocen. El emisor de un mensaje cifra con la clave pública del receptor, de esta manera se asegura que el receptor sea el único que puede descifrar el mensaje utilizando su clave privada, ya que se supone, es el único que la tiene en su poder.
La clave pública de cualquier persona se calcula a partir de su clave privada mediante una serie de funciones de un solo sentido, es decir que es fácil calcular la clave pública de alguien por medio de su clave privada, pero realizar el proceso inverso es demasiado complicado. Esta propiedad de la clave pública hace posible que pueda ser conocida por muchas personas.
Un cifrado asimétrico está formado por 6 componentes: Texto claro, algoritmo de cifrado, clave pública, clave privada, texto cifrado y algoritmo de descifrado.
Texto claro: Es el mensaje legible el cual se introduce en el algoritmo de cifrado.
Algoritmo de cifrado: Es un conjunto de operaciones ordenadas que realizan varias sustituciones en el texto claro, y lo transforman.
Clave pública y privada: Son un par de claves utilizadas para cifrar y descifrar, con la pública se cifra y con la privada se descifra. Las transformaciones que sufre el texto claro o el texto cifrado dependen de la clave pública o privada que se proporcione.
Texto cifrado: Es el mensaje cifrado, este depende del texto claro y la clave introducida.
Algoritmo de descifrado: Es el algoritmo que recibe el texto cifrado y una clave para transformar el texto cifrado a texto claro original.

Los algoritmos de cifrado asimétrico a diferencia de los de cifrado simétrico están basados en funciones matemáticas en vez de operaciones sobre los patrones de bits como lo hace el cifrado simétrico.
El cifrado asimétrico entra dentro de la categoría de criptosistemas de clave pública, estos sistemas se caracterizan por el uso de un algoritmo criptográfico de dos claves, de las cuales una se revela (pública) y la otra no (privada), dependiendo de la aplicación se utilizará la clave privada o la pública. Estos sistemas criptográficos se clasifican en 3:
Cifrado/descifrado: Se cifra un menaje con la clave pública del receptor.
Firma digital: El emisor firma un mensaje con su clave privada, esto se logra aplicando un algoritmo.
Intercambio de claves: Dos personas intercambian una clave de sesión, esta puede ser una calve privada de una de las dos.
Existen algoritmos criptográficos que pueden ser utilizados para las 3 categorías de los criptosistemas mientras que otros sólo pueden ser utilizados para una o dos.
Algunos de los algoritmos criptográficos son: RSA (Puede ser aplicado en las 3 categorías), Diffie-Helman (Intercambio de claves), DSS (Firma digital) y curva elíptica (Puede ser aplicado en las 3 categorías).
RSA (Rivest, Shamir y Adleman)
Es uno de los primeros esquemas de clave pública desarrollados en 1997 en el MIT. El RSA es un cifrado de bloques en el que el texto claro y el texto cifrado son números enteros entre 0 y n-1 para algún n entero y positivo para bloques de texto claro M y bloques cifrados C.
Se representan de la siguiente manera:
C = Me mod n
M = Cd mod n = (Me)d mod n = Med mod n
El funcionamiento de este algoritmo se basa en el producto de dos números primos grandes elegidos al azar para conformar la clave de descifrado. Este algoritmo es seguro ya que no hay maneras más rápidas de factorizar números tan grandes en sus factores primos utilizando computadoras
El algoritmo RSA consiste en lo siguiente
1.    Tomar a alzar dos números primos  grandes, a los que se les llamará p y q
2.    Se calcula n, n= p*q
3.    Se calcula F(n) = (p-1)(q-1)
4.    Se calcula un número entero e, este debe ser primo relativo de F(n), es decir buscar el MCD de F(n).
5.    De calcula d de manera que de mod F(n) = 1 y d < F(n).
  1. El par de números (e,n) son la clave pública.
  2. El par de números (d,n) son la clave privada.
8.    Cifrado C = Me mod n
9.    Descifrado M = Cd mod n
 Intercambio de clave Diffie-Helman
Este algoritmo no está hecho para cifrar y descifrar mensajes, se limita al intercambio de claves. Es decir, brinda la seguridad de que en un intercambio de claves estás no serán conocidas más que por las personas que realizaron dicho intercambio. Principalmente este algoritmo es utilizado para intercambiar una “clave secreta” de manera segura, la cual posteriormente será utilizada en un cifrado de tipo simétrico.
La efectividad de este algoritmo se debe a la dificultad de computar logaritmos discretos. El intercambio de clave Diffie-Helman consiste en lo siguiente:
Supongamos que dos personas desean comunicarse entre sí, de manera que nadie más pueda leer el contenido de los mensajes que envían, para esto necesitan cifrarlos, sin embargo intercambiar la clave secreta que utilizarán para cifrar y descifrar puede resultar complejo ya que si no se hace con el debido cuidad alguien más podría obtenerla, por ello se utiliza el algoritmo de intercambio de claves para que esto no suceda.
1.    Primeramente una de las dos personas elige un número primo “p” bastante grande y elige otro número aleatorio “α” el cual debe ser menor que p y raíz primitiva de p (Una raíz primitiva es cualquier número n tal que pn-1 = 1mod(n)).
2.    Una vez elegidos estos números la primera persona elige aleatoriamente un número XA  menor a p (Clave privada) y calcula YA (Clave pública) de la siguiente manera:
YA = αxA  mod q
3.    La primera persona le manda α , q y YA a la segunda persona
4.    La segunda persona realiza el mismo procedimiento: Elije un número al azar XB menor a q y lo mantiene en privado (Clave privada), y calcula otro número denominado YB de la siguiente manera:
YB = αxB mod q
5.    La segunda persona le manda YB a la primera persona
6.    Ambos calculan sus claves secretas de la siguiente manera:
KA = (YB) xA mod q
KB = (YA) xB mod q
Siendo KA = KB
Aunque un atacante cuente con los números q, α y YA o YB, como XA y XB son privados, para obtener la clave secreta se tiene  obtener alguno de los números privados X y luego calcular la clave como cualquiera de los usuarios lo hizo. Para calcular alguna de las X se debe recurrir a la utilización de un logaritmo secreto, por ejemplo: XB = indα,q (YB ). Para números muy pequeños esto resulta tardado pero posible, sin embargo para números muy grandes, el emplear un logaritmo discreto para calcular alguna de las X resulta imposible, y es ahí donde radica la efectividad de este algoritmo y la razón por la cual se pueden hacer públicos ciertos datos.
DSS
El estándar de firma digital es un algoritmo de firma digital que fue desarrollado con el fin de poder autentificar documentos electrónicos. Este algoritmo fue presentado por el NIST (Instituto Nacional de estándares y tecnologías). Una firma digital es un par de números grandes que se calculan de acuerdo con un algoritmo especificado para que se pueda autentificar la firma y mantener la integridad de los datos. Las firmas digitales se generan con el uso de una clave privada, y la verificación de la misma se realiza con el uso de una clave pública. La firma digital sólo puede ser generada por una sola persona (quien posee la clave privada) y puede ser verificada por medio de la utilización de una clave privada. La firma digital se utiliza para validar la autenticidad e integridad de un mensaje o documento digital. Una firma digital crea un resumen de los datos del mensaje o documento por medio de una función hash (Una función hash es  la transformación de una cadena de caracteres en un valor generalmente más corto que representa la cadena original). La verificación de la firma también requiere de la utilización de una función hash.
Criptografía de curva elíptica:
La criptografía de curva elíptica es una alternativa al algoritmo de cifrado de clave pública RSA debido a que requiere un menor tamaño en sus claves. La criptografía de curva digital aparenta proporcionar la misma seguridad que el RSA con un tamaño de bit menor, por lo que el procesamiento del mismo es menor y su velocidad mayor. La criptografía de curva elíptica es relativamente buena, por lo que a pesar de ser bastante eficiente aún no tiene la misma confianza que tiene el RSA.  La CCE se basa en la utilización de un constructor matemático denominado curva elíptica.
Como ya se mencionó las claves públicas no sólo se aplican para los cifrados, sino también para la generación de firmas digitales, pero también pueden aplicarse para generar certificados digitales. Un certificado es una clave pública y un identificador del dueño de dicha clave y firmado por una tercera parte confiable, esta tercera parte es una autoridad de certificación. Cualquier persona puede obtener un certificado, únicamente presenta su clave pública a la autoridad para obtener el certificado. Al publicar el certificado cualquier persona que quiera consultar la clave pública puede realizarlo por medio de este y verificar que sea la correcta.
Otra aplicación de la clave pública es la de los sellos digitales, un sello digital señala la relación que existe entre el emisor y el receptor de un mensaje. Se utiliza en las facturas electrónicas y permite comprobar ante un organismo que no se han falsificado datos (En México es el SAT). El sello digital produce una cadena de caracteres indescifrables cada vez que hay una transacción, ese sello siempre está presente en una factura digital.
En conclusión los cifrados de clave pública o cifrados asimétricos requieren la utilización de dos claves, una pública (para cifrar) y una privada (para descifrar). La efectividad de estos cifrados radica en que el cálculo de la clave privada a partir de la clave pública resulta muy complejo o incluso imposible debido a los grandes números elevados a potencias que sus algoritmos manejan.
Existen diferentes algoritmos de clave pública (asimétricos) que pueden ser aplicados a diferentes categorías de los sistemas criptográficos, algunos pueden ser aplicados tanto a cifrado, firma digital e intercambio de claves, como lo son el RSA y la curva elíptica, a únicamente intercambio de claves como el Diffie-Helman o s firma digital como el DSS. Además la utilidad de las claves públicas no sólo se limita al cifrado o al intercambio de claves, también a la creación de firmas, certificados y sellos digitales. Una firma digital proporciona la confiabilidad que un emisor es quien dice ser, es decir, comprueba que la persona que escribió el mensaje es la que dice ser, valida la autenticidad e integridad de un mensaje. Un sello digital se utiliza para comprobar la veracidad de una firma digital, al ser esta un elemento de tipo público puede ser fácil de falsificar, sin embargo con el certificado avalado por una asociación, se comprueba cuál es la firma digital de una persona. Y finalmente los sellos digitales, que se utilizan para comprobar que no ha habido falsificación de datos, el receptor de un mensaje fácilmente puede falsificar los dato, pero gracias al sello digital esto no es posible. Este se utiliza cuando se realizan transacciones, aparece en las facturas, y al ser indescifrable, se comprueba que no ha habido fraudes fiscales. Como puede notarse, las claves públicas tienen muchas más otras aplicaciones que no sólo se limitan al cifrado o al intercambio de claves.
En cuanto a la efectividad de un tipo de cifrado sobre el otro, no es correcto decir que los cifrados simétricos son más efectivos que los asimétricos o viceversa, ya que cada uno tiene sus ventajas y sus deficiencias. Sin embargo una buena manera de utilizar ambos tipos de cifrado es que con un cifrado asimétrico se realice el intercambio de la clave secreta que se va a utilizar en un cifrado simétrico, de esta manera se resuelve el gran problema que tiene los cifrados de este tipo, que el intercambio de la clave secreta no se lleva a cabo de una manera segura y confiable, pero utilizando un cifrado asimétrico para su intercambio se da solución a dicho problema. De esta manera se tiene un sistema mucho más seguro al emplear ambos tipos de cifrados.
Los algoritmos de clave pública también tienen otras aplicaciones y no sólo el cifrado de datos, aplicaciones que ya fueron mencionadas anteriormente.
Para finalizar, no existe un tipo de cifrado mejor que otro, ambos se complementan entre sí.

Referencias: 

William Stallings;(2004); Fundamentos de Seguridad en Redes, Aplicaciones y Estándares; 2 aedición; Editorial Pearson educación; Madrid, España; Páginas 71-15

 

Rouse Margaret ;( 2000-2017); Search Security: Digital Signature Standard (DSS); New York, EU; Recuperado en: http://searchsecurity.techtarget.com/definition/Digital-Signature-Standard

Laboratorio de redes y Seguridad; (2012); Fundamentos de Criptografía: Sistemas de dos claves (Cifradores asimétricos); México, DF UNAM; Recuperado en: http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/2-tecnicas-clasicas-de-cifrado/23-numero-de-claves/233-sistemas-de-dos-claves-cifradores-asimetricos
Serguinfo; (2007); Seguridad Informática: ¿Qué es RSA?; México, DF; Recuperado en: https://seguinfo.wordpress.com/2007/09/14/%C2%BFque-es-rsa/

Comentarios

Entradas más populares de este blog

Conclusión Principios del manifiesto ágil

Las Tablas Hash