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?