-
Notifications
You must be signed in to change notification settings - Fork 20
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
A high confidentiality scenario that one should not forget #96
Conversation
proposals/wac-ucr/index.bs
Outdated
A service with very high security and confidentiality requirements must publish | ||
resources without the URL for each resource leaking information about it's content. | ||
This service publishes all these resources at a domain with each document named | ||
by a secure hashing under one root container. Some of these resources at those |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why hashing and not just a random uuid?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just meant the path names to be opaque. Perhaps using UUIDs generators are a good idea. It is just that the path names don't need to be globally unique.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree that hashing may only bring unintended confusion. UUID seems like a safer alternative for this use case.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I also agree that the concept of a hash brings with it the question "hash of what?", where an default answer tends to be "of the content, of course", which is not the intention at all. A UUID on the other hand stands for a Univerally Unique Identifier, which is too strong for the use case. Is there a word that captures something in between?
Looking for "Locally Unique Identifiers" I found quite a few questions concerning those on Stack Exchange and even a longer blog post from 2010.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://www.w3.org/TR/capability-urls/#capability-url-design
Good unique URLs include an unguessable unique identifier such as a UUID.
Even though we don't talk about capability urls, i think this suggestion for unguessable unique identifiers applies here as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 to UUID
proposals/wac-ucr/index.bs
Outdated
A service with very high security and confidentiality requirements must publish | ||
resources without the URL for each resource leaking information about it's content. | ||
This service publishes all these resources at a domain with each document named | ||
by a secure hashing under one root container. Some of these resources at those |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree that hashing may only bring unintended confusion. UUID seems like a safer alternative for this use case.
@csarven brought up a concern during today's teleconf regarding how the issue about opaque filenames had been addressed in Solid before. Note: this use case makes clear we need both. The way to get both is to notice that LDP Containers are actually designed with opaque names in mind. There was no consensus there to specify Containers that would guarantee to a client that the created resource would occur within the But this is easy to remedy. I proposed creating |
I'm wondering if this is really an authorization use case, vs. a use case about how resources are or can be addressed/represented on the resource server itself? |
@justinwb it's a security/confidentiality use case. Some publishers don't want information leakage from URLs. Authorization is one aspect of security, and it affects authorization, as it means one has to build the protocol to make follow your nose discovery of ACLs explicit. |
I have updated the use case with an example container layout structure based on UUIDs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To me this scenario is fundamentality about URI owners wanting to organise resources hierarchically in a way that is not coupled with assigned URI ie. information about hierarchical containment is in the resource description, and hence a matter of knowledge organisation. As said, the algorithm(s) to generate the identifier while important, the primary intention is to not expose any information about its contents or relation to other resources through its assigned URI.
I suggest that we should acknowledge the scenario because it is significant, but unclear as to where exactly it should be taken up - which layer(s) eg. resource access, knowledge organisation, access controls?
Some considerations below for when this UC is followed-up. If anything can be generally clarified in the UC based on the following, that'd be great.
The existing requirements in Solid may already or come close to covering the requirements that can come out of this scenario:
If servers are to assign a URI when creating a resource (as opposed to client's preferred), then POST to root container is the only way. Clients will have to specify their intention to create a confidential URI - perhaps through a Link header rel=type - and server has to guarantee it. Unless some exceptions are introduced to existing requirements on hierarchical containment, all confidential URIs are potentially discoverable through root container's description.
It also seems to entail that clients will have to manage containment statements. As to if and how the ACL inheritance algorithm can be applied here is unclear. Perhaps this scenario should be addressed more generally under resource access and knowledge organisation.
Thanks @csarven . Currently it is in the Privacy section, which makes sense I think. The reason why it is relevant to authorization is that the scenario reminds us that we need to be explicit about how access control rules are followed and default reasoning is done. So it forces the follow your nose principle to be taken seriously (It's a good way to test that client or server libraries implement those correctly). How such containers are created is out of scope for the authorization-panel. That would be something to be done on a different panel along with how one should create root containers.
For hierarchical containment to work as you wish requires an addition to the LDP ontology as argued in issue 94: Enable full use of relative URLs in Solid. The default behavior of ldp:BasicContainers allows the behavior described here. I.e. this is a possible way an ldp:BasicContainer can work, as specified by LDP. I do not think this creates a problem that all resources would be discoverable by a GET on the root container ( |
@@ -802,6 +802,83 @@ For example, if the data Carol and Oscar saw in the resume was | |||
background, she wouldn't want them to know that they were only seeing | |||
a filtered view. | |||
|
|||
### High Security Scenario ### {#uc-confidential} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Action Item - JB to update title and merge
This high confidentiality scenario partly explains some aspects of LDP Containers.