-
Notifications
You must be signed in to change notification settings - Fork 0
Signed Envelopes and Established Standards
Status: Ships in v0.1 as vocabulary support + composable profile-gated requirements (all profiles off by default). Closes the ADCS prototype's "signed envelopes deferred" gap by specifying the integration surfaces, not by inventing crypto.
Normative source: Design Spec §4.6. This page is the narrative companion to that section; the spec governs in any conflict.
Cryptography is a deep specialty with a well-earned graveyard of clever-looking-but-broken constructions. The discipline flexo-rtm adopts is unambiguous: we do not invent envelope formats, key management schemes, transparency logs, or signature primitives. The right move is to compose battle-tested standardized tools at well-defined integration surfaces and treat them as opaque components maintained by the standards community — W3C, OpenSSF, Sigstore, the git maintainers, the in-toto and DSSE working groups.
What flexo-rtm v0.1 ships is the glue vocabulary that lets the RDF data model reference these external envelopes, plus composable SHACL profiles that adopters opt into when their workflow is ready. We do not write signature code; we reference signed artifacts produced by tools maintainers already trust.
The composition discipline above extends one level deeper: the algorithm choice itself — which hash, which signature curve — is a suite parameter, not a hard pin in flexo-rtm core. Where this page (and the rest of the wiki) names "SHA-256," that should be read as "the content-hash algorithm specified by the active cryptographic suite; v0.1's default is SHA-256 because that is the W3C Data Integrity 2.0 default for the ecdsa-rdfc-2019 and eddsa-rdfc-2022 cryptosuites, and it is also the cosign and OCI image-signature default." The algorithm is not hardcoded; it is read from the artifact.
Mechanism. Each of the five standards composed below carries its own algorithm-identifier mechanism:
-
W3C VC Data Integrity 2.0 names the cryptosuite explicitly in
sec:cryptosuite—ecdsa-rdfc-2019(ECDSA with SHA-256 or SHA-384 over P-256 or P-384),eddsa-rdfc-2022(EdDSA over Ed25519), and registered future suites for post-quantum primitives. The hash algorithm is part of the suite's specification. - Sigstore cosign embeds algorithm metadata in its signature bundles; verifiers read the metadata and apply the matching primitive. The default in current cosign builds is SHA-256 + ECDSA-P-256, with Ed25519 and other algorithms available.
- DSSE envelopes carry algorithm identifiers in the payload-type field; the in-toto reference verifier dispatches on this.
- OCI image signatures follow the OCI signature specification's algorithm registry; OCI 1.1 and current cosign builds default to SHA-256, with the spec admitting other digests as the registry matures.
-
rtm:hasContentHashuses amultihash-style algorithm prefix (e.g.,sha256:…,sha3-256:…,blake3:…) so the algorithm travels with every content reference.
flexo-rtm reads the suite ID (or algorithm prefix) from each artifact and applies the right verification primitive — no hardcoded SHA-256 in the codebase, no algorithm hardcoded in the SHACL shapes.
Tooling principle. Established libraries, never hand-rolled. hashlib (Python stdlib) for hash primitives, cryptography (PyCA) for signature primitives, sigstore-python for Sigstore integration, libssl bindings via cryptography for any TLS-adjacent work. The tool footprint stays compact: one Python crypto stack, one cosign install, one Sigstore client, one git signing setup. Adding a new algorithm means a new suite ID in the catalog, not a new dependency in the tree.
Forward compatibility. When SHA-256 or P-256 fall out of favor — NIST deprecation, FIPS profile change, post-quantum migration, regulatory mandate — flexo-rtm rotates by updating the suite catalog (a TTL file) and the SHACL profile defaults. No code surgery. Prior cert artifacts remain auditable: each artifact records the suite ID it was certified under, and verifiers locate the right primitive from that ID. The composition principle that forbids inventing envelopes (ADR-023 Cryptography by Composition of Battle-Tested Standards) thereby extends to forbid inventing algorithm-negotiation vocabulary too — VC-DI / cosign / OCI / DSSE / multihash already supply the negotiation surface; flexo-rtm reads from it rather than parallels it.
See ADR-026 Cryptographic Agility via Algorithm Profiles for the locked decision.
Mechanism. Every attestation triple in flexo-rtm is materialized as a git commit (per Flexo Git Coexistence and Approver Binding via Git). When the signed-commits profile is active, that commit MUST carry a GPG or SSH signature. Since git 2.34, gpg.format = ssh is supported alongside the original GPG path, so adopters can use whichever key infrastructure they already operate.
Verification flow. A pre-commit hook reads the commit being authored, extracts the rtm:approvedBy IRI, dereferences it to a foaf:Person (or org:Membership) record carrying a published key fingerprint, and checks that the commit signature was produced by the matching key. GitHub Actions re-runs the same check at PR time as defense in depth, leveraging GitHub's built-in signature verification as the second eye.
Key management. Adopters use their existing GPG and SSH key infrastructure — gnupg, ssh-agent, OS keyrings, hardware tokens, enterprise key escrow. flexo-rtm ships no key directory, no key distribution mechanism, no key rotation tooling. Identity continues to be owned by the host organization's existing systems (see Verifiable Self-Certification and Design Spec §4.4).
Acceptance criterion. Design Spec §9.A.3 I7 is normative: when signed-commits is active, a git commit introducing an attestation triple MUST be GPG/SSH-signed by a key whose fingerprint matches the rtm:approvedBy IRI's published key. Pre-commit hook plus GitHub Actions check both verify.
Mechanism. An rtm:Attestation may be expressed as a W3C Verifiable Credential (VC Data Model 2.0) and carry a Data Integrity proof in the sec:proof property. The proof is computed over the canonicalized RDF dataset using RDFC-1.0 (see RDFC-1.0 Canonicalization) and signed with a standard primitive — typically EdDSA over Ed25519 or ECDSA over P-256 — using one of the registered Data Integrity cryptosuites (eddsa-rdfc-2022, ecdsa-rdfc-2019, etc.).
Verification flow. A verifier re-canonicalizes the credential subject, recomputes the proof hash, and verifies the signature against the issuer's published verification key. Crucially, the proof attaches to the RDF graph itself — verification never leaves the data model. There is no auxiliary file to track and no out-of-band envelope to parse.
Profile. data-integrity-attestations requires sec:proof on every rtm:Attestation instance and validates the proof at audit time.
Why this fits. Data Integrity is RDF-native: proofs attach to graphs, canonicalization is part of the spec, and multiple interoperable implementations exist across JavaScript, Rust, Python, and Go. Using a W3C standard ensures flexo-rtm attestations interoperate with the broader VC ecosystem without bespoke tooling.
Mechanism. When an rtm:Activity emits a claim about an artifact — a build provenance, a test result, a simulation output, a model check — the payload is wrapped in a DSSE (Dead Simple Signing Envelope) whose payload type is an in-toto attestation predicate. The envelope carries one or more signatures with key identifiers; the payload is base64-encoded JSON conforming to the in-toto Statement layout (_type, predicateType, subject, predicate).
Predicate types. Where possible, flexo-rtm adopts existing in-toto predicate types — SLSA Provenance v1.0 for build provenance is the obvious anchor. Where no community predicate fits (e.g., a domain-specific simulation transcript), the engineering choice is to propose a new predicate to the in-toto community first, then fall back to a flexo-rtm-namespaced predicate only if necessary, treating that namespaced predicate as a candidate for future upstream contribution rather than a permanent fork.
RDF reference. An rtm:Activity references its DSSE-enveloped attestation through rtm:dsseEnvelope (xsd:anyURI or inline).
Profile. dsse-activities requires every rtm:Activity emitting an attestation to reference a DSSE envelope through rtm:dsseEnvelope.
Verification flow. Standard DSSE and in-toto tooling — witness, cosign verify-attestation, the in-toto reference verifier — performs envelope signature validation and payload-type checking. flexo-rtm exposes the envelope reference; it runs no verification logic of its own.
Why this fits. DSSE is the supply-chain attestation envelope: SLSA, Trivy, BuildKit, Bazel, Conan, GitHub Artifact Attestations, and Google Cloud Build all use it. Composing on DSSE means flexo-rtm activity attestations interoperate with the entire software-supply-chain ecosystem without translation glue.
Mechanism. When an rtm:Activity references an OCI image via rtm:hasOCIImage (per Design Spec §4.5), that image digest can be cosign-verified. The optional rtm:cosignBundle property carries the Sigstore cosign signature bundle for the image — either inline or by reference to a bundle file stored in the registry alongside the image.
Verification flow. cosign verify against the bundle confirms that the image at the recorded digest was signed by a known identity. In keyless mode (the dominant production pattern), GitHub Actions, GitLab CI, or other OIDC providers issue ephemeral signing keys via Sigstore's Fulcio CA bound to the workflow's OIDC identity; the signature lands in Rekor, and the verifier checks the Fulcio certificate chain plus the Rekor inclusion proof.
Profile. cosign-images requires rtm:cosignBundle to accompany every rtm:hasOCIImage reference, and audit-mode tooling runs cosign verify against each.
Acceptance criterion. Design Spec §9.A.4 U4 is normative: in audit mode, fetching rtm:hasOCIImage digest reference MUST succeed against an OCI-compliant registry, and is cosign-verifiable when --profile=cosign-images is active.
Why this fits. Cosign is the dominant OCI image signing tool, aligned with the OpenSSF reference architecture and the OCI signature specification. Keyless mode eliminates per-developer key management for CI workflows while delivering equivalent or stronger trust through OIDC + transparency.
Mechanism. Any signature flexo-rtm references — a DSSE envelope, a cosign bundle, a Data Integrity proof — can be entered into Rekor, Sigstore's public append-only transparency log. The rtm:rekorLogEntry property points to the Rekor entry IRI; verifiers retrieve the Merkle inclusion proof and confirm the signature was logged at a specific time.
Profile. rekor-transparency requires a Rekor entry for every attestation. This is the heaviest of the five profiles — it commits an organization to a public transparency posture — and exists for regulatory contexts that require public, non-repudiable audit trails without standing up custom transparency infrastructure.
Why this fits. Rekor is the dominant transparency log for software supply chains, backed by OpenSSF and the Linux Foundation, widely deployed in production, and supported by mature tooling. Using Rekor closes the non-repudiation surface without flexo-rtm having to operate (or specify) its own append-only log — which would be exactly the kind of crypto invention this page exists to forbid.
| Term | Provenance | Range | Purpose |
|---|---|---|---|
sec:proof |
W3C Security Vocabulary | DI proof object | Data Integrity proof attached to an RDF graph |
rtm:dsseEnvelope |
flexo-rtm |
xsd:anyURI or inline |
Reference to a DSSE-enveloped in-toto attestation about an activity |
rtm:cosignBundle |
flexo-rtm |
xsd:anyURI or inline |
Cosign signature bundle for an OCI image referenced via rtm:hasOCIImage
|
rtm:rekorLogEntry |
flexo-rtm |
xsd:anyURI |
Pointer to a Sigstore Rekor transparency-log entry |
rtm:commitSignatureRequired |
flexo-rtm |
xsd:boolean |
Marks that an attestation's git commit MUST carry a valid GPG/SSH signature |
The sec: namespace is the W3C Security Vocabulary, reused unchanged. The four rtm:-prefixed terms are glue around external standards; they wrap, they do not replace.
| Profile | Requires |
|---|---|
signed-commits |
GPG/SSH-signed git commits for every attestation triple |
data-integrity-attestations |
sec:proof on every rtm:Attestation
|
dsse-activities |
DSSE-enveloped in-toto attestation referenced by every rtm:Activity that emits claims |
cosign-images |
Cosign signature bundle for every rtm:hasOCIImage
|
rekor-transparency |
Rekor log entry for every attestation |
All five are off by default in v0.1. Adopters compose them à la carte as their workflow matures: a research team might start with signed-commits only; a safety-critical program operating in a regulated environment might enable all five. The profiles do not interact destructively — enabling more makes the SHACL gate stricter; it never invalidates data that was conformant under a weaker setting.
This list is the discipline.
-
No custom envelope formats. DSSE wraps activity attestation payloads; VC-DI wraps RDF; cosign bundles wrap image signatures.
flexo-rtmnever defines its own envelope. -
No custom crypto primitives. Everything ultimately uses well-vetted curves and modes: ECDSA over P-256 or P-384, EdDSA over Ed25519, RSA-PSS, AES-GCM where symmetric crypto is needed by an underlying standard.
flexo-rtmdoes not pick or implement primitives. - No custom transparency log. Rekor is the transparency log. We do not specify, operate, or wrap a parallel log.
-
No custom key infrastructure. Adopters use
gnupg,ssh-agent, OS keyrings, hardware tokens, cloud KMS, GitHub OIDC, cosign keyless — whatever they already operate.flexo-rtmships no key directory and no key distribution. -
No custom identity binding scheme. The link from
rtm:approvedByIRI to public key is resolved via the same identity projection used for the rest offlexo-rtm's identity story (Design Spec §4.4); see also Verifiable Self-Certification. - No "this looks crypto-ish, let's prototype it" code paths. Where v0.1 lacks an integration, it lacks the integration; future versions add integrations by adopting more standards, never by inventing new primitives.
Consider an engineer running a guidance-control simulation whose output is offered as evidence for a satisfaction attestation. Every link of the chain rides on an established standard:
-
Simulation container is cosign-signed. The CI pipeline that built
ghcr.io/example/adcs-sim@sha256:…used cosign keyless signing bound to its GitHub Actions OIDC identity. The signature bundle is stored alongside the image, and the bundle's Rekor entry is published. -
The engineer runs the simulation. The
rtm:Activityrecordsrtm:hasOCIImageplus the git commit and content hash of the input scenario (see External URI References). Whencosign-imagesis active, audit-mode verification runscosign verifyagainst the recorded bundle, satisfying §9.A.4 U4. - The activity emits a DSSE-enveloped in-toto attestation. The payload is an in-toto Statement under an appropriate predicate type (SLSA Provenance v1.0 for the build chain, plus a simulation-result predicate). The envelope is signed by the workflow's keyless identity; the Rekor entry IRI is captured.
-
The engineer authors an attestation. An
rtm:SatisfactionAttestationreferences the simulation activity, withrtm:dsseEnvelopeandrtm:rekorLogEntrypointing at the artifacts from step 3. -
The attestation carries a Data Integrity proof. The graph is canonicalized via RDFC-1.0 and signed with the engineer's
eddsa-rdfc-2022cryptosuite; the proof is attached assec:proof. Thedata-integrity-attestationsprofile makes this mandatory. -
The engineer commits via Flexo. Git materializes the attestation as a commit, which the engineer signs with their SSH key (
gpg.format = ssh). The pre-commit hook resolvesrtm:approvedByto the engineer'sfoaf:Personrecord, finds the published SSH key fingerprint, and confirms the commit signature matches. GitHub Actions re-runs the check at PR time — this is the §9.A.3 I7 acceptance gate. -
Audit replays the chain. A verifier with appropriate permissions runs
cosign verifyon the image bundle, verifies the DSSE envelope withwitnessorcosign verify-attestation, checks the Rekor inclusion proof, re-canonicalizes the attestation and verifies itssec:proof, and verifies the git commit signature. Every step uses standard tooling. Noflexo-rtm-specific cryptographic code runs anywhere in the chain.
Sketched in Turtle, the attestation node looks roughly like:
ex:att-2026-05-16-attitude-loop a rtm:SatisfactionAttestation ;
rtm:satisfies <urn:rtm:req/adcs-pointing-accuracy> ;
rtm:approvedBy <https://example.org/people/engineer-42> ;
prov:wasGeneratedBy ex:sim-run-2026-05-16T09:00Z ;
rtm:dsseEnvelope <https://attestations.example.org/dsse/0xab…> ;
rtm:rekorLogEntry <https://rekor.sigstore.dev/api/v1/log/entries/24296fb…> ;
sec:proof [
a sec:DataIntegrityProof ;
sec:cryptosuite "eddsa-rdfc-2022" ;
sec:verificationMethod <https://example.org/people/engineer-42#key-1> ;
sec:proofValue "z3MvGcVxN…" ;
] .
ex:sim-run-2026-05-16T09:00Z a rtm:Activity ;
rtm:hasOCIImage <oci://ghcr.io/example/adcs-sim@sha256:…> ;
rtm:cosignBundle <https://attestations.example.org/cosign/0xcd…> ;
rtm:hasGitRepo <https://github.com/example/adcs-models> ;
rtm:hasGitCommit "abc123def456…" .Every IRI in this snippet lands in a public registry, a transparency log, a git host, or a content-addressed store. Every signature is verifiable with standard off-the-shelf tooling. No part of the chain depends on cryptographic code authored by the flexo-rtm project.
v0.1 ships:
- Vocabulary terms:
sec:proof(reused),rtm:dsseEnvelope,rtm:cosignBundle,rtm:rekorLogEntry,rtm:commitSignatureRequired. - Five composable SHACL profiles, all off by default.
- Pre-commit hook and GitHub Actions workflow templates for the
signed-commitsprofile. - Documentation for each integration (key formats, verification flow, error handling, recommended tools).
v0.1 does NOT:
- Provide a signing service. All signing happens in the adopter's existing tooling (
git,gpg,ssh,cosign,witness,step-ca, etc.). - Enforce any profile by default. Every signing requirement is opt-in.
- Bundle a key directory or PKI. Adopters bring their own identity infrastructure (see Verifiable Self-Certification and Design Spec §4.4).
- Ship a recursive registry of approved signer identities. Such a registry would be internal to the topological research line's recursive completeness story (see Topological Framework Future Work and ADR-032 Methodology Agnosticism as Foundational Axiom); it is not part of
flexo-rtm. - Operate a Rekor instance. Adopters use the public Sigstore Rekor (
rekor.sigstore.dev) or run their own deployment using upstream Sigstore code.
Per ADR-032 Methodology Agnosticism as Foundational Axiom, the standards stack is methodology-neutral. Any downstream-analysis path adopters may choose to run — topological (see Design Spec §4.10 and Topological Framework Future Work), SLSA (which already uses DSSE + in-toto natively), GSN, ARP4754A, or in-house — composes on top of the same primitives. If an adopter runs the topological audit as a downstream-analysis mode, every assurance triangle has a signed validation edge with a signed approver attestation referencing signed activities producing content-hashed artifacts inside cosign-verified containers. The composition principle holds at every depth because every level uses the same battle-tested primitives. No new crypto is required for any downstream-analysis path — only more disciplined composition of the same primitives. flexo-rtm never steps outside its lane to become a cryptography project.
- Design Spec §4.6 (normative source), §4.5 (external URI references), §9.A.3 I7 (git approver binding), §9.A.4 U4 (cosign-verifiable OCI digests), §4.10 (forward compatibility)
- External URI References — git+commit, content hash, OCI digest references that signed envelopes wrap
- Attestation Infrastructure in v0.1 — the attestation surface that DI proofs attach to
- Verifiable Self-Certification — identity infrastructure the approver-binding chain relies on
-
Approver Binding via Git — operational layer for the
signed-commitsprofile - Transcript Replay Semantics — how signed envelopes feed into deterministic replay
- RDFC-1.0 Canonicalization — the canonicalization standard underneath Data Integrity proofs
- Flexo Git Coexistence — git as the materialization surface for attestation commits
- Flexo Git Coexistence
- ADCS Prototype Lessons
- MVC Pattern from RIME TRL ANT
- Human-AI Accountability
- Multi-Agent Discourse Graph Precedent
- OSLC RM and QM Review
- INCOSE V2 Review
- OMG SysMLv2
- PROV EARL GSN P-PLAN
- Dragon Architecture and Mission Enterprise
- Traditional Forward and Backward Analysis
- Attestation Infrastructure in v0.1
- Identity Boundaries and Policy Projections
- External URI References
- Signed Envelopes and Established Standards
- Aspect Coverage with Adequacy and Sufficiency
- Federated Audit and Composition
- Certification Predicate
- Gap Taxonomy
- Quantitative Outcomes
- Engineering Lifecycle Stages (v0.2)
- Topological Framework Future Work (research phase)
- Vertices Edges Faces (research phase)
- Three-Layer Architecture
- Operational Layer UX Discipline
- Storage Layer Flexo Conventions
- Analysis Layer Scope Algebra
- OSLC Roundtrip Acceptance
- Identity Adapter Contract
- Flexo REST Binding
- SysMLv2 Ingestion Contract
- External URI Rules
- Signed Envelope Shapes
- Parsimony Manifest
- Lossless Roundtrip Definition
- Vendor Extension Carry-Through
- OSLC RM Adapter Contract
- OSLC QM Adapter Contract
- ADR Template
- ADR-001 Foundations First Approach
- ADR-002 SysMLv2 Anchoring
- ADR-003 Topological Framework Documented as Future Work
- ADR-003a v0.1 Ships Traditional Analysis Only
- ADR-004 Quantitative Certification Outcome
- ADR-005 Adequacy and Sufficiency as Guidance Subtypes
- ADR-006 Three-Layer Architecture
- ADR-007 Scope as First-Class RDF Resource
- ADR-008 Repo Name and Org Transfer Plan
- ADR-009 Two-Repo Strategy
- ADR-010 OSLC-RM and OSLC-QM in v0.1
- ADR-011 Lossless Criterion A plus C
- ADR-012 Direct RDF Properties over Reified Edges
- ADR-013 Simplicial Complex as Derived View When Built
- ADR-014 Parsimony Layer Build-Time Extraction
- ADR-015 GSN Adoption for Adequacy and Sufficiency
- ADR-016 Composable SHACL Profiles
- ADR-017 knowledgecomplex as Optional Extras
- ADR-018 V minus F Invariant Deferred with Topological Framework
- ADR-019 Derived Binary View from Quantitative Metrics
- ADR-020 Vocabulary Alignment with Zargham 2026
- ADR-021 Three Attestation Subclasses Ship in v0.1
- ADR-022 External URI References as Open-Source Foundation
- ADR-023 Cryptography by Composition of Battle-Tested Standards
- ADR-024 Identity by Thin Projection of External Sources
- ADR-025 Reproducibility is Structural and Local
- ADR-026 Cryptographic Agility via Algorithm Profiles
- ADR-027 Bit-Exactness vs Numerical Tolerances Are Both First-Class
- ADR-028 Scope-Level Adequacy and Sufficiency for Federated Audit
- ADR-029 Engineering Lifecycle Stages as Scope Metadata
- ADR-030 Polycentric ASOT Authority Model
- ADR-031 Attestation Status Pass Fail Deferred Deprecated
- ADR-032 Methodology Agnosticism as Foundational Axiom
- ADR-033 Generalized ASOT Principle for All Identified Things