Me gustaría usar una firma asimétrica en lugar de simétrica para la autorización, ya que no quiero que un servicio comprometido pueda falsificar tokens de autorización (obviamente). Un token de autorización es generado por un servidor de autenticación para un conjunto específico de servicios, y devuelto al cliente, siempre se transporta como una cadena codificada en base64. Después de la expiración, el principal debe volver a autenticarse para recuperar un token nuevo.
Necesito manejar un gran volumen de solicitudes HTTP-REST sin estado muy pequeñas (potencialmente varias por segundo por cliente), y soy consciente del tamaño total del token que satura la red. Actualmente estoy considerando (aleatoriamente) el uso de RSA de 2048 bits con SHA-256, pero reducir aún más esta sobrecarga sería genial.
Dado que un token dado siempre caducará en un máximo de 15 minutos, me di cuenta de que debería ser posible utilizar una clave / hash aún más pequeña generando regularmente nuevos pares de claves.
Los servicios sondearían periódicamente un servicio de proveedor de claves para recuperar la clave pública actual y la siguiente, y un byte o algo así del token identificaría la clave utilizada para firmarla.
¿Mi suposición es correcta? ¿Puedo inclinarme a tan solo 1024 bits de claves? Recuerdo vagamente que hay una interrupción para RSA < = 512 bits, ¿qué tan grave es, y podría compensarse al rotar los pares de llaves más rápido?
No estoy casado con RSA ni con SHA256, pero soy dependiente de OpenSSL.
Primero me gustaría garantizar que mi razonamiento sea sólido y, en segundo lugar, solicitar cualquier algoritmo / tamaño de clave / técnicas alternativas que se consideren una buena práctica en esta situación.