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:
Anti-Filtraciones con Time-Lock: Los paquetes
.ripkg.encse distribuyen con anticipación pero permanecen inaccesibles hasta el segundo exacto del inicio del examen.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.
Control Colegiado con Shamir ( de ): La pauta oficial de corrección solo puede ser abierta con el consenso de al menos docentes del equipo.
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¶
sudo apt update && sudo apt install -y build-essential libssl-dev python3-pip uv
sudo pacman -S --needed base-devel openssl python-pip uv
sudo dnf install -y gcc openssl-devel python3-pip uv
brew install openssl uv
2.2 Métodos de Instalación¶
uv tool install . --editable
python3 -m venv .venv source .venv/bin/activate pip install -e .
2.3 Verificación con doctor¶
keymaker doctor3. Referencia Completa de Comandos CLI¶
| Comando / Sintaxis | Descripció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 5 | Divide un secreto en partes de Shamir requiriendo para abrir. |
keymaker combine-shares <s1> <s2> ... | Reconstruye un secreto a partir de 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 doctor | Diagnó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 --force5. Ejercicios Prácticos y Desafíos¶
6. Arquitectura Interna y Mecanismo Técnico¶
Cifrado Simétrico Autenticado: AES-256-GCM con nonces de 96 bits generados vía CSPRNG del kernel (
os.urandom) y tags Poly1305/GCM de 128 bits.KDF Robusto: PBKDF2-HMAC-SHA256 con 600,000 iteraciones y HKDF-SHA256 para derivaciones secundarias.
Firmas Asimétricas: Curva Ed25519 (RFC 8032) con verificación en tiempo constante.
Shamir Secret Sharing: Aritmética de polinomios sobre el cuerpo finito Galois con generador y polinomio irreducible .
7. Integración y Conexión con el Ecosistema¶
Matriz de Intercambio de Datos¶
| Canal | Herramientas Conectadas | Tipo de Datos Transferidos |
|---|---|---|
| Entradas (Inputs) | deckard, alucarD, dredd | Enunciados YAML, resolvé canónicas, pautas de evaluación |
| Salidas (Outputs) | dredd, nostromo, Estudiantes | Bundles .ripkg.enc, firmas .sig, claves públicas .pub |
| Sincronización | dredd, alucarD | Ingesta 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:
👉 Consultá la guía completa: Guía de Extensión y Creación de Plugins