Cómo verificar la autenticidad de una solicitud AJAX

Estoy diseñando un sitio web en el que los usuarios resuelven los rompecabezas lo más rápido que pueden. JavaScript se utiliza para cronometrar cada rompecabezas, y la cantidad de milisegundos se envía al servidor a través de AJAX cuando se completa el rompecabezas. ¿Cómo puedo asegurarme de que el usuario no haya falsificado el tiempo recibido por el servidor?

No creo que un token de autenticidad basado en sesión (el tipo utilizado para los formularios en Rails) sea suficiente porque necesito autenticar elfuente de un valor, no solo de la legitimidad de la solicitud.

¿Hay alguna forma de firmar criptográficamente la solicitud? No puedo pensar en nada que no pueda ser duplicado por un hacker. ¿Hay algún JavaScript, por su naturaleza expuesta, del lado del cliente, sujeto a manipulación? ¿Voy a tener que usar algo que se compila, como Flash? (Ay). ¿O hay alguna forma de ocultar una clave secreta? ¿O algo más que no haya pensado?

Actualización: para aclarar, no quiero penalizar a las personas con conexiones de red lentas (y la velocidad de la red debe considerarse inconsistente), por lo que la sincronización debe ser del 100% del lado del cliente (el temporizador comienza solo cuando sabemos que el usuario puede verlo) el rompecabezas). Además, hay dinero involucrado, por lo que no se acepta la cantidad de "confiar en el usuario".

Respuestas a la pregunta(15)

Su respuesta a la pregunta