Uso de HMAC al enviar datos a través de un servidor no confiable

0

Tengo una configuración como esta: Payment Server (PS) < > Front End (FE) < > Cliente JS.

Necesito obtener algunos datos del Cliente JS al PS, sin que la FE pueda modificarlo y que el PS demuestre que es correcto. En esta situación, la FE actúa como almacenamiento y envío (con una validación básica de la carga útil).

Este es mi plan:

  1. Al configurar su cuenta, el usuario ingresa un PIN. Esto se revisa por el JS y el hash enviado al PS a través de FE para su almacenamiento. No se almacena en la FE y el PIN no se ve por PS o FE en forma sencilla.

  2. Cuando es necesario, el JS crea la carga útil de JSON de manera normal. El usuario ingresa su PIN y este se oculta de la misma manera que cuando se crea.

  3. JS toma la carga útil, el PIN hash y el nonce (que fue enviado previamente por el servidor en una comunicación inicial) y crea un HMAC-SHA256. Esto se envía, junto con la carga útil, a FE, se valida / desinfecta y luego se envía a PS sin tocar.

  4. Las comprobaciones de PS HMAC-SHA256 no están modificadas, están autenticadas y no se utilizan, utilizando su propio hash de PIN almacenado.

  5. Cuando PS vuelve al JS con su propio resultado, puede hacer lo mismo y JS puede confirmar que la devolución también es auténtica y no está modificada.

¿Esto suena viable? Soy consciente de que un PIN es generalmente bastante corto, digamos 4 caracteres mínimo. ¿Hay algo que pueda hacer para ayudar a fortalecer eso?

    
pregunta Paul 19.10.2014 - 02:14
fuente

0 respuestas

Lea otras preguntas en las etiquetas