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).
- El par de
números (e,n) son la clave pública.
- El par de
números (d,n) son la clave privada.
8. Cifrado C = Me mod n
9. Descifrado M = Cd mod n
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
Publicar un comentario