Reduciendo el tamaño del token de autorización asimétrico

2

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.

    
pregunta mseddon 13.05.2014 - 21:15
fuente

1 respuesta

1

Si quieres rápido y amp; criptografía segura, use la biblioteca de NaCl por Bernstein et al. Para su pregunta es relevante su sistema criptográfico asimétrico ED25519. Generación de claves, firmas y verificación se están aclarando rápidamente. En cuanto al espacio, las claves son de 32 bytes y las firmas de 64 bytes. Sus implementaciones son resistentes a los canales de temporización. También implementan algoritmos más comunes para la compatibilidad. También le ofrecen funciones de alto nivel en la forma de "firmar esto" en lugar de forzar el uso de primitivos de bajo nivel en personas que no son criptógrafos.

NaCl
enlace

    
respondido por el Nick P 19.05.2014 - 03:21
fuente

Lea otras preguntas en las etiquetas