Cifrado de datos sensibles en el chat web

Nota : El contenido de esta sección se aplica al asistente de IA. Si desea integrar el chat con IA en una página externa, consulte la página Descripción general de la seguridad del chat web.

Utilizando la clave pública que proporciona IBM, puede añadir otro nivel de cifrado para ocultar los datos confidenciales que envíe desde el chat web.

Nota: Para utilizar este método para cifrar datos, primero debe habilitar la función de seguridad del chat web. Para obtener más información, consulte Habilitar la seguridad del chat web.

Utilice este método para enviar información confidencial en mensajes que procedan de su sitio web, como información sobre el nivel de fidelidad de un cliente, un ID de usuario o tokens de seguridad para utilizarlos en webhooks que llame desde acciones. La información transmitida de este modo al asistente se almacena en una variable contextual privada. Las variables privadas no pueden ser vistas por los clientes y nunca se envían de vuelta a la conversación web.

Por ejemplo, puede iniciar un proceso comercial para un cliente VIP que sea diferente del proceso que inicia para un cliente estándar. Usted no quiere que los no VIP sepan que están categorizados como tales, pero debe pasar esta información a su acción para que pueda cambiar el flujo de la conversación. Para ello, puede pasar el estado del MVP del cliente como una variable encriptada. Esta variable de contexto privada está disponible para su uso por la acción, pero no por cualquier otra cosa.

Consejo: icono de desarrollo Tutorial: Para ver un tutorial que muestra un ejemplo del uso de la seguridad del chat web para autenticar usuarios y proteger datos confidenciales, consulte Tutorial: Autenticación de un usuario en medio de una sesión.

Para encriptar datos sensibles:

  1. En la pestaña Seguridad de la configuración de integración del chat web, haga clic en el botón Generar clave.

  2. Copie la clave pública que aparece en el campo de clave públicaIBM. Este campo sólo está disponible si la seguridad del chat web está activada.

  3. En la función JavaScript que utilice para crear su JWT, incluya en la carga útil una declaración privada denominada " user_payload. Utilice este reclamo para contener los datos sensibles, cifrados con la clave pública IBM.

    El siguiente fragmento de código muestra una función que acepta un userID y un payload de usuario. Si se proporciona una carga útil de usuario, su contenido se cifra y se firma con la clave pública IBM. En este ejemplo, la clave pública se almacena en una variable de entorno.

    // 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;
    }
    
    Consejo: La carga útil del usuario debe ser datos JSON válidos. El chat web utiliza las opciones predeterminadas de la biblioteca Node-RSA, que espera el esquema de cifrado `pkcs1_oaep` y la codificación de cifrado `base64`.
  4. Cuando la integración de chat web recibe un mensaje firmado con este JWT, el contenido de la declaración ' user_payload ' se descifra y se guarda como el objeto ' context.integrations.chat.private.user_payload. Como se trata de una variable privada, no se incluirá en los registros.