Use el parámetro D de la clave privada como secreto HMAC para JWT en un entorno de carga equilibrada

1

Necesito usar una firma para un JWT que deba crearse o verificarse en 12 servidores diferentes que se ejecutan en un entorno de carga equilibrada. Todos ellos ya tienen el mismo par de claves RSA almacenado en el almacén de certificados de Windows utilizado para servir la aplicación a través de HTTPS.

Esta pregunta ya se ha formulado básicamente aquí: ¿Es el parámetro D del RSA lo suficientemente fuerte como para ser usado como secreto para el cálculo de HMAC? , pero el foco está en la fuerza y / o propósito del cifrado. / p>

Inicialmente, tenía la intención de firmar el JWT con RS256, y escribí el código y todo estuvo bien ... hasta que verifiqué la salida. Obviamente (después del hecho) la firma es bastante larga ... 2048 bits en lugar de 256. El tamaño total de la JWT sin la firma es probablemente solo de 2000 bit o más, por lo que básicamente se duplica El tamaño del token final. El token se utilizará en múltiples solicitudes a servicios posteriores, algunos de ellos con cuerpos de mensajes muy pequeños, por lo que estoy poco reacio a hacer esto.

He analizado varias soluciones DPAPI, .Net Protection y mantengo manualmente un secreto cifrado con la clave pública. Necesito la solución para trabajar en .Net y en .Net Core. Todos ellos presentan problemas relacionados con la creación y la administración de las claves en múltiples entornos, los cuales son totalmente resueltos por la configuración existente si solo uso el valor D como secreto. Entonces ...

¿Por qué NO debo usar el valor D como mi secreto HMAC?

    
pregunta ste-fu 02.05.2018 - 16:56
fuente

1 respuesta

1

Este es uno de esos casos, donde no creo que exista una forma conocida de explotar esto. Así que podrías argumentar que esto es seguro. Pero el problema es que esto no es algo que se demuestre seguro y no es para lo que se diseñaron estas funciones. Por lo tanto, es probable que haya una manera de explotar esto. Y si alguna vez se encuentra, podría revelar su clave RSA , que es la clave más importante que tiene como servidor web. Es por eso que NO SE CONSIDERA SEGURO , incluso si es posible que no haya una manera de explotarlo. No hagas esto, hay mejores maneras.

Además, abre una nueva forma para que la clave RSA sea forzada por la fuerza bruta, que puede o no ser más rápida que la computación de la clave pública.

    
respondido por el Peter Harmann 02.05.2018 - 17:13
fuente

Lea otras preguntas en las etiquetas