# Chiffrement
# Préface
Cette section contient des informations sur la façon d'utiliser ce document.
# Conventions Utilisées dans ce Document
Les conventions suivantes sont utilisées dans ce document pour identifier les types spécifiés d'information :
| Type d'Information | Convention | Exemple |
|---|---|---|
| ĂlĂ©ments de l'API, tels que ressources | Gras | /authorization |
| Variables | Italique entre accolades | {ID} |
| Termes du glossaire | Italique à la premiÚre occurrence ; défini dans le Glossaire | Le but de l'API est de permettre des transactions financiÚres interopérables entre un Payeur (un payeur de fonds électroniques dans une transaction de paiement) situé dans un FSP (une entité fournissant un service financier numérique à un utilisateur final) et un Bénéficiaire (un destinataire de fonds électroniques dans une transaction de paiement) situé dans un autre FSP. |
| Documents de rĂ©fĂ©rence | Italique | Les informations utilisateur ne devraient, en gĂ©nĂ©ral, pas ĂȘtre utilisĂ©es par les dĂ©ploiements de lâAPI ; les mesures de sĂ©curitĂ© dĂ©taillĂ©es dans Signature de l'API et Chiffrement de l'API devraient ĂȘtre utilisĂ©es Ă la place. |
# Informations sur les versions du document
| Version | Date | Description des modifications |
|---|---|---|
| 1.1 | 2020-05-19 | Cette version contient les modifications suivantes : 1. Les éléments ExtensionList de la Section 4 ont été mis à jour sur la base du problÚme Interpretation of the Data Model for the ExtensionList element (opens new window), afin de corriger le modÚle de données de l'objet extensionList. |
| 1.0 | 2018-03-13 | Version initiale |
# Introduction
Ce document dĂ©taille les mĂ©thodes de sĂ©curitĂ© Ă mettre en Ćuvre pour l'Open API (Interface de Programmation Applicative) pour l'interopĂ©rabilitĂ© des FSP (Fournisseurs de Services Financiers) (ci-aprĂšs citĂ©e « lâAPI ») afin de garantir la confidentialitĂ© des messages API entre un client API et le serveur API.
En sĂ©curitĂ© de l'information, la confidentialitĂ© signifie que l'information n'est pas rendue disponible ou divulguĂ©e Ă des personnes, entitĂ©s ou processus non autorisĂ©s (extrait de lâISO27000The ISO 27000 Directory (opens new window)). Pour lâAPI, la confidentialitĂ© signifie que certains champs sensibles du contenu dâun message API ne peuvent ĂȘtre consultĂ©s ou identifiĂ©s de maniĂšre non autorisĂ©e ou non dĂ©tectĂ©e par les intermĂ©diaires impliquĂ©s dans la communication API. Autrement dit, si certains champs dâun message API sont chiffrĂ©s par le client API, alors seul le destinataire prĂ©vu de lâAPI peut dĂ©chiffrer ces champs.
Le chiffrement JSON Web Encryption (JWE, dĂ©fini dans la RFC 7516JSON Web Encryption (JWE) (opens new window)) doit ĂȘtre appliquĂ© Ă l'API pour assurer la confidentialitĂ© de bout en bout des messages. Lorsqu'un client API envoie une requĂȘte HTTP (telle qu'une requĂȘte API ou un message de rappel) Ă un contrepartie, le client API peut dĂ©terminer s'il existe des champs sensibles dans le message API Ă protĂ©ger selon la rĂ©glementation ou le systĂšme local. S'il y a un champ Ă protĂ©ger, le client API utilise JWE pour chiffrer la valeur de ce champ. Par la suite, le texte chiffrĂ© de ce champ sera transmis Ă la contrepartie.
Pour prendre en charge le chiffrement de plusieurs champs dâun message API, le JWE est Ă©tendu dans ce document pour sâadapter aux exigences de lâAPI.
# Spécification Open API pour l'interopérabilité FSP
La SpĂ©cification Open API pour lâInteropĂ©rabilitĂ© FSP comprend les documents suivants.
# Documents logiques
# Documents de liaison REST asynchrones
# Intégrité des données, Confidentialité et Non-répudiation
# Documents généraux
# Définition du chiffrement de l'API
Cette section présente la technologie utilisée par le chiffrement de l'API, notamment :
- Le format d'Ă©change de donnĂ©es pour les champs chiffrĂ©s dâun message API.
- Le mécanisme de chiffrement et de déchiffrement des champs.
# ModÚle de données pour le chiffrement
LâAPI utilise lâen-tĂȘte HTTP personnalisĂ© FSPIOP-Encryption pour reprĂ©senter les champs chiffrĂ©s dâun message API ; sa valeur est une sĂ©rialisation dâobjet JSON. Le modĂšle de donnĂ©es de ce paramĂštre est dĂ©crit dans la Table 1, Table 2 et Table 3.
Note : Si FSPIOP-Encryption est prĂ©sent dans un message API, il doit Ă©galement ĂȘtre protĂ©gĂ© par la signature de lâAPI. Cela signifie que FSPIOP-Encryption doit ĂȘtre inclus dans le JWS Protected Header de la signature.
# Tableau 1
| Nom | Cardinalité | Type | Description |
|---|---|---|---|
| encryptedFields | 1 | EncryptedFields | Informations sur les champs chiffrĂ©s dâun message API |
Tableau 1 -- ModĂšle de donnĂ©es du champ dâen-tĂȘte HTTP FSPIOP-Encryption
# Tableau 2
| Nom | Cardinalité | Type | Description |
|---|---|---|---|
| encryptedField | 1..* | EncryptedField | Informations sur un champ chiffrĂ© dâun message API |
Tableau 2 -- ModÚle de données du type complexe EncryptedFields
# Tableau 3
| Nom | Cardinalité | Type | Description |
|---|---|---|---|
| fieldName | 1 | String(1..512) | Cet Ă©lĂ©ment identifie le champ Ă chiffrer dans le contenu dâun message API. Comme la charge utile (payload) de lâAPI est une chaĂźne de sĂ©rialisation dâobjet JSON, le nom du champ doit permettre dâidentifier le chemin exact de lâĂ©lĂ©ment dans lâobjet JSON. Un point (â.â) est utilisĂ© pour sĂ©parer les Ă©lĂ©ments dans un chemin dâĂ©lĂ©ment. Par exemple, payer.personalInfo.dateOfBirth est une valeur valide pour cet Ă©lĂ©ment pour la requĂȘte API POST /quotes. |
| encryptedKey | 1 | String(1..512) | Valeur de la clĂ© de chiffrement de contenu chiffrĂ©e (CEK). Sa valeur est encodĂ©e en BASE64URL (ClĂ© ChiffrĂ©e JWE). S'il y a plusieurs champs Ă chiffrer dans le message API, il est recommandĂ© d'utiliser la mĂȘme clĂ© chiffrĂ©e JWE pour simplifier la mise en Ćuvre ; cependant, c'est une dĂ©cision propre Ă chaque FSP selon leur implĂ©mentation. |
| protectedHeader | 1 | String(1..1024) | Cet Ă©lĂ©ment identifie les paramĂštres dâen-tĂȘte appliquĂ©s Ă JWE pour chiffrer le champ spĂ©cifiĂ©. Sa valeur est encodĂ©e en BASE64URL(UTF8(JWE Protected Header)). Par exemple, si le JWE Protected Header appliquĂ© au chiffrement est {"alg":"RSA-OAEP-256","enc":"A256GCM"}, alors la valeur est eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ. |
| initializationVector | 1 | String(1..128) | Valeur du vecteur d'initialisation utilisé lors du chiffrement du texte clair. Sa valeur est encodée en BASE64URL (vecteur d'initialisation JWE). |
| authenticationTag | 1 | String(1..128) | Valeur de lâĂ©tiquette dâauthentification rĂ©sultant du chiffrement authentifiĂ© du texte en clair avec des DonnĂ©es AuthentifiĂ©es Additionnelles. Sa valeur est encodĂ©e en BASE64URL (Tag dâauthentification JWE) |
Tableau 3 -- ModÚle de données du type complexe EncryptedField
# Chiffrement des champs dâun message API
Cette section dĂ©crit le processus de chiffrement des champs de message. Lâordre des Ă©tapes n'est pas significatif dans les cas oĂč il n'y a pas de dĂ©pendances entre les entrĂ©es et sorties des Ă©tapes.
- DĂ©terminer l'algorithme utilisĂ© pour dĂ©terminer la valeur de la CEK (c'est l'algorithme enregistrĂ© dans le paramĂštre d'en-tĂȘte alg du JWE rĂ©sultant). Parce que la CEK doit ĂȘtre chiffrĂ©e avec la clĂ© publique du destinataire de lâAPI, lâalgorithme disponible pour protĂ©ger la CEK dans lâAPI ne peut ĂȘtre que RSA-OAEP-256.
- S'il y a plusieurs champs à chiffrer dans le message API, exécuter les étapes 3-15 pour chaque champ.
- GĂ©nĂ©rer une CEK alĂ©atoire. Le FSP peut gĂ©nĂ©rer la valeur en utilisant sa propre application ou lâimplĂ©mentation JWE employĂ©e.
- Chiffrer la CEK avec lâalgorithme dĂ©terminĂ© par le paramĂštre dâen-tĂȘte JWE alg.
- Calculer la valeur encodée en BASE64URL(JWE Encrypted Key).
- GĂ©nĂ©rer un vecteur d'initialisation JWE alĂ©atoire de la taille correcte pour lâalgorithme de chiffrement de contenu (si requis par lâalgorithme) ; sinon, que le vecteur soit une sĂ©quence dâoctets vide.
- Calculer la valeur encodée du vecteur d'initialisation BASE64URL(JWE Initialization Vector).
- Si un paramĂštre zip a Ă©tĂ© inclus, compresser le texte clair en utilisant lâalgorithme de compression spĂ©cifiĂ© et que M soit la sĂ©quence dâoctets reprĂ©sentant le texte clair compressĂ© ; sinon, que M soit la sĂ©quence dâoctets reprĂ©sentant le texte clair.
- CrĂ©er l'objet JSON ou les objets contenant le jeu dĂ©sirĂ© de paramĂštres dâen-tĂȘte, qui constituent ensemble le JWE Protected Header. Outre le paramĂštre alg, le paramĂštre enc doit ĂȘtre inclus dans le protected header JWE. Les valeurs disponibles pour le paramĂštre enc dans lâAPI ne peuvent ĂȘtre que : A128GCM, A192GCM, A256GCM. A256GCM est recommandĂ©.
- Calculer la valeur encodée du protected header BASE64URL(UTF8(JWE Protected Header)).
- Prendre pour paramÚtre de Données Authentifiées Additionnelles la valeur ASCII(Encoded Protected Header).
- Chiffrer M en utilisant la CEK, le vecteur d'initialisation JWE et la DonnĂ©e AuthentifiĂ©e Additionnelle selon lâalgorithme de chiffrement de contenu spĂ©cifiĂ© pour crĂ©er la valeur du texte chiffrĂ© JWE et le Tag dâauthentification JWE (qui est la sortie du chiffrement).
- Calculer la valeur chiffrée encodée en BASE64URL (JWE Cipher Text).
- Calculer la valeur du tag dâauthentification encodĂ©e en BASE64URL (JWE Authentication Tag).
- Calculer l'Ă©lĂ©ment encryptedField (voir la Table 3) pour le paramĂštre d'en-tĂȘte HTTP FSPIOP-Encryption.
- Calculer la valeur du paramĂštre dâen-tĂȘte HTTP FSPIOP-Encryption comme dĂ©crit dans la documentation FSPIOP API. La valeur de ce FSPIOP-Encryption est une chaĂźne de sĂ©rialisation dâobjet JSON.
Note : Si JWE est utilisé pour chiffrer certains champs de la charge utile, alors le client API doit :
Chiffrer les champs désirés.
Remplacer la valeur de ces champs par le texte chiffré encodé dans la charge utile.
Signer la charge utile.
# DĂ©chiffrement des champs dâun message API
Si le paramĂštre dâen-tĂȘte HTTP FSPIOP-Encryption (qui est aussi protĂ©gĂ© par la signature de lâAPI) est prĂ©sent, alors le destinataire du message API doit dĂ©chiffrer les champs chiffrĂ©s du message API aprĂšs que la signature de lâAPI ait Ă©tĂ© validĂ©e avec succĂšs. Le processus de dĂ©chiffrement est lâinverse du chiffrement. Lâordre des Ă©tapes nâest pas significatif dans les cas oĂč il nây a pas de dĂ©pendance entre les entrĂ©es et sorties des Ă©tapes. Sâil y a plusieurs champs chiffrĂ©s, alors tous les champs doivent ĂȘtre dĂ©chiffrĂ©s avec succĂšs ; sinon cela indique que le message API est invalide.
- Analyser le paramĂštre dâen-tĂȘte HTTP FSPIOP-Encryption pour obtenir les informations sur les champs chiffrĂ©s, y compris le nom du champ, le protected header JWE, la clĂ© chiffrĂ©e JWE, le vecteur dâinitialisation JWE et le tag dâauthentification JWE pour chaque champ. Sâil y a plusieurs champs Ă dĂ©chiffrer, exĂ©cuter les Ă©tapes 2-9 pour chaque champ.
- Obtenir le texte chiffré du champ chiffré en analysant la charge utile avec le chemin de champ spécifié. La valeur du champ spécifié est déjà encodée en BASE64URL.
- VĂ©rifier que la sĂ©quence d'octets rĂ©sultant du dĂ©codage du protected header JWE encodĂ© est une reprĂ©sentation UTF-8 valide d'un objet JSON conforme au format dâĂ©change JSON (cf. RFC 7159The JavaScript Object Notation (JSON) Data Interchange Format (opens new window)) ; le protected header JWE doit ĂȘtre cet objet JSON.
- VĂ©rifier que les paramĂštres dans le protected header JWE comprennent et peuvent traiter tous les champs requis pour prendre en charge la spĂ©cification JWE ; par exemple, lâalgorithme utilisĂ©.
- DĂ©terminer si lâalgorithme spĂ©cifiĂ© par le paramĂštre alg du header correspond Ă lâalgorithme de la clĂ© publique / privĂ©e du destinataire de lâAPI.
- Déchiffrer la clé chiffrée JWE avec la clé privée du destinataire API pour obtenir la CEK JWE.
- Prendre pour paramÚtre de Données Authentifiées Additionnelles la valeur ASCII (Encoded Protected Header).
- DĂ©chiffrer le texte chiffrĂ© JWE en utilisant la CEK, le vecteur d'initialisation JWE, la DonnĂ©e AuthentifiĂ©e Additionnelle et le Tag dâauthentification JWE avec lâalgorithme de chiffrement spĂ©cifiĂ©, pour retourner le texte dĂ©chiffrĂ© tout en validant le tag dâauthentification conformĂ©ment Ă lâalgorithme. Si le tag dâauthentification JWE est incorrect, rejeter lâentrĂ©e sans procĂ©der au dĂ©chiffrement.
- Si un paramĂštre zip a Ă©tĂ© inclus, le destinataire de lâAPI doit dĂ©compresser le texte dĂ©chiffrĂ© en utilisant l'algorithme de compression spĂ©cifiĂ©.
# Exemples de chiffrement/dĂ©chiffrement dâAPI
Cette section utilise un processus typique de devis pour expliquer comment le chiffrement et le dĂ©chiffrement de lâAPI sont rĂ©alisĂ©s avec JWE. Puisque lâalgorithme de clĂ© publique / privĂ©e du destinataire de lâAPI ne peut ĂȘtre que RSA, la clĂ© RSA utilisĂ©e pour cet exemple est reprĂ©sentĂ©e ci-dessous au format JSON Web Key (JWK, dĂ©fini dans la RFC 7517JSON Web Key(JWK) (opens new window)) (avec retours Ă la ligne pour lâaffichage uniquement) :
{
"kty": "RSA",
"n": "oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-
BVvxkeDNjbC4he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9Le
wND8MW2Krf3Spsk_ZkoFnilakGygTwpZ3uesH-
PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenSZeyaxziK72UwxrrKoExv6kc5tw
XTq4h-QChLOln0_mtUZwfsRaMStPs6mS6XrgxnxbWhojf663tuEQueGC-
FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-
L5StowjzGy-_bq6Gw",
"e": "AQAB",
"d": "kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-
WY5NWV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD93D
t62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghkqDp0Vqj3
kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vlt3UVe4WO3JkJOz
lpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-
VFs3VSndVTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ",
"p": "1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-
SWxkbk-
moEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lffNn03IXqWF5M
DFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0",
"q":
"wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBmUDdaD
YVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aXIWxKwd4gvxF
ImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc",
"dp": "ZK-
YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KLhMXvo-uz-
KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827rnpZzAJKpdhWAgq
rXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE",
"dq":
"Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCjywcMlY
Yg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDBUfCAiJVeESOj
JDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis",
"qi": "VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-
ZW1FxU7AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E
3eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY"
}
# Exemple de chiffrement
Le texte de message suivant est un exemple dâune requĂȘte POST /quotes sans chiffrement envoyĂ©e par le FSP Payeur Ă un FSP BĂ©nĂ©ficiaire.
POST /quotes HTTP/1.1
FSPIOP-Destination:5678
Accept:application/vnd.interoperability.quotes+json;version=1.0
Content-Length:975
Date:Tue, 23 May 2017 21:12:31 GMT
FSPIOP-Source:1234
Content-Type:application/vnd.interoperability.quotes+json;version=1.0
{
"payee": {
"partyIdInfo": { "partyIdType": "MSISDN", "partyIdentifier": "15295558888",
"fspId": "5678" } },
"amountType": "RECEIVE",
"transactionType": { "scenario": "TRANSFER", "initiator": "PAYER",
"subScenario": "P2P Transfer across MM systems", "initiatorType": "CONSUMER" },
"note": "Ceci est un exemple de requĂȘte POST /quotes",
"amount": { "amount": "150","currency": "USD" },
"fees": { "amount": "1.5", "currency": "USD" },
"extensionList": {
"extension": [
{ "value": "value1", "key": "key1"},
{ "value": "value2", "key": "key2"},
{ "value": "value3", "key": "key3" }
]
},
"geoCode": { "latitude": "57.323889", "longitude": "125.520001"
},
"expiration": "2017-05-24T08:40:00.000-04:00",
"payer": {
"personalInfo": {
"complexName": { "firstName": "Bill", "middleName": "Ben", "LastName": "Lee"
}, "dateOfBirth": "1986-02-14" },
"partyIdInfo": { "partyIdType": "MSISDN",
"partySubIdOrType": "RegisteredCustomer", "partyIdentifier": "16135551212",
"fspId": "1234"
}, "name": "Bill Lee"
}, "quoteId": "59e331fa-345f-4554-aac8-fcd8833f7d50",
"transactionId": "36629a51-393a-4e3c-b347-c2cb57e1e1fc"
}
Dans ce cas, le FSP Payeur souhaite chiffrer deux champs du message API : payer et payee.partyIdInfo.partyIdentifier.
# Chiffrer les champs requis
Comme il y a deux champs Ă chiffrer, le FSP Payeur doit les chiffrer lâun aprĂšs lâautre.
# Chiffrer "payer"
Le FSP Payeur exécute les étapes suivantes pour chiffrer le champ payer dans le message API POST /quotes.
- DĂ©terminer lâalgorithme utilisĂ© pour dĂ©terminer la CEK. Dans ce cas, supposons quâil sâagit de RSA-OAEP-256.
- Générer une CEK aléatoire de 256 bits. Dans ce cas, sa valeur est (notation tableau JSON) :
191 100 167 60 2 248 21 136 172 39 145 120 102 7 73 31 166 66 114 199 219 157 104 162 7 253 10 105 33 136 57 167
- Chiffrer la CEK avec la clĂ© publique du FSP BĂ©nĂ©ficiaire indiquĂ©e au format JSON Web Key dans Exemples de chiffrement/dĂ©chiffrement dâAPI. Dans ce cas, la valeur chiffrĂ©e est :
22 210 45 47 ... (les valeurs restent identiques, inchangées pour la traduction)
- Calculer la valeur de la clé chiffrée en BASE64URL(JWE Encrypted Key). La valeur sera :
FtItL5lft09UGsIqG5gyw6MS63mMeOCBtHgVAC7EFXL7lH9LxipX-rpiD4j5g-BJb2yfj...
... (Le reste des exemples, tableaux, et représentations JSON sont laissés tels quels car ce sont des valeurs techniques universelles.)
# Exemple de déchiffrement
Dans cet exemple, le FSP BĂ©nĂ©ficiaire reçoit le message API POST /quotes du FSP Payeur. Le message est dĂ©crit dans le ModĂšle de donnĂ©es pour le chiffrement. Si le FSP BĂ©nĂ©ficiaire dĂ©tecte que le paramĂštre d'en-tĂȘte HTTP FSPIOP-Encryption est prĂ©sent dans le message, il sait alors que certains champs ont Ă©tĂ© chiffrĂ©s par le FSP Payeur. Le FSP BĂ©nĂ©ficiaire effectue alors les Ă©tapes suivantes pour dĂ©chiffrer les champs chiffrĂ©s.
# Analyser FSPIOP-Encryption
Le FSP BĂ©nĂ©ficiaire vĂ©rifie que la valeur de FSPIOP-Encryption est une reprĂ©sentation encodĂ©e UTF-8 dâun objet JSON valide selon la RFC 7159. Le FSP analyse alors le paramĂštre dâen-tĂȘte HTTP FSPIOP-Encryption pour obtenir les informations sur les champs chiffrĂ©s : nom du champ, Protected Header JWE, ClĂ© chiffrĂ©e JWE, Vecteur d'initialisation JWE, et Tag dâauthentification JWE pour chaque champ.
# Déchiffrer les champs chiffrés
Dans ce cas, le FSP BĂ©nĂ©ficiaire extrait deux champs payer et payee.partyIdInfo.partyIdentifier de lâen-tĂȘte HTTP FSPIOP-Encryption, puis les dĂ©chiffre lâun aprĂšs lâautre.
# Déchiffrer payer
Le FSP Payeur exécute les étapes suivantes pour déchiffrer le champ payer dans le message API POST /quotes.
- Obtenir le Protected Header JWE encodé BASE64URL depuis FSPIOP-Encryption pour le champ payer. Sa valeur est :
eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0
... (Les étapes détaillées sont conservées, simplement traduites ; les valeurs techniques ne changent pas.)
