Cryptage des données sensibles dans les discussions en ligne

Remarque : le contenu de cette section s'applique à l'assistant IA. Si vous souhaitez intégrer le chat IA à une page externe, consultez la page Présentation de la sécurité du chat Web.

En utilisant la clé publique fournie par IBM, vous pouvez ajouter un autre niveau de cryptage pour masquer les données sensibles que vous envoyez à partir du chat en ligne.

Remarque : pour utiliser cette méthode de chiffrement des données, vous devez d'abord activer la fonctionnalité de sécurité du chat Web. Pour plus d'informations, consultez la section Activation de la sécurité du chat Web.

Utilisez cette méthode pour envoyer des informations sensibles dans des messages provenant de votre site web, telles que des informations sur le niveau de fidélité d'un client, un identifiant d'utilisateur ou des jetons de sécurité à utiliser dans les webhooks que vous appelez à partir d'actions. Les informations transmises à votre assistant d'intelligence artificielle de cette manière sont stockées dans une variable contextuelle privée. Les variables privées ne sont pas visibles pour les clients et ne sont jamais renvoyées à la discussion Web.

Par exemple, vous pouvez lancer un processus de gestion pour un client VIP qui est différent du processus que vous lancez pour un client standard. Vous ne voulez pas que les personnes non VIP sachent qu'elles sont classées dans cette catégorie, mais vous devez transmettre cette information à votre action afin qu'elle puisse modifier le cours de la conversation. Pour ce faire, vous pouvez transmettre le statut MVP du client sous la forme d'une variable cryptée. Cette variable de contexte privée peut être utilisée par l'action, mais par personne d'autre.

Conseil : icône de développement Tutoriel : pour un tutoriel présentant un exemple d'utilisation de la sécurité du chat Web pour authentifier les utilisateurs et protéger les données sensibles, consultez Tutoriel : authentification d'un utilisateur au milieu d'une session.

Pour crypter les données sensibles :

  1. Dans l'onglet Sécurité des paramètres d'intégration du chat Web, cliquez sur le bouton Générer une clé.

  2. Copiez la clé publique qui s'affiche dans le champ Clé publiqueIBM Ce champ n'est disponible que si la sécurité du chat web est activée.

  3. Dans la fonction JavaScript que vous utilisez pour créer votre JWT, incluez dans la charge utile une revendication privée appelée " user_payload. Utilisez cette demande pour contenir les données sensibles, cryptées avec la clé publique d'IBM

    L'extrait de code suivant montre une fonction qui accepte un userID et une charge utile d'utilisateur. Si une charge utile est fournie par l'utilisateur, son contenu est chiffré et signé avec la clé publique d'IBM Dans cet exemple, la clé publique est stockée dans une variable d'environnement.

    // Example code snippet to encrypt sensitive data in JWT payload.
    const jwt = require('jsonwebtoken');
    const RSA = require('node-rsa');
    
    const rsaKey = new RSA(process.env.PUBLIC_IBM_RSA_KEY);
    
    /**
    * Returns a signed JWT. Optionally, also adds an encrypted user payload
    * as stringified JSON in a private claim.
    */
    function mockLogin(userID, userPayload) {
      const payload = {
        sub: userID, // Required
        // The exp claim is automatically added by the jsonwebtoken library.
    };
    if (userPayload) {
        // If there is a user payload, encrypt it using the IBM public key
        // and base64 format.
        payload.user_payload = rsaKey.encrypt(userPayload, 'base64');
    }
    const token = jwt.sign(payload, process.env.YOUR_PRIVATE_RSA_KEY, { algorithm: 'RS256', expiresIn: '1h' });
    return token;
    }
    
    Conseil : la charge utile utilisateur doit être constituée de données JSON valides. Le chat Web utilise les options par défaut de la bibliothèque Node-RSA, qui prévoit le schéma de chiffrement `pkcs1_oaep` et le codage de chiffrement `base64`.
  4. Lorsque l'intégration du chat web reçoit un message signé avec ce JWT, le contenu de la demande " user_payload est décrypté et enregistré en tant qu'objet " context.integrations.chat.private.user_payload. Comme il s'agit d'une variable privée, elle ne sera pas incluse dans les journaux.