Sono uno sviluppatore di software e vorrei proteggere la mia applicazione in modo offline, come molti software che attivano telefonicamente. A seguito di uno screenshot tratto da immagini di google su ciò che vorrei ottenere:
Sono interessato a come funziona questa funzionalità dal punto di vista della sicurezza. Quello che ho dovuto dovrebbe funzionare in questo modo (correggimi se sbaglio):
- L'applicazione genera un codice casuale e lo mostra all'utente
- L'utente telefona al fornitore dell'applicazione e comunica il codice.
- La società controlla l'identità dell'utente: possiamo supporre che possa controllare in modo sicuro l'identità dell'utente.
- La società possiede una chiave privata, la stessa memorizzata nell'applicazione, quindi con un software interno concatena il codice casuale fornito dall'utente con la chiave privata, genera un hash crittografico (ad esempio SHA-256 hash sum (SHA-2 )) e comunicano il risultato all'utente.
- Dopo che l'utente ha inserito quel codice nel modulo, l'applicazione controlla che il codice di sblocco indicato sia uguale a quello che ha calcolato internamente.
Funziona così?