Ho un numero di file di configurazione e dati binari che devono essere memorizzati su disco crittografati. Solo l'utente che ha crittografato dovrebbe essere in grado di decifrare le informazioni. Finora, ho usato DPAPI con successo per crittografare e decifrare queste informazioni.
Nuovo requisito: il sistema / questi dati devono ora essere distribuiti su più macchine. È fondamentalmente un problema di distribuzione, ma leggermente più complicato e automatizzato. Ora devo essere in grado di decodificare i dati su una macchina diversa da quella che ha crittografato i dati.
Quindi, non posso più usare DPAPI out of the box poiché i dati crittografati possono essere decifrati solo sulla stessa macchina. Tuttavia, mi piacerebbe usare questo preciso principio di crittografia legato all'utente, senza essere legato a una macchina.
Ho trovato questo link ma è un po 'eccessivo e, in ogni caso, non è come se ci fosse un prodotto che posso usare.
Tutti i client (beh, sono tutti server di applicazioni virtuali, ma in questo scenario, chiamiamo i client) in questo progetto sono in qualche modo connessi al server SQL. La mia idea è quindi quella di utilizzare SQL Server / SQLCLR come gestore di chiavi distribuito.
DPAPI viene quindi convertito in AES su ciascun client. La chiave per enc / dec AES locale viene recuperata durante la crittografia / decrittografia dal server sql. Su SQL Server, la chiave AES viene crittografata usando DPAPI con SQLCLR, quindi ottengo la stessa funzionalità di ish di prima. Sto pensando a una tabella di base con due colonne non metadata: utente e la chiave AES (crittografata) distribuita. Ovviamente limiterò l'accesso a questo database / tabella solo agli account degli utenti interessati.
-
Qualche difetto di sicurezza evidente in questa architettura? Ho capito che il tasto AES deve essere "in chiaro" in memoria a un certo punto per poterlo assegnare all'implementazione dell'algoritmo .net, che non è eccezionale.
-
C'è un modo migliore per ottenere la stessa cosa? Ho la sensazione che non possa essere la prima persona ad avere questo problema e odio reinventare la ruota.