JWT con SSL ¿aún necesita la firma HMAC o RSA o simplemente estoy paranoico?

0

Estoy intentando implementar un sistema de autenticación / autorización usando JWT para mi aplicación web. Los clientes reciben un token en el formato JWT habitual de mi servidor una vez que presentan las credenciales que verifico en la base de datos.

El problema que pensé que podría surgir es que, por lo que sé, los tokens de JWT no están encriptados ni firmados de ninguna manera, por lo que podría ser una víctima de MitM donde alguien está cambiando las reclamaciones en mi carga y envía una respuesta o simplemente roba datos.

Me di cuenta de que esto podría solucionarse firmando el token JWT usando HMAC o mejor usando el par de claves privada / pública RSA, pero nuevamente la clave pública RSA debería tener algún tipo de certificado adjunto porque la clave pública podría estar comprometida en algún momento .

Esto es cuando me pregunté: '¿Es realmente necesario?'. ¿Si obtengo un certificado SSL para todas mis páginas y comunico mis tokens a través de él, también debo firmarlas en 'capa de aplicación'? Me parece que me estoy volviendo paranoico pensando que mi CA podría verse comprometida y que alguien podría ver mis tokens JWT mientras se envían desde el servidor. Cuáles son las probabilidades de que esto ocurra ? ¿Debo realmente tomarme el tiempo para desarrollar una capa de seguridad adicional antes de SSL donde genero un token JWT seguro con un par de claves privada / pública RSA y luego lo envío al usuario a través de un canal SSL?

    
pregunta Stefan Idriceanu 31.01.2017 - 12:21
fuente

1 respuesta

1

"Firmar" JWT no es una defensa contra los ataques Man-In-The-Middle. Como usted dice, usar HTTPS para que TLS / SSL empleado sea .

Agregar un HMAC a un JWT evita que el usuario actual de la sesión manipule las reclamaciones.

Toma esta:

{
  "admin": false
}

Un usuario malintencionado puede escalar sus privilegios:

{
  "admin": true
}

Asegúrese de que tiene una clave privada segura y que un token autenticado HMAC es suficiente. Asegúrese de que cada JWT verifique la autenticación HMAC.

RSA solo es realmente útil si necesita enviar un token a otra parte o servidor y desea resolver el problema de distribución de claves.

    
respondido por el SilverlightFox 31.01.2017 - 12:36
fuente

Lea otras preguntas en las etiquetas