TÉCNICO
Cómo funciona la firma de módulos del Marketplace
15 de abril de 2026 · Equipo Didacta · 11 min de lectura
Manifest, claves públicas y verificación local. Por qué tu Didacta solo instalará módulos legítimos.
Uno de los principios de diseño del Marketplace de Didacta es que nunca instales código que no hayas podido verificar. Este post explica el mecanismo técnico que lo garantiza.
El problema que queremos evitar
Los repositorios de plugins de LMS y CMS tienen un problema histórico: la confianza implícita. Cuando instalas un plugin de un repositorio de terceros, confías en que el repositorio no ha sido comprometido, en que el autor no ha introducido código malicioso en una actualización y en que el paquete que descargas es el mismo que el autor subió originalmente.
Ese modelo de confianza implícita ha fallado varias veces en ecosistemas de plugins de CMS y LMS. Didacta resuelve esto con firma criptográfica obligatoria para todos los módulos del Marketplace.
El manifest
Todo módulo de Didacta incluye un archivo didacta.manifest.json en su raíz. Este archivo declara:
{
"id": "fundae-reporter",
"version": "1.2.0",
"name": "Fundae Reporter",
"author": "Didacta",
"license": "Sustainable-Use-1.0",
"didacta_core": ">=1.0.0",
"entrypoint": "src/index.js",
"permissions": ["reports:read", "users:read"],
"signature": "sha256:a3f8b2..."
}El campo permissions es especialmente importante: declara explícitamente a qué partes de la API del núcleo tiene acceso el módulo. Un módulo que solo necesita leer informes no puede acceder a la API de usuarios aunque lo intente — el sistema de permisos lo bloquea en tiempo de ejecución.
El proceso de firma
Cuando un desarrollador sube un módulo al Marketplace, el sistema genera un hash SHA-256 del paquete completo y lo firma con la clave privada de Didacta. La firma resultante se almacena asociada a esa versión específica del módulo.
hash = SHA256(paquete.zip)
firma = RSA_sign(hash, clave_privada_didacta)La clave privada nunca sale de los servidores de Didacta. La clave pública correspondiente está embebida en el núcleo de Didacta y también publicada en https://keys.didacta.io/marketplace.pub para verificación independiente.
Verificación en la instalación
Cuando tu Didacta descarga un módulo del Marketplace — ya sea automáticamente o por solicitud del administrador — el proceso es el siguiente:
- Descarga del paquete y la firma desde los servidores del Marketplace.
- Verificación de la firma localmente, usando la clave pública embebida en el núcleo. Si la verificación falla, la instalación se cancela y se registra el intento.
- Verificación del manifest — se comprueba que el
didacta_corerequerido es compatible con la versión instalada. - Revisión de permisos — el administrador ve un resumen de los permisos que solicita el módulo antes de confirmar la instalación.
- Instalación en sandbox — el módulo se ejecuta en un contexto aislado con acceso únicamente a las APIs declaradas en su manifest.
Si cualquiera de estos pasos falla, la instalación se aborta. No hay excepciones.
La revisión humana es necesaria. La firma criptográfica es lo que hace que la revisión humana sea suficiente.
Instalación de módulos fuera del Marketplace
Puedes instalar módulos que no estén en el Marketplace — por ejemplo, módulos privados que hayas desarrollado para tu organización. En ese caso, puedes firmarlos con tu propia clave privada y registrar la clave pública correspondiente en el panel de administración de tu Didacta.
Didacta Cloud solo acepta módulos firmados (por Didacta o por claves registradas por el administrador). Didacta Community permite, a través de configuración explícita, instalar módulos sin firma — útil para desarrollo local, pero desactivado por defecto en entornos de producción.
Por qué no usamos un modelo de «aprobación humana» solamente
La revisión humana que hacemos antes de publicar un módulo en el Marketplace es necesaria pero no suficiente. El problema es la ventana de tiempo entre la publicación y la detección de una compromisión. Si un autor malicioso — o un autor cuya cuenta ha sido comprometida — sube una actualización con código malicioso, la revisión humana puede no detectarlo a tiempo.
La firma criptográfica resuelve esto de forma diferente: garantiza que lo que instala tu Didacta es exactamente lo que el sistema de Marketplace firmó, sin modificaciones. Si alguien intercepta la descarga o compromete la CDN, la verificación de firma fallará.
El futuro: firmas de autor
En versiones futuras del Marketplace planeamos implementar firmas de autor además de las firmas de Didacta. Esto permitirá que los usuarios verifiquen de forma independiente que un módulo fue publicado por quien dice haberlo publicado, sin depender de la intermediación de Didacta. Similar al modelo de firmas GPG en los repositorios de paquetes de Linux.