Editar:
A la luz de la nueva información (es una aplicación móvil, solo se deben permitir las solicitudes de esta aplicación) esta publicación se actualiza. La respuesta anterior se eliminó por no ser relevante.
El OP desea, así que asegúrate de que las solicitudes se envíen desde su aplicación móvil y no a algún programa definido por el atacante. Este tipo de garantía normalmente se logra firmando digitalmente las solicitudes utilizando un certificado (clave pública y privada) en el lado del cliente y utilizando la clave pública en el servidor. Si se aplica al escenario de aplicaciones móviles, el certificado debe estar presente en la aplicación (se envía en conjunto o se transmite cuando se utiliza la aplicación por primera vez) para que se firmen las solicitudes.
Ahora suponga que el atacante desea crear sus propios mensajes para enviar al servidor. Para que estas solicitudes sean aceptadas deben ser firmadas. Para firmar esos mensajes, necesita la clave privada que está contenida en la aplicación de una forma u otra. El atacante descarga en un dispositivo controlado por el atacante. Dado que la integridad del dispositivo móvil no se puede garantizar (el dispositivo puede estar enraizado, emulado, ...) siempre hay una forma de obtener el certificado. Lo único que puede hacer es intentar que esta recuperación sea MUY difícil. La ofuscación de la aplicación puede ayudar contra el análisis estático, pero también es necesario asegurarse de que el certificado sea difícil de encontrar en la memoria en tiempo de ejecución.
Para probar la dificultad de este problema, tomemos Pokemon Go como ejemplo. A los pocos días de su lanzamiento, alguien interceptó el tráfico de la red desde la aplicación al servidor y escribió su propio programa (ejecutándose en una computadora de escritorio o portátil) que imita el comportamiento de la aplicación (enviando actualizaciones de la posición del jugador, lanzando un pokeball, etc.) que jugó automáticamente a Pokemon Go. Esto se conoce como un 'bot'. Los desarrolladores lanzan varias actualizaciones para proteger las solicitudes (supongo que también intentaron la firma digital), pero cada vez que los atacantes podían revertir la lógica y elaborar sus propias solicitudes. Lo único que realmente funcionó fue observar los patrones en las solicitudes en el lado del servidor para detectar que provenían de un 'bot' en lugar de una aplicación móvil legítima. Las cosas que habrán utilizado son el tiempo de las solicitudes (con un intervalo de diferencia de 1 segundo), la ubicación del jugador que cambia en ciertos patrones, etc. Si se suponía que un jugador estaba haciendo trampa al usar un bot, se lo prohibió. Los atacantes respondieron a esto agregando algo de aleatorización a sus solicitudes para dificultar el análisis. Así que se convirtió en un juego del gato y el ratón entre atacantes y defensores. Pokemon Go también envió cartas de cese y desistimiento a personas que podrían identificar como desarrolladores de los robots. Esto muestra cuán impotentes estaban contra el problema.