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 Pais 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...
Reto planteado por M. Isabel González Vasco. Enviar ideas y propuestas a mariaisabel.gonzalez@uc3m.es con el asunto "CryptoClub - RETO 1"
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.
Reto planteado por Ángel Pérez del Pozo. Enviar ideas y propuestas a angel.perez@urjc.es con el
asunto "CryptoClub - RETO 2".
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 https://toolplaza.app/es/tools/cipher
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.
Reto:
Se han interceptado los siguientes mensajes. ¿Podrías explicar qué son y, si es posible obtener un texto en claro?
MENSAJE1: 811C91D4E010752A98BEE929041564725BF492B1B98CC15C023539F9F66804881DAE8A4CF0B6D80CA88AD935F08C117D63A54260D437C3E45602BFC4A95F0B4B
MENSAJE2:
53616C7465645F5F0ED0924250E8BAFF3E10232E649D4A0AB11ECE1F69DEBAFDCE7ECDE884ACE6C20C086B0A0EBAAC3BA1F3E6C6892D8C7A
Reto planteado por Lorena González Manzano. Enviar ideas y propuestas a lgmanzan@inf.uc3m.es
con el asunto "CryptoClub - RETO 3".
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 [1], pero una aplicación comúnmente utilizada para este propósito es OpenPuff
(https://embeddedsw.net/OpenPuff_Steganography_Home.html).
[1] Mandal, P. C., Mukherjee, I., Paul, G., & Chatterji, B. N. (2022). Digital image
steganography: A literature survey. Information sciences, 609, 1451-1488.
Se sabe que hay información oculta en, al menos, una de las imágenes de la izquierda. ¿Cómo se puede obtener la información oculta?
Reto planteado por Jose María de Fuentes. Enviar ideas y propuestas a jfuentes@inf.uc3m.es
con el asunto "CryptoClub - RETO 4".
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.
Reto planteado por Honorio Martín. Enviar ideas y propuestas a hmartin@ing.uc3m.es con el asunto "CryptoClub - RETO 5".
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).
Instrucciones específicas para el envío de las soluciones.
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.
Reto planteado por Marta Portela. Enviar ideas y propuestas a mportela@ing.uc3m.es con el asunto "CryptoClub - RETO 6"
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 referendum 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 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 sus nombre y apellido, cuatro últimas cifras del DNI, fecha de nacimiento y código postal.
Los datos que se proveen son:
La lista de datos cifrados en censo-Madrid.txt
La implementación Python del algoritmo de cifrado Cifrado_Madrid.py
La solución tiene que detallar los valores recuperados y la estrategia seguida.
Reto planteado por Ana Isabel Gómez. Enviar ideas y propuestas a ana.gomez.perez@urjc.es con el asunto "CryptoClub - RETO 7"