Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Firma 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.

0 de 5 · 0%

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».

Inicia sesión para registrar tus puntos y progreso en el ranking.

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