Potrei cadere in una classica trappola per il problema della crittografia qui ... Sto sviluppando applicazioni che usano AES e crittografia a chiave pubblica / privata per un po 'di tempo, quindi ho una buona conoscenza dell'uso diretto, tuttavia non lo farei t pretende di essere un crittografo.
Situazione che capisco:
- Utente1 crittografa un file con una chiave AES-256 e carica il file crittografato da qualche parte.
- Chiunque desideri accedere al file può chiedere a Utente1 e consegnargli la sua chiave pubblica.
- Utente1 crittografa la chiave AES-256 con la propria chiave pubblica e la carica. Tutti gli utenti autorizzati possono quindi decodificare la chiave e, a sua volta, decrittografare il file.
Bene.
Che cosa succede se Utente1 vuole avere il controllo su chi può accedere al file dopo l'evento?
- Passaggio 1 come sopra
- Passaggio 2 come sopra
- Quando qualcuno richiede l'accesso a un file User1 genera una nuova chiave AES-256, crittografa nuovamente il file con quello, lo carica. Quindi crittografa la nuova chiave specifica dell'utente con la propria chiave pubblica. Ora solo quell'utente ha quella chiave. Quando viene richiesto il file, il richiedente può firmare la richiesta con la sua chiave privata e l'utente sa chi lo ha richiesto.
- Se l'utente condivide la chiave, la firma della richiesta proviene da un'altra parte e User1 potrebbe eliminare la versione del file a cui è possibile accedere con quella chiave, bloccando in effetti quell'utente (e tutti quelli che hanno condiviso la chiave con)
Funzionerebbe, tuttavia a) richiede l'interazione dell'Utente1 per ogni nuovo utente, e b) è inefficiente in quanto vi sono più copie dello stesso file.
Obiettivo: Condivisione file crittografata end to end con una chiave di accesso per utente.
Esiste una crittografia retroattiva? O se ci fosse qualcos'altro (come una risorsa sulla blockchain) che potrebbe essere provato essere di proprietà del richiedente e quindi dare loro accesso?
Stavo pensando a quando qualcosa è stato cifrato con le chiavi pubbliche di più persone, richiede a tutti loro di decrittografarlo per visualizzare il file, che non aiuta, ma è stato un filo di pensieri
Stavo anche pensando che se l'utente possedeva una risorsa sulla blockchain (ERC721) il proprietario del file poteva richiedere che la richiesta di accesso ai file provenisse da lì, o verificata da quell'asset. Simile alla firma della richiesta, suppongo, ma sarebbe legato al portafoglio di un utente specifico e la condivisione di quel portafoglio potrebbe significare che l'utente iniziale perde l'accesso al file (qualcuno che lo condivide con la proprietà del proprietario degli spostamenti della risorsa).
In altre parole, non ho necessariamente bisogno che la soluzione sia "molte chiavi AES", ma un modo per controllare l'accesso alla decrittografia per utente, anche se hanno la chiave.
P.S Mi piacerebbe farlo con la minore logica lato server possibile. I contratti intelligenti funzionano, se possono essere utilizzati, o le applicazioni lato client ....