👷 En construcción: Esta página está basada fuertemente en el apunte de Taller de Hacking. La iremos modificando de acuerdo a las necesidades específicas del curso durante los próximos semestres.
En esta unidad veremos cómo funcionan las herramientas criptográficas hoy estandarizadas, así como también otras herramientas consideradas hoy inseguras para algunos casos de uso.
Por último, veremos aplicaciones que usan las herramientas estandarizadas y seguras para garantizar propiedades que, sin ellas, no se podrían garantizar.
Pero antes, hablaremos un poco de criptografía en general y luego de criptografía clásica, para entender un poco mejor cuál es el objetivo que se busca al usar estas herramientas.
¿Por qué Criptografía?#
Como ya hemos visto en otras unidades, debido tanto al tecnooptimismo de sus creadores como a las limitaciones tecnológicas de la época, la Internet se pensó inicialmente como una red pública, en la que potencialmente cualquier par de computadores pudiese comunicarse de forma fácil y directa, sin importar en qué lugar geográfico se encontrasen o si compartían proveedor de Internet. Eran tiempos más simples, en los que la información que fluía por ahí no era necesariamente muy importante, o al menos la gente que podía ser capaz de interceptarla y leerla era muy poca.
Sin embargo, a medida ha aumentado la cantidad de usuarios de la Internet y la cantidad de cosas que se puede hacer en ella, y a medida cada vez más gobiernos, delincuentes informáticos y grandes empresas quieren saber qué estas haciendo en cada momento, se ha vuelto indispensable contar con la capacidad de poder decidir quién puede y quién no puede acceder a ciertas comunicaciones que ocurren en estos espacios. Por ejemplo, hoy resultaría completamente inaceptable pensar que los números de la tarjeta de crédito que usas para pagar Netflix pudiesen ser vistos por cualquier persona o máquina que resulte estar por ahí cuando envías tu formulario.
Para lograr el objetivo anterior contamos con una herramienta matemática muy útil: la criptografía. El principio es sencillo. La información se cifra antes de enviar por el canal público, de modo que el receptor pueda descifrarla usando información privada y que es de común acuerdo con el emisor del mensaje.
Si bien los avances criptográficos de los últimos años entregan un nivel alto de protección en teoría, en la práctica suelen haber errores de implementación graves que podrían permitir exfiltrar la información sensible. De estos errores se aprovechan entidades que desean descifrar mensajes sin autorización, obteniendo así la información sensible que buscan, y muchas veces sin que las partes que se comunicaban por el canal se enteren de esta intrusión.
El objetivo de esta unidad es conocer esos errores típicos de implementación o integración de herramientas criptográficas para asegurar integridad y confidencialidad en los sistemas, así como también conocer problemas teóricos descubiertos en protocolos criptográficos más antiguos que hacen funcionar sus ataques conocidos.
¿Cómo comunico mensajes? (Recuerdo de modelamiento de amenazas)#
Como vimos al inicio de la sección de modelamiento de amenazas, hay un caso muy conocido en protocolos de comunicación criptográficos.

