You are on page 1of 8

Criptografía : Algoritmos de cifrado de clave

asimétrica
¿Qué significa cifrar? Aplicar un algoritmo de cifrado determinado junto con una
clave, a una determinada información que se quiere transmitir confidencialmente.
Dentro del cifrado digital encontramos dos tipos de criptografía: simétrica y
asimétrica. En este artículo hablaremos sobre la Criptografía de clave
asimétrica.
La criptografía de clave asimétrica también es conocida como cable pública,
emplea dos llaves diferentes en cada uno de los extremos de la comunicación.
Cada usuario tendrá una clave pública y otra privada. La clave privada tendrá que
ser protegida y guardada por el propio usuario, será secreta y no la deberá
conocer nadie. La clave pública será accesible a todos los usuarios del sistema de
comunicación.
Los algoritmos asimétricos están basados en funciones matemáticas fáciles de
resolver en un sentido, pero muy complicadas realizarlo en sentido inverso, a
menos que se conozca la llave. Las claves públicas y privadas se generan
simultáneamente y están ligadas la una a la otra. Esta relación debe ser muy
compleja para que resulte muy difícil que obtengamos una a partir de la otra.
Las parejas de claves tienen funciones diversas y muy importantes, entre las que
destacan:

 Cifrar la información.
 Asegurar la integridad de los datos transmitidos.
 Garantizar la autenticidad del emisor.

Cifrado con clave asimétrica


Si una persona con una pareja de claves cifra un mensaje con la llave privada, ese
mensaje sólo podrá ser descifrado con la llave pública asociada. Y si se cifra con
la pública, se descifra con la privada.
Si “ciframos” un mensaje con la clave privada, no podremos descifrarlo con la
propia llave privada, deberemos usar la pública (en este caso no es cifrado, sino
firma/autenticación, comprobaremos que el emisor es quien realmente dice ser).
Como hemos contado en el artículo de criptografía de clave simétrica, el cifrado
simétrico aporta confidencialidad (sólo podrá leer el mensaje el destinatario). La
criptografía asimétrica proporciona autenticidad, integridad y no repudio.

Criptografía : Algoritmos de cifrado de clave simétrica


Para que un algoritmo sea considerado seguro debe cumplir:

 Si se conoce el texto cifrarlo, debe resultar muy difícil o imposible extraer


el texto en claro y la clave privada.
 Si se conoce el texto en claro y el cifrado, debe resultar más costoso
obtener la clave privada que el texto en claro.
 Si los datos han sido cifrados con la clave pública, sólo debe existir una
clave privada capaz de descifrarlo, y viceversa.
La ventaja del cifrado asimétrico sobre el simétrico radica en que la clave pública
puede ser conocida por todo el mundo, no así la privada, sin embargo, en el
cifrado simétrico deben conocer la misma clave los dos usuarios (y la clave debe
hacerse llegar a cada uno de los distintos usuarios por el canal de comunicación).

Cifrado con clave de sesión


El principal inconveniente es la lentitud, el empleo de este tipo de llaves ralentiza
el proceso de cifrado. La solución a esto es usar el cifrado asimétrico como el
simétrico (como hace IPSec o SSL).
Creamos la clave del algoritmo simétrico, la ciframos con la clave pública del
receptor, enviamos los datos cifrados por el canal inseguro, y a continuación, el
receptor descifrará los datos mediante su llave privada. Entonces podrán empezar
a comunicarse mediante el cifrado simétrico (mucho más rápido).
En las VPN como OpenVPN TLS/SSL la clave de sesión, que es conocida por
los usuarios, se regenera cada cierto tiempo para incrementar la seguridad.

Desafío-Respuesta
Podemos comprobar que el emisor es realmente quien dice ser, para ello
enviamos un texto al emisor y éste la “cifrará” con su clave privada (realmente lo
firmará), el emisor nos enviará el texto “cifrado” y nosotros “desciframos” la
clave (comprobamos la firma) ya que tenemos la clave pública del emisor, y
comparamos que el mensaje obtenido sea el mismo que enviamos anteriormente.
Si alguien se hace pasar por el emisor real, no tendría la clave privada y el
desafío no hubiera resultado satisfactorio.

Firma digital
La firma digital permite al receptor de un mensaje que el origen es auténtico,
también podremos comprobar si el mensaje ha sido modificado. Falsificar una
firma digital es casi imposible a no ser que conozcan la clave privada del que
firma (y ya hemos dicho anteriormente que la clave privada debe estar guardada
y que no la debe saber nadie).
Hay dos fases para la realización de la firma digital:

 Proceso de firma: el emisor cifra los datos con la clave privada y lo manda
al receptor.
 Verificar la firma: el receptor descifra los datos usando la clave pública de
el emisor y comprueba que la información coincide con los datos
originales (si coincide es que no se ha modificado).

