Creo que un ejemplo ilustra mejor mis preguntas. Digamos que quiero enviar un mensaje JSON.
{"payload": {"b": 5, "a": 1}, "signature": "... 9oZRsvygw1pTFuRcfXXpFKMRBmkrzdTn6lzS ..."}
La alternativa X sería colocar la carga útil en una cadena, posiblemente codificada en base64, y firmar esa cadena.
La alternativa Y sería hacer una representación canónica del contenido semántico de la carga útil y firmarlo. Por ejemplo, podría crear y firmar la siguiente cadena en su lugar
{"a": 1, "b": 5}
Tenga en cuenta que en la representación semántica las claves se ordenan en función del nombre y no del orden inicial.
¿Sería más o menos seguro firmar la representación semántica?