--- a/base/index.html
+++ b/head/index.html
@@ -13,6 +13,12 @@
"shortName": "ai-catalog",
"edDraftURI": "https://ai-catalog.io/",
"localBiblio": {
+ "RFC3986": {
+ "title": "Uniform Resource Identifier (URI): Generic Syntax",
+ "href": "https://www.rfc-editor.org/rfc/rfc3986",
+ "status": "RFC",
+ "publisher": "IETF"
+ },
"RFC8785": {
"title": "JSON Canonicalization Scheme (JCS)",
"href": "https://www.rfc-editor.org/rfc/rfc8785",
@@ -470,6 +476,14 @@
align with the publisher domain of the entry's identifier.
When a Trust Manifest appears on a Host Info object, identity
SHOULD match the host's identifier field when present.
An artifact may legitimately hold more than one verifiable identity at
+the same time, for example a SPIFFE ID for runtime workload identity
+and a DID for publisher-anchored organizational identity. Additional
+identities are declared through the OPTIONAL alsoKnownAs member (see
+Optional Members). The identity field remains the
+single canonical subject identifier: consumers MUST use identity when
+referencing the artifact's trust subject or checking identity
+equivalence between entries.
When multiple entries share the same identifier (with different version
values), each entry MAY carry its own Trust Manifest. There is no
requirement that all versions carry identical trust metadata — trust
@@ -483,6 +497,27 @@
alsoKnownAsAn array of strings, each containing a globally unique URI
+ [[RFC3986]] that identifies the same subject as identity under an
+ alternative identity scheme. The following rules apply:
identity
+ alone remains canonical and is used for referencing and
+ equivalence checking.identity field.identity. Aliases MAY belong to different
+ trust domains or identity schemes.signature; no per-alias proof is required. Consumers MUST NOT
+ rely on an alias from a manifest whose signature is absent or
+ fails verification (see
+ Verifying Alternative Identities).trustSchemaattestations{
"identity": "did:web:acme.com:agent:finance",
"identityType": "did",
+ "alsoKnownAs": [
+ "spiffe://acme.com/ns/finance/sa/finance-agent-pod"
+ ],
"trustSchema": {
"identifier": "urn:trust:acme-enterprise-v1",
"version": "1.0",
@@ -710,6 +748,25 @@
Confirm the JWT claims bind the publisher.identifier to the Trust
Manifest's identity.
+
+
+Verifying Alternative Identities
+Aliases need no verification procedure of their own. Because the
+signed payload covers alsoKnownAs, verifying the Trust Manifest
+signature as described in
+Trust Manifest Signatures also verifies
+every listed alias: a valid signature proves that the publisher
+controlling the canonical identity claims each alias as an
+equivalent identity of the subject. Consumers MUST NOT rely on aliases
+from a manifest whose signature is absent or fails verification.
+Once the signature is verified, a consumer MAY use whichever identity,
+canonical or alias, matches the identity schemes it is able to
+resolve — for example, using a DID alias for DID-based discovery when
+its tooling cannot resolve a canonical SPIFFE ID.
+Note that the signature proves the publisher claims the alias, not
+that the alias's own trust domain acknowledges the link. Consumers
+making authorization decisions inside the alias's trust domain MAY
+additionally obtain proof of control native to the alias scheme.
Verifying Artifact Integrity
@@ -1155,6 +1212,7 @@
}
class TrustManifest {
identity string
+ alsoKnownAs string[]
trustSchema TrustSchema
attestations Attestation[]
provenance ProvenanceLink[]
@@ -1304,6 +1362,7 @@
TrustManifest = {
identity: text,
? identityType: text,
+ ? alsoKnownAs: [* text],
? trustSchema: TrustSchema,
? attestations: [* Attestation],
? provenance: [* ProvenanceLink],