Decrittografa i dati su qualsiasi computer Windows dallo stesso utente

4

Ho un sistema di licenze che attualmente blocca le licenze su un computer fisico usando CryptProtectData (con CRYPTPROTECT_LOCAL_MACHINE) e CryptUnprotectData . Questo ovviamente non è l'intero sistema di licenze, è solo la parte che conferma se la licenza può essere eseguita su questo computer (la licenza stessa è crittografata con un altro metodo di crittografia).

Attualmente prendo qualcosa come una stringa "consentita" e la crittografo sul computer client con CryptProtectData . Questo viene quindi inviato insieme ad altri dati come "richiesta di licenza" ad un server di licenza. Una licenza viene quindi restituita con questi dati non modificati e salvati sul computer client. Se il sistema di licenze client esegue quindi CryptUnprotectData e ottiene "consentito" indietro quando si utilizza quella licenza su quella macchina, sa che è una macchina valida.

Tuttavia sono giunto alla conclusione che sarebbe stato meglio se la licenza potesse seguire l'utente al posto della macchina. Questo può essere fatto con CryptProtectData ma solo su un profilo di roaming che non penso sia molto comune.

Quindi quello che sto cercando è un metodo diverso da CryptProtectData in cui un utente di Windows può crittografare i dati sul computer A e quindi decodificarlo correttamente sul computer B (A e B nello stesso dominio di Windows) senza alcun roaming profili. Forse qualche ID utente può essere richiesto da Windows e utilizzato come chiave per la crittografia?

Mi sono guardato intorno e ho incontrato il SID dell'utente del dominio Windows. Questo potrebbe essere usato per identificare in modo sicuro un utente o può essere manipolato? Forse non è unico su reti separate?

    
posta DaedalusAlpha 22.05.2015 - 15:00
fonte

1 risposta

4

Questo è un problema fondamentale per le licenze: non c'è semplicemente alcun modo per far rispettare che è lo stesso utente una volta che si consentono più macchine, perché non ci sono credenziali per verificare l'identità.

È anche un problema molto studiato. È improbabile che tu possa migliorare le soluzioni che le principali società di software hanno investito in milioni. Vorrei semplicemente esaminare le soluzioni esistenti e sceglierne una che soddisfi al meglio le tue esigenze (nessuna sarà perfetta).

Un paio di esempi di soluzioni abbastanza pesanti che consentono al software di seguire un utente:

  • Richiede una chiave USB fisica per l'utilizzo del software. Questo è probabilmente il modo più efficace per farlo, ma ovviamente costoso e doloroso per te e per gli utenti.
  • Crittografia basata sul computer, ma consentire più macchine in modo gestito. L'utente è tenuto a registrarsi online per ogni nuova macchina. È possibile limitare il numero di macchine per utente. Oppure puoi revocare l'accesso alle vecchie copie (richiedendo loro di spostare il software anziché sbloccare una nuova copia) se sei disposto a richiedere la connessione a Internet per la verifica della licenza su base continuativa.
risposta data 22.05.2015 - 15:26
fonte

Leggi altre domande sui tag