El cifrado simétrico y asimétrico como mecanismo de seguridad para garantizar la confidencialidad, autentificación e integridad de los datos

Introducción

Desde el surgimiento de las redes computacionales semi-modernas en los años 50s, el tema de la seguridad informática cobró fuerza entre los ingenieros y científicos, pues el mundo vivía en una tensión generalizada ocasionada por el deseo de supremacía económica, militar y social de las dos potencias de la época: los Estados Unidos y la Unión Soviética.
Debido a que era cada vez más frecuente el espionaje y el robo de información entre ambas naciones y sus aliados, fueron los mismos científicos quienes tuvieron la brillante idea de recurrir a un método antiguo para proteger la información de sus organizaciones ante amenazas o ataques enemigos: el cifrar sus datos.
En la actualidad, gracias a este gran artificio, los ingenieros y programadores han sido capaces de lograr dos objetivos fundamentales en la transferencia de datos: primero, garantizar su confidencialidad –es decir, evitar que un oponente sea capaz de ver el contenido del mensaje, lo que constituye un ataque pasivo–, y, segundo, autentificar tanto el origen de los datos como que el remitente es quien dice ser; de ésta manera, se verifica que el mensaje no ha sido creado o alterado por una entidad externa.
Para lograr el primer objetivo, el de asegurar la confidencialidad de los datos, se utiliza un cifrado llamado “convencional”, “de clave secreta/única” o, más comúnmente, “simétrico”; mientras que, para lograr el segundo, se emplea uno denominado “asimétrico” o “de clave pública.” En el presente ensayo, se describen las características de cada uno, así como sus elementos, los algoritmos que utilizan y sus principales tipos.

Desarrollo

En general, el proceso de cifrar, ya sea con clave secreta o pública, consta de cinco componentes: un texto claro, un algoritmo para cifrar, la(s) clave(s), un texto cifrado, y un algoritmo de descifrado.
El texto claro es aquel conjunto de bits, números, letras, palabras, etc. que se introducen al algoritmo con el objetivo de ser cifrados. El algoritmo es el conjunto de instrucciones que se deben ejecutar sobre el paquete de bits para cifrarlo, ya sea mediante permutaciones (cambios en el orden de los bits) o sustituciones (cambiar un bit por otro). La clave es aquella lista de operaciones que el algoritmo debe ejecutar, independientemente de dicho algoritmo; en el cifrado simétrico, emisor y receptor tienen la misma clave para cifrar y descifrar, mientras que en el asimétrico ambos tienen claves diferentes. El texto cifrado es el mensaje que se produce como resultado, el cual es incomprensible por sí mismo y diferente para cada mensaje y clave. El algoritmo de descifrado, en el simétrico, es igual que el de cifrado pero ejecutado inversamente; en el asimétrico, es un algoritmo diferente utilizado para decodificar el código.
El primer tipo de cifrado mencionado anteriormente, el simétrico o de clave secreta, es el más utilizado actualmente, aunque su contraparte, el asimétrico, exista desde los años 70s. De una manera general, el cifrado simétrico se realiza de la siguiente forma: un texto claro es introducido en el algoritmo de cifrado, junto con la clave única o secreta, la cual es compartida por emisor y receptor. Una vez que el algoritmo, basado en la clave, ha transformado el texto claro, se genera un texto cifrado, el cual puede volver a convertirse en texto claro si se introduce de nuevo en el algoritmo, y éste, ayudado por la clave única, se ejecuta de fin a principio. El siguiente diagrama explica mejor este proceso.


La mayoría de los algoritmos de cifrado simétrico utilizan el cifrado Feistel, nombrado así en honor de Henry Feistel, quien desarrolló este algoritmo en 1973. El texto claro, compuesto de 2w bits, generalmente 8, 16 ó 64, es ingresado al algoritmo, para que éste trabaje con la mitad derecha del mismo, aplicando una de las siguientes funciones lógicas entre dicha mitad y el valor determinado por la clave secreta: AND, OR, o XOR, o un NOT únicamente de dicha mitad. Posteriormente, se aplica una función XOR entre el resultado y la mitad izquierda del mensaje, y al resultado se le concatena el resultado de la etapa anterior. Generalmente, se suele repetir este proceso 16 veces, aunque el número de veces, así como la complejidad del algoritmo y el tamaño de la clave y del texto claro, son determinantes en la invulnerabilidad del código. Una vez concluido, la mitad izquierda se escribe del lado derecho, y viceversa. Éste confuso proceso se detalla en el siguiente diagrama:


