I would like to share documents within groups and make sure that the member of each group can only access the documents shared in his/her group.


enter image description here

There are 5 participants (A, B, C, D). There are two groups (blue: A, B, D, red: D, C). A and B can only see blue documents (like Document_1) and C can only see red documents (like Document_2). D can see documents shared in both groups.

Approach: The following approach is close to the approach in Tom Leeks answer and is close to OpenPGP. This approach is taken, because it scales to groups with many users.

Example for blue group:

  • A generates a key pair. Public key: pk_a. Private/secret key: sk_a
  • B generates key pair pk_b, sk_b
  • C generates key pair pk_c, sk_c
  • pk_a, pk_b, pk_c are posted to a key server, visible to the public
  • A (or any member of the blue group) generates a synchronous key s1
  • A calculates pk_b(s1) (s1 encrypted with pk_b) and pk_c(s1).
  • A posts pk_b(s1) and pk_c(s1) to the server
  • B and C can now take those values and decrypt them using theis sk
  • A, B, C now know S1 and can share data within the blue group
  • If they are posting data in the blue group, they can use their sk to indicate to the others that it was really send by them
  • we do the same for the red group with the synchronous key S2

This approach was simplified. In reality we would also make sure that each of the users indeed received the correct synchronous key (consider that A could be compromised and try to exclude B from the blue group)

Problem: D has the S1 and S2. D can communicate both in the red and the blue group. How can we make sure that D is not giving S1 to C?


You can't.

Any time you give D access to a document you're trusting D not to copy/share that document. Giving D access to S1 requires that same trust.

  • I was afraid that was the answer – User12547645 Nov 1 '18 at 21:58
  • I was hoping that someone would point me some sort of ring-key. Like a ring signature but with a key, instead of a signature. Is there anything existing like that? – User12547645 Nov 1 '18 at 22:04
  • Perhaps what you need is some central authority that managed all documents, and authenticates participants while confirming which group they're a part of? That would keep D from having access to S1, although D can still give D's credentials to C so that C can impersonate D, so I guess that's really not any more helpful if your primary concern is D sharing documents. – user8675309 Nov 1 '18 at 22:16
  • Would be nice, but I am trying to do it distributed. Without a cetrallot node, who is doing rbac. But in general I think it is a good idea – User12547645 Nov 1 '18 at 22:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.