Sto facendo ricerche sui metodi di autenticazione del software che sono semplici ma sicuri da implementare nei miei progetti.
IDEAS: passaggi per autenticare le app
L'applicazione è in esecuzione da un'unità USB in quanto non viene mai installata su nessun computer.
- Ad ogni esecuzione, il software avvia Informazioni come USB Hardware ID e forse un ID univoco per l'app vengono raccolte e in qualche modo hash in una stringa key-like di attivazione.
- Questa stringa viene quindi passata come parametro in una funzione PHP dove viene invertita (lato server) e il contenuto viene verificato su un database per verificare che l'applicazione sia stata eseguita da una chiave USB 'autorizzata' e non copiata da una a un altro (dato che l'ID H / W cambierebbe e non corrisponderebbe a quello nel database) - in pratica questo ridurrebbe al minimo la possibilità che un client ottenga due "licenze software" funzionanti.
Domande
L'idea è di essere in grado di recuperare le colonne per la riga nel database, che corrisponde a quel particolare HW ID e all'app segreto univoco individuerà la riga corretta. Il PHP viene utilizzato per verificare se ulteriori voci in quella riga corrispondono anche ad altri valori, ad esempio se la chiave HW è scaduta o meno. Tuttavia , per impedire all'utente di utilizzare sempre lo stesso parametro di stringa, dovrebbe essere casuale e quasi impossibile da calcolare / indovinare, ma collegare alla stessa posizione nel database.
Ora sto considerando la crittografia anziché l'hashing (a vantaggio del mantenimento dei dati), in quanto può essere decodificato utilizzando una chiave master sul server. Capisco che l'hashing si converta solo in una direzione e forse non stavo esprimendo correttamente lo scenario prima di questa modifica, quindi spero che le cose siano diventate un po 'più chiare. Qualcuno potrebbe guidarmi nella giusta direzione? Come è fatto?
Apprezzerei molto qualsiasi feedback e idee su come farlo funzionare correttamente.