IDs seguras y QR

2

Supongamos que quiero darles a los usuarios de mi sitio la opción de pagar por un servicio y usarlo más tarde.

Estoy pensando en generar una ID única para el servicio de pago. Quiero poder confiar en la ID para decidir si el usuario ha pagado el servicio o no, pero no quiero almacenar nada en los servidores porque la ID debe tener toda la información que necesito.

¿Cuánto tiempo debe durar el ID para garantizar que nadie pueda falsificar uno sin pagar?

¿Existen mejores prácticas para generar esta ID?

¿Crees que sería posible almacenar la ID en un QR? Parece que el QR se vuelve demasiado grande cuando intenta almacenar, por ejemplo, 1024 caracteres.

    
pregunta Marco Altieri 11.02.2017 - 14:03
fuente

1 respuesta

3

Hay dos posibilidades:

  1. Solo necesita asegurarse de que su servidor haya generado el token

La forma más sencilla que veo es hacer que el token le brinde al usuario una concatenación del ID (que podría ser un simple ID incremental) y un HMAC de este ID. Dada una clave HMAC de una longitud adecuada (al menos 128 bits), el usuario no podría generar un token válido.

La longitud del HMAC depende del algoritmo que elija. Codificado en base64, un HMAC-SHA1 toma 28 caracteres, un HMAC-SHA256 toma 44 caracteres. Eso te deja bastante espacio para tu ID, incluso si codificas el token en un código QR.

  1. Tampoco desea que el usuario conozca el contenido del token

Sugeriría cifrar el contenido del token utilizando cifrado autenticado . Podría usar AES-GCM o AES-EAX, por ejemplo. Usando una clave de una longitud suficiente, el usuario no podrá conocer el contenido del token ni podrá modificarlo sin que su servidor se dé cuenta.

Esto agregará una pequeña sobrecarga a los datos, pero no estoy tan familiarizado con los algoritmos. Estimaría unos 50-100 bytes una vez codificados en base64, lo que aún deja bastante espacio para sus datos en un código QR.

    
respondido por el user2313067 11.02.2017 - 19:12
fuente

Lea otras preguntas en las etiquetas