Comment encoder ou chiffrer les attributs contenus dans un URL ?

Protéger les informations personnelles des répondants est une étape cruciale pour garantir la conformité des données collectées par vos questionnaires.

Dans cet article, nous vous présentons les solutions pour encoder ou chiffrer les attributs contenus dans une URL, garantissant ainsi leur confidentialité et leur intégrité durant les étapes de collecte, de transmission et d'analyse des données (En savoir plus sur la conformité du RGPD avefc Skeepers Feedback Management)

Nous vous conseillons de transmettre cette documentation aux équipes gérant l’intégration des données dans votre outil d’envoi d’email ou de SMS externe à Skeepers.

Présentation

Skeepers Feedback Management vous propose deux méthodes distinctes qui offrent plus ou moins de sécurité :

  • Méthode d'Encodage Base64 pour limiter la visibilité des attributs dans l’URL.
  • Méthode de Chiffrement AEAD (Authenticated Encryption with Associated Data) pour assurer simultanément la confidentialité et l'authenticité des données.
  Encodage Base64

Chiffrement AEAD

Objectif Convertit les attributs présents dans l'URL dans des caractères ASCII

Sécurise les attributs présents dans l'URL et assure l'intégrité des données

Nature Ne chiffre pas les données et n'ajoute aucune protection contre la lecture ou l'altération des données Chiffre les données pour les rendre illisibles sans une clé appropriée et ajoute une authentification pour vérifier que les données n'ont pas été altérées
Limites Peut facilement être décodée avec un convertisseur, rendant l'encodage insuffisant pour la protection des informations sensibles Nécessite une gestion appropriée des clés pour assurer la sécurité

La méthode d'encodage en base64

Pour masquer aux répondants les attributs et leurs valeurs habituellement visibles dans l'URL de vos questionnaires, vous pouvez recourir à l'encodage des attributs en base64.

Contrairement à la méthode de chiffrement AEAD, la méthode d'encodage base 64 n'offre pas un niveau de sécurité élevée car les attributs sont seulement encodés. Il est possible de les décoder facilement avec un convertisseur. Cette méthode est simple à mettre en œuvre mais ne se contente que de "brouiller" les informations personnelles présentes dans l'URL, elle ne les sécurise pas.

Mise en œuvre

Voici la procédure à mettre en place pour utiliser la méthode d'encodage en base64 :

  1. Générer un nouveau lien URL (avec code ou avec valorisation manuelle des attributs) pour un questionnaire prêt à être déployé.

    Gif filtres - FM.gif

  2. Isoler les paramètres de l'URL contenant les attributs et leurs valeurs d:attribut1=valeur1&d:attribut2=valeur2&d:attribut3=valeur3. ⚠️ Les paramètres lang et value ne doivent pas être encodés.

  3. Utiliser un outil externe à Skeepers (service en ligne, IA, logiciel ou script) pour encoder en base64 la chaîne des paramètres de l'URL qui correspond aux attributs.

  4. Reconstituer l'URL trackée en reliant l'URL d'accès au questionnaire avec les attributs encodés en base64 (⚠️ ne pas oublier le signe "=").

  5. Si vous l'avez défini dans le lien original, ajouter à la fin de l'URL le paramètre de langue.

L'URL tracké qui permet d'accéder à votre questionnaire et dont les attributs sont masqués aux répondants est prêt à être déployé.

Pour des raisons techniques et fonctionnelles, la gestion du décodage de la chaîne encodée en base64 diffère entre une intégration classique et une intégration avec première question avec pré-remplissage ou enregistrement au clic. En cas d'intégration de la première question embarquée, si l'encodage URL n'est pas utilisé, le décodage de la chaîne base64 peut être incorrect lorsque celle-ci contient des caractères chinois ou japonais. Ces alphabets, lorsqu'ils sont convertis en base64, peuvent générer des caractères spéciaux perturbant le décodage. Il est donc recommandé d'utiliser un encodage URL dans ce cas.

La méthode de chiffrement AEAD

Pour masquer aux répondants les attributs et leurs valeurs habituellement visibles dans l'URL de vos questionnaires mais aussi pour assurer la confidentialité et l'authenticité des données, vous pouvez recourir au chiffrement AEAD.

Contrairement à la méthode d'encodage base64, la méthode de chiffrement AEAD (Authenticated Encryption with Associated Data) offre un niveau de sécurité élevée. Cette méthode aborde une approche EtM (Encrypt then MAC) pour assurer l'intégrité des données en utilisant une clé pour chiffrer le payload (EncryptKey) et une seconde clé pour le MAC part (Authkey). Elle nécessite une plus importante configuration que l'encodage base64 car les 2 clés doivent être générées depuis votre instance Skeepers et il est nécessaire de créer au préalable un payload au format JSON contenant les données métiers sous forme d'attributs.

Pré-requis

  • Encoder le payload JSON en UTF-8 avant toute opération.

Récupérer sur la plateforme :

  • une clé de chiffrement AES-256 (32 octets) ;
  • une clé d’authentification HMAC distincte.

Mise en œuvre

Voici la procédure à mettre en place pour utiliser la méthode de chiffrement AEAD :

  1. Sur la plateforme Skeepers Feedback Management et avec les droits appropriés, se rendre dans la catégorie Paramètres accessible par le menu latéral gauche. Accéder à la section Chiffrement.
  2. Si aucune paire de clé n'a jamais été générée sur le compte, cliquer sur le bouton Générer des clés. Une nouvelle clé de chiffrement et une nouvelle clé d'authentification seront ainsi créées.

    Gif filtres - FM (1).gif

    Un compte Skeepers peut être associé à une seule paire de clés à la fois. Si nécessaire, une paire de clés peut être révoquée en contactant le Support de Skeepers . Lorsqu'une paire de clés est révoquée, tous les liens générés avant la révocation, contenant des données chiffrées avec cette paire, deviendront invalides. Une nouvelle paire de clés pourra alors être générée selon la procédure décrite ici.

  3. Créer le payload au format JSON contenant les données métiers (attributs) selon la structure suivante :

    {
      "attribut1": "valeur1",
      "attribut2": "valeur"
    }

    Pour garantir un traitement optimal de vos données, nous vous recommandons d’éviter d’inclure des champs contenant la valeur null dans le JSON envoyé. Cela permet de réduire les erreurs potentielles lors du déchiffrement ou de la validation du contenu, tout en assurant une meilleure fiabilité dans la transmission des informations.

  4. Chiffrer le payload en utilisant l'algorithme AES-CBC avec la clé de chiffrement de 256 bits récupérée dans la plateforme, un bloc de taille 128 bits et le mode de padding PKCS7 pour compléter le dernier bloc à 16 octets.
  5. Générer ensuite un vecteur d'initialisation (IV) en fonction de la taille du bloc de 128 bits, puis procéder au chiffrement du payload JSON avec la clé de chiffrement et l'IV. Utilisez un générateur cryptographiquement sûr (CSPRNG) pour cette opération.

    Ne réutilisez jamais le même IV avec une même clé AES.

  6. Générer une signature pour le ciphertext obtenu en utilisant l'algorithme HMAC-SHA256 et la clé d'authentification récupérée dans la plateforme. Déterminer le HMAC en hachant le IV concaténé du ciphertext :

    HMAC = HMAC-SHA256(IV + ciphertext)
  7. Encoder en base64 la combinaison de l'IV, du ciphertext et du HMAC :

    base64_payload = base64(IV + ciphertext + HMAC)

    N'altérez pas le résultat, ni ne modifiez le jeu de caractères.

    Enfin, étant donné que le base64 peut contenir des caractères spéciaux comme le "/" et le "+", il est nécessaire d'encoder l'URL du payload chiffré et signé avant de l'ajouter à l'URL du questionnaire :

    payload = urlencode(base64_payload)
  8. Si l'URL est partagée au sein d'un modèle d'email, il est nécessaire d'intégrer l'URL du questionnaire sous la forme suivante :

    "https://room.myfeelback.com/websites/xxxxxxxxxxxxxxx?p="

Si vous souhaitez ajouter encore un cran de sécurité, nous vous invitons à consulter l'article Utiliser les Données du compte (Account Data).

Si vous avez des questions, n'hésitez pas à contacter notre équipe Customer Care.

Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 2 sur 3