Вероятно, не будет полного решения вашей проблемы, поскольку, что бы вы ни делали, собеседник всегда может взять вашу программу, запустить ее в контролируемой среде, манипулировать данными времени выполнения и позволить ей использовать свой «безопасный» сетевой протокол. , Поскольку клиентское приложение находится в неуправляемых руках, вы никогда не можете быть уверены, что это ваша собственная программа.
Пример Baby: Мое приложение запускает ваше приложение и воспроизводит данные на ваш сервер, а затем перенаправляет ваш ответ обратно в приложение. Как вы можете сказать?
Тем не менее, это может быть очень многообещающий "99%" подход, использующий SSL и жестко закодировать закрытый ключ клиента в приложение - с некоторыми хитростями, которые вы можете попытаться затруднить, чтобы найти (например, посмотрите, как это делает Skype). ). Если затем вы также встроите в свою программу проверки целостности, чтобы выяснить, манипулирует ли кто-либо памятью или отлаживается в вашей программе, вы можете попытаться сделать это немного сложнее для потенциального противника. (Но учтите, что у вас всегда будет есть для доставки закрытого ключа вместе с вашим приложением, так что это не совсем безопасно для обнаружения.)