Vorrei condividere i documenti all'interno dei gruppi e assicurarmi che il membro di ciascun gruppo possa accedere solo ai documenti condivisi nel suo gruppo.
Situazione:
Cisono5partecipanti(A,B,C,D).Cisonoduegruppi(blu:A,B,D,rosso:D,C).AeBpossonovederesolodocumentiblu(comeDocumento_1)eCpossonovederesolodocumentirossi(comeDocumento_2).Dpuòvedereidocumenticondivisiinentrambiigruppi.
Approccio:Ilseguenteapproccioèvicinoall'approccioin
Esempio per il gruppo blu:
- A genera una coppia di chiavi. Chiave pubblica: pk_a. Chiave privata / segreta: sk_a
- B genera una coppia di chiavi pk_b, sk_b
- C genera una coppia di chiavi pk_c, sk_c
- pk_a, pk_b, pk_c sono pubblicati su un server delle chiavi, visibili al pubblico
- A (o qualsiasi membro del gruppo blu) genera una chiave sincrona s1
- A calcola pk_b (s1) (s1 crittografato con pk_b) e pk_c (s1).
- Un post pk_b (s1) e pk_c (s1) al server
- B e C possono ora prendere quei valori e decodificarli usando theis sk
- A, B, C ora conoscono S1 e possono condividere i dati all'interno del gruppo blu
- Se pubblicano dati nel gruppo blu, possono usare il loro sk per indicare agli altri che è stato davvero inviato da loro
- facciamo lo stesso per il gruppo rosso con il tasto sincrono S2
Questo approccio è stato semplificato. In realtà dovremmo anche assicurarci che ognuno degli utenti abbia effettivamente ricevuto la chiave sincrona corretta (considera che A potrebbe essere compromesso e provare ad escludere B dal gruppo blu)
Problema: D ha S1 e S2. D può comunicare sia nel gruppo rosso che in quello blu. Come possiamo essere sicuri che D non stia dando S1 a C?