En las firmas digitales se hace uso de las funciones HASH como SHA256 y
SHA512 ya que como hemos comentado anteriormente, el cifrado asimétrico es
lento.

Criptografía : Algoritmos de autenticación (hash)


El emisor aplicará la función hash al mensaje original para obtener la huella
digital. A continuación, se cifra la huella con la clave privada y se envía al
destinatario para que la descifre. El destinatario también aplicará la función hash
a sus datos y comparará los resultados (la que ha obtenido y la que ha recibido).
Así podrá comparar que la información no ha sido alterada. Si alguien altera los
datos, la huella digital será diferente.
Con todo esto hemos cumplido:

 Autenticidad (el emisor es quien dice ser).


 Integridad (el mensaje no ha sido modificado).
 No repudio (el emisor no puede negar haber enviado el mensaje al
receptor).

Si queremos introducir la confidencialidad basta que el emisor cifre el mensaje


original con la clave pública del receptor.

Algoritmos de cifrado de clave asimétrica


Tenemos dos algoritmos principales, el Diffie-Hellman y el famoso RSA.

Diffie-Hellman
No es un algoritmo asimétrico propiamente dicho, se usa para generar una clave
privada simétrica a ambos extremos de un canal de comunicación inseguro. Se
emplea para obtener la clave secreta con la que posteriormente cifrar la
información, junto con un algoritmo de cifrado simétrico. Su seguridad radica en
la dificultad de calcular el logaritmos discreto de números grandes (DH también
permite el uso de curvas elípticas).
El problema de este algoritmo es que no proporciona autenticación, no puede
validar la identidad de los usuarios, por tanto si un tercer usuario se pone en
medio de la “conversación”, también se le facilitaría las claves y por tanto, podría
establecer comunicaciones con el emisor y el receptor suplantando las
identidades. Para evitar esto existen varias soluciones que mitigan y solucionan el
problema.

RSA
Este algoritmo se basa en la pareja de claves, pública y privada de las que ya
hemos hablado antes. La seguridad de este algoritmo radica en el problema de la
factorización de números enteros.
Ventajas:

 Resuelve el problema de la distribución de las llaves simétricas (cifrado


simétrico).
 Se puede emplear para ser utilizado en firmas digitales.

Desventajas:

 La seguridad depende de la eficiencia de los ordenadores.


 Es más lento que los algoritmos de clave simétrica.
 La clave privada debe ser cifrada por algún algoritmo simétrico.

Algoritmos de autenticación (o hash)


Los más conocidos y usados son MD5 y el SHA-1, aunque no son seguros
actualmente, hoy en día (2016) se debe usar SHA256 o SHA512, y nunca utilizar
MD5 y SHA-1. Son algoritmos que a partir de un bloque de entrada, generan otro
bloque de salida de una longitud fija determinada. Puedes leer más sobre
algoritmos de autenticación aquí:

DES (Data Encryption Standard)


DES es un algoritmo de cifrado escogido como un estándar FIPS en los Estados
Unidos en 1976, y cuyo uso se ha propagado ampliamente por todo el mundo.
Actualmente DES se considera un algoritmo inseguro, y no debe utilizarse.
DES es un algoritmo de cifrado por bloques, donde se toma un texto en claro de
longitud fija de bits y se transforma mediante una serie de operaciones en otro
texto cifrado de la misma longitud. El tamaño del bloque de DES es de 64 bits, y
la longitud de clave también es de 64 bits, aunque en realidad solo son 56 bits los
que pertenecen a la clave ya que los otros 8 bits son de comprobación de paridad,
y se descartan.
Actualmente este algoritmo está completamente roto, y no se recomienda su uso.
Ventajas:

 Es uno de los sistemas más empleados y extendidos, por tanto es de los


más probados, pero no es seguro.
 Implementación sencilla e implementación rápida.

Inconvenientes:

 No se permite una clave de longitud variable, es decir, no se puede


aumentar para tener una mayor seguridad.
 Es vulnerable al criptoanálisis diferencial, aunque solo es un ataque
teórico.
 La longitud de clave de 56 bits es demasiado corta, y por tanto vulnerable.
Actualmente DES ya no es un estándar, debido a que en 1999 fue roto.

3DES (Triple Data Encryption Standard)


Se basa en aplicar el algoritmo DES tres veces, dependiendo de las claves que
utilicemos, puede tener una longitud de clave de 168 bits (útiles) si las tres claves
son diferentes, o de 112 bits si únicamente utilizamos dos claves diferentes.
Existe una variante del 3DES, conocida como DES-EDE3, con tres claves
diferentes y una longitud de 192bits, consiguiendo un sistema mucho más
robusto. El cifrado por bloques sigue siendo de 64 bits, como el DES original.
El Triple DES está desapareciendo lentamente, siendo reemplazado por el
algoritmo AES, pero aún se sigue utilizando sobre todo en VPN de tipo IPsec.

RC5
Este algoritmo también cifra por bloques, tiene un tamaño variable de bloques,
pudiendo ser de 32, 64 o 128 bits. Permite diferentes longitudes de clave (hasta
2040 bits), y un número variable de iteraciones de hasta 255 (la seguridad del
cifrado aumenta exponencialmente cuanto mayor número de iteraciones).
IDEA (International Data Encryption
Algorithm)
Aplica una clave de 128 bits sin paridad a bloques de datos de 64 bits, y se usa
tanto para cifrar como para descifrar. La seguridad de este algoritmo deriva del
intercalado de operaciones de distintos grupos, adición y multiplicación modular,
y operadores XOR bit a bit.
Este algoritmo es mucho más robusto que DES, según numerosos expertos
criptográficos, IDEA es el mejor algoritmo de cifrado de datos existente en la
actualidad ya que existen 2¹²⁸ claves privadas que probar mediante el ataque de
fuerza bruta.

AES (Advanced Encryption Standard)


Este algoritmo es el más conocido entre los usuarios de routers, ya que WPA
opera con AES como método de cifrado. Este cifrado puede implementar tanto
en sistemas hardware como en software. El sistema criptográfico AES opera con
bloques de tamaño fijo de 128 bits y claves de longitudes variable, hay AES de
128bits, de 192 bits y de 256 bits.
El resultado intermedio del cifrado constituye una matriz de bytes de cuatro filas
por cuatro columnas. A esta matriz se le vuelve a aplicar una serie de bucles de
cifrado basado en operaciones matemáticas (sustituciones no lineales de bytes,
desplazamiento de filas de la matriz, combinaciones de las columnas mediante
multiplicaciones lógicas y sumas XOR en base a claves intermedias).

Seguridad de AES:
AES tiene 10 rondas para llaves de 128 bits, 12 rondas para llaves de 192 bits y
14 rondas para llaves de 256 bits. En el año 2006, los mejores ataques conocidos
fueron el 7 rondas para claves de 128 bits, 8 rondas para llaves de 192 bits, y 9
rondas para claves de 256 bits. Algunos criptógrafos muestran preocupación
sobre la seguridad del AES. Ellos creen que el margen entre el número de rondas
especificado en el cifrador y los mejores ataques conocidos es muy pequeño.
Otra preocupación es la estructura de AES. A diferencia de la mayoría de
cifradores de bloques, AES tiene una descripción matemática muy ordenada.
Recordemos que AES es usado en los cifrados wireless de los routers de los
hogares como método de cifrado (no clave) ya que en los routers podemos usar
una clave estática o una dinámica mediante un servidor Radius. AES también es
usado por OpenSSL y por supuesto en OpenVPN (ya que usa las librerías
OpenSSL) e IPSec.
La forma en que se gestionan estos bloques de mensaje, se denomina “modo de
cifrado”.
Por ejemplo, existe el AES-CBC, AES-CFB y AES-OFB, os voy a explicar qué
es exactamente esto que aparece en las librerías criptográficas como OpenSSL y
LibreSSL.

 CBC (Cipher-block chaining): a cada bloque de texto plano se le aplica


la operación XOR con el bloque cifrado anterior antes de ser cifrado. De
esta forma, cada bloque de texto cifrado epende de todo el texto en claro
procesado hasta este punto. Como no se dispone de un texto cifrado con el
que combinar el primer bloque, se usa un vector de inicialización IV
(número aleatorio que puede ser públicamente conocido). La desventaja es
que el cifrado es de forma secuencial y por tanto no puede ser
paralelizado.
 OFB (Output feedback): se generan bloques de flujo de claves, que son
operados con XOR y el texto en claro para obtener el texto cifrado. Al
igual que con otras unidades de flujo de cifrado, al intercambiar un bit en
el texto cifrado produce texto cifrado con un bit intercambiado en el texto
plano en la misma ubicación. También se usa un vector de inicialización
que debe ser único.
 CFB (Cipher feedback): se hace igual que en OFB, pero para producir el
keystream cifra el último bloque de cifrado, en lugar del último bloque del
keystream como hace OFB. Un bit erróneo en el texto cifrado genera
1+64/m bloques de texto claro incorrectos (siendo m la longitud del flujo
en el que se divide el bloque). El cifrado no puede ser paralelizado, sin
embargo el descifrado sí.

Si queréis saber más sobre los modos de operación del cifrado por
bloques, podéis leer este PDF.
Hasta aquí hemos llegado con los algoritmos de cifrado de clave simétrica. Ya
sabéis sus ventajas e inconvenientes, los tipos de cifrados que hay y los modos de
cifrar la información.

You might also like