Verificar la firma de froga
Los artefactos de cada release de froga (binario, imagen de contenedor y wheel Python) están firmados con la clave de release de la organización y con cosign (Sigstore). Esta página explica cómo verificarlos sin depender del instalador automático.
Pubkey de release (2.º canal de publicación)
Sección titulada «Pubkey de release (2.º canal de publicación)»La pubkey de release se publica en dos canales independientes:
- Canal git —
scripts/install/froga-release.pub.pemen el repositorioVenturalitica/seigarrena(este repo). - Canal docs-site — esta misma página en
docs.venturalitica.ai(TLS independiente del bucket de distribución).
Publicar la clave en un canal distinto al bucket rompe el vector de sustitución atómica: si el bucket sei-releases quedara comprometido, el atacante no podría sustituir simultáneamente la clave verificadora sin también comprometer GitHub y el docs-site.
-----BEGIN PUBLIC KEY-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd7PcV4fVU9rrUpEtY/f9NMgQ7fvax1vnb+GY8x5NQLuTpWlypFlRicviH9zv8HxKDWamaEGUvUlD/2yQT+xcYA==-----END PUBLIC KEY-----SHA-256 fingerprint de la pubkey (placeholder — actualizar en la primera release de producción):
PLACEHOLDER: <sha256_fingerprint_kms_prod>Para calcular el fingerprint de la clave que tienes en disco:
openssl pkey -pubin -in froga-release.pub.pem -outform DER \ | openssl dgst -sha256Verificar el binario (firma ECDSA-P256)
Sección titulada «Verificar el binario (firma ECDSA-P256)»El instalador install.sh / install.ps1 verifica la firma automáticamente (fail-closed). Si quieres verificarla a mano:
1. Obtén la pubkey — desde el repositorio git o desde esta página:
# Opción A: desde el repo gitcurl -fsSL \ https://raw.githubusercontent.com/Venturalitica/seigarrena/main/scripts/install/froga-release.pub.pem \ -o froga-release.pub.pem
# Opción B: pegar el bloque PEM de esta página en froga-release.pub.pem2. Descarga el artefacto y su firma .sig desde el GitHub Release correspondiente:
ARCH="x86_64-unknown-linux-musl" # o aarch64-unknown-linux-musl, x86_64-apple-darwin, aarch64-apple-darwinASSET="froga-${ARCH}.tar.gz"
# Sustituye <tag> por la versión, p.ej. froga/v0.2.0gh release download froga/v0.2.0 --pattern "${ASSET}" --pattern "${ASSET}.sig"3. Verifica la firma ECDSA-P256:
openssl dgst -sha256 \ -verify froga-release.pub.pem \ -signature "${ASSET}.sig" \ "${ASSET}"# Salida esperada: Verified OK4. Verifica también el checksum SHA-256 (doble comprobación):
gh release download froga/v0.2.0 --pattern "${ASSET}.sha256"sha256sum -c "${ASSET}.sha256" # Linux# o: shasum -a 256 -c "${ASSET}.sha256" # macOSVerificar la imagen de contenedor (cosign)
Sección titulada «Verificar la imagen de contenedor (cosign)»La imagen ghcr.io/venturalitica/froga se firma en cada release con cosign mediante Sigstore (OIDC de GitHub Actions, sin clave larga almacenada).
cosign verify \ ghcr.io/venturalitica/froga@<digest> \ --certificate-identity-regexp "https://github.com/Venturalitica/seigarrena/.github/workflows/release.yml@refs/tags/.*" \ --certificate-oidc-issuer "https://token.actions.githubusercontent.com"Sustituye <digest> por el digest SHA-256 de la imagen que vas a ejecutar (lo obtienes con docker inspect --format='{{index .RepoDigests 0}}' ghcr.io/venturalitica/froga:latest).
La salida incluye el certificado de transparencia Rekor y la identidad del emisor. Si cosign verify devuelve exit ≠ 0, la imagen no tiene una firma válida y no debe ejecutarse.
Verificar la provenance SLSA (GitHub attestations)
Sección titulada «Verificar la provenance SLSA (GitHub attestations)»Cada release incluye una attestation SLSA Level 3 generada por GitHub Actions.
gh attestation verify froga-<arch>.tar.gz \ --owner VenturaliticaEsto comprueba que el artefacto fue construido por el repositorio Venturalitica/seigarrena en GitHub Actions y que la provenance no ha sido alterada. La salida incluye el workflow, el commit SHA y la cadena de certificación.
Actualizar la pubkey (operador — primera release)
Sección titulada «Actualizar la pubkey (operador — primera release)»Cuando se active el backend KMS de producción para las releases del binario, el operador debe:
# 1. Exportar la pubkey real de la clave KMS de releaseFROGA_SIGNING_BACKEND=scaleway-kms froga pubkey --pem \ > scripts/install/froga-release.pub.pem
# 2. Calcular y anotar el fingerprint SHA-256openssl pkey -pubin -in scripts/install/froga-release.pub.pem \ -outform DER | openssl dgst -sha256
# 3. Actualizar las CUATRO copias para que coincidan exactamente:# a) scripts/install/froga-release.pub.pem ← ya actualizado en el paso 1# b) FROGA_PUBKEY_PEM en scripts/install/install.sh# c) FROGA_PUBKEY_PEM en scripts/install/install.ps1# d) El bloque PEM en esta página (docs-site/.../referencia/verificar-firma.mdx)# e) El fingerprint en esta páginaLas cuatro copias deben coincidir exactamente — el instalador y la verificación manual usan la misma clave por diseño.