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