Comment chiffrer les attributs contenus dans mon URL ?

Vous souhaitez obfusquer ou sécuriser les attributs dans l’URL, nous vous proposons d'utiliser deux méthodes :

  • Encodage base64 pour limiter la visibilité des attributs dans l’URL ;
  • Méthode AEAD (authenticated encryption with associated data) pour assurer simultanément la confidentialité et l'authenticité des données.

Nous vous conseillons de transmettre cet article aux équipes qui gèrent l’intégration des données dans votre outil d’envoi d’email ou de SMS externe.

Méthode encodage en base64

Nous vous proposons d’utiliser d’encoder vos attributs en base64 si vous ne souhaitez pas que le destinataire visualise ces informations

Cette solution est pertinente pour sa simplicité de mise en œuvre mais n'est pas une solution qui propose un niveau de sécurité supplémentaire contrairement à la méthode de chiffrement AEAD décrite ci-après.

La marche à suivre pour encoder en base64 les paramètres de l’url est la suivante :

  1. Encoder en base64 la chaîne des paramètres de type attributs d:attribut1=valeur1&d:attribut2=valeur2&d:attribut3=valeur3
  2. Passer la chaîne encodée dans un nouveau paramètre nommé : qse64

Soit dans cet exemple :

devient

Veuillez noter que la chaîne encodée en base64 doit contenir uniquement les attributs, il ne faut pas encoder les paramètres "value" et "lang".

Méthode de chiffrement AEAD

Nous vous proposons d'utiliser la méthode AEAD (authenticated encryption with associated data) qui assure simultanément la confidentialité et l'authenticité des données avec l'approche appelée Encrypt then MAC (EtM). Utilisation d' une clé pour chiffrer le payload (encryptkey) et d'un autre clé pour le MAC part (authkey) afin d'assurer l'intégrité des données.

  1. Vous générer les 2 clés depuis votre compte MyFeelBack
  2. Vous créez le payload au format JSON contenant les données métiers (Attributs).

{

"attribut1": "valeur1",

"attribut2: "valeur"

}

  1. Vous chiffrez avec AES-CBC en utilisant la clé de chiffrement (256 bits), un bloc de taille 128 bits, et PKCS7 padding mode puis vous générez un Initialization Vector (IV) en fonction de la taille du bloc (128 bits) et enfin vous chiffrez le payload JSON avec la clé de chiffrement et l'IV.
  2. Vous créez une signature pour le ciphertext obtenue. Pour ceci, nous pouvons utiliser HMAS-SHA256 et l'authkey. Déterminez le HMAC en hachant le IV concaténé du ciphertext. HMAC = HMAC-SHA256( IV + ciphertext )
  3. Encoder en base 64 le IV + ciphertext + HMAC : base64_payload = base64( IV + ciphertext + HMAC )Enfin, étant donné que base64 peut contenir des caractères comme le / et le +, il sera nécessaire de URL-encodé le payload chiffré et signé obtenu avant de l'ajouter dans l'URL du questionnaire.payload = urlencode( base64_payload )
  4. URL du questionnaire à intégrer dans le template email : https://room.myfeelback.com/webistes/xxxxxxxxxxxxxxx?p=<payload>

Procédure de génération des clés

Pour accéder aux clés, vous devez vous authentifier au back-office de la solution (HTTPS).

Votre utilisateur doit avoir les droits de “Paramètres de compte”.

Vous trouverez votre clé en allant dans Paramètres depuis le menu latéral.

Dans la catégorie Diffusions au sein de vos paramètres, choisissez "Chiffrement".

Si la paire de clés n'a jamais été générée alors l'utilisateur peut cliquer sur un bouton de "Génération des clés". Dans ce cas, le système MyFeelBack génère la paire de clés. L'utilisateur peut ainsi les copier coller et les utiliser par ailleurs.

Un compte MyFeelBack ne peut être associé qu'à une paire de clés à un instant T. Une paire de clé peut être révoquée sur demande en s'adressant au support de MyFeelBack. Si la paire de clés est révoquée alors tous les liens générés avant la révocation contenant des données chiffrées avec cette paire de clés seront invalides. Une nouvelle paire pourra alors être générée selon la procédure décrite ci-dessus.

_____________________________________________