Какие способы гарантированной неподмены данных с клиента существуют?
Никак
Дублируйте генерацию на стороне сервера
Думаю, что никак. В самой постановке задачи у вас что: клиент заведомо ничего не знает про сервер. Тогда если мы представим параллельно идущий процесс клиента B, который полностью дублирует работу клиента A, то в какой-то момент времени данные с клиента B могут быть переданы серверу вместо клиента A.
HTTPS/SSL как раз и существует для решения подобных задач, в том числе. Просто используйте его - никто ничего не подменит (ну кроме уж случаев с перехватом сертификата, но это уже другой уровень).