Proyecto CLCript: Cuadernos de Laboratorio de Criptografía

Puedes utilizar este software de prácticas, libros y diverso material multimedia (Thoth - intypedia) generados en Criptored, todos de libre distribución en Internet, para demostrar que entiendes y sabes cómo trabaja la criptografía, obteniendo la nueva certificación profesional CriptoCert Certified Crypto Analyst, reconocida por el Centro Criptológico Nacional CCN de España en esta Nota de Prensa y disponible desde el mes de abril de 2019 en el sitio web de CriptoCert.

Escuela Técnica Superior de Ingeniería de Sistemas Informáticos
Universidad Politécnica de Madrid - España


  • Autor: Dr. Jorge Ramió Aguirre

  • Inicio del proyecto: 22 de mayo de 2018
  • Ultima actualización: 11 de octubre de 2019

  • Resumen: Cuadernos de Laboratorio de Criptografía CLCript, es un proyecto de CriptoRed para la difusión de la criptografía, que consta de un conjunto de prácticas de laboratorio con algoritmos criptográficos, que se presentan en archivos PDF independientes.
  • En dichos archivos, además del texto de las propias prácticas, se incluyen capturas de pantalla de los resultados obtenidos, lo que permite comprobar el correcto desarrollo de las mismas.
  • Su publicación tendrá una cierta periodicidad, pero no estará sujeta a fechas.
  • En todas las prácticas se usará software de laboratorio de libre distribución, preferentemente de desarrollo propio.
  • Cada práctica contará con un conjunto de preguntas que permitirán comprobar personalmente si se ha entendido la finalidad de dicha actividad, las cuales no serán contestadas ni publicadas en CriptoRed.
  • De un tema en particular, e.g. DES, AES, LFSR, MD5, SHA-1, RSA, etc., podrán generarse distintas prácticas, dependiendo del objetivo que se desee alcanzar en cada una de ellas.
  • Lo que se pretende con estos cuadernos es que la ayuda para la realización de las prácticas sea "sólo la estrictamente necesaria", de forma que el trabajo en realidad lo deba realizar quien en realidad se enfrenta a ellas. Por este motivo, salvo esas capturas de pantalla, no se entregarán las soluciones a las prácticas.
  • Como es posible que las entregas se vayan actualizando, e incluso puedan contar con nuevo contenido, se guardará la fecha de la revisión del archivo en esta misma página de descarga, así como en el propio documento de práctica.

  • CLCript 17: Cifrando en flujo con A5 y RC4
    Próxima publicación.

  • CLCript 16: Cifrando en flujo con m-secuencias y ataque Berlekamp-Massey
    Práctica sobre la cifra con un LFSR primitivo que genera una m-secuencia, ataque de Berlekamp-Massey y secuencias con dos LFSR conectados mediante suma xor y multiplicación.
    Fecha de la última actualización: 11/10/19
    Objetivos: Saber cómo se cifra y cómo se descifra en flujo bit a bit, textos y archivos. Comprobar el ataque de Berlekamp-Massey a las m-secuencias. Comprender cómo se generan secuencias cifrantes con mayor complejidad lineal, usando más de un registro.
    Número de páginas: 10
    Descarga del archivo PDF: CLCript 16: Cifrando en flujo con m-secuencias y ataque Berlekamp-Massey

  • CLCript 15: Registros de desplazamiento NLFSR y LFSR con FlujoLab
    Práctica sobre la generación de secuencias cifrantes con registros NLFSR y LFSR
    Fecha de la última actualización: 23/07/19
    Objetivos: Entender cómo funcionan los registros de desplazamiento con realimentación no lineal NLFSR (Nonlinear Feedback Shift Register) y realimentación lineal LFSR (Linear Feedback Shift Register). Comprobar el comportamiento de los registros LFSR cuando el polinomio asociado es de tipo factorizable, irreducible y primitivo. Comprobar los postulados de Golomb en las secuencias de periodo máximo, m-secuencias.
    Número de páginas: 16
    Descarga del archivo PDF: CLCript 15: Registros de desplazamiento NLFSR y LFSR con FlujoLab

  • CLCript 14: Curiosidades y Falsos Positivos en Ataques por Paradoja del Cumpleaños a RSA
    Práctica sobre curiosidades y falsos positivos en ataques por paradoja del cumpleaños a RSA con software genRSA
    Fecha de la última actualización: 16/05/19
    Objetivos: Observar la existencia de falsos positivos en los ataques por paradoja de cumpleaños en RSA y comprobar lo que significan. Observar y comprobar que los falsos positivos en un ataque por la paradoja del cumpleaños a RSA tienden a ubicarse en torno a las inmediaciones de los números no cifrables NNC, y que las colisiones producidas en el ataque parecen mostrar un comportamiento peculiar.
    Número de páginas: 15
    Descarga del archivo PDF: CLCript 14: Curiosidades y Falsos Positivos en Ataques por Paradoja del Cumpleaños a RSA

  • CLCript 13: Colisiones en hashes MD5 y SHA-1
    Práctica de colisiones en hashes MD5 y SHA-1 con software diverso
    Fecha de la última actualización: 06/05/19
    Objetivos: Comprobar el efecto de avalancha o difusión de bits en MD5. Comprobar el efecto de avalancha o difusión de bits en SHA-1. Comprobar colisiones en MD5. Comprobar colisiones en SHA-1.
    Número de páginas: 14
    Descarga del archivo PDF: CLCript 13: Colisiones en hashes MD5 y SHA-1
    Descarga de otros archivos para la práctica:
    Imágenes con colisión en MD5
    PDFs con colisión en MD5

  • CLCript 12: Ataques por fuerza bruta al DES y DES Challenge III
    Práctica de ataques por fuerza bruta al DES y DES Challenge III con el software safeDES
    Fecha de la última actualización: 23/09/19
    Objetivos: Realizar un ataque por fuerza bruta al DES en un espacio de claves delimitado, con una sola máquina y operando en modo monoproceso. Comprobar las mejoras que se producen en el tiempo de cómputo en un ataque por fuerza bruta al DES cuando una máquina opera en modo multiproceso. Realizar un ataque distribuido por fuerza bruta al DES en una red dentro de un espacio de claves delimitado y comprobar que se cumple el principio de divide y vencerás. Comprobar los resultados del ataque realizado en el DES Challenge III en el año 1999, el desafío a una cifra en modo CBC con un software que opera en modo ECB.
    Se incluye enlace a un archivo histórico sobre el DES Challenge.
    Número de páginas: 18
    Descarga del archivo PDF: CLCript 12: Ataques por fuerza bruta al DES y DES Challenge III

  • CLCript 11: Anillos en ataque por cifrado cíclico a RSA con RingRSA
    Práctica de anillos en ataque por cifrado cíclico a RSA con el software RingRSA
    Fecha de la última actualización: 06/05/19
    Objetivos: Obtener con el software RingRSA los anillos que se forman en un ataque por cifrado cíclico para claves pequeñas, de 12 hasta 30 bits. Comprobar los valores que componen esos anillos con el software SAMCript. Realizar ataques por cifrado cíclico a un criptograma usando la clave pública de la víctima para descubrir un secreto cifrado con RSA. Comprobar que, aunque las claves sean de igual tamaño y muy similares, el número secreto que se va a cifrar puede encontrarse en anillos de muy diferentes longitudes.
    Número de páginas: 7
    Descarga del archivo PDF: CLCript 11: Anillos en ataque por cifrado cíclico a RSA con RingRSA

  • CLCript 10: Ataque por cifrado cíclico a RSA con genRSA v2.1
    Práctica de ataque por cifrado cíclico a RSA con el software genRSA v2.1
    Fecha de la última actualización: 06/05/19
    Objetivos: Comprobar con el software genRSA que el ataque mediante el cifrado cíclico permite descubrir un secreto cifrado con RSA, conociendo solamente la clave pública de la víctima. Observar la generación de anillos durante el ataque por cifrado cíclico con genRSA. Comprobar la existencia de esos anillos con el software SAMCript. Comprobar que, para claves similares, un número secreto al azar que se va a cifrar puede encontrarse en anillos de muy diferentes longitudes.
    Número de páginas: 8
    Descarga del archivo PDF: CLCript 10: Ataque por cifrado cíclico a RSA con genRSA v2.1

  • CLCript 09: Matemáticas discretas en criptografía con SAMCript
    Práctica de matemáticas discretas en criptografía con el software SAMCript
    Fecha de la última actualización: 06/05/19
    Objetivos: Realizar las operaciones modulares más características en la criptografía, con números pequeños para una observación cómoda e intuitiva, y con números muy grandes para comprobar las operaciones de algoritmos estándar en la criptografía actual. Repasar, mediante ejemplos, conceptos de matemática discreta, inversos, raíces primitivas, problema de la factorización entera y problema del logaritmo discreto.
    Número de páginas: 22
    Descarga del archivo PDF: CLCript 09: Matemáticas discretas en criptografía con SAMCript

  • CLCript 08: Ataque por paradoja de cumpleaños a RSA, parte 2
    Práctica de ataque por paradoja del cumpleaños con el software LegionRSA
    Fecha de la última actualización: 06/05/19
    Objetivos: Observar cómo se realiza un ataque por la paradoja del cumpleaños a claves RSA con el software LegionRSA. Observar con LegionRSA cómo funciona un ataque por la paradoja del cumpleaños a claves RSA en red o paralelo y comprobar que se cumple el principio de divide y vencerás. Apreciar la seguridad del algoritmo RSA basada en el uso de números primos muy grandes.
    Número de páginas: 14
    Descarga del archivo PDF: CLCript 08: Ataque por paradoja de cumpleaños a RSA, parte 2

  • CLCript 07: Ataque por paradoja de cumpleaños a RSA, parte 1
    Práctica de ataque por paradoja del cumpleaños con el software genRSA v2.1
    Fecha de la última actualización: 06/05/19
    Objetivos: Comprobar con genRSA v2.1 que si un ataque a RSA por la paradoja del cumpleaños prospera, éste encuentra la clave privada, una clave privada pareja o bien un falso positivo. Comprobar el punto anterior para una clave RSA pequeña, introduciendo todos los posibles valores de entrada. Observar cómo se realiza un ataque por la paradoja del cumpleaños a claves RSA de hasta 50 bits con el software genRSA v2.1.
    Número de páginas: 9
    Descarga del archivo PDF: CLCript 07: Ataque por paradoja de cumpleaños a RSA, parte 1

  • CLCript 06: Números no cifrables en RSA
    Práctica de números no cifrables en RSA con el software genRSA v2.1
    Fecha de la última actualización: 06/05/19
    Objetivos: Observar la cantidad de NNC de una clave RSA en función de los primos p y q. Comprobar que no es una tarea sencilla encontrar los NNC si el módulo es grande. Comprobar que los NNC tienen una distribución especial dentro del cuerpo n. Comprobar que con primos seguros se minimiza la cantidad de NNC. Comprobar que la cantidad máxima de NNC puede ser el cuerpo de cifra completo. Comprobar que los NNC no se traducen en una vulnerabilidad en RSA. Observar curiosidades y particularidades de los NNC en RSA.
    Número de páginas: 11
    Descarga del archivo PDF: CLCript 06: Números no cifrables en RSA

  • CLCript 05: Claves parejas en RSA
    Práctica de claves parejas en RSA con el software genRSA v2.1
    Fecha de la última actualización: 06/05/19
    Objetivos: Observar las claves privadas parejas y las claves públicas parejas de una clave RSA. Comprobar que dichas claves realizan la misma función que sus claves directas. Comprobar que este fenómeno no se traduce en una vulnerabilidad en RSA. Comprobar que con el uso de primos seguros se minimiza la cantidad de estas claves parejas. Comprobar que las claves privadas parejas se generan al formarse anillos en la operación de cifra. Observar además que, en función del número secreto que se vaya a cifrar, pueden formarse anillos de cifra más pequeños donde aparecen nuevos números que realizan la misma función que la clave privada o que una clave privada pareja, sin ser éstos.
    Número de páginas: 12
    Descarga del archivo PDF: CLCript 05: Claves parejas en RSA

  • CLCript 04: Generación de claves RSA con genRSA v2.1
    Práctica de generación de claves RSA con el software genRSA v2.1
    Fecha de la última actualización: 06/05/19
    Objetivos: Comprobar con el software de laboratorio genRSA v2.1 cómo se genera una clave RSA. Generar claves RSA en formato decimal y hexadecimal, de diferentes tamaños. Observar los valores típicos de los parámetros en claves RSA reales. Comprobar la velocidad con la que OpenSSL genera claves RSA con números muy grandes.
    Número de páginas: 7
    Descarga del archivo PDF: CLCript 04: Generación de claves RSA con genRSA v2.1

  • CLCript 03: Cifrado, descifrado y criptoanalisis de Vigenère
    Práctica de cifrado, descifrado y criptoanalisis de Vigenère con el software Criptoclásicos v2.1
    Fecha de la última actualización: 06/05/19
    Objetivos: Comprobar cómo se cifra y se descifra con el algoritmo por sustitución polialfabética de Vigenère en mod 27 y mod 191. Realizar un criptoanálisis a la cifra de Vigenère mediante el método de Kasiski y comprobar los pasos que éste realiza.
    Número de páginas: 5
    Descarga del archivo PDF: CLCript 03: Cifrado, descifrado y criptoanálisis de Vigenère

  • CLCript 02: MD5 y SHA-1: relleno y endianess
    Práctica de MD5 y SHA-1: relleno y endianess con el software CriptoRES
    Fecha de la última actualización: 06/05/19
    Objetivos: Observar cómo almacena la información en formato little endian la función hash MD5. Observar cómo almacena la información en formato big endian la función hash SHA-1. Observar cómo se indica el relleno y el tamaño del archivo en los hashes MD5 y SHA-1
    Número de páginas: 3
    Descarga del archivo PDF: CLCript 02: MD5 y SHA-1: relleno y endianess

  • CLCript 01: DES y AES: cifra, rellenos y modos de cifra
    Práctica de DES y AES: cifra, rellenos y modos de cifra con software safeDES y AESPhere
    Fecha de la última actualización: 06/05/19
    Objetivos: Comprobar el cifrado en modos ECB y CBC. Realizar el cifrado y descifrado de textos y archivos. Observar la deficiencia del cifrado ECB que muestra en el criptograma las repeticiones de bloques del archivo en claro, editando los archivos con un editor hexadecimal. Observar dos tipos de relleno, zero padding usado en el algoritmo DES y PKCS7 usado en el algoritmo AES.
    Número de páginas: 12
    Descarga del archivo PDF: CLCript 01: DES y AES, rellenos y modos de cifra
    Descarga del archivo cifrado: archivo cifrado.cif

  • CLCript 00: Códigos y tablas de uso frecuente en criptografía
    Códigos y tablas de uso frecuente en criptografía
    Fecha de la última actualización: 06/05/19
    Incluye: Código ASCII de nivel bajo (primeros 128 caracteres): carácter, binario, decimal y hexadecimal; Código ASCII de nivel alto, ASCII extendido (total 256 caracteres): carácter, binario, decimal y hexadecimal; Caracteres ASCII de control (bytes 0x 00 a 1F); Código Base 64; Código ISO/IEC 8859-1. Algunos caracteres comunes del ISO Latín 1; Código hexadecimal / binario; Código del alfabeto español módulo 27 y sus inversos multiplicativos; Cajas S del algoritmo DES; Tabla función SubBytes del algoritmo AES; Tabla función InvSubBytes del algoritmo AES; Ejemplo AddRoundKey, SubBytes y ShiftRows del algoritmo AES; Algoritmo Extendido de Euclides AEE para el cálculo de inversos; Algoritmo de Exponenciación Rápida AER para la exponenciación modular.
    Número de páginas: 5
    Descarga del archivo PDF: CLCript 00: Códigos y tablas de uso frecuente en criptografía

    Para mayor información, contacte con: jramio@etsisi.upm.es

    IMPORTANTE: CriptoRed sólo se hace responsable con contenido de estos documentos si han sido descargados directamente desde el servidor de la Red Temática de Criptografía y Seguridad de la Información Criptored.