¿Es seguro usar jku, kid y x5u en el encabezado JSON Web Signature (JWS)?

3

No obtengo los parámetros de encabezado como jku , kid , x5u son para JSON Web Signature (JWS).

Ya que tenemos que verificar la integridad del contenido con respecto a la clave secreta / pública, ¿es seguro dejar jku , kid , x5u en el encabezado de JWS? Alguien puede reemplazar estas secciones por las suyas y firmar una nueva firma con su clave contra el contenido manipulado. Entonces, ¿cómo tratamos este caso?

    
pregunta whuala 22.03.2018 - 08:37
fuente

1 respuesta

3

Estos campos están aquí para permitir que el componente que verifica el ticket identifique la clave utilizada para la firma.

  • jku es un URI que hace referencia a la clave pública utilizada para generar la firma. Debe seguir el formato RFC7517 . La entidad que verifica el token es responsable de verificar si esa clave de firma puede ser confiable o no.
  • kid es la identificación de la clave y solo es válida en el contexto de una audiencia determinada: el contexto de su aplicación debe definir cómo usar ese parámetro para identificar la clave. Puede ser la identificación del usuario del certificado x509 para firmar, puede ser el número de serie certificat, puede ser una referencia a una fila en una tabla, puede ser el ID de un secreto HMAC almacenado en un archivo JSON, o el XPath dentro de un documento XML, lo que sea definido por la parte firmante.
  • x5u debe contener una URL para el certificado x509 que se usó para firmar el token. El certificado debe estar en el formato PEM .

Por lo general, solo tendrá uno de estos parámetros en un token dado (después de todo, solo puede haber una clave de firma), aunque no es imposible tener la misma clave accesible a través de diferentes métodos (esto significa que es no es imposible tener un encabezado jku y x5u que apunte a la misma clave, pero debes intentar evitar ese tipo de ambigüedad).

Por definición, si alguien cambia los encabezados y vuelve a firmar el ticket, el resultado no es el mismo token , por lo que no debe preocuparse por eso: puede rechazar de forma segura cualquier token que haya no se puede validar correctamente.

    
respondido por el Stephane 22.03.2018 - 09:59
fuente

Lea otras preguntas en las etiquetas