Home » Blog » Conceptos generales para estudiar la criptografía

Conceptos generales para estudiar la criptografía


Cuando se va a estudiar algún tema que tiene que ver con criptografía frecuentemente no se sabe por dónde comenzar, nos ponemos a buscar artículos y al final entendemos nada de lo que estamos leyendo. En este artículo vamos a explicar algunos conceptos y realizar algunas recomendaciones para facilitar el estudio de la misma.

Lo primero es dejar claro la siguiente interrogante: ¿Qué es la criptografía?

Es una de las disciplinas estudiadas por la Criptología. El nombre Criptología se divide en cripto que proviene del griego “kryptos” que significa oculto o secreto y logía de “logo” que significa estudio. Entonces la Criptología la ciencia que se dedica al estudio de la escritura secreta u oculta.

La Criptología se divide en 4 disciplinas:

  • Criptografía
  • Criptoanálisis
  • Esteganografía
  • Esteganoanálisis

La palabra criptografía se divide en cripto (secreto) y grafía que proviene de “Graphos” que significa escribir o escritura. Entonces la criptografía estudia las técnicas y métodos para proteger la información.

El criptoanálisis es lo opuesto a la criptografía. Su estudio se centra en cómo conseguir el mensaje original que fue protegido con criptografía sin contar con los medios autorizados para leer dicho mensaje explotando vulnerabilidades existentes en la protección del mismo.

La esteganografía se centra en ocultar la información. Es importante aclarar que la criptografía no oculta que la información ha sido protegida. En un texto protegido con criptografía claramente se nota la protección criptográfica. El objetivo de la esteganografía en cambio es ocultar la existencia de un mensaje, aunque si se detecta podría leerse claramente.

El esteganoanálisis como lo indica la palabra, es la disciplina que se dedica a estudiar cómo detectar mensajes ocultos con esteganografía.

La criptografía persigue 2 objetivos fundamentales cuando cifra información. Lograr la confusión y la difusión.

La confusión se centra en que los caracteres del mensaje dejen de tener el símbolo original (por ejemplo sustituir la “a” por un “6”). Cuando nos referimos a mensaje puede ser cualquier tipo de información, texto, video, audio, imagen, etc…

La difusión se refiere a que el símbolo no ocupe la misma posición que en el texto original. Si se logran ambos objetivos el texto protegido debe ser visiblemente aleatorio y no presentar patrones que permitan deducir el mensaje original o la clave que se utilizó para protegerlo.

La criptografía en su estudio se divide en clásica y moderna. La criptografía clásica agrupa los métodos de cifrado a mano, como el Cesar y la Excítala. Actualmente se utiliza la moderna y abarca los métodos que se implementan a través de máquinas. El cambio de la criptografía clásica a la moderna lo marcó la maquina Enigma utilizada por los alemanes en la 2da guerra mundial.

En el presente artículo nos centraremos en aclarar conceptos referentes a la criptografía moderna.

La criptografía moderna centra sus objetivos en lograr que la información que se protege sea confiable al llegar a su destino. Para ello debe garantizar según sea el caso uno o varios de los elementos que se van a describir:

  • Integridad: Debe garantizar que la información no haya sido modificada en su trayecto y de ser así poder detectarlo.
  • Disponibilidad: La información debe ser legible por la persona o equipo a la que está dirigida.
  • Confidencialidad: La información no puede ser legible por nadie excepto la persona a la que está dirigida.

Existen otros elementos como el no repudio, y el tiempo en que es válida la información, etc. que también se deben garantizar mediante criptografía pero no se van a explicar para no extender demasiado el artículo.

La criptografía moderna para lograr esos objetivos se divide en varias familias.

  • Criptografía simétrica
  • Criptografía asimétrica
  • Funciones hash

Criptografía simétrica

La criptografía simétrica agrupa algoritmos1 que permiten cifrar2 y descifrar3 grandes volúmenes de datos razonablemente rápido y con relativamente pocos requerimientos de hardware4. Estos algoritmos tienen la característica de utilizar la misma llave para cifrar y descifrar la información.

La fortaleza de un cifrado se basa principalmente en 2 aspectos: la robustez del algoritmo de cifrado que se refiere a que el mismo logre confusión y difusión en el texto cifrado; y la fortaleza de la llave5. La llave debe cumplir con características especiales que fortalecen el cifrado en dependencia del algoritmo que se utilice.

Es importante aclarar que la seguridad del cifrado nunca puede depender de que el algoritmo no se conozca.

Los algoritmos de criptografía simétrica se agrupan en cifradores de flujo y cifradores en bloques. Los primeros van cifrando bit a bit el mensaje mientras se va transmitiendo y los segundos dividen el mensaje en bloques de datos y cifran cada bloque.