Llamaremos la Emisora del mensaje (la que se comunica primero) Alicia, a quien lo recibe Roberto, y Eva a quien quiere romper alguna propiedad de ciberseguridad esperada por Alicia y Roberto.
Algunos de los modelos de amenaza en los que las herramientas criptográficas nos podrán ayudar son los siguientes:
- ¿Cómo pueden comunicarse Alicia y Roberto en un canal controlado o monitoreado por Eva de forma secreta? (Eva no debe saber de qué están hablando): Para ello, usaremos herramientas criptográficas para el cifrado de información.
- ¿Cómo puede Roberto (o Alicia) saber que el mensaje que le envió Alicia (o Roberto) no fue modificado por Eva?: Para ello, usaremos las herramientas criptográficas para firmar o autenticar información.
Ambos casos anteriores pueden partir de dos casos base distintos:
- Alicia y Roberto pueden ponerse de acuerdo, una vez, en un valor secreto común a través de un canal no controlado por Eva. En estos casos usamos criptografía simétrica.
- Alicia y Roberto deben ponerse de acuerdo en el valor secreto a través del canal (remoto) controlado por Eva. En estos casos usamos criptografía asimétrica.
Roberto: Supongamos que tenemos una forma de intercambiar información sin que Eva la vea. De todos modos, ¿cómo sé que la persona al otro lado en verdad es Alicia si nunca pude hablar directamente con ella? Solo me llegó un mensaje, a través de un canal controlado por Eva, que decía que venía de ella.
Esto lo veremos más adelante, en aplicaciones criptográficas.
Criptografía Clásica para Cifrado#
Los cifradores clásicos son aquellos que han tenido un uso histórico masivo, pero que hoy en día no se utilizan, en parte debido a lo fácil que resulta romperlos con ayuda de un computador. Además, estos cifradores suelen trabajar solamente con letras del alfabeto inglés, lo que limita los tipos de mensajes que se pueden cifrar.
En general, al usar estos cifrados se ignoran los espacios y signos de puntuación, entregándose como mensaje cifrado un texto sin estos símbolos, los cuales generalmente se pueden recuperar interpretando el mensaje en texto plano.
Cifradores de Sustitución#
Corresponde a los cifradores en los que, para cifrar mensajes, cada caracter de ellos es reemplazado por otro caracter según una función de sustitución específica, pero manteniendo su posición en el texto. Para descifrar los mensajes, basta con aplicar la función inversa a cada caracter.
Cifrador César (Caesar Cipher)#

En el cifrador César, la sustitución es definida por una llave $K$, equivalente a un número entre 1 y 26, o en su defecto, a una letra del alfabeto con el que se trabaja (el inglés). Para cifrar, es necesario interpretar cada letra como un número igual a la posición de esta en el abecedario. Luego, a este valor se le suma $K$ (o si $K$ es una letra, su posición en el abecedario). Si el valor de la suma es mayor a 26, se le resta 26 para obtener un número dentro del rango 1 y 26. Finalmente, este número es transformado en la letra del abecedario que se encuentra en esa posición.
El descifrado de un mensaje cifrado con César es similar a su cifrado, pero en vez de sumar se resta 26. Si el número resultante es menor a 1, se le suma 26 para obtener un número en el rango de entre 1 y 26.
Caso particular: ROT13#
Existe un caso particular del cifrador César conocido como “ROT13”, en el cual la llave es fija y de valor 13 (o “M”). Lo más útil de tener este valor como llave es que para el proceso de cifrado y descifrado se puede usar exactamente el mismo algoritmo. Dado que la llave es un valor fijo, se suele considerar más como una técnica de ofuscación que de cifrado, la cual es bastante popular por ejemplo en foros de discusión de internet para publicar spoilers.
Cómo romper Caesar#
Fuerza bruta: Calcular para cada llave posible el valor del texto descifrado con esa llave. Luego, seleccionar el valor de salida más coherente. Como son solo 26 llaves posibles, es fácil de realizar.
Análisis de frecuencias: En todos los idiomas, es posible encontrar una proporción estandar de frecuencias para cada letra del alfabeto. En el caso del inglés, la letra más repetida es la $E$. Por lo tanto, en el caso de textos largos, podemos revisar cuál es el caracter con más repeticiones y asumir que equivale a la E. Luego, calculamos la llave que necesitaríamos para convertir ese caracter en una E. Finalmente, probamos la llave candidata y revisamos la obtención de un mensaje coherente. Este análisis también puede considerar las frecuencias de otras letras para aumentar la confianza en el resultado.
Este gráfico muestra las frecuencias relativas de las 26 letras del abecedario inglés:

Herramientas#
- DCode.fr tiene una utilidad para romper Caesar por fuerza bruta, el cual calcula probabilidad de éxito con un análisis de frecuencias.
Cifrador Vigenère#
En el caso del cifrador Vigenère, creado en el año 1553 pero roto recién en el año 1863, la sustitución se hace con llaves alfanuméricas de largo arbitrario, aunque generalmente menor al largo del texto completo. El algoritmo de cifrado es el siguiente:
- Definimos la función $ToPos(Z)$, que toma una letra del abecedario inglés $Z$ y la transforma en un número equivalente a su posición en él.
- Ejemplos: $ToPos(“a”) = 1$, $ToPos(“n”) = 19$, $ToPos(“z”) = 26$
- Definimos la función $ToChar(N)$, que toma un número $N$ entre 1 y 26, y devuelve la letra del abecedario inglés en esa posición.
- Ejemplos: $ToChar(1) = “a”$, $ToChar(19) = “n”$, $ToChar(26) = “z”$
- Dada una llave $K$ de largo $n$ y un texto de largo $N$, para cada caracter $P[i]$ del texto plano P, obtenemos $C[i]$ de la siguiente forma:
- Definimos $C[i]$ como $ToChar((ToPos(P[i]) + K_i) \mod 26) + 1$
Esto hace notar que Caesar es un caso particular de Vigenère con una llave de largo 1.
Cómo romper Vigenère#
Las técnicas de Caesar no sirven directamente en el caso de Vigenere, dado que el universo de llaves posibles no está acotado, y que un análisis de frecuencias por sí solo no nos revelará mucha información. Sin embargo, existen técnicas un poco más sofisticadas que nos ayudarán a obtener el mensaje cifrado o la llave utilizada.
- Examinación de Kasiski: Técnica de criptoanálisis que permite determinar un subconjunto de posibles largos de llave. Posteriormente, es posible hacer un análisis de frecuencia independiente para cada caracter de la llave, considerando solamente los caracteres del mensaje cifrado que utilizaron ese caracter al cifrarse.
- Eliminación de la llave: En caso que se conozca parte del texto plano, es posible determinar la llave utilizada de forma bastante directa. Recomendamos ver la explicación de la página en Wikipedia del cifrador Vigenère (sección Cryptanalysis / Key Elimination).
Herramientas#
- DCode.fr tiene una utilidad que permite romper Vigenère con varias técnicas, algunas de ellas mencionadas acá.
Sustitución monoalfabética#
La sustitución monoalfabética considera utilizar una permutación del alfabeto inglés ordenado, y mapear cada letra del alfabeto original a la letra en la misma posición de la permutación. El descifrado es simplemente ejecutar el mapeo opuesto al utilizado en el cifrado. En este caso, la llave correspondería a la permutación completa del alfabeto. Por ejemplo, teniendo la siguiente permutación para el alfabeto ordenado
Original: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Permutación: QWERTYUIOPASDFGHJKLZXCVBNMLa versión cifrada del mensaje HOLA MUNDO correspondería a IGSQ DXFRG.
Ataques a la sustitución monoalfabética#
El ataque más efectivo contra la sustitución monoalfabética es el mismo análisis de frecuencias realizado en Caesar, para luego ir probando con la modificación de otras letras de modo de obtener un mensaje coherente.
Herramientas#
- DCode.fr tiene una herramienta interactiva para realizar sustitución monoalfabética, la cual configura el estado inicial de la sustitución usando análisis de frecuencia, pero permite modificar las sustituciones manualmente, viendo en tiempo real el resultado de ellas.
Cifradores de Transposición#
En los cifradores de transposición, el texto cifrado corresponde a una permutación de los caracteres del texto plano, la cual se “descifra” conociendo el orden deben leerse los caracteres para extraer la información cifrada. Hay harta información sobre algunos cifradores de transposición famosos en Wikipedia, así como también técnicas para resolverlos.
Herramientas#
DCode tiene herramientas para los siguientes cifradores de transposición: