Skip to content

docs: Add subsection on environment uniqueness in the query structure#109

Open
paulhowardarm wants to merge 3 commits intoietf-rats-wg:mainfrom
paulhowardarm:phEnvironmentUniqueness
Open

docs: Add subsection on environment uniqueness in the query structure#109
paulhowardarm wants to merge 3 commits intoietf-rats-wg:mainfrom
paulhowardarm:phEnvironmentUniqueness

Conversation

@paulhowardarm
Copy link
Copy Markdown
Collaborator

Provides rationale for modelling environments somewhat differently from CoRIM.

Signed-off-by: Paul Howard paul.howard@arm.com

Provides rationale for modelling environments somewhat differently from CoRIM.

Signed-off-by: Paul Howard <paul.howard@arm.com>
Signed-off-by: Paul Howard <paul.howard@arm.com>
Copy link
Copy Markdown
Collaborator

@thomas-fossati thomas-fossati left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

Comment thread draft-ietf-rats-coserv.md Outdated

In many deployments, it is expected that the identifiers used for instances and groups would be highly entropic and either universally unique, or at least unique within the scope of any given CoSERV provider/consumer pair, such that material ambiguities would not arise.
Identifiers of type `uuid` or `ueid`, for example, are typical.
However, this uniqueness property is not guaranteed across all possible profiles and deployments.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure if I understand this correctly. Uniqueness of these identifiers across profiles may not be important, since the query contains a profile field.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, let me think about the wording a bit. The intention here was not to imply that there could be name collisions between different specific profiles (which I would agree is not a concern). The intention was to say that some profiles might employ identifier types that do not guarantee uniqueness by themselves.

Signed-off-by: Paul Howard <paul.howard@arm.com>
Copy link
Copy Markdown

@DhanusML DhanusML left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @paulhowardarm for adding this section.

@gmandyam
Copy link
Copy Markdown
Collaborator

gmandyam commented Apr 1, 2026

This seems overly restrictive as written. Consider a query with group and class, where class only includes the vendor. Then there could be a subset of attesters in the group that correspond to the designated vendor. Why should such a query be prohibited?

@paulhowardarm
Copy link
Copy Markdown
Collaborator Author

This seems overly restrictive as written. Consider a query with group and class, where class only includes the vendor. Then there could be a subset of attesters in the group that correspond to the designated vendor. Why should such a query be prohibited?

Hi @gmandyam - are you tracking any use cases where this would occur in practice, or is it more of a theoretical concern? I'm worried about complicating the query structure. It works well for use cases that we know about, and it makes queries simple to construct. It would be quite disruptive to both the draft and to implementations to make invasive changes to the query model, so we would want to make sure that we have clear motivation for that. The case that you mention here, if it actually occurred, could probably be handled with some light post-processing of the result set. See also my comments on the original issue that gave rise to this PR.

@gmandyam
Copy link
Copy Markdown
Collaborator

This seems overly restrictive as written. Consider a query with group and class, where class only includes the vendor. Then there could be a subset of attesters in the group that correspond to the designated vendor. Why should such a query be prohibited?

Hi @gmandyam - are you tracking any use cases where this would occur in practice, or is it more of a theoretical concern? I'm worried about complicating the query structure. It works well for use cases that we know about, and it makes queries simple to construct. It would be quite disruptive to both the draft and to implementations to make invasive changes to the query model, so we would want to make sure that we have clear motivation for that. The case that you mention here, if it actually occurred, could probably be handled with some light post-processing of the result set. See also my comments on the original issue that gave rise to this PR.

Consider a CCA implementation using a GUK [1]. The GUK will correspond to a set of instances. The CPAK ID could correspond directly to a Group-ID, but the class-ID is defined by a vendor/model. There could be multiple GUKs associated with the same vendor/model.

[1] https://developer.arm.com/documentation/DEN0096/latest/.

@paulhowardarm
Copy link
Copy Markdown
Collaborator Author

[...]
Consider a CCA implementation using a GUK [1]. The GUK will correspond to a set of instances. The CPAK ID could correspond directly to a Group-ID, but the class-ID is defined by a vendor/model. There could be multiple GUKs associated with the same vendor/model.

[1] https://developer.arm.com/documentation/DEN0096/latest/.

I want to make sure I'm understanding these scenarios correctly. They seem mostly to be focused on the cardinality of relationships between instances, groups and classes. But the purpose of a CoSERV query is not to locate a set of instances. The purpose of the query is to locate endorsements/RVs that are relevant to the attester's environment. I'm not sure why it would matter that there could be multiple groups to a class.

In practice, the expectation is that a group ID or an instance ID would always have UUID/UEID semantics and hence uniqueness. Whether searching by instance or searching by group, the result would be unambiguous regardless of vendor/class. Situations where this is not the case seem to be hypothetical/theoretical.

Another thing to remember is that we can make more than one CoSERV query. In fact, I would expect this to be common. Endorsements (such as trust anchors for the AK) would normally be located by instance/group, whereas RVs would more typically be located by class. We see exactly this pattern in the Arm CCA prototype here, which makes a query based on the instance ID to get the AK endorsement, and a second query based on the implementation ID to get the platform RVs. Group IDs are not used in this demo, but I wouldn't expect them to present any kind of problem if they were.

It's also okay for a query to return multiple results. The environment matching semantics of the CoRIM verification algorithm would still apply to ensure that verification and appraisal are conducted only against the relevant artifacts. So IMO it's okay for the CoSERV query language to be a slighter blunter tool, so I'd argue against complicating it unless we have a demonstrable scenario where it fails in practice.

@paulhowardarm
Copy link
Copy Markdown
Collaborator Author

Tagging @gmandyam - just want to make sure you saw the comment above. Does it make sense? Would be good to close on this PR if possible to unblock follow-up work. Note that we've also raised #110 to enable a new query style for specific artifacts.

@gmandyam
Copy link
Copy Markdown
Collaborator

In practice, the expectation is that a group ID or an instance ID would always have UUID/UEID semantics and hence uniqueness. Whether searching by instance or searching by group, the result would be unambiguous regardless of vendor/class. Situations where this is not the case seem to be hypothetical/theoretical.

That makes sense, but it is not clear from the current text, and the collected CDDL does not appear to support the above statement either. C The text below from the proposed PR doesn't quite cover the above concept either:

"Where globally unambiguous identifiers are not guaranteed, a CoSERV provider SHOULD be scoped such that any identifier used in a query remains unambiguous within that provider."

I think changing 'unambiguous' to 'unique' would work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants