Axis 4: Techniques

OSCAL - Open Security Controls Assessment Language

OSCAL transforms compliance documentation from Word/Excel into machine-readable JSON/YAML formats with four layers:

  1. Catalogs - Control definitions (NIST 800-53, ISO 27001, BSI IT-Grundschutz)
  2. Profiles - organization-specific baselines
  3. Implementation Layer - System Security Plans, Component Definitions
  4. Assessment Layer - Assessment Results, POA&M

The BSI officially documents: "OSCAL is compatible with international standards". The GCBoK defines German compliance taxonomies (GoBD, BSI, GDPR) as OSCAL catalogs - this does not yet exist on the market.

OSCAL catalogs and OPA rules are part of the machine-readable semantic layer of the GitCover ontology: They describe, in the same language as the L1–L6 dictionaries, which requirements apply and how they are verified (see Concepts: Business hierarchy as ontology and Glossary: Ontology).

OPA / Rego - Policy as Code

Open Policy Agent with the Rego language. Compliance rules are implemented as code that is automatically checked against the Git state.

VPRM - Verifiable Process Reward Model

In the GCBoK context, OPA/Rego acts as VPRM: Guardrails for AI agents are created through a deterministic rule set, not through prompt engineering. AI agents are thus secured not through prompt constraints, but through code validation.

GPG Signing

Every compliance-relevant Git commit is GPG-signed. The signature binds:

From .v7g.md metadata onward, GPG fingerprints are bound to V7GUIDs - identities remain tamper-proof even if an AI agent manipulates the semantic structure.

GPG Keyring Architecture for Forensic Verifiability

For GPG signatures to remain verifiable in the long term — even years after creation, after key expiry or revocation, and when reconstructing from git bundle/ZIP archives — the public keys must be part of the repository. The GCBoK defines a keyring-in-repo pattern for this:

Structure: .gitcover/keys/

.gitcover/
├── keys/
│   ├── team-lead.asc          # Öffentliche Schlüssel von Team-Leads
│   ├── service-accounts/      # CI/CD, Bots, Automation
│   └── identities/            # Personenbezogene Schlüssel (nur PII-Repos)
│       ├── person-a.asc
│       └── person-a_governikus.pdf  # Identitätsnachweis pgp.governikus.de
├── trusted-keys.gpg           # Gesammelter Keyring (optional, für Verifier)
└── compliance/                # GoBD/DSGVO-Dokumente

Two-Level Model: TOP-Repo vs. PII-Repo

Level Repository Content GDPR Relevance
Organizational TOP-Repo (Tenant Organizational Platform) Team lead keys, service accounts, CI/CD bots, trust anchor trusted-keys.gpg No personal data — GDPR-compliant
Personal PII-Repo (Personal Identifiable Information) Developer keys, identity proofs (Governikus confirmations), personal GPG fingerprints PII — Access only via Org-Unit claims (see below)

This separation reflects the two levels of responsibility for PII:

  1. Legal — tenant level (legal entity, e.g. GCC, GCD, CFP)
  2. Organizational — PMO/Divisions/Departments/Locations (≈ AD Organizational Unit)

Verification Isolated from the Local Keyring

A verifier (or an auditor 10 years later) verifies without dependency on the local GPG keyring:

# Nur Repository-Schlüssel nutzen, lokalen Keyring ignorieren
gpg --no-default-keyring --keyring .gitcover/keys/team-lead.asc \
    --verify-commit <commit-hash>

Temporal Validity and Key Lifecycle

The question "Was the signature valid at the time of the commit?" is answered by the repository integration:

Relevance for GoBD Process Documentation and NIS2

See also: The article series "GoBD Process Instructions for Git" in the GCBoK (Module 3: Cryptographic Integrity, Module 4: Signatures & Authenticity) explores these topics in depth. The research project GitCover.IdP (BSFZ 288-335-338/2026-1) investigates IdP integration.

uuidV7 - UUID Version 7

RFC-4122-compliant UUID Version 7: time-based, sortable, collision-resistant. The GitCover-specific extension with 14-bit class identifiers turns UUIDs into V7GUIDs (see Concepts).

Git as IdP - Identity Provider

Gitea-based Git repositories as Single Source of Truth (SSoT) for an integrated identity and access management system (IAM). The BSFZ-recognized research project investigates whether Git organizations/teams can map OAuth2 clients and permissions and manage >1,000 users performantly.

Personal data (PII) in the GitCover stack is subject to dual responsibility, which is reflected in the repository architecture and the OIDC claims:

Level Scope Repository Type OIDC Claim Example
1. Legal Tenant (legal entity) TOP-Repo + PII-Repo tenant_id (V7GUID-based) GCC, GCD, CFP, ADA
2. Organizational PMO / Division / Department / Location PII-Repo (fine-grained) org_unit_id (≈ AD Organizational Unit) GCC-Portfolio, GCD-IT, CFP-Sales

Person-to-Role Mapping (PII Bridge) — Work Required

Person-to-Role Mapping (PII Bridge) — Work Required

The GCPN signature containers reference participants (attendees) as Actors (role in the tenant, function in the company) and record persons only in pseudonymized form (persons.mappings with PII reference). The canonical mapping Person → Roles → Org-Units resides in the PII scope (gitignored) — for an end-to-end model, the following relationships still need to be worked out in detail in the GCBoK:

Relationship GCBoK Status Work Required
User → Role Approach (Git repo = IdP; signature doc as claim carrier) Role definition per tenant (GF, GS-Verwalter, Auditor) as normative vocabulary — analogous to kinds.json/status_flags.json in the OSS-Normative-Root
Role → Group Gitea teams (Org → Team → Member) Mapping Gitea team ↔ role; team slug convention + others.json linkage (allowed_repos)
Group → Org-Unit L2 Department as Org-Unit anchor (02-konzepte) Populate departments.json per tenant (currently AFJD-Master: entries empty); org_unit_id plaintext convention (GCC-Portfolio etc.)
Org-Unit → Tenant Two-level claim (tenant_id legal, org_unit_id organizational) Populate others.json per TOP-Repo (currently empty); document claim mapping in the Inlet pipeline
Person (PII) → User PII-Repo (gitignored) PII schema for person↔role mapping (GDPR: minimization, pseudonymized reference as in GCPN persons.mappings)

Linkage: gcpn-container-1.0 → attendees (roles in the process) → persons.mappings (pseudonymized PII reference) → PII repo (canonical mapping). Until this has been elaborated in detail, the pseudonymized references documented here serve as an interim solution.

Claim Hierarchy in the Inlet Pipeline

The Inlet pipeline (see Procedures: Tenant Isolation reads the others.json depending on the user claim and injects the allowed paths:

{
  "tenant_id": "0197a3b2-f3c0-7b00-8001-000000000042",
  "org_unit_id": "ORG-1-Portfolio",
  "allowed_repos": [
    "TOP",
    "PII/ORG-1-Portfolio"
  ]
}

This way, a user with org_unit_id = ORG-1-Portfolio receives access to the portfolio's PII repo, but not to PII/ORG-2-IT — even with the same tenant_id.

See also: The research project on GitCover.IdP is described in Research Projects. The keyring architecture (TOP vs. PII) is described above under "GPG Keyring Architecture".