Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Manual de Referencia: keymaker

Keymaker — Gestor de Cifrado, Integridad y Desbloqueo Temporal para Paquetes de Examen

Keymaker — Gestor de Cifrado, Integridad y Desbloqueo Temporal para Paquetes de Examen


1. Propósito y Filosofía Pedagógica

La herramienta keymaker provee la confidencialidad, autenticidad e integridad de los enunciados de examen, pautas de corrección docente y bancos de preguntas distribuidos en el campus virtual o repositorios de GitHub Classroom:

  1. Anti-Filtraciones con Time-Lock: Los paquetes .ripkg.enc se distribuyen con anticipación pero permanecen inaccesibles hasta el segundo exacto del inicio del examen.

  2. Autenticidad comprobada por Firma Digital: Las firmas Ed25519 certifican que los enunciados y starter kits provienen de la cátedra y no fueron alterados en tránsito.

  3. Control Colegiado con Shamir (kk de nn): La pauta oficial de corrección solo puede ser abierta con el consenso de al menos kk docentes del equipo.

  4. Individualización por Legajo: Derivación HKDF para paquetes de examen personalizados por alumno.


2. Instalación y Verificación del Entorno

2.1 Requisitos Previos del Sistema

Ubuntu / Debian
Arch Linux / Manjaro
Fedora / RHEL
macOS (Homebrew)

sudo apt update && sudo apt install -y build-essential libssl-dev python3-pip uv


2.2 Métodos de Instalación

uv tool (Recomendado)
pip / venv

uv tool install . --editable


2.3 Verificación con doctor

keymaker doctor

3. Referencia Completa de Comandos CLI

Comando / SintaxisDescripción y Efecto
keymaker pack <origen> -o <out.ripkg.enc> -p <pass>Empaqueta y cifra un examen en formato .ripkg.enc.
keymaker unpack <bundle.enc> -o <dir> -p <pass>Descifra y extrae el contenido verificando integridad y Time-Lock.
keymaker gen-keys [-p catedra] [-o ./keys]Genera un nuevo par de claves asimétricas Ed25519 (.key y .pub).
keymaker sign <archivo> -k <priv.key>Firma digitalmente un archivo con la clave privada de cátedra.
keymaker verify <archivo> -s <sig> -p <pub.key>Valida la firma digital Ed25519 de un paquete o enunciado.
keymaker split-secret <texto> -k 3 -n 5Divide un secreto en nn partes de Shamir requiriendo kk para abrir.
keymaker combine-shares <s1> <s2> ...Reconstruye un secreto a partir de kk partes de Shamir.
keymaker audit-passphrase "<frase>"Audita la entropía y robustez criptográfica de una contraseña.
keymaker checksum <archivo>Calcula el digest SHA-256 de un archivo para control de integridad.
keymaker doctorDiagnóstico del subsistema criptográfico y OpenSSL.

4. Tutorial Paso a Paso con Ejemplos Reales

Generación de Claves de Cátedra y Firma del Examen

# 1. Generar par de claves Ed25519 de cátedra
keymaker gen-keys -p parcial1 -o ./claves

# 2. Empaquetar y cifrar el examen con Time-Lock para las 09:00 UTC
keymaker pack ./starter_tp1 -o parcial1.ripkg.enc -p "PassphraseSegura2026!" -t "2026-09-15T09:00:00Z" -s ./claves/parcial1.key

# 3. Desempaquetar y verificar la firma digital
keymaker unpack parcial1.ripkg.enc -o ./examen_listo -p "PassphraseSegura2026!" -v ./claves/parcial1.pub --force

5. Ejercicios Prácticos y Desafíos


6. Arquitectura Interna y Mecanismo Técnico


7. Integración y Conexión con el Ecosistema

Matriz de Intercambio de Datos

CanalHerramientas ConectadasTipo de Datos Transferidos
Entradas (Inputs)deckard, alucarD, dreddEnunciados YAML, resolvé canónicas, pautas de evaluación
Salidas (Outputs)dredd, nostromo, EstudiantesBundles .ripkg.enc, firmas .sig, claves públicas .pub
Sincronizacióndredd, alucarDIngesta segura y desbloqueo temporal sincronizado

8. Extensión, Desarrollo de Plugins y API Python

Para integrar keymaker en autograders personalizados o scripts de CI/CD: