Eje 4: Técnicas
OSCAL - Open Security Controls Assessment Language
OSCAL transforma la documentación de cumplimiento de Word/Excel a formatos JSON/YAML legibles por máquina con cuatro capas:
- Catálogos - Definiciones de controles (NIST 800-53, ISO 27001, BSI IT-Grundschutz)
- Perfiles - Líneas base específicas de la organización
- Capa de implementación - Planes de seguridad del sistema, definiciones de componentes
- Capa de evaluación - Resultados de evaluación, POA&M
El BSI documenta oficialmente: "OSCAL es compatible con estándares internacionales". El GCBoK define taxonomías de cumplimiento alemanas (GoBD, BSI, DSGVO) como catálogos OSCAL — esto no existe actualmente en el mercado.
OPA / Rego - Policy as Code
Open Policy Agent con el lenguaje Rego. Las reglas de cumplimiento se implementan como código que se verifica automáticamente contra el estado de Git.
VPRM - Verifiable Process Reward Model
En el contexto del GCBoK, OPA/Rego funciona como VPRM: las barreras para agentes de IA surgen a través de un conjunto de reglas determinista, no mediante ingeniería de prompts. De este modo, los agentes de IA no se protegen mediante restricciones de prompt, sino mediante validación de código.
Firma GPG
Cada commit de Git relevante para el cumplimiento se firma con GPG. La firma vincula:
- Identidad (huella GPG = actor)
- Contenido (hash del commit = datos)
- Momento (marca de tiempo del commit = cuándo)
A partir de los metadatos .v7g.md, las huellas GPG se vinculan a V7GUIDs — las identidades permanecen a prueba de falsificación incluso si un agente de IA manipula la estructura semántica.
Arquitectura de keyring GPG para trazabilidad forense
Para que las firmas GPG permanezcan verificables a largo plazo — incluso años después de
su creación, tras la expiración o revocación de claves, y durante la reconstrucción desde
archivos git bundle/ZIP — las claves públicas deben formar parte del
repositorio. El GCBoK define para ello un patrón de keyring en el repositorio:
Estructura: .gitcover/keys/
.gitcover/
├── keys/
│ ├── team-lead.asc # Claves públicas de líderes de equipo
│ ├── service-accounts/ # CI/CD, bots, automatización
│ └── identities/ # Claves personales (solo repos de PII)
│ ├── axel-d.asc
│ └── axel-d_governikus.pdf # Prueba de identidad pgp.governikus.de
├── trusted-keys.gpg # Keyring recopilado (opcional, para verificadores)
└── compliance/ # Documentos GoBD/DSGVO
Modelo de dos niveles: repositorio TOP vs. repositorio PII
| Nivel | Repositorio | Contenido | Relevancia DSGVO |
|---|---|---|---|
| Organizativo | Repositorio TOP (Tenant Organizational Platform) | Claves de líderes de equipo, cuentas de servicio, bots CI/CD, ancla de confianza trusted-keys.gpg |
Sin datos personales — conforme a la DSGVO |
| Personal | Repositorio PII (Personal Identifiable Information) | Claves de desarrolladores, pruebas de identidad (confirmaciones de Governikus), huellas GPG personales | PII — acceso solo mediante claims de unidad organizativa (ver abajo) |
Esta separación refleja los dos niveles de responsabilidad sobre PII:
- Legal — nivel de tenant (entidad jurídica, p. ej. GCC, GCD, CFP)
- Organizativo — PMO/divisiones/departamentos/ubicaciones (≈ unidad organizativa de AD)
Verificación aislada del keyring local
Un auditor (o un auditor 10 años después) verifica sin dependencia del keyring GPG local:
# Utilizar solo claves del repositorio, ignorar el keyring local
gpg --no-default-keyring --keyring .gitcover/keys/team-lead.asc
--verify-commit <commit-hash>
--no-default-keyring: Ignora~/.gnupg/--keyring: Utiliza exclusivamente la clave del repositorio- La clave pública estaba en el momento del commit en el repositorio → carácter de prueba forense reconstruible
Validez temporal y ciclo de vida de claves
La pregunta ¿"La firma era válida en el momento del commit?" se responde mediante la integración en el repositorio:
- La clave pública está en el historial de Git del commit
- Incluso con expiración/revocación actual de la clave: el commit demuestra que la clave en ese momento era de confianza
git bundletransporta repositorios incluyendo claves y pruebas → unidad forense portable, independiente de la infraestructura activa
Relevancia para la documentación de procedimientos GoBD y NIS2
- GoBD (§ 146 AO, documentación de procedimientos): La arquitectura de keyring es parte de la documentación de procedimientos — describe cómo se generan, archivan y verifican las pruebas de identidad de forma inmutable. El patrón "clave en el repositorio" cumple los requisitos de GoBD en cuanto a verificabilidad e inmutabilidad del vínculo de identidad.
- NIS2 (permisos de acceso, Art. 21): La separación de repositorios TOP/PII y el
control de acceso basado en unidades organizativas (vía claims OIDC
tenant_id+ claim de unidad organizativa) implementan el principio de mínimo privilegio. Solo los roles autorizados (vía claim de unidad organizativa) obtienen acceso a repositorios PII y, por tanto, a claves personales.
Ver también: La serie de artículos "Instrucciones de procedimiento GoBD para Git" en el GCBoK (Módulo 3: Integridad criptográfica, Módulo 4: Firmas y autenticidad) profundiza en estos temas. El proyecto de investigación GitCover.IdP (BSFZ 288-335-338/2026-1) investiga la integración de IdP.
uuidV7 - UUID Version 7
UUID versión 7 compatible con RFC-4122: basada en tiempo, ordenable, resistente a colisiones. La extensión específica de GitCover con un identificador de clase de 14 bits convierte las UUIDs en V7GUIDs (ver Conceptos).
Git como IdP - Identity Provider
Repositorios Git basados en Gitea como fuente única de verdad (SSoT) para un sistema integrado de gestión de identidad y acceso (IAM). El proyecto de investigación reconocido por el BSFZ investiga si las organizaciones/equpos de Git pueden mapear clientes OAuth2 y permisos y gestionar >1.000 usuarios de forma eficiente.
Responsabilidad de dos niveles para PII (legal + organizativo)
Los datos personales (PII) están sujetos en el stack de GitCover a una doble responsabilidad, que se refleja en la arquitectura de repositorios y en los claims OIDC:
| Nivel | Alcance | Tipo de repositorio | Claim OIDC | Ejemplo |
|---|---|---|---|---|
| 1. Legal | Tenant (entidad jurídica) | Repositorio TOP + repositorio PII | tenant_id (basado en V7GUID) |
GCC, GCD, CFP, ADA |
| 2. Organizativo | PMO / división / departamento / ubicación | Repositorio PII (granular) | org_unit_id (≈ unidad organizativa de AD) |
GCC-Portfolio, GCD-IT, CFP-Sales |
- Legal (nivel de tenant): La entidad jurídica es el responsable en materia de
protección de datos (Art. 4 Nr. 7 DSGVO). El
tenant_idse deriva de forma determinista de la V7GUID del directorio TOP (ver [Conceptos: Registro central de tenants](v7guid-beleg-ketten-und-cryptographic-evidence.html #zentrales-tenant-register)). - Organizativo (PMO/unidad organizativa): Dentro de un tenant, varias
unidades organizativas (PMOs, departamentos, ubicaciones) pueden ser responsables
de forma independiente de subconjuntos de PII. Esto corresponde a la estructura de
unidades organizativas de Active Directory. La asignación se realiza mediante el
claim personalizado
org_unit_id, que se mapea en elothers.jsondel tenant a rutas de repositorio.
Jerarquía de claims en la pipeline de entrada
La pipeline de entrada (ver Procedimientos: Aislamiento de tenants
lee el others.json según el claim del usuario e inyecta las rutas permitidas:
{
"tenant_id": "0197a3b2-f3c0-7b00-8001-000000000042",
"org_unit_id": "GCC-Portfolio",
"allowed_repos": [
"TOP",
"PII/GCC-Portfolio"
]
}
De este modo, un usuario con org_unit_id = GCC-Portfolio obtiene acceso al
repositorio PII del portfolio, pero no a PII/GCD-IT — incluso con
el mismo tenant_id.
Ver también: El proyecto de investigación de GitCover.IdP se describe en Proyectos de inv estigación. La arquitectura de keyring (TOP vs. PII) se describe arriba en "Arquitectura de keyring GPG".