Los tres cifradores simétricos más utilizados son el DES (Data Encryption Standard), 3DES (triple DES) y AES (Advanced Encryption Standard). El más utilizado es el primero, creado en 1977, y el cual se traduce literalmente como Norma para el cifrado de datos. Utiliza un algoritmo llamado DEA (Data Encryption Algorithm, Algoritmo de cifrado de datos).
Este algoritmo utiliza un mensaje de 64 bits (o, si es mayor, se fragmenta en pedazos de 64), efectúa 16 etapas, y utiliza una clave de 56 bits, la cual se fragmenta en una clave por etapa. Tanto el cifrado como el descifrado. Tanto el cifrado como el descifrado sigue las bases del cifrado Feistel.
El DES es uno de los métodos de cifrado más utilizados en la actualidad, y es, sin duda, el más estudiado, pues se ha pretendido encontrar algún punto débil en él y en su algoritmo, sin embargo, nunca se ha sabido del descubrimiento de debilidades graves al respecto. Esto no quiere decir que el DES sea completamente seguro, pues en 1998 se anunció la creación de una computadora que era capaz de descifrar un mensaje sin conocer la clave, utilizando aproximadamente la mitad de todas las claves posibles (al tener 56 bits la clave, existen 256 probables claves, o 7.2x1016) en menos de tres días, a una velocidad de más de un millón de claves por microsegundo.
El problema anterior sería fácilmente erradicado si se aumentara el número de bits del mensaje, por ejemplo, al doble (128), en cuyo caso la computadora del caso anterior se tardaría hasta 1018 años con su velocidad en ese tiempo, y hasta un millón de años si se aumentara 1012 veces su velocidad. Además, aunque un mensaje sea descifrado por un oponente utilizando este método, necesitaría tener más elementos para poder comprender en su totalidad el texto claro, como conocer su naturaleza, o al menos entender partes de él.
Los otros dos tipos de cifradores más utilizados son el triple DES (3DES) y el AES. El primero usa tres claves diferentes (con un total de 168 bits, 3 veces 56) y ejecuta tres veces el algoritmo, mediante la secuencia cifrar-descifrar-cifrar para cifrar, y lo contrario para descifrar. Está diseñado especialmente para tener una alternativa más segura que el DES.
Por otro lado, el AES surgió como una convocatoria abierta al público por parte del gobierno norteamericano para ser un sucesor del DES a futuro, pues su software es considerado innecesariamente lento (a comparación de su hardware) y con un nivel regular de eficiencia. AES es capaz de cifrar mensajes de 128 bits y claves de 128, 192 y 256 bits; y su algoritmo es mucho más robusto, aunque no tan complejo, consistente en una serie de etapas en donde se realizan permutaciones y sustituciones al mensaje original.
En general, todos los cifradores están destinados a evitar ciertos tipos de ataques criptográficos, llamados criptoanálisis, en donde el atacante puede tener diferente nivel de conocimiento del texto que está analizando, desde tener sólo el texto cifrado hasta poder “jugar” con él, como introduciendo texto claro en la supuesta clave secreta y comparándolo con el texto cifrado. Para que cualquier sistema de cifrado se considere seguro, es necesario que cumpla dos requisitos: que le sea más caro al oponente romper el código que el mismo valor de la información, y que se tarde más en romperlo que lo que dura la utilidad de la información.
El otro tipo de cifrado es el llamado asimétrico o de clave pública, creado por Whitfield Diffie y Martin Hellman en 1976, y el cual constituyó un nuevo concepto en criptografía, pues, por primera vez en miles de años, se utilizaban dos claves, y una de ellas era pública, es decir, que cualquiera la podía conocer. Aunado a ello, las claves pueden tener operaciones matemáticas irreversibles, pues no se necesita el algoritmo inverso para descifrar un texto.
Muchas personas creen que este tipo de cifrado es más seguro o moderno que el simétrico; sin embargo, la seguridad de un cifrado depende, como ya se mencionó, de la longitud de la clave y del texto, del algoritmo especificado, etc. y no del tipo de cifrado, y, aunque es más moderno, es un poco más costoso que el simétrico, por lo cual este último no está en riesgo de desaparecer debido al asimétrico.
De una manera muy amplia, este tipo de cifrado funciona de la siguiente manera: tanto el receptor como el emisor generan un par de claves, una privada y una pública. Cuando el emisor desee enviar un mensaje a un receptor, puede usar la clave pública de este último para cifrar el mensaje, mientras que el receptor lo descifrará utilizando su propia clave privada. A su vez, si el emisor envía un mensaje cifrado con su clave privada, el receptor podrá descifrarlo con la clave pública del emisor. El siguiente diagrama ilustra la explicación anterior.


Este tipo de cifrado está orientado a autentificar tanto el origen de los mensajes como garantizar la integridad de los datos, es decir, a evitar ataques activos; contrario al cifrado simétrico, el cual se orienta únicamente a proteger la confidencialidad de los datos, evitando así ataques pasivos. Sin embargo, este último también asegura la autentificación hasta cierto punto, pues sólo emisor y receptor conocen la clave única de cifrado y descifrado.
La autentificación también puede llevarse a cabo sin la necesidad de utilizar algún tipo de cifrado para reducir el uso y el costo de hardware y software de cifrado, aunque, como es obvio, no se garantizaría la confidencialidad de los datos. Aunque podría parecer extraño, es recomendable no cifrar los mensajes y sólo autentificarlos en tres circunstancias: cuando se envíe un mensaje urgente a un número grande de receptores, y sólo importa que el mensaje sea leído rápido y que se verifique su origen; cuando se tiene una gran carga de mensajes; y cuando el servicio de autentificación es muy bueno y no es necesario cifrar mensajes.
Existen dos mecanismos para autentificar los mensajes mediante el cifrado: el código de autentificación de mensajes (MAC) y las funciones hash. En los primeros, el emisor genera un código breve dentro del mensaje enviado, el cual es una función del mismo mensaje, garantizando que, si se altera el texto, se altera también el código. El receptor, cuando toma el texto, calcula el código utilizando la misma fórmula; si coinciden, el mensaje llegó sin errores, de lo contrario, el mensaje pudo haber sido editado.
En cambio, la función hash no recibe una clave secreta, sino un mensaje común, sobre el que produce un resumen, el cual es enviado junto con el mensaje. Es unidireccional, es decir, no está destinada a ser reversible, y es relativamente sencilla de generar. Sin embargo, posee tres características fundamentales: no puede encontrarse un mensaje original dado un mensaje de respuesta, no hay dos mensajes originales que produzcan el mismo valor de respuesta, y no hay dos mensajes de respuesta iguales que provengan de mensajes originales diferentes.

Conclusión

En una época en donde la información viaja, cada vez en cantidades mayores, a través de las redes informáticas y los sistemas computarizados, es fundamental que se garantice una transferencia de datos segura en el mayor número de casos posibles, sobre todo en los gobiernos, hospitales, y demás escenarios en donde la información sea vital.
Para garantizar la seguridad en dichas transferencias, se requiere cumplir con los aspectos desarrollados en este trabajo, es decir, que se verifique que la persona que envía los datos es realmente quien aparenta serlo, que los datos lleguen correctamente, que lleguen sin retrasos, y que ningún agente externo no autorizado pueda leer la información y hacer mal uso de ella.
Por todo lo anterior, es fundamental que existan técnicas para proteger la información que manejan tanto empresas como gobiernos, tales como el cifrado de datos. Aunque para algunos pueda parecer descabellado que se necesiten algoritmos tan robustos, o que se tengan que realizar hasta 16 veces los procedimientos para generar un resultado, éstos métodos logran, en su mayoría, hacer imposible que los atacantes puedan leer la información o suplantar la identidad de emisores o receptores.
Es importante, por lo tanto, que aquellas personas que estudian temas relacionados con la informática y la computación conozcan a detalle los métodos de cifrado de datos, para que puedan realizar envíos de datos y recibirlos de una manera segura, y sin el miedo de no saber descifrarlos o de que éstos sean vulnerados.


Fuentes bibliográficas
  • Stallings, Williams. Fundamentos de Seguridad en Redes: Aplicaciones y Estándares (segunda edición). Pearson Educación, S.A. Madrid, 2004. Págs. 2-15.
  • https://dspace.ups.edu.ec/bitstream/123456789/8185/1/Demostraci%C3%B3n%20de%20cifrado%20sim%C3%A9trico%20y%20asim%C3%A9trico.pdf
  • http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/2-tecnicas-clasicas-de-cifrado

Comentarios

Entradas populares de este blog

Kerberos: una de las aplicaciones más utilizadas como servicio de autentificación

El cifrado asimétrico: características, ventajas y algoritmos que lo utilizan