🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónFirma sin clave: identidad OIDC
5 tareas · 36 min · Principiante
Firmar siempre ha significado guardar una clave privada y protegerla durante años. La firma «sin clave» cambia la pregunta: en vez de «¿quién tiene la clave?», pregunta «¿quién eres ahora mismo y quién lo certifica?». Abres la evidencia de Guanábana Mercados, una empresa ficticia que acaba de dejar su clave de firma: la descripción de cómo se firmaba antes, el token de identidad que pide su flujo de publicación, el certificado de vida corta que recibe a cambio y el registro de las últimas firmas. Todo es lectura de texto; no se firma nada.
Objetivo de la sala
Firmar siempre ha significado guardar una clave privada y protegerla durante años. La firma «sin clave» cambia la pregunta: en vez de «¿quién tiene la clave?», pregunta «¿quién eres ahora mismo y quién lo certifica?». Abres la evidencia de Guanábana Mercados, una empresa ficticia que acaba de dejar su clave de firma: la descripción de cómo se firmaba antes, el token de identidad que pide su flujo de publicación, el certificado de vida corta que recibe a cambio y el registro de las últimas firmas. Todo es lectura de texto; no se firma nada.En la firma tradicional hay una clave privada que vive años: quien la copia puede firmar como la empresa hasta que alguien note que se filtró y la cambie. En la firma sin clave de Sigstore no hay nada de eso que guardar. El flujo de trabajo pide a su proveedor de identidad un token OIDC, que dice quién es esa ejecución concreta (repositorio, flujo, rama, evento). Una autoridad de certificados, Fulcio, comprueba el token y emite un certificado de vida corta que liga una clave recién generada con esa identidad. Se firma, y la clave se descarta.
Lo que se verifica después ya no es «esta clave pública está en mi lista», sino «este certificado, emitido por la autoridad que espero, dice que quien firmó es esta identidad».
Responde para continuar
En la firma sin clave de larga vida, ¿qué sustituye al archivo de clave privada que se guardaba y se protegía durante años?
Ver pista de ayuda
Piensa en qué se puede robar de un flujo de publicación diez minutos después de que terminó.
El token trae afirmaciones («claims») sobre la ejecución: iss es quién lo emitió, aud para quién va, sub es el sujeto, y los demás datos describen el repositorio, la referencia, el evento y el flujo exacto. No es una credencial de la empresa: lo emite el proveedor del CI para esa ejecución y caduca en minutos. Por eso se puede mostrar decodificado sin que el que lo lea gane nada.
Abre el token decodificado y localiza en qué repositorio se ejecutó el flujo que pidió la firma.
Responde para continuar
Escribe el valor del claim `repository` del token del flujo de publicación.
Ver pista de ayuda
Con `cat identidad/token-oidc-decodificado.txt`, es la línea que empieza por «repository».
El certificado que emite Fulcio lleva dos fechas, «válido desde» y «válido hasta». Su vida es muy corta a propósito: cuando el certificado caduca, la clave que lo respaldaba ya no existe y no hay nada que se pueda reutilizar para firmar. La identidad va en el campo SAN del certificado y el emisor de esa identidad en una extensión aparte; son los dos datos que luego exigirá la verificación.
Abre el certificado emitido y calcula cuánto dura.
Responde para continuar
¿Cuántos minutos separan «válido desde» de «válido hasta» en el certificado emitido? Escribe solo el número.
Ver pista de ayuda
Resta las dos horas del certificado; fíjate en los minutos y los segundos.
La identidad del certificado de un flujo de GitHub incluye el archivo de flujo y la referencia desde la que corrió: .../publicar-imagen.yml@refs/heads/main, por ejemplo. Eso permite distinguir firmas de la misma organización según su origen: una publicación desde la rama principal, desde una etiqueta de versión o desde una solicitud de cambios no son lo mismo, aunque las tres sean «de la empresa».
Abre el registro de firmas recientes y mira la columna del evento.
Responde para continuar
Escribe el archivo de flujo que firmó una imagen en un evento pull_request.
Ver pista de ayuda
Con `cat identidad/firmas-recientes.txt`, busca la fila cuyo evento es pull_request.
El certificado prueba quién firmó, comprobado por el proveedor de identidad en ese momento. No prueba que el código sea bueno ni que la persona que escribió el flujo tuviera buenas intenciones. Por eso la firma sin clave elimina el robo de la clave, pero no el riesgo de que alguien con acceso a un flujo legítimo firme algo malo: ese riesgo se gestiona con revisión de cambios, ramas protegidas y una política que acepte solo ciertos flujos.
Responde para continuar
Una imagen lleva un certificado válido cuya identidad es el flujo oficial de publicación. ¿Qué se puede afirmar con seguridad?
Ver pista de ayuda
La identidad responde a «quién», no a «qué hay dentro».
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.