Prevención de retransmisión de solicitudes sin conexión

1

Estoy intentando hacer lo siguiente:

Tengo 2 dispositivos móviles, uno actúa como servidor y el segundo como cliente.

El dispositivo servidor tiene una clave secreta y anuncia un desafío. Cada solicitud hace que el desafío cambie.

El dispositivo cliente tiene datos (un valor entero) cifrados con esta clave, pero el cliente no tiene la clave.

Los 2 dispositivos se comunican a través de BT.

El cliente genera una respuesta al desafío de acuerdo con un algoritmo conocido , envía los datos al servidor, el servidor verifica la respuesta, descifra los datos, deduce un cierto valor, cifra el nuevo Datos y enviarlo de vuelta al cliente.

Estoy intentando proteger los datos en el cliente para que no sean reutilizados nuevamente (por ejemplo, el cliente almacenará los datos encriptados, realizará la transacción al servidor, recibirá la respuesta y luego usará los datos antiguos nuevamente).

Las limitaciones:

  • No puedo almacenar los datos del cliente en el servidor: el servidor solo calcula el nuevo valor y lo devuelve.
  • El cliente debe estar fuera de línea (el valor no se puede almacenar en algún servidor HTTP).
  • No debo almacenar claves en el cliente.

¿Hay alguna manera de hacerlo? Mi cerebro ya está prácticamente fumando, pero todas las ideas que se me ocurren pueden fallar debido a que el algoritmo de respuesta no es confidencial, por lo que puedo ver que todos los clientes pueden reutilizar datos antiguos.

Para ser claros, no estoy buscando una solución completa, solo algunas instrucciones y una tormenta de ideas.

    
pregunta Ron Dadon 20.11.2016 - 18:56
fuente

0 respuestas

Lea otras preguntas en las etiquetas