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
Publicar un comentario