Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Language for signer inheritance #377

Open
wants to merge 20 commits into
base: main
Choose a base branch
from

Conversation

deeglaze
Copy link
Collaborator

With the proposed additions to CMW, this fixes Issue #358.

@@ -267,6 +267,8 @@ For more detail, see {{sec-corim-profile-types}}.
A CoRIM can be signed ({{sec-corim-signed}}) using COSE Sign1 to provide end-to-end security to the CoRIM contents.
When CoRIM is signed, the protected header carries further identifying information about the CoRIM signer.
Alternatively, CoRIM can be encoded as a #6.501 CBOR-tagged payload ({{sec-corim-map}}) and transported over a secure channel.
If a CoRIM is contained within a larger signed document or message, there MUST be a single signer assigned to the scope of the CoRIM as part of the document's specification or protocol conveying the message, respectively.
For example, an application may use TLS to transmit an unsigned CoRIM and specify that the signer is the public key in the Hello message.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Worth adding CMW as another example.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I didn't want to make a circular citation since CMW references CoRIM.

Copy link
Collaborator

Choose a reason for hiding this comment

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

No problem with that. These are "weak" links since the references are both informative.

@@ -267,6 +267,8 @@ For more detail, see {{sec-corim-profile-types}}.
A CoRIM can be signed ({{sec-corim-signed}}) using COSE Sign1 to provide end-to-end security to the CoRIM contents.
When CoRIM is signed, the protected header carries further identifying information about the CoRIM signer.
Alternatively, CoRIM can be encoded as a #6.501 CBOR-tagged payload ({{sec-corim-map}}) and transported over a secure channel.
If a CoRIM is contained within a larger signed document or message, there MUST be a single signer assigned to the scope of the CoRIM as part of the document's specification or protocol conveying the message, respectively.
Copy link
Collaborator

Choose a reason for hiding this comment

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

I would phrase the statement something like this.

`A CoRIM can be used without signature protection (please see unsigned-corim-map),

For example, an application may use TLS to transmit an unsigned CORIM and specify that the signer
is the public key in the Certificate Message.

Alternatively an unsigned CoRIM can be a part of a RATS Message which itself is signed (example a signed CMW).
In such cases the authority of CoRIM is delegated to the signer encapsulating the CoRIM.`

yogeshbdeshpande

This comment was marked as duplicate.

Copy link
Collaborator

@yogeshbdeshpande yogeshbdeshpande left a comment

Choose a reason for hiding this comment

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

Just realised PR #376, so modifying the review!

Copy link
Collaborator

@yogeshbdeshpande yogeshbdeshpande left a comment

Choose a reason for hiding this comment

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

suggested changes

Comment on lines 270 to 271
If a CoRIM is contained within a larger signed document or message, there MUST be a single signer assigned to the scope of the CoRIM as part of the document's specification or protocol conveying the message, respectively.
For example, an application may use TLS to transmit an unsigned CoRIM and specify that the signer is the public key in the Certificate message.
Copy link
Collaborator

@yogeshbdeshpande yogeshbdeshpande Feb 12, 2025

Choose a reason for hiding this comment

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

Suggested change
If a CoRIM is contained within a larger signed document or message, there MUST be a single signer assigned to the scope of the CoRIM as part of the document's specification or protocol conveying the message, respectively.
For example, an application may use TLS to transmit an unsigned CoRIM and specify that the signer is the public key in the Certificate message.
For example, an application may use TLS to transmit an unsigned CORIM and specify that the signer is the public key in the Certificate Message.
Alternatively an unsigned CoRIM can be a part of a RATS Message which itself is signed (example a signed CMW).
In such cases the authority of CoRIM is delegated to the signer encapsulating the CoRIM.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yogesh please double-check this against the current status.

Copy link
Collaborator

@nedmsmith nedmsmith left a comment

Choose a reason for hiding this comment

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

The corim-meta-map information is not available unless the COSE_Sign1 is used. Hence, the signer role has to be added to corim-entity-map. This means we need a manifest-signer role defined.

@nedmsmith
Copy link
Collaborator

nedmsmith commented Feb 12, 2025

Push 5df10ee adds the manifest-signer role so that an unsigned-corim can contain the signer entity information when the COSE-Sign1-corim form of signing isn't available.

Copy link
Collaborator

@nedmsmith nedmsmith left a comment

Choose a reason for hiding this comment

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

See comments inline.

deeglaze and others added 15 commits February 24, 2025 14:38
With the proposed additions to CMW, this fixes Issue ietf-rats-wg#358.
Co-authored-by: Thomas Fossati <[email protected]>
Added manifest-signer role to the roles.
Added example that tests use of manifest-signer role in an unsigned-corim
Also change the TN() tagged data to the 2-ary array, as Laurence wants
to remove that from the CMW spec.
Co-authored-by: Ned Smith <[email protected]>
Copy link
Collaborator

@nedmsmith nedmsmith left a comment

Choose a reason for hiding this comment

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

see comments


A method of signing a bundle of CoRIMs together is through a signed RATS Conceptual Message Wrapper (CMW) {{-cmw}}.
The COSE_Sign1 signature format can be used with a CMW collection.
The COSE protected header can include a CMW collection type name.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
The COSE protected header can include a CMW collection type name.
The COSE protected header can include a Collection CMW type name.

The CMW MAY use any label for its CoRIMs.
If there is a hierarchical structure to the CoRIM bundle, the base entry point SHOULD be labeled `0` in CBOR or `"base"` in JSON.
It is RECOMMENDED to use to label a CoRIM with its tag-id in string format, where `uuid-type` string format is specified by [RFC4122].
CoRIMs distributed in a bundle MAY declare their interdependence `dependent-rims` with local resource indicators.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
CoRIMs distributed in a bundle MAY declare their interdependence `dependent-rims` with local resource indicators.
CoRIMs distributed in a bundle SHOULD declare their interdependence using `dependent-rims` with local resource indicators.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Why is this not SHOULD?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

because it's redundant. The tags are in the values of the collection CMW's records, so you have TAG-ID => {TAG-ID, ...}

~~~

The CMW MAY use any label for its CoRIMs.
If there is a hierarchical structure to the CoRIM bundle, the base entry point SHOULD be labeled `0` in CBOR or `"base"` in JSON.
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm confused, shouldn't the label be a UUID? I don't see how its used in the example.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

If there's a root CoRIM, there's nothing pointing to it, and you need a notion of where to start drilling down in the graph.

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