То, что вы хотите сделать, это использовать SSL с взаимной аутентификацией, чтобы ваш сервер принимал только входящие соединения от вашего приложения, а ваше приложение взаимодействовало только с вашим сервером.
Вот высокоуровневый подход.Создайте самозаверяющий SSL-сертификат сервера и разверните его на своем веб-сервере.Если вы используете Android, вы можете использовать для этой цели keytool, включенный в Android SDK;если вы используете другую платформу приложений, для них также существуют аналогичные инструменты.Затем создайте самозаверяющий клиент и разверните его в своем приложении в пользовательском хранилище ключей, включенном в ваше приложение, в качестве ресурса (keytool также сгенерирует это).Настройте сервер так, чтобы он требовал SSL-аутентификацию на стороне клиента и принимал только сгенерированный вами сертификат клиента.Настройте клиент для использования этого сертификата на стороне клиента, чтобы идентифицировать себя и принять только один сертификат на стороне сервера, который вы установили на своем сервере для этой его части.
Если кто-то / что-то кроме вашего приложения пытается подключитьсяк вашему серверу соединение SSL не будет создано, так как сервер будет отклонять входящие соединения SSL, которые не предоставляют сертификат клиента, который вы включили в ваше приложение.
Пошаговое руководство для этого:гораздо более длинный ответ, чем здесь гарантировано.Я бы предложил сделать это поэтапно, так как в Интернете есть ресурсы о том, как работать с самозаверяющим SSL-сертификатом в Android (я не так хорошо знаю, как это делать на других мобильных платформах), как на стороне сервера, так и на стороне клиента.В моей книге «Безопасность приложений для платформы Android», опубликованной О'Рейли, есть полный обзор.