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

RFC010 multi vendor #23

Closed
wants to merge 22 commits into from
Closed

RFC010 multi vendor #23

wants to merge 22 commits into from

Conversation

woutslakhorst
Copy link
Member

RFC010 defines how a DID subject can authenticate with another DID subject when the DID subjects are, in fact, the same organization.

Closes #18

rfc/rfc010-multiple-operators.md Outdated Show resolved Hide resolved
rfc/rfc010-multiple-operators.md Outdated Show resolved Hide resolved
rfc/rfc010-multiple-operators.md Show resolved Hide resolved
rfc/rfc010-multiple-operators.md Outdated Show resolved Hide resolved
rfc/rfc010-multiple-operators.md Show resolved Hide resolved

## 3. Registration

Each care organization that is registered at a node by a SaaS provider will have its own DID document. If a care organization uses 2 SaaS providers, it'll have two different DID documents. Since identification within the OAuth flow is done by DID, the DID subject need to be aware of each other. This can be done by adding the DID of one document and add it to the other. This is done by using the `alsoKnownAs` field defined in the [core-did-spec](https://www.w3.org/TR/did-core/#also-known-as).
Copy link
Member

Choose a reason for hiding this comment

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

explain what is identified here, something like;

Since identification of the care organization within the OAuth flow

Copy link
Member Author

Choose a reason for hiding this comment

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

Switched to subject and added subject to terminology


## 3. Registration

Each care organization that is registered at a node by a SaaS provider will have its own DID document. If a care organization uses 2 SaaS providers, it'll have two different DID documents. Since identification within the OAuth flow is done by DID, the DID subject need to be aware of each other. This can be done by adding the DID of one document and add it to the other. This is done by using the `alsoKnownAs` field defined in the [core-did-spec](https://www.w3.org/TR/did-core/#also-known-as).
Copy link
Member

Choose a reason for hiding this comment

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

This can be done by adding the DID of one document and add it to the other

"adding the DID of one document" already implies implementation, so I'd use "referring" in this sentence, since the implementation is defined in the next sentence (using alsoKnownAs)

This can be done by having the DID documents of the SaaS providers refer to each other.

rfc/rfc010-multiple-operators.md Show resolved Hide resolved
rfc/rfc010-multiple-operators.md Outdated Show resolved Hide resolved

A DID subject that is added under the `alsoKnownAs` field is granted access to resources from the custodian.
In the case when the private key of the actor is compromised and the attacker is changing keys, the custodian SHOULD take appropriate action.
The node operator MUST remove a DID from the `alsoKnownAs` field when the `authentication` or `controller` field changes in the referenced DID document.
Copy link
Member

Choose a reason for hiding this comment

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

The node operator MUST remove a DID from the alsoKnownAs field when the authentication or controller field changes in the referenced DID document.

I find it a bit hard to read without a concrete example (say vendor Alice and Bob or A and B), but if I understand correctly if A refers to B's DID using alsoKnownAs, A MUST remove the alsoKnownAs referral to B when B changes its authentication or controller key, regardless there was an attack or not?

Copy link
Member Author

Choose a reason for hiding this comment

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

That's correct and it's quite harsh. I'm not sure if it's needed. We should discuss it.

## Multiple operator service access
### Abstract

This RFC describes an addition to [RFC003](rfc003-oauth2-auithorization.md) and [RFC006](rfc006-distributed-registry.md) on how to handle resource access when a legal party has multiple node operators. This is the case when a care organization uses multiple pieces of software from different SaaS providers. A SaaS provider can alter the care organization DID document so the DID document of the other provider is added as synonym. This is done by using the *also-known-as* relation.
Copy link
Member

Choose a reason for hiding this comment

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

Perhaps elaborate the problem and solution here a bit more explicit. Talk about te trust relation between node provider and care provider. Than explicitly introduce the solution this RFC will be about:

This RFC introduces a solution where DID documents refer to each other using the also-known-as propertie.


## 3. Registration

Each care organization that is registered at a node by a SaaS provider will have its own DID document. If a care organization uses 2 SaaS providers, it'll have two different DID documents. Since identification within the OAuth flow is done by DID, the DID subject need to be aware of each other. This can be done by adding the DID of one document and add it to the other. This is done by using the `alsoKnownAs` field defined in the [core-did-spec](https://www.w3.org/TR/did-core/#also-known-as).
Copy link
Member

Choose a reason for hiding this comment

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

Perhaps explain why each saas provider has their own DID document? I suspect it has to do with the coupling between document and services which are vendor specific?

}
```

This is a unary relation. In the above example, `did:nuts:2` does not know anything about `did:nuts:1`.
Copy link
Member

Choose a reason for hiding this comment

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

So, why do we nog require the other document to point back?

Copy link
Member Author

Choose a reason for hiding this comment

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

Why would we? Relations are unary in data transfer between custodian and actor. The custodian needs to trust the actor.

The other way around could be needed to signal the actor that there's data available on another node. That could be a recommendation not a necessity.


## 4. Authentication

As defined in point 3 in [§6.2 of RFC003](rfc003-oauth2-auithorization.md#6-2-authorization), if the actor and custodian are the same, access is granted. If a custodian had added an actor in their DID document under the `alsoKnownAs` field, it MUST grant access as defined by point 3 in §6.2 of RFC003. Bolts MUST describe what resources may be accessed in this way and if user context is required.
Copy link
Member

Choose a reason for hiding this comment

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

The other document is just a number until it has VCs. Why not check fot those? This also prevents typos were the wrong documents are coupled and everything is mixed up.

Copy link
Member Author

Choose a reason for hiding this comment

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

This spec only defines the underlying mechanism for authz/trust. Specifications of VC's could define the automatic additions of synonyms when data of the VCs match.


A DID subject that is added under the `alsoKnownAs` field is granted access to resources from the custodian.
In the case when the private key of the actor is compromised and the attacker is changing keys, the custodian SHOULD take appropriate action.
The node operator MUST remove a DID from the `alsoKnownAs` field when the `authentication` or `controller` field changes in the referenced DID document.
Copy link
Member

Choose a reason for hiding this comment

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

This all feels very error prone. I would like to hook in to existing processes like revoked VCs for example.

Copy link
Member Author

Choose a reason for hiding this comment

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

This spec has nothing to do with VCs. This point was added to detect compromised DID Documents and protect the custodian automatically. Automatic synonyms via VCs could potentially mitigate the problem of user intervention.

Copy link
Member Author

Choose a reason for hiding this comment

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

Will change node operator to node, since it's the software that should do it.

@@ -0,0 +1,64 @@
# RFC010 Multiple operator service access
Copy link
Member

Choose a reason for hiding this comment

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

I thing this document describes a specific subset where the care provider does not administers its own DID document. I think we should add that case here as well or make it explicit that it is about delegated identity.

Copy link
Member Author

Choose a reason for hiding this comment

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

It's still valid for when an care organization manages its own keys. They will probably not use the functionality. The only thing this spec defines is that data MUST be accessible for DID subjects that refer to each other using the also-known-as property.

@woutslakhorst
Copy link
Member Author

This mechanism poses a security risk through fishing. Giving access to data must be supported with a piece of crypto (VCs). The idea for creating synonyms is OK, but it must be done in a different way.

@reinkrul reinkrul deleted the iss18_multi_vendor branch September 28, 2021 06:58
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.

New RFC: how to cater care organizations with multiple vendors, addition to RFC006
3 participants