# Protección de datos sensibles

En GBC hemos realizado un protocolo seguro para poder tener datos sensibles en nuestros Módulos de API.

### ¿Qué **consideramos como un dato sensible?**

Hemos definido un dato sensible como una información importante que necesite una capa más de seguridad con el objetivo de cumplir leyes, normas, reglamentos y/o certificaciones. Unos casos de ejemplo pueden ser datos personales de un cliente final o también podemos ver un dato sensible como los números de una tarjeta de débito y/o crédito.

### **Proceso de consulta de endpoint con datos sensibles**

1. Se deben solicitar las llaves que permitirá desencriptar los datos sensibles en el endpoint (/api-hub/v1/dynamic-keys). Este endpoint devuelve la información de la llave secreta generada como uso único y el campo (key\_id).
2. &#x20;Se debe invocar el endpoint que contiene data sensible enviando los datos necesarios y agregando el campo (key\_id).

### Proceso de desencriptar datos sensibles

En esta sección se detallan cómo desencriptar o ver los datos sensibles, cada dato está en formato base64.

**Paso a paso para desencriptar**

1. Obtener a la disponibilidad el PrivateKey (Llave privada), el passphrase (Frase de contraseña), y el dato encriptado de **base64,** es necesario convertir el dato a **Buffer.**
2. Ejecutar la función para desencriptar y enviar como parámetros el passpharse, privateKey, dataEncrypted de tipo **Buffer.**
3. La función retorna el dato original, para visualizar es necesario convertir a **utf8.**

**Ejemplo en NodeJS**

```
const { publicEncrypt, constants, privateDecrypt } = require('crypto');

function decrypt(passphrase: string, privateKey: string, dataEncrypted: Buffer) {
    return privateDecrypt(
      {
        key: privateKey,
        padding: constants.RSA_PKCS1_OAEP_PADDING,
        oaepHash: "sha512",
        passphrase
      },
      dataEncrypted
    ); 
}
// Convert base64 to Buffer
const encryptedBuff = Buffer.from(dataBase64, 'base64')

// Decrypt Data
const decrypt = decrypt(keys.passphrase, keys.privateKey, encryptedBuff);
console.log('decrypt::', decrypt)

// Decrypt plain
console.log('decrypt:: REAL DATA', decrypt.toString('utf8'))
```

### **Endpoints relacionados** con datos sensibles

{% content-ref url="/pages/UcMKY463e0etYAbk9sdk" %}
[Cards](/reference/api-reference/cards.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.globalbridgeconnections.com/seguridad/proteccion-de-datos-sensibles.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
