Retos

¿Cómo participar? Para enviar tu solución a un reto, escribe a la persona que lo ha propuesto un correo electrónico indicando en el asunto el número de reto, e identificándote siempre para que sea posible contactarte a posteriori. Las mejores soluciones recibirán premios en la sesión de clausura de CryptoClub de este curso, que tendrá lugar en el mes de junio. Es posible enviar soluciones a varios retos, ¡A por ello!

Bases de la convocatoria de premios a los Retos CryptoClub 2025/2026

RETOS 2026

RETO 8 - ¡Correo Rojo! Volamos hacia Madrid

RETO 8

RETO 8 - ¡Correo Rojo! Volamos hacia Madrid

Autor: Ana Isabel Gómez
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 8" a: ana.gomez.perez@urjc.es

El criptosistema de Vernam, también conocido como one-time pad, fue el primer sistema demostrado como incondicionalmente seguro, siempre que la clave sea completamente aleatoria y del mismo tamaño que el mensaje. En este reto os proponemos estudiar la seguridad de este criptosistema frente a la reutilización de claves.

Alicia quiere comunicarse con Roberto y acuerdan emplear el cifrado de Vernam, intercambiando previamente sus claves secretas en persona. Sin embargo, el mensaje de Alicia resulta ser demasiado largo, por lo que decide dividirlo en varios bloques y aplicar el cifrado a cada uno de ellos. Roberto se encuentra con el mismo problema al responder, aunque introduce un detalle adicional: utiliza el traductor Leet Speak y elimina los espacios en su respuesta.

Dados los textos cifrados correspondientes a ambos mensajes, el reto consiste en recuperar los dos mensajes en texto claro (en castellano), determinar las claves utilizadas y explicar detalladamente la estrategia criptanalítica empleada.

Descargar Reto
RETO 9

RETO 9 - ¿Y si ciframos con atributos?

Autor: Jose María de Fuentes
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 9" a: jfuentes@inf.uc3m.es

Conceptos previos:
El cifrado basado en atributos (Attribute-Based Encryption, ABE) es un esquema en el que el acceso a los datos se controla por atributos (p. ej. rol, departamento, nivel) en lugar de por identidad concreta. En ABE se cifra bajo una política de atributos y solo las claves que cumplen esa política pueden descifrar.

Dos familias principales:

  • Key-Policy ABE (KP-ABE):
    • El emisor etiqueta el texto cifrado con un conjunto de atributos.
    • La clave privada incorpora una política (por ejemplo: ((A AND B) OR C)); solo si los atributos del texto cifrado satisfacen la política, se puede descifrar.
  • Ciphertext-Policy ABE (CP-ABE):
    • El emisor especifica la política en el texto cifrado.
    • Las claves privadas están asociadas a un conjunto de atributos del usuario.
    • Si los atributos del usuario satisfacen la política del texto cifrado, puede descifrar.

Componentes básicos (CP-ABE, esquema típico):
  • Setup(λ) → genera PK (parámetros públicos) y MSK (master secret key).
  • KeyGen(MSK, S) → con S = conjunto de atributos del usuario → genera SK_S.
  • Encrypt(PK, M, policy) → cifra M bajo una política → produce CT.
  • Decrypt(SK_S, CT) → si S satisface policy, devuelve M; si no, fallo.

El Reto:
Implementa, en el lenguaje de programación que desees, un sistema CP-ABE con atributos, que son etiquetas simples (sin operadores numéricos), para cifrar documentos en entornos médicos:

  • Atributos disponibles en el sistema: {doctor, cardiology, senior, research}.
  • Por ejemplo, los documentos pueden ser cifrados con políticas del tipo: (doctor AND cardiology) OR (senior AND research).
Posteriormente implementa el mismo sistema con cifrado simétrico, por ejemplo, cifrando los documentos con AES, y analiza el rendimiento (en términos de cómputo) y las ventajas y las desventajas frente a ABE.

Descargar Reto

RETO 9 - ¿Y si ciframos con atributos?

RETO 10 - El cifrado perfecto

RETO 10

RETO 10 - El cifrado perfecto

