Llegamos a ustedes gracias a:



Reportajes y análisis

¿Qué es la criptografía?

Cómo los algoritmos mantienen la información secreta y segura

[06/11/2020] La criptografía es la ciencia de mantener la información segura, transformándola en una forma que los destinatarios no deseados no puedan entender. En criptografía, un mensaje original legible por humanos, al que se hace referencia como texto sin formato, se transforma mediante un algoritmo, o una serie de operaciones matemáticas, en algo que -para un observador desinformado- parecería una serie de incoherencias; dicho sinsentido se denomina texto cifrado.

Los sistemas criptográficos requieren algún método para que el destinatario previsto pueda hacer uso del mensaje cifrado -por lo general, aunque no siempre, transformando el texto cifrado de nuevo en texto sin formato.

Criptografía versus cifrado

El cifrado es lo que llamamos el proceso de convertir texto plano en texto cifrado. (Cripta puede hacerle pensar en tumbas, pero proviene de una palabra griega que significa "oculto o "secreto). El cifrado es una parte importante de la criptografía, pero no abarca toda la ciencia. Su opuesto es el descifrado.

Un aspecto importante del proceso de cifrado es que, casi siempre, implica tanto un algoritmo como una llave. Una llave es solo otra pieza de información, casi siempre un número, que especifica cómo se aplica el algoritmo al texto plano para cifrarlo. Incluso si conoce el método por el cual se cifra algún mensaje, es difícil o imposible descifrar sin esa llave.

Historia de la criptografía

Todo esto es muy abstracto, y una buena manera de entender los detalles de lo que estamos hablando es observar una de las primeras formas conocidas de criptografía. Se conoce como el cifrado César, porque Julio César lo usó para su correspondencia confidencial; como lo describió su biógrafo Suetonio, "si tenía algo confidencial que decir, lo escribía en cifrado, es decir, cambiando así el orden de las letras del alfabeto... Si alguien desea descifrarlas, y obtener su significado, debe sustituir la cuarta letra del alfabeto, a saber, D, por A, y así con las demás.

La descripción de Suetonio se puede dividir en los dos elementos criptográficos que hemos discutido, el algoritmo y la llave. El algoritmo aquí es simple: cada letra se reemplaza por otra letra posterior en el alfabeto. La clave es a cuántas letras, más adelante en el alfabeto, necesita recurrir para crear su texto cifrado. Son tres en la versión del cifrado que describe Suetonio. Pero, obviamente, otras variaciones son posibles -con una clave de cuatro, A se convertiría en E, por ejemplo.

Algunas cosas deberían quedar claras en este ejemplo. El cifrado de este tipo ofrece una forma bastante sencilla de enviar en secreto cualquier mensaje que desee. Compare eso con un sistema de frases en código donde, por ejemplo, "Pidamos pizza significa "Voy a invadir la Galia. Para traducir ese tipo de código, las personas en ambos extremos de la cadena de comunicación necesitarían un libro de frases en clave, y usted no tendría forma de codificar nuevas frases que no había planeado de antemano. Con el cifrado César, usted puede cifrar cualquier mensaje que se le ocurra. La parte complicada es que todos los que se comunican deben conocer el algoritmo y la clave de antemano, aunque es mucho más fácil transmitir y conservar esa información de forma segura que con un libro de códigos complejo.

El cifrado César es lo que se conoce como cifrado de sustitución, porque cada letra se sustituye por otra; otras variaciones de esto, entonces, sustituirían bloques de letras o palabras completas. Durante la mayor parte de la historia, la criptografía consistió en varios cifrados de sustitución, desplegados para mantener seguras las comunicaciones gubernamentales y militares. Los matemáticos árabes medievales impulsaron la ciencia, particularmente el arte del descifrado -una vez que los investigadores se dieron cuenta de que ciertas letras en un idioma dado son más comunes que otras, se vuelve más fácil reconocer patrones, por ejemplo. Pero la mayor parte del cifrado previo a la era moderna es increíblemente simple para los estándares actuales, por la razón obvia de que, antes de la llegada de las computadoras, era difícil realizar transformaciones matemáticas lo suficientemente rápidas como para que el cifrado o descifrado valiera la pena.

De hecho, el desarrollo de las computadoras y los avances en criptografía fueron de la mano. Charles Babbage, cuya idea del motor de diferencia presagiaba las computadoras modernas, también estaba interesado en la criptografía. Durante la Segunda Guerra Mundial, los alemanes utilizaron la máquina electromecánica, Enigma, para cifrar mensajes -y, como es sabido, Alan Turing dirigió un equipo en Gran Bretaña, que desarrolló una máquina similar para descifrar el código, sentando algunas de las bases para las primeras computadoras modernas durante el proceso. A medida que las computadoras estuvieron disponibles, la criptografía se volvió radicalmente más compleja, pero siguió siendo territorio de espías y generales durante varias décadas más. Sin embargo, eso comenzó a cambiar en la década de los años sesenta.

