Soy un desarrollador de software, y me gustaría proteger mi aplicación de forma offline, como ocurre con muchos programas que se activan por teléfono. Siguiendo una captura de pantalla de las imágenes de Google sobre lo que me gustaría lograr:
Me interesa cómo funciona esta funcionalidad desde un punto de vista de seguridad. Lo que supuse debería funcionar así (corríjame si me equivoco):
- La aplicación genera un código aleatorio y lo muestra al usuario
- El usuario llama al proveedor de la aplicación y le comunica el código.
- La compañía verifica la identidad del usuario: podemos suponer que puedo verificar de forma segura la identidad del usuario.
- La empresa posee una clave privada, la misma que se almacena en la aplicación, por lo que con un software interno concatena el código aleatorio dado por el usuario con la clave privada, genera un hash criptográfico (p. ej., suma de hash SHA-256 (SHA-2 )) y comunicar el resultado al usuario.
- Después de que el usuario inserte ese código en el formulario, la aplicación verifica que el código de desbloqueo dado sea igual al que ha calculado internamente.
¿Funciona así?