Autor: Lorena González Manzano
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 10" a: lgmanzan@inf.uc3m.es

Conceptos previos:
El cifrado Vernam es un sistema de cifrado por flujo que combina bit a bit el texto plano con una clave aleatoria del mismo tamaño usando XOR. Si la clave es completamente aleatoria, de igual longitud que el mensaje y se usa solo una vez, se convierte en un cifrado de un solo uso (one-time pad) absolutamente seguro. Sin embargo, este tipo de cifradores son susceptibles a ataques si se reutiliza la clave.

Por otro lado, hay que tener en cuenta que para aplicar algoritmos criptográficos la codificación es muy importante, de modo que se necesita utilizar la codificación adecuada en cada caso. Por ejemplo, en cifradores de flujo es habitual operar a nivel de bit, aunque luego pueda ser necesario realizar otras conversiones para conocer el texto o datos a cifrar/descifrar.

El Reto:
Se han encontrado 2 mensajes cifrados (C1 y C2) con la misma clave y también el mensaje en claro (M1) correspondiente al descifrado de C1. Por otro lado, se ha encontrado un tercer mensaje (C3) que parece estar cifrado con otra clave y, posiblemente, con otro algoritmo más robusto. El objetivo es encontrar M2 y M3. ¿Cómo lo puedes conseguir?

Descargar Reto
RETO 11

RETO 11 - Computación segura entre 2 partes de profundidades en estadística (2PC4SD)

Autor: Ignacio Cascos
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 11" a: ignacio.cascos@uc3m.es

En muchos entornos, los datos necesarios para estimar un modelo estadístico se encuentran distribuidos entre entidades que no pueden o quieren compartirlos por razones de confidencialidad. Los protocolos seguros de dos partes (2-Party Computation, 2PC) permiten que dos participantes calculen conjuntamente el resultado de una función estadística que tenga como entradas los datos privados de cada uno, sin revelar información adicional.

En estadística multivariante, el término profundidad hace referencia al grado de centralidad de un punto respecto de una nube en su misma dimensión. Un método fundamental es la profundidad simplicial, que se define como la proporción de símplices (por ejemplo, triángulos en el plano) formados por subconjuntos de puntos de la nube que contienen al punto de interés. Esta medida puede generalizarse a cualquier dimensión mediante el uso de envolventes convexas. Encontraréis más información sobre estas técnicas en el pdf adjunto y se deberán utilizar para completar el reto.

El Reto:
Dos entidades disponen de sendos conjuntos de datos bidimensionales (puntos en el plano). Para un punto fijado de antemano (por ejemplo el origen de coordenadas) el reto consiste en calcular el número de triángulos cuyos vértices son tres puntos de la muestra conjunta que contienen dicho punto fijo, sin desvelar información alguna sobre los puntos (datos) de sus respectivas muestras. Desean además, generalizar el procedimiento para considerar las envolventes convexas de subconjuntos de k≥3 puntos.

Descargar Reto

RETO 11 - Computación segura entre 2 partes de profundidades en estadística (2PC4SD)

RETO 12 - Encuentra tu perfect match

RETO 12

RETO 12 - Encuentra tu perfect match

Autor: M. Isabel González Vasco
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 12" a: mariaisabel.gonzalez@uc3m.es

La Intersección Privada de Conjuntos (Private Set Intersection, PSI) es una primitiva criptográfica que permite a dos o más partes computar la intersección de conjuntos de datos privados sin revelar información adicional sobre los elementos fuera de dicha intersección.

En este reto se propone diseñar un protocolo para una aplicación de búsqueda de amigos en la que cada usuario tiene asociado un conjunto de atributos que describen sus gustos y características principales. Se quieren conseguir las siguientes funcionalidades:

  • A. Identificación de usuarios afines: Cada usuario puede fijar un umbral de modo que si habla con otro usuario , sólo recibirá el identificador personal del mismo (hará match) si comparten al menos dicho umbral de atributos.
  • B. Sesiones de tres usuarios: Si tres usuarios quieren comprobar si son suficientemente afines, pueden ejecutar una sesión conjunta hablando de manera anónima y tras esa sesión recibirán, respectivamente, los identificadores necesarios para establecer contacto entre ellos, si y sólo si la intersección entre cualesquiera 2 de ellos contiene al menos tantos atributos como la mitad del número de atributos de cualquiera de ellos y la intersección entre los tres es, al menos, un quinto de ese valor.

Las soluciones al reto pueden utilizar un protocolo PSI de entre los descritos en este tutorial, directamente o modificado de modo que se minimice el número de mensajes que los usuarios han de enviarse y las rondas de comunicación necesarias para completar el proceso.

Descargar Reto
RETO 13

RETO 13 - El Mensajero Digital: De la Paloma al USB Cifrado

Autor: Javier Morales
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 13" a: javiermorales19@me.com

"El medio cambia, el mensaje se adapta, pero el secreto permanece."

Desde que el ser humano tiene algo que ocultar, ha buscado el mensajero perfecto. En la antigua Grecia confiábamos en las palomas y sus cilindros de papiro; en la Gran Guerra, en perros, palomas que esquivaban trincheras; hoy, el mensajero es de silicio y viaja en el bolsillo: en particiones cifradas.

Pero cuidado, porque un mensaje interceptado es solo un montón de ruido si no tienes la llave... o si no sabes mirar a través de la historia.

El Hallazgo: una partición cifrada.

Se ha interceptado una imagen de disco con un formato propietario. No es una imagen normal; es una estructura blindada por capas:

  • MBR Personalizado (512 bytes):
  • Un archivo usb_ctf.img protegido con ChaCha20-Poly1305, el estándar moderno de cifrado autenticado.
El reto es diseccionar la imagen usb_ctf.img, reconstruir la contraseña maestra y liberar la flag oculta.

¿Qué necesitas?
La contraseña está basada en la dirección MAC
  • Bacon cipher → 00101 00000
  • Morse code → ----- -..
  • Rotate rigth 1 → dr
  • rot-13 rotate numbers 96
  • Fuerza bruta
  • Fuerza bruta
Puede resultar de utilidad utilizar CyberChef.

Los datos que se adjuntan son el programa de cifrado ctf_image_creator.py y el archivo usb_ctf.img.

Descargar Reto

RETO 13 - El Mensajero Digital: De la Paloma al USB Cifrado

RETO 14 - Criptografía en equipo: el reto del acuerdo de clave multiusuario

RETO 14

RETO 14 - Criptografía en equipo: el reto del acuerdo de clave multiusuario

Autor: María Dolores Gómez Olvera
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 14" a: maria.gomez.olvera@urjc.es

En el ámbito de la criptografía moderna, el establecimiento seguro de claves es un componente fundamental para garantizar la confidencialidad y la integridad de la información intercambiada a través de redes digitales. Tradicionalmente, los protocolos de acuerdo de clave, como el clásico protocolo de Diffie-Hellman, han sido diseñados para la comunicación entre dos participantes. Sin embargo, en entornos actuales donde la comunicación grupal es muy frecuente (en sistemas colaborativos, videoconferencias, aplicaciones de mensajería, …) surge la necesidad de extender estos mecanismos a múltiples usuarios de manera eficiente y segura.

Este reto propone el estudio de las formas de extender un protocolo de acuerdo de clave en un grupo de usuarios. La forma en que los participantes están organizados y conectados, el número de mensajes intercambiados, y la forma en la que esto sucede afecta a la eficiencia del protocolo, y la resiliencia ante ataques.

El objetivo del reto es examinar cómo la estructura de comunicación impacta en el rendimiento y en las propiedades de seguridad del sistema.

Una idea para comenzar este reto puede ser la siguiente: observa cómo se aplicaría cada una de las posibles extensiones de esta referencia (las llamadas GSAP-1, GSAP-2 y GSAP-3) a un grupo de 4 usuarios.

¿Cuál es más eficiente? ¿Puedes encontrar otras formas de que los 4 usuarios lleguen a una clave común?

RETOS 2025
Mission Alpha

RETO 1 - ¡Sé resolverlo!

Autor: M. Isabel González Vasco
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 1" a: mariaisabel.gonzalez@uc3m.es

Las pruebas de conocimiento cero (Zero Knowledge Proofs -ZKP) son herramientas criptográficas para demostrar que se conoce un valor (o proceso) sin revelar información sobre el mismo. En este artículo de El País se explica un sencillo método para demostrar con estas técnicas que se conoce la solución de un SUDOKU (ver el artículo científico en el que se presenta este ejemplo, Gradwohl, Naor, Pikas y Rothblum (2007)).En este documento puedes ver otros ejemplos de ZKP para juegos y pasatiempos como Rush Hour o el cubo de Rubik.

¿Se te ocurre alguna idea para demostrar en conocimiento cero que conoces la solución a un problema o acertijo diferente? Puede ser un tipo concreto de crucigrama, un tablero de ajedrez para el que se persigue una solución con un número fijo de movimientos o incluso una sopa de letras...

Descargar Reto 1

Reto 1 - !Sé Resolverlo!

Reto 2 - ¿Quién es más rico?

RETO 2

RETO 2 - ¿Quién es más rico?

Autor: Ángel Pérez del Pozo
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 2" a: angel.perez@urjc.es

Supongamos que hay un grupo de personas, cada una de ellas en posesión de cierto dato numérico o input que desea mantener en privado. Con esta restricción, dichas personas desean calcular cierta función de sus datos de entrada. Pensemos, por ejemplo, en 20 amigos que quieren poner en común la media aritmética de sus sueldos anuales, pero sin revelar a los demás la cuantía individual de cada salario. Este tipo de situaciones son fácilmente resolubles si se cuenta con una entidad a la que se suele denominar “tercera parte de confianza”, alguien externo a quien puedan enviar de manera individual sus datos, con la certeza de que va a realizar el cálculo correctamente, comunicar a todos el resultado y, además, ser extremadamente discreto: no filtrar ninguna información a nadie sobre los inputs que ha recibido.

Desafortunadamente, es una asunción poco realista que se va a encontrar esa tercera parte de confianza cada vez que se necesite. Por ello los criptógrafos han desarrollado los protocolos de computación multiparte (habitualmente se abrevia como MPC, del inglés multi-party computation), que tienen como finalidad calcular el output deseado sin la intervención de ningún agente externo al grupo de individuos que proporcionan los inputs. Uno de los ejemplos más famosos es el problema de Yao de los millonarios: dos personas con una gran fortuna quieren saber cuál de los dos es más rico pero no quieren revelar al otro la cuantía de su fortuna.

Hay múltiples soluciones al problema de Yao, algunas de las cuáles utilizan herramientas criptográficas complejas. Pero hay también una línea de protocolos MPC, diseñados sobre todo con fines ilustrativos y divulgativos, que utilizan simplemente cartas de una baraja convencional y manipulación de las mismas. Se puede encontrar una de ellas, así como información adicional sobre los protocolos basados en el siguiente artículo: Miyahara, D., Hayashi, Y. I., Mizuki, T., & Sone, H. (2020). Practical card-based implementations of Yao's millionaire protocol. Theoretical computer science, 803, 207-221.

En este reto volvemos al problema que hemos mencionado primero y os pedimos el diseño de un protocolo MPC que calcule de manera segura la media aritmética de los sueldos.

Descargar Reto 2
RETO 3

RETO 3 - Descifrando Comunicaciones (Actualizado)

Autor: Lorena González Manzano
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 3" a: lgmanzan@inf.uc3m.es

Un hash es una función criptográfica que transforma una entrada de datos (de cualquier tamaño) en una salida fija, llamada valor hash o resumen, que representa unívocamente a los datos originales. Así, hash tiene las siguientes características:

  • Determinística: La misma entrada siempre produce el mismo valor hash.
  • Salida de tamaño fijo: Independientemente del tamaño de la entrada, la salida tiene un tamaño fijo (por ejemplo, 256 bits en SHA-256).
  • Irreversible: Es prácticamente imposible reconstruir la entrada original a partir del valor hash.
  • Colisiones mínimas: Es poco probable que dos entradas distintas generen el mismo valor hash (colisión).
  • Eficiente: La computación del hash debe ser rápida incluso para datos grandes.
Por otro lado, un algoritmo de cifrado es un método matemático utilizado para transformar datos legibles (texto en claro) en un formato ilegible (texto cifrado) para proteger su confidencialidad. Solo las personas autorizadas, con la clave adecuada, pueden revertir esta transformación mediante un proceso de descifrado. Además, podemos hablar de algoritmos simétricos (e.g. Des, triple DES, etc.) en los que se utiliza la misma clave para cifrar y descifrar; y algoritmos asimétricos (e.g. AES, ECC, etc.) en los que se utiliza una clave para cifrar y otra distinta para descifrar. Para realizar pruebas de cifrado puede utilizar aplicaciones online como devglan.

Finalmente, es importante tener en cuenta la diferencia entre codificar y cifrar. Mientras que en el primer caso se agrupan los bits del mensaje de distinto modo (e.g. HEX, UTF-8, etc.) pero el mensaje es legible, en el segundo caso, cuando se cifra se aplica una clave para ocultar el mensaje y el resultado puede estar en distintos tipos de codificaciones.

El Reto:
Se han interceptado los siguientes mensajes. ¿Podrías explicar qué son y, si es posible obtener un texto en claro?
MENSAJE1
MENSAJE2
MENSAJE3

RETO - 3 - Descifrando Comunicaciones (Actualizado)

Reto 4 - Esteganografía ¿Qué se esconde?

RETO 4

Reto 4 - Esteganografía ¿Qué se esconde?

Autor: Jose María de Fuentes
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 4" a: jfuentes@inf.uc3m.es

La esteganografía es la técnica de ocultar información dentro de otro medio, como imágenes, videos, audios o texto, de manera que su existencia pase desapercibida. A diferencia de la criptografía, cuyo objetivo es proteger el contenido de un mensaje mediante cifrado, la esteganografía busca disimular la presencia del mensaje. De hecho, para dificultar el proceso de encubrimiento, los mensajes ocultos se suelen cifrar con antelación, de modo que la confidencialidad del mensaje no se vea afectada aun siendo obtenido por un tercero. Hay múltiples técnicas esteganográficas (ver artículo Mandal, P. C., Mukherjee, I., Paul, G., Chatterji, B. N. (2022). Digital image steganography: A literature survey. Information sciences, 609, 1451-1488), pero una aplicación comúnmente utilizada para este propósito es OpenPuff.

Se sabe que hay información oculta en, al menos, una de las siguientes imágenes. ¿Cómo se puede obtener la información oculta?

Descargar Imágenes
RETO 5

RETO 5 - El desafío del borrado seguro de claves

Autor: Honorio Martín
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 5" a: hmartin@ing.uc3m.es

Al finalizar la vida útil de los dispositivos electrónicos que han manejado información sensible, se deben seguir una serie de procedimientos estándar para la eliminación de los datos almacenados en los mismos (NIST SP 800-88). En el caso particular de las claves criptográficas, de acuerdo con la guía CCN-STIC 804 se establece que salvo excepciones (auditoría o retención), estas deben ser eliminadas. En el caso de claves guardadas en memorias, se puede optar por alguno de los mecanismos lógicos o físicos típicos para tales fines. Pero, ¿cómo aplicamos estos principios a tecnologías emergentes como las funciones físicas no clonables (Physical Unclonable Functions - PUFs)?

¿Qué es un PUF?
Un PUF es una característica física única de un dispositivo que se utiliza para generar identificadores o claves criptográficas. Estos identificadores se derivan de la aleatoriedad inherente de los materiales o componentes del dispositivo.

Desafíos del borrado en PUFs
Al depender la clave de una característica física, el borrado lógico o los típicos mecanismos físicos (campos magnéticos) usados para el borrado de discos duros no son una solución a considerar. En este reto se propone investigar sobre mecanismos de bajo coste que permitan realizar un “borrado” seguro del PUF al final de su vida útil. Concretamente, se propone investigar el uso de fenómenos de envejecimiento (NBTI y HCI) para el borrado final del PUF.

Descargar Reto

RETO 5 - El desafío del borrado seguro de claves

RETO 6 - ¡Domina los ataques de canal lateral!

RETO 6

RETO 6 - ¡Domina los ataques de canal lateral!

Autor: Marta Portela
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 6" a: mportela@ing.uc3m.e

En la implementación de algoritmos criptográficos como AES, no basta con garantizar su fortaleza matemática. Es crucial evaluar y reforzar su resistencia frente a ataques que explotan la implementación física, como los ataques de canal lateral.

¿Qué es un ataque de canal lateral?
Un ataque de canal lateral es un tipo de ataque que aprovecha información no intencionada generada durante la ejecución de un algoritmo criptográfico, como consumo de energía, tiempos de ejecución o emisiones electromagnéticas. Con técnicas avanzadas, esta información permite recuperar claves secretas sin comprometer el diseño criptográfico del algoritmo.

El reto: Análisis de trazas
En este reto, se proporcionará un conjunto de trazas de consumo de energía capturadas con la plataforma ChipWhisperer-Lite durante la ejecución de un cifrado AES en un microcontrolador Cortex-M4. Estas trazas corresponden a ejecuciones con diferentes textos planos y claves. Tu objetivo es analizar estas trazas y recuperar la clave secreta utilizada.

Elementos del reto
Se entregará un conjunto de mediciones de consumo de energía capturadas mediante el ChipWhisperer-Lite para una implementación software de AES-128.Se proporcionará información sobre la estructura de las trazas y la información necesaria (ej: texto plano correspondiente a cada traza).

Objetivo del reto
Recuperar la clave secreta utilizada en las trazas proporcionadas mediante técnicas de análisis de canal lateral. Se valorará el uso de un menor número de trazas para la obtención de la clave, la explicación de la metodología utilizada y su novedad.

Referencia adicional
El DPA Contest ha sido una referencia clave para diseñar este reto, proporcionando ejemplos y procedimientos para evaluar implementaciones frente a ataques de canal lateral. Al final de la página enlazada, se encuentran algunas referencias básicas sobre ataques de canal lateral

Descargar Reto
RETO 7

RETO 7 - ¡A por el hash!

Autor: Ana Isabel Gómez
Enviar ideas y propuestas con el asunto "CryptoClub-RETO 7" a: ana.gomez.perez@urjc.es

Durante 2017, el periódico El Mundo reportó un fallo de seguridad en el protocolo que se utilizaba para proteger los datos personales del censo de personas que se pretendía que votaran en el referéndum convocado en Cataluña.

El protocolo era el siguiente:
La información de cada votante se introduce en una función resumen o «hash» Se tomaban los siguientes datos como entrada: los últimos cinco dígitos del DNI, la letra del NIF, la fecha de nacimiento y el código postal. Después, se aplicaba la función Hash 1714 veces. La mesa electoral podía consultar la lista de hashes, que era distribuida por un protocolo seguro a través de distintas páginas web con acceso a la base de datos del censo. Cualquier usuario puede servir para almacenar la base de datos cifrada del censo y así se distribuye para poder seguir accediendo a ella para votar.

El objetivo de este ataque es recuperar información de los votantes con propósitos maliciosos como posibles fraudes dirigidos a éstos. Ver este artículo. Aunque el INE publica información de cada provincia sobre sus habitantes, ésta está anonimizada para no poder identificar a personas en concreto.

En este reto proponemos estudiar un protocolo para la votación de los censados en el distrito centro de Madrid , en la que puedan votar para decidir sobre el cambio de localización de la estatua del Oso y el Madroño. En este caso para proteger los datos de los votantes, la lista ha sido cifrada de forma análoga y se ha utilizado la función hash SHA-256, aplicándola 1808 veces.

La información de cada votante son su nombre y apellido, cuatro últimas cifras del DNI, fecha de nacimiento y código postal.

Los datos que se proveen son:


La solución tiene que detallar los valores recuperados y la estrategia seguida.

RETO 7 - ¡A por el hash!