Как проверить подлинность AJAX-запроса

Я разрабатываю веб-сайт, на котором пользователи решают головоломки как можно быстрее. JavaScript используется для определения времени каждой головоломки, а количество миллисекунд отправляется на сервер через AJAX после завершения головоломки. Как я могу убедиться, что время, полученное сервером, не было подделано пользователем?

Я не думаю, что токен аутентификации на основе сеанса (тип, используемый для форм в Rails) достаточен, потому что мне нужно аутентифицироватьисточник ценности, а не только законность запроса.

Есть ли способ криптографически подписать запрос? Я не могу думать ни о чем, что не могло бы быть продублировано хакером. Любой JavaScript, в силу своего открытого, клиентского характера, подвержен фальсификации? Я собираюсь использовать что-то, что компилируется, например, Flash? (Yikes.) Или есть какой-то способ скрыть секретный ключ? Или что-то еще, о чем я не думал?

Обновление: чтобы уточнить, я не хочу наказывать людей с медленными сетевыми подключениями (и скорость сети следует считать несовместимой), поэтому время должно быть на 100% на стороне клиента (таймер запускается только тогда, когда мы знаем, что пользователь может видеть головоломка). Кроме того, здесь задействованы деньги, поэтому никакое «доверие пользователя» неприемлемо.