У меня есть Java-сервер, который общается с Java-клиентом через json-rpc. Клиент должен сообщать внутреннюю статистику серверу, который изменяет поведение сервера. Как клиентские, так и серверные компоненты написаны дома, поэтому я могу контролировать, что делает клиент и как он сообщает статистику, но есть ли способ проверить, что код клиента не был изменен? Если он есть, он все равно будет обслуживать клиента, но с использованием некоторых поведений по умолчанию.
Клиенты будут общедоступны, поэтому для них нет ничего сложного в том, чтобы кто-то декомпилировал их и изменил поведение.
Просто отправлять клиенту сигнатуру кода бесполезно, поскольку ее можно легко подделать, сохранив оригинальную копию клиента вместе с измененной.