Soy bastante nuevo en temas de seguridad de la información y estoy buscando orientación para implementar la transmisión segura de datos estadísticos de una aplicación a un servidor. Además, no quiero ningún conocimiento sobre los datos almacenados en el servidor.
Este es mi enfoque:
- Un desarrollador crea un par de claves y coloca la clave pública en la aplicación.
- La aplicación genera una clave pública y una clave privada cuando se inicia por primera vez. Envía la clave pública al servidor y obtiene una identificación de usuario a cambio. Luego descarta la clave pública generada.
- Cada vez que la aplicación envía datos, lo hace cifrando los datos con la clave pública del servidor y firmándola con su propia clave privada.
- El desarrollador puede recuperar los datos para cada ID de usuario del servidor y verificar la autenticidad con la clave pública almacenada con la ID de usuario.
Y aquí están mis preguntas:
- ¿Es suficiente enviar la clave pública generada en el dispositivo una vez o debo usar un esquema más sofisticado para verificar que este usuario exacto envíe los datos? No hay login y no me importa quién es el usuario. Pero quiero asegurarme de que un atacante no pueda enviar datos erróneos falsificando la ID de usuario sin ser detectado.
- ¿Qué debo hacer para detectar los datos faltantes? Está bien si algunos datos se pierden debido a problemas de red. Estoy considerando usar enteros ascendentes en los datos cifrados. Esto revelaría si alguien roba la clave privada y el número actual de la aplicación y envía datos incorrectos.
- Finalmente, ¿hay algunas implementaciones concretas que un usuario sin experiencia como yo pueda usar sin desordenar?