Criptografía en la seguridad de las redes

Lo que hizo que los civiles pensaran en la importancia de la criptografía fue la formación de las primeras redes informáticas. Las computadoras se comunicaban entre sí a través de una red abierta, no solo a través de conexiones directas entre sí; de muchas excelentes maneras, ese tipo de trabajo en red fue transformador, pero también hizo que fuera fácil espiar los datos que viajaban por la red. Y dado que los servicios financieros son un caso de uso temprano para la comunicación por computadora, era necesario encontrar una manera de mantener la información en secreto.

IBM abrió el camino a fines de la década de los años sesenta, con un método de cifrado conocido como "Lucifer, que finalmente fue codificado por el US National Bureau of Standards como el primer estándar de cifrado de datos (DES, por sus siglas en inglés). A medida que Internet comenzó a ganar importancia, se necesitaba aumentar la cantidad y calidad del cifrado, y hoy en día una parte significativa de los datos que vuelan por todo el mundo se cifran mediante diversas técnicas que analizaremos con más detalle en un momento.

¿Para qué se utiliza la criptografía?

Ya hemos hablado de algunas de las aplicaciones específicas de la criptografía, desde guardar secretos militares hasta transmitir datos financieros, de forma segura, a través de Internet. Sin embargo, en el panorama general, existen algunos objetivos amplios de ciberseguridad que la criptografía nos ayuda a alcanzar, como explica Gary Kessler, consultor de ciberseguridad. Usando técnicas criptográficas, los profesionales de la seguridad pueden:

  • Mantener la confidencialidad del contenido de los datos
  • Autenticar la identidad del remitente y el receptor de un mensaje
  • Asegurar la integridad de los datos, demostrando que no han sido alterados
  • Demostrar que el supuesto remitente realmente envió este mensaje, principio conocido como no repudio.

Es posible que reconozca algunos de estos principios a partir de variaciones de la tríada de la CIA. El primero de estos usos es el obvio -usted puede mantener los datos en secreto cifrándolos. Los demás requieren una pequeña explicación, en la que entraremos a medida que describamos los diferentes tipos de criptografía.

Tipos de criptografía

Existen numerosos algoritmos criptográficos en uso, aunque generalmente se pueden dividir en tres categorías: criptografía de clave secreta, criptografía de clave pública y funciones hash. Cada una tiene su propio rol dentro del panorama criptográfico.

Criptografía de clave secreta. El cifrado César, que explicamos anteriormente, es un gran ejemplo de criptografía de clave secreta. En el ejemplo que usamos, si César y uno de sus centuriones intercambiaran mensajes cifrados, ambas partes tendrían que conocer la clave -en este caso, cuántas letras, hacia adelante o hacia atrás, en el alfabeto necesita mover para transformar el texto sin formato a texto cifrado, o viceversa. Pero la clave debe permanecer en secreto entre los dos. No se podía enviar la clave junto con el mensaje, por ejemplo, porque si ambos cayeran en manos del enemigo, el mensaje sería fácil de descifrar para ellos, anulando el propósito básico de cifrarlo. César y su centurión probablemente tendrían que discutir la clave cuando se vieran en persona, aunque obviamente esto es menos que ideal cuando las guerras se libran a largas distancias.

La criptografía de clave secreta, a veces también llamada clave simétrica, se usa ampliamente para mantener la confidencialidad de los datos. Puede ser muy útil para mantener la privacidad de un disco duro local, por ejemplo. Dado que el mismo usuario generalmente cifra y descifra los datos protegidos, compartir la clave secreta no es un problema. La criptografía de clave secreta también se puede utilizar para mantener la confidencialidad de los mensajes transmitidos a través de Internet; sin embargo, para que esto suceda con éxito, debe implementar nuestra próxima forma de criptografía junto con ella.

Criptografía de clave pública. Es posible que César haya podido consultar con sus centuriones en persona, pero usted no querría ir a su banco y hablar con el cajero solo para saber cuál es la clave privada para cifrar su comunicación electrónica con el banco -eso anularía el propósito de la banca en línea. En general, para contrarrestar el riesgo de comunicarse entre sí a través de una red intrínsecamente insegura, Internet necesita una manera en que las partes en comunicación establezcan un canal de comunicaciones seguro. La manera en que esto funciona es mediante una criptografía de clave pública.

En la criptografía de clave pública, a veces también llamada clave asimétrica, cada participante tiene dos claves. Una es pública y se envía a cualquier persona con la que la parte desee comunicarse. Esa es la clave que se usa para cifrar los mensajes. Pero la otra clave es privada, no se comparte con nadie y es necesario para descifrar esos mensajes. Para usar una metáfora: piense en la clave pública como la apertura de una ranura en un buzón lo suficientemente ancho como para dejar caer una carta. Le da esas dimensiones a cualquiera que crea que podría enviarle una carta. La clave privada es lo que usa para abrir el buzón y poder sacar las cartas.

Las matemáticas de cómo se puede utilizar una clave para cifrar un mensaje y otra para descifrarlo son mucho menos intuitivas que la forma en que funciona la clave del cifrado César. Si este tema le interesa, el Instituto Infosec lo ha analizado profundamente. El principio central, que hace que el proceso funcione, es que las dos claves están realmente relacionadas entre sí matemáticamente, de modo que es fácil derivar la clave pública de la clave privada, pero no al revés. Por ejemplo, la clave privada podría conformarse por dos números primos muy grandes, que multiplicaría para obtener la clave pública.

Los cálculos necesarios para la criptografía de clave pública son mucho más complejos y requieren muchos recursos que los que se encuentran detrás de la infraestructura de claves secretas. Afortunadamente, no necesita usarla para proteger todos los mensajes que envía en línea. En cambio, es común que una de las partes utilice la criptografía de clave pública para cifrar un mensaje que contenga otra clave criptográfica. Esta clave, que se ha transmitido de forma segura a través de la red insegura de Internet, se convertirá en la clave privada que codifica una sesión de comunicaciones mucho más larga, cifrada mediante el cifrado de clave secreta.

De esta manera, la criptografía de clave pública ayuda a la causa de la confidencialidad. Pero estas claves públicas también forman parte de un conjunto más amplio de funciones, las cuales se conocen como infraestructura de llave pública o PKI (por sus siglas en inglés). La PKI proporciona formas de asegurarse de que cualquier clave pública determinada esté asociada con una persona o institución específica. De esa manera, un mensaje cifrado con llave pública confirma así la identidad del remitente, estableciendo autenticación y no repudio.

Funciones hash. Los algoritmos criptográficos de clave pública y privada implican la transformación de texto sin formato en texto cifrado, y luego de nuevo en texto sin formato. Por el contrario, una función hash es un algoritmo de cifrado unidireccional: una vez que haya cifrado su texto sin formato, nunca podrá recuperarlo del texto cifrado resultante (denominado hash).

Esto puede hacer que las funciones hash parezcan un ejercicio algo inútil. Pero la clave de su utilidad es que, para cualquier función hash dada, no existen dos textos sin formato que produzcan el mismo hash. (Matemáticamente, esto no es del todo correcto, pero para cualquier función hash actualmente en uso, las posibilidades de que suceda son generalmente muy pequeñas y se pueden ignorar con seguridad).

Esto hace que los algoritmos hash sean una gran herramienta para garantizar la integridad de los datos. Por ejemplo, un mensaje se puede enviar junto con su propio hash. Al recibir el mensaje, puede ejecutar el mismo algoritmo hash en el texto del mensaje; si el hash que produce es diferente del que acompaña al mensaje, sabe que el mensaje se ha modificado en tránsito.

El hash también se utiliza para garantizar la confidencialidad de las contraseñas. Almacenar contraseñas como texto sin formato no es recomendable para la seguridad. Esto se debe a que los usuarios se vuelven propensos al robo de cuentas e identidad a raíz del robo en los datos (lo que, lamentablemente, no impide que organizaciones grandes lo hagan). Si, en cambio, almacena una versión hash de la contraseña de un usuario, los hackers no podrán descifrarla y usarla en otro lugar, incluso si logran violar sus defensas. Cuando un usuario legítimo inicia sesión con su contraseña, puede usar el hash y compararlo con el hash que tiene registrado.

Ejemplos y técnicas de criptografía

Existen numerosas técnicas y algoritmos que implementan cada uno de los tres tipos de cifrado discutidos anteriormente. Por lo general, son bastante complejos y están fuera del alcance de este artículo, por lo que hemos incluido enlaces donde puede obtener más información sobre algunos de los ejemplos más utilizados.

Cifrado de clave secreta:

Cifrado de clave pública:

Funciones hash:

Existe una amplia gama de funciones hash con diferentes propósitos especializados. La lista en Wikipedia es un buen lugar para comenzar.