Los cifradores de flujo generalmente se utilizan en hardware con muy pocos recursos de memoria o en comunicaciones con alto riesgo de pérdida de información mientras que los de bloque son los que generalmente se utilizan en las computadoras.

Algunos de los algoritmos de cifrado en bloque que actualmente se consideran seguros son los siguientes:

AlgoritmoLongitud de llave
AES256 bit
GOST256 bit

La criptografía simétrica resuelve el problema de lograr confidencialidad en grandes volúmenes de datos de forma eficiente, pero presenta el problema de que el receptor y el emisor deben conocer la misma llave. Si se encuentran en lugares distantes debe existir un medio de comunicación segura para que el emisor pueda comunicarle la llave al receptor o viceversa. Ese problema en criptografía se denomina problema del intercambio de llave.

Dicho problema se resuelve haciendo uso de la criptografía asimétrica.

Criptografía asimétrica

La criptografía asimétrica o criptografía de clave pública como también se le llama basa su funcionamiento que para cifrar y descifrar el mensaje se utilizan 2 claves diferentes. Ese par de claves se generan juntas y están estrechamente relacionadas a través de funciones matemáticas que varían en dependencia del algoritmo que se esté utilizando. Una de las condiciones que deben cumplir es que de una no puede deducirse la otra y que lo que se cifre con una solo puede descifrarse con su pareja.

Las características antes explicadas permiten utilizar las claves para en una amplia variedad de situaciones. A continuación se van a explicar algunos de sus usos:

La clave secreta “s” solo la conoce el dueño de las claves y la clave pública “p” la conoce cualquier persona que se quiera comunicar de forma segura con el dueño de la clave.

  • Cifrar mensaje: A desea enviar un mensaje a B y que solo B pueda leer su contenido.
  1. A escribe el mensaje T.
  2. A tiene la clave pública Bp.
  3. A cifra el mensaje T con Bp obteniendo el mensaje cifrado Tc.
  4. A envía el mensaje Tc a B.

Cada usuario tiene un par de claves, el usuario A tiene la clave As que se su clave secreta y Ap que es su clave pública. Igualmente sucede con el usuario B, que tiene Bs y Bp.

  • Descifrar mensaje:
  1. B recibe Tc.
  2. B utiliza su clave secreta Bs y descifra el mensaje obteniendo T.
  3. B lee T.

Bp la conoce todo el mundo y Bs solo B, entonces cualquiera puede cifrar un mensaje con Bp y solo B que es quien tiene Bs puede descifrarlo. Lo mismo ocurre con A y su par de claves.

De esa forma se resuelve el problema de intercambio de clave porque por el medio inseguro solo se intercambias las claves públicas, las secretas solo las tiene el dueño de la clave.

Ahora A quiere enviar un mensaje a B y que B este seguro que se lo envió A.

  • Firmar mensaje:
  1. A escribe el mensaje T.
  2. A cifra el mensaje T con su clave privada Ap obteniendo el mensaje firmado Tf.
  3. A envía Tf a B.
  • Comprobar firma digital:
  1. B recibe Tf de A.
  2. B descifra el mensaje Tf con la clave pública Ap obteniendo T.
  3. B lee T.

Como se puede apreciar este modo de uso no garantiza la confidencialidad del mensaje porque cualquiera que conozca la clave pública de A puede leer el mensaje, pero solo A puede haberlo cifrado con su clave Ap, de esa forma A firma su mensaje.

El proceso de firma digital aunque se basa en este principio es un poco más complejo porque combina otras técnicas como el uso de las funciones hash para optimizarlo, ya que si tuviera que cifrar todo el mensaje sería muy lento. Las funciones hash se van a explicar más adelante.

En este punto surge una pregunta:

¿Si los algoritmos de asimétricos resuelven el problema del intercambio de llaves entonces porque los simétricos se siguen utilizando?

Esto sucede porque los algoritmos asimétricos basan su funcionamiento en operaciones matemáticas complejas y eso los hace lentos. Solo funcionan de forma eficiente cuando cifran pequeños volúmenes de datos, en cambio los simétricos son muy rápidos aun cifrando grandes volúmenes de datos.

Basado en ello actualmente se combinan ambas características. Por ejemplo sin entrar en detalles en los protocolos criptográficos primero se genera una llave simétrica para cifrar los datos. Esa llave simétrica es intercambiada entre ambos extremos de forma segura con un algoritmo asimétrico.

Una vez que ambos extremos conocen la llave cifran el tráfico utilizando un algoritmo simétrico con la llave previamente compartida. El uso se basa en con el algoritmo asimétrico se cifrar la llave y se comparte y luego los datos son cifrados con un algoritmo simétrico utilizando la llave acordada.

Es importante señalar que cada protocolo tiene su propio funcionamiento pero de forma general se sigue el ejemplo antes explicado. Actualmente un ejemplo de algoritmos asimétrico que se considera seguro es el siguiente:

AlgoritmoLongitud de llave
RSA4096 bit

Certificados digitales e infraestructuras de clave pública

Como se puede apreciar los algoritmos asimétricos resuelven el problema del intercambio de llaves pero surge un nuevo problema. Cuando se utilizan un algoritmo asimétrico existe el riesgo de que alguien envíe una llave pública haciéndose pasar por otra persona y engañando al emisor para que cifra la información con su llave. En eso se basa el ataque de hombre en el medio (MIT por sus siglas en ingles) en un protocolo criptográfico.

¿La clave pública que estoy utilizando para cifrar es realmente de la persona que pienso que es? A este problema se le llama problema de la confianza.

Una solución existente para mitigar ese riesgo son los certificados digitales y las infraestructuras de clave pública. Un certificado digital contiene la clave pública del emisor y algunos datos como el nombre, dirección etc… Cuando el certificado es enviado al otro extremo se puede revisar la clave pública junto a los demás datos de identificación.

El tema es que en la mayoría de los caso el otro extremo de la conexión no tiene previo conocimiento de la clave pública legitima del servicio al que se está conectando o de la persona que le está enviando el mensaje. Entonces no sabes si confiar o no en dicho certificado digital.

Por ese motivo surgen las Entidades de Certificación como parte de las Infraestructuras de Claves Públicas (PKI por sus siglas en ingles). Esas entidades tienen definidos los medios técnicos y procedimientos para validad la identidad de las entidades que utilizan certificados digital. Luego de validarlo lo firman con su propia clave como entidad certificadora y responden por la veracidad del certificado digital. En el articulo “Comparación de métodos para la validación de certificados digitales” se analizan algunos métodos de validación.

El protocolo HTTPS utilizado por los sitios web normalmente emplea este sistema de verificación. Los navegadores web ya cuentan con un listado de autoridades de certificación internacionales. Cuando te conectas a un sitio web y el certificado está firmado por una de estas entidades el navegador lo acepta sin problemas, de no ser así muestra una advertencia porque puede ser un certificado falso.

Funciones hash

Hay otra familia de algoritmos que es muy importante entender su funcionamiento para poder estudiar la criptografía y son las funciones hash, funciones resumen o funciones picadillo.

Dichas funciones a partir de un mensaje generan una salida de texto con un tamaño definido en la configuración de la propia función. No se trata de un cifrado porque no hay forma de invertir el proceso y obtener el texto original pero tienen la característica de que una mínima variación el texto original genera una gran variación en la salida de la función hash.

Estas funciones tienen muchos usos, por ejemplo:

  • Comprobar la integridad de un texto: Al texto se le calcula el hash y se almacena. Para comprobar que el texto no ha sido modificado se calcula nuevamente dicho hash y si coincide con el original quiere decir que es el mismo texto.
  • En la firma digital: se calcula un hash del texto del mensaje, dicho hash normalmente es más pequeño que el mensaje y lo que se firma es el hash con el objetivo de consumir menos tiempo. Cuando se quiere comprobar si el mensaje ha sido modificado se le calcula el hash y si da igual que el que está firmado entonces quiere decir que ese mensaje es correcto y como se firmó su hash por transitividad de firmó el mensaje.
  • Almacenamiento de claves: Como regla general las claves no deben almacenarse en texto claro en las bases de datos (BD) para reducir el riesgo a de sean robadas. En su lugar se almacena el hash de la clave. Cuando el usuario escribe su clave lo que se envía es el hash de la misma y el sistema comprueba ese hash con el que tiene en la BD y si es el mismo entonces la clave es correcta.

Actualmente se considera seguro utilizar el estándar SHA-3 con longitud 512.

En el artículo se ha hecho una introducción para facilitar el aprendizaje de la criptografía y se han hecho algunas recomendaciones para su empleo. Cada uno de los temas mencionados representa un campo de estudio que iremos profundizando en el blog. Esperamos que esta introducción le haya sido útil para facilitar el estudio de la misma.

1 Algoritmo: secuencia de pasos lógicos para lograr un objetivo.

2 Cifrar: Es un proceso criptográfico centrado en lograr la confidencialidad de la información.

3 Descifrar: Es el proceso mediante el cual a partir del texto cifrado se obtiene el texto original.

4 Hardware: Es la parte física de la computadora, Ej: memoria RAM, disco duro, microprocesador.

5 Llave: Palabra o frase que se le suministra al algoritmo en el proceso de cifrado o descifrado. Puede ser secreta o no.