Criptografía y seguridad

Publicado por Diego Córdoba en

Con este artículo doy inicio a una serie de posts teórico-prácticos sobre criptografía y seguridad informática, principalmente orientados a redes de computadoras.

En esta oportunidad les voy a comentarles qué es la criptografía aplicada, y por qué es tan importante para la seguridad informática.

Criptografía (breve intro)

En general se define criptografía como el conjunto de técnicas utilizadas para proteger información de confidencial de personas no autorizadas. Es una rama de la criptología, la disciplina que se dedica al estudio de la escritura secreta, a las formas de codificación.

Otra rama importante es el criptoanálisis, encargada de buscar vulnerabilidades en los sistemas criptográficos, y acceder a la información secreta sin disponer de la o las claves de cifrado.

La criptografía puede clasificarse según épocas históricas. Así, tenemos la criptografía clásica y la criptografía moderna.

La criptografía clásica hace referencia a formas de transformar un mensaje para hacerlo ilegible a un supuesto atacante, en la época previa a la computación. Aquí algoritmos clásicos están basados en la transposición y la sustitución de caracteres.

Por su parte, la criptografía moderna surge a mediados de los años ’70, y es la que implementa algoritmos matemáticos computarizados para realizar la transformación del texto original en un texto cifrado. Aquí son relevantes tratados como el de la teoría de la información y las comunicaciones planteados por Claude Shannon.

Debe aclararse que el estudio de la criptografía incluye la matemática subyacente, y la definición de los algoritmos que permiten su implementación en software para dar seguridad a los servicios. En esta serie de posts vamos a hablar sobre criptografía aplicada, es decir, vamos a centrarnos en cómo dichos algoritmos permiten brindar servicios de seguridad, sin reparar (demasiado) en detalles teóricos de los mismos.

¿Dónde usamos criptografía?

Los mecanismos criptográficos se usan prácticamente en todas nuestras comunicaciones en Internet. Si accedemos a un sitio web, si leemos correos electrónicos, si enviamos un mensaje de Telegram o WhatsApp, si vemos una película en el tele, si hacemos una videoconferencia, etc.

En la actualidad siempre que abrimos un navegador y accedemos a un sitio vemos el candadito indicando que usamos TLS para cifrar la comunicación. TLS (Transport Layer Security) es una capa criptográfica que asegura la comunicación de protocolos de capa superior como HTTP. Incluso buscadores de Internet toman el uso de TLS como parámetro para mejorar el posicionamiento de los sitios.

A eso hay que sumarle plataformas de SaaS (Software as a service), herramientas ofimáticas online, herramientas de trabajo colaborativo, etc.

Todo esto sin contar los mecanismos de seguridad adicionales, basado en criptografía, que incorporan plataformas de compra-venta online, pasarelas de pago, transacciones con tarjetas de crédito, etc.

Quienes hacemos también tareas de sysadmin, como mínimo usamos conexiones SSH, túneles VPN, plataformas de observability con acceso seguro, conexiones seguras a servicios de base de datos, etc. Todos ellos incorporan mecanismos criptográficos.

En fin, hoy en día usamos criptografía todo el tiempo cuando nos conectamos a Internet, independientemente del ámbito en el que nos desarrollemos, y la mayoría de las veces no somos conscientes de ello.

Criptografía y seguridad

Antes de seguir aclaremos la diferencia entre seguridad informática y seguridad de la información:

  • Seguridad de la información: métodos y proceso destinados a proteger los archivos de información en general, no necesariamente sobre medio informático.
  • Seguridad informática: métodos y procedimientos técnicos para lograr la confidencialidad, disponibilidad e integridad de la información. Si se trata de comunicaciones seguras en red, puede añadirse otra propiedad: la autenticación de la información, y su característica asociada, el no repudio (defino estos términos más adelante en este artículo).

Esta definición de seguridad informática se le suman las prácticas de prevención de ataques maliciosos a la infraestructura en cuanto a estaciones de trabajo, servidores, dispositivos activos, redes, dispositivos móviles, sistemas de almacenamiento, etc.

Creo que una buena forma de entender todas las propiedades que hacen a una comunicación segura es mediante un esquema denominado criptosistema.

Un criptosistema incorpora todos los elementos de un sistema criptográfico necesarios para lograr la seguridad en una comunicación. Supongamos el esquema de un criptosistema como el de la siguiente figura. Más adelante hablaremos sobre claves y algoritmos. Por el momento me interesa que nos centremos en la comunicación.

criptosistema criptografía aplicada

Aquí tenemos un emisor, Alice, que envía un mensaje a un receptor, Bob. El atacante, Eva en este caso, intercepta la comunicación entre Alice y Bob, e intenta vulnerarla.

Los mecanismos de cifrado y descifrado, y sus claves, permiten transformar la información sin cifrar (texto plano) en información cifrada (texto cifrado), implementando mecanismos que hagan que la comunicación sea segura.

¿Cuándo la comunicación es segura?

Cuando hablé de seguridad informática mencioné algunas características que debían cumplirse. Veamos ahora qué significan, tomando como base el criptosistema anterior.

  • Confidencialidad: hace referencia a que solamente las entidades autorizadas puedan acceder al contenido de la información. Bob, en este caso, podrá leer el mensaje original, mientras que Eva no.
  • Autenticación: se refiere a que Bob pueda verificar que el mensaje que recibió fue enviado efectivamente por Alice, y no existe nadie haciéndose pasar por ella.
  • Integridad: esta propiedad se cumple si Bob puede verificar, que el mensaje que envió Alice, no ha sido adulterado, ya sea por errores en el canal de comunicación, como por cambios intencionales efectuados por Eva.
  • No repudio: esta es una característica derivada de la autenticación. Si Bob puede verificar que el mensaje fue enviado por Alice, eso implica que efectivamente Alice lo envió. En este caso, Alice no puede desentenderse de la situación y negar dicho envío.
  • Disponibilidad: esta propiedad es más general, e implica que, si Bob necesita acceder a la información (mensaje en texto plano) debe poder hacerlo cuando lo requiera.

Decimos que la comunicación es segura si se verifica confidencialidad, integridad y autenticación. El no repudio se verifica implícitamente con la autenticación.

La disponibilidad, por su parte, permite que la comunicación en sí se lleve a cabo. Si no se cumple disponibilidad no existe tal comunicación, por lo que no se puede verificar seguridad. Aquí Eva podría efectuar un ataque de denegación de servicio a Alice, o simplemente interceptar el canal y descartar los mensajes, con la intención de que Bob no pueda obtenerlos. Para mitigar estos ataques debe recurrirse a otros mecanismos adicionales a los criptográficos.

¿Cómo se logran estos objetivos?

Ya sabemos qué debe verificar una comunicación para que sea segura. Ahora, ¿Cómo se logra esto con mecanismos de criptografía moderna?

Existen diversos mecanismos criptográficos para lograr la seguridad de una comunicación, en términos de confidencialidad, autenticidad e integridad.

Los mecanismos principales son tres:

  • Criptografía simétrica: Si volvemos al criptosistema de la imagen anterior, los algoritmos de cifrado usados serán simétricos si se utiliza la misma clave para encriptar el contenido y para desencriptarlo.
    Ejemplos de algoritmos simétricos son AES, 3DES, Blowfish, Twofish.
    Para profundizar sobre este aspecto pueden visitar los siguientes artículos de la serie:
  • Criptografía asimétrica: En este caso los algoritmos utilizan dos claves, una para cifrar, y otra para descifrar. A estos algoritmos también se los denomina de clave pública, ya que a una de las claves se la denomina pública, y a la otra privada.
    Ejemplos de algoritmos asimétricos son RSA, DSA o variantes como ECDSA.
    Para profundizar sobre estos temas:
    • Criptografía asimétrica – Conceptos clave (Próximamente)
    • Criptografía asimétrica – Práctica con OpenSSL (Próximamente)
    • Criptografía asimétrica – Práctica con GnuPG (Próximamente)
  • Funciones hash: Las funciones hash, o resumen, permiten realizar cálculos para mapear un determinado dato de entrada en una cadena fija de bytes de salida (independientemente de la longitud del dato de entrada).
    Ejemplos de funciones hash tenemos MD5, la serie SHA y la serie SHA-3, entre otros.

La seguridad en la comunicación se puede lograr con funciones hash combinadas con criptografía simétrica, criptografía asimétrica, o con ambas.

En posts subsiguientes iremos desglosando cada uno de estos mecanismos, y los iré enlazando en esta sección.

Otros tópicos sobre criptografía

A continuación comento algunos mecanismos criptográficos relacionados, que luego extenderé en otro posts, y enlazaré correspondientemente en esta sección.

Intercambio de claves

Además de estos conceptos fundamentales existen algunos tópicos relacionados. Por ejemplo, si usamos criptografía simétrica, ¿cómo logramos que Alice y Bob tengan la misma clave sin intercambiarla explícitamente por un canal inseguro?

Aquí entra en juego el protocolo de intercambio de claves. Comúnmente se piensa en Diffie-Hellman o variantes de curva elíptica (ECDH) cuando se habla de intercambio de claves, pero existen otras alternativas, como el intercambio de claves experimental basado en la sincronización de redes neuronales artificiales (criptografía neuronal), o los algoritmos de computación cuántica (Intercambio de claves cuántico, QKE).

Criptografía híbrida y encapsulamiento de claves

Sin entrar mucho en detalle ya que lo comentaré en un post más adelante, consideremos un cifrador asimétrico como RSA. Este algoritmo permite cifrar mensajes de cierto tamaño, y es relativamente lento en comparación con cifradores simétricos como AES.

Por un lado, para mejorar el rendimiento de una comunicación, el cifrado debería hacerse con algoritmos simétricos, no con RSA.

Por otro, RSA cifra mensajes de un tamaño igual al de la clave utilizada. Esto implica que si el mensaje es más pequeño que la clave, se deberá añadir un relleno, o padding. Esto a su vez añade algunos problemas de seguridad.

Una excelente forma de reducir estos problemas es utilizar criptografía híbrida. Aquí se podría cifrar el mensaje utilizando una clave simétrica AES, por ejemplo, y luego cifrar dicha clave con RSA.

A esto se lo denomina mecanismo de encapsulación de clave, o KEM (Key encapsulation mechanism), y es muy utilizado, por ejemplo, en criptografía post-cuántica.

Criptografía post-cuántica

Finalmente, y un tema que está muy de moda hoy en día, y sobre el que he estado trabajando mucho para mi tesis de Maestría en Teleinformática, la criptografía post-cuántica.

La ciencia avanza y se comienzan a producir los primeros prototipos (y no tan prototipos) de procesadores cuánticos. Ahora los esfuerzos se centran en lograr procesadores escalables, es decir, que pueda incrementarse la cantidad de bits cuánticos (qubits) para aumentar la capacidad de procesamiento. Para esto es necesario hacer una gestión eficiente del ruido, lo que actualmente es muy difícil de conseguir.

Igualmente, en teoría, estos procesadores, cuando alcancen una cantidad suficiente de qubits (miles), podrían romper algoritmos asimétricos de cifrado como RSA o DSA y sus variantes, e incluso protocolos de intercambio de claves como los basados en Diffie-Hellman.

Aquí surge un nuevo paradigma criptográfico: los algoritmos post-cuánticos (no confundir con los cuánticos). Estos algoritmos tienen fundamentos matemáticos no basados en principios de complejidad computacional, por lo que no pueden ser vulnerados (en teoría) por computadoras cuánticas.

Conclusiones

Hemos realizado una introducción a la seguridad en comunicaciones con base en la criptografía, en términos de confidencialidad, autenticidad e integridad, y hemos mencionado diferentes mecanismos utilizados para lograr dichos objetivos.

Finalmente comentamos otros tópicos relacionados con los anteriores, como ser intercambio de claves, encapsulamiento de claves, criptografía cuántica y post-cuantica.

Voy a continuar esta entrada con otros artículos que expliquen en detalle cada uno de estos conceptos, así que espero que estén atentos 🙂

Hasta la próxima!


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador