È abbastanza facile:
- Genera una chiave master con cui crittografare i dati.
- Genera una chiave utente per ciascun utente che desideri sia in grado di decrittografare i dati.
- Cripta la chiave master con ciascuna delle chiavi utente e memorizza tutti i risultati crittografati.
- Quando si desidera decodificare, utilizzare la chiave dell'utente per decodificare il record della chiave master crittografato e utilizzarlo per decrittografare i dati.
Se usi le chiavi a 128 bit con AES, puoi semplicemente utilizzare AES direttamente senza una modalità di blocco (ECB se è forzato) per crittografare la chiave principale con ogni chiave utente, perché la chiave si inserisce perfettamente in un blocco taglia. Se utilizzi chiavi a 256 bit, dovresti utilizzare una modalità di blocco come CBC e archiviare l'IV accanto a ciascun record per la decrittografia.
Tenere presente che un tale schema non consente di revocare in modo sicuro l'accesso da un utente senza ricodificare completamente i dati, poiché un utente malintenzionato potrebbe conservare una copia della chiave master. Inoltre, questo non si ridimensionerà molto bene per molti e molti utenti (ad esempio migliaia), poiché il tuo set di chiavi diventa molto grande.
Per crittografare i file stessi, raccomando AES-CBC se la manomissione non è un problema. È possibile memorizzare l'IV in chiaro con i dati del file. Se la manomissione è un problema, si dovrebbe prendere in considerazione una modalità AEAD che impedisce una significativa manomissione dei dati del file.