
David Behar
PreguntaSi llegamos a saber cuál es el algoritmo de encriptación (usando alguno tradicional) ¿no acabaríamos comprometiendo toda nuestra app?

Helmer Barcos
Recuerda que lo que se hace es cifrar y no encriptar
Un JWT puede ser firmado, cifrado o ambos. Se firma mediante strings en base64 y se cifra mediante algún algoritmo popular de cifrado como SHA-256.
Se ve mas o menos así:
header.payload.signature
Lo que se busca es generar tokens de los cuales podamos determinar su validez y que contengan alguna clase de información NO sensible relacionada con el usurario.
Si se firma pero no se cifra, este podrá ser leído fácilmente. Sin embargo la última parte del token, que es donde va la firma si esta cifrada con la informacion del header, el payload un string que llamaremos secret, solo quienes conozcan ese secret podrán alterar el contenido de ese token sin que pierda su validez, agregando scopes o extendiendo la validez del mismo por ejemplo.
La complejidad del algoritmo solo debe suponer una preocupación en el caso que esa persona o app externa tambien conozca el secret con el que se firmo el token.

Fer Torres
No necesariamente. Eso depende de cuál fue el método de encriptación y lo dificíl que sería "romperlo". Un ejemplo muy general: en México, el Servicio de Administración Tributaria utiliza seguridad asimétrica (llaves públicas y privadas) para crear tus archivos de certificado FIEL (Firma Fiel Avanzada); si conoces el RFC de un contribuyente, todo mundo puede obtener de la web del SAT la llave pública de dicho RFC con datos adicionales (nombre, CURP, rep legal, etc), pero aunque la conozcas y sepas qué usa el SAT para generar el par de llaves, es casi imposible (por ahora) lograr obtener la otra llave o la contraseña.
Erik Ochoa
Para romper los algoritmos de encriptación actuales necesitas a parte de conocer cómo funciona el algoritmo, una llave secreta que es muy difícil de conseguir. Por lo que ya no basta con sólo saber el algoritmo.