Protecting respondents' personal information is a crucial step to ensure compliance of the data collected through your surveys.
In this article, we present solutions to encode or encrypt the attributes contained in a URL, thereby ensuring their confidentiality and integrity during the stages of data collection, transmission, and analysis (Learn more about GDPR compliance with Skeepers Feedback Management)
We recommend sharing this documentation with the teams managing the integration of data into your external email or SMS sending tool outside of Skeepers.
Overview
Skeepers Feedback Management offers two distinct methods that provide different levels of security:
- Method of Base64 Encoding to limit the visibility of attributes in the URL.
- Method of AEAD Encryption (Authenticated Encryption with Associated Data) to simultaneously ensure confidentiality and authenticity of the data.
| Base64 Encoding | AEAD Encryption |
|
| Purpose | Converts the attributes present in the URL into ASCII characters | Secures the attributes present in the URL and ensures the integrity of the data |
| Nature | Does not encrypt the data and provides no protection against reading or tampering with the data | Encrypts the data to make it unreadable without the proper key and adds authentication to verify that the data has not been altered |
| Limitations | Can easily be decoded with a converter, making encoding insufficient for protecting sensitive information | Requires proper key management to ensure security |
The Base64 Encoding Method
To hide from respondents the attributes and their values usually visible in the URL of your surveys, you can use Base64 encoding of attributes.
Unlike the AEAD encryption method, the Base64 encoding method does not provide a high level of security because the attributes are only encoded. They can easily be decoded with a converter. This method is simple to implement but only "scrambles" the personal information present in the URL, it does not secure it.
Implementation
Here is the procedure to follow to use the Base64 encoding method:
-
Generate a new URL link (with code or manual attribute values) for a survey ready to be deployed.
-
Isolate the URL parameters containing the attributes and their values
d:attribute1=value1&d:attribute2=value2&d:attribute3=value3. ⚠️ Thelangandvalueparameters must not be encoded. -
Use an external tool to Skeepers (online service, AI, software or script) to encode in Base64 the URL parameter string that corresponds to the attributes.
-
Rebuild the tracked URL by linking the survey access URL with the attributes encoded in Base64 (⚠️ don’t forget the "=" sign).
- If you defined it in the original link, add the language parameter at the end of the URL.
The tracked URL that allows access to your survey and whose attributes are hidden from respondents is ready to be deployed.
For technical and functional reasons, the handling of decoding the Base64 encoded string differs between a standard integration and an integration with first question pre-filled or recorded on click. In case of first embedded question integration, if URL encoding is not used, the decoding of the Base64 string may be incorrect when it contains Chinese or Japanese characters. These alphabets, when converted to Base64, can generate special characters that disrupt decoding. It is therefore recommended to use URL encoding in this case.
The AEAD Encryption Method
To hide from respondents the attributes and their values usually visible in the URL of your surveys but also to ensure the confidentiality and authenticity of the data, you can use AEAD encryption.
Unlike the Base64 encoding method, the AEAD encryption method (Authenticated Encryption with Associated Data) provides a high level of security. This method follows an EtM (Encrypt then MAC) approach to ensure data integrity by using one key to encrypt the payload (EncryptKey) and a second key for the MAC part (AuthKey). It requires a more advanced configuration than Base64 encoding because the 2 keys must be generated from your Skeepers instance and it is necessary to first create a JSON payload containing the business data in the form of attributes.
Prerequisites
- Encode the JSON payload in UTF-8 before any operation.
Retrieve from the platform:
- an AES-256 encryption key (32 bytes);
- a separate HMAC authentication key.
Implementation
Here is the procedure to follow to use the AEAD encryption method:
- On the Skeepers Feedback Management platform and with the appropriate rights, go to the Settings category accessible from the left side menu. Access the Encryption section.
-
If no key pair has ever been generated on the account, click the Generate keys button. A new encryption key and a new authentication key will be created.
A Skeepers account can be associated with only one key pair at a time. If necessary, a key pair can be revoked by contacting Skeepers Support . When a key pair is revoked, all links generated before the revocation, containing data encrypted with that pair, will become invalid. A new key pair can then be generated according to the procedure described here.
-
Create the payload in JSON format containing the business data (attributes) according to the following structure:
{ "attribute1": "value1", "attribute2": "value" }To ensure optimal processing of your data, we recommend avoiding the inclusion of fields containing the
nullvalue in the JSON sent. This helps reduce potential errors during decryption or content validation, while ensuring greater reliability in data transmission. - Encrypt the payload using the AES-CBC algorithm with the 256-bit encryption key retrieved from the platform, a 128-bit block size, and the PKCS7 padding mode to complete the final block to 16 bytes.
-
Then generate an initialization vector (IV) based on the 128-bit block size, and proceed with encrypting the JSON payload using the encryption key and the IV. Use a cryptographically secure generator (CSPRNG) for this operation.
Never reuse the same IV with the same AES key.
-
Generate a signature for the resulting ciphertext using the HMAC-SHA256 algorithm and the authentication key retrieved from the platform. Compute the HMAC by hashing the concatenation of the IV and the ciphertext:
HMAC = HMAC-SHA256(IV + ciphertext) -
Base64-encode the combination of the IV, the ciphertext, and the HMAC:
base64_payload = base64(IV + ciphertext + HMAC)Do not alter the result or modify the character set.
Finally, since base64 may contain special characters such as "/" and "+", it is necessary to URL-encode the encrypted and signed payload before adding it to the survey URL:
payload = urlencode(base64_payload) -
If the URL is shared within an email template, it is necessary to include the survey URL in the following form:
"https://room.myfeelback.com/websites/xxxxxxxxxxxxxxx?p="
If you would like to add an extra layer of security, we invite you to consult the article Using Account Data.