API C/C
HSM Dinamo
Cargando...
Buscando...
No se han encontrado entradas
SVault

Descripción detallada

Operaciones de tokenización y anonimización de datos.

SVault

Las API del módulo SVault proporcionan funcionalidades de tokenización para anonimizar y seudonimizar bases de datos que contengan Información de Identificación Personal (IIP). El proceso de tokenización se basa en la generación de números aleatorios mediante un DRBG FIPS SP800-90A (aprobación NIST CAVP).

Arquitectura

Dinamo El módulo SVault tokeniza la información personal identificable (también llamadasecreta) generando un token aleatorio y un token blob( metadatossecretos y cifrados).

El token blob puede almacenarse y utilizarse para recuperar posteriormente el secreto, para operaciones de seudonimización. Para las operaciones de anonimización, el token blob debe descartarse y el secreto no puede recuperarse posteriormente.

El token generado sustituye al secreto en la base de datos original y puede tener asociado el token blob en los casos de seudonimización. El token puede tener su formato (decimal, base62, etc.) y la generación de dígitos de verificación habilitada (en el caso de CPF, CNPJ, PAN, etc.) especificados en el momento de la generación.

Los datos sensibles se protegen mediante una clave simétrica protegida dentro del HSM.

La recuperación del secreto mediante el token blob permite recuperarlo en texto claro o enmascarado. El enmascaramiento se realiza internamente en el HSM, lo que impide que la aplicación manipule el secreto en texto claro.

--- título: Secrets coding flow --- sequenceDiagram autonúmero participante base como Base de datos participante app como Aplicación participant hsm como HSM Nota sobre hsm: clave app ->> hsm: secreto hsm ->> hsm: cifrar hsm ->> app: token (datos pseudomizados)
token blob (secreto cifrado) app ->> base: token
token blob Nota sobre base: token
token blob

--- título: Blob token decoding flow --- sequenceDiagram autonúmero participante base como Base de datos participante app como Aplicación participant hsm como HSM Nota sobre base: token (datos pseudomizados)
token blob (secreto encriptado) Nota sobre hsm: clave app ->> base: buscar token blob base ->> app: token blob app ->> hsm: token blob hsm ->> hsm: descifrar hsm ->> app: secreto

Atención
Los tokens se generan aleatoriamente y, naturalmente, existe la posibilidad de que se generen tokens conflictivos. Por lo tanto, la aplicación tendrá que hacer frente a las colisiones solicitando de nuevo la generación de tokens para garantizar el almacenamiento de tokens únicos.

Operaciones de tokenización y anonimización de datos. Más...

Funciones

int AAP_API DSVaultGenToken(HSESSIONCTX hSession, DWORD dwOp, BYTE *pbInData, BYTE *pbTokenBlob, DWORD *pdwTokenBlobLen, char *szToken, DWORD dwReserved)
 
int AAP_API DSVaultGetData(HSESSIONCTX hSession, DWORD dwOp, const char *szMK, const char *szMask, BYTE *pbTokenBlob, DWORD dwTokenBlobLen, char *szData, DWORD *pdwDataLen, DWORD dwReserved)
 

Funciones

DSVaultGenToken()

int AAP_API DSVaultGenToken ( HSESSIONCTX hSesión,
DWORD dwOp,
BYTE * pbInData,
BYTE * pbTokenBlob,
DWORD * pdwTokenBlobLen,
char * szToken,
DWORD dwReservado )

#include <dinamo.h>

Tokeniza un dato, generando un token blob y su respectivo token.

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]dwOpTipo de operación. Debe ser 0.
[en]pbInDataDatos de entrada para la generación de tokens. Debe utilizarse la estructura SVAULT_GEN_TOKEN.
[fuera]pbTokenBlobBuffer que contendrá el token blob. Pasar un tamaño de búfer D_SVAULT_TOKEN_BLOB_LEN en la entrada. pdwTokenBlobLen contendrá el tamaño del búfer de salida. O token blob protege la secreto y sus metadatos. Este búfer debe guardarse y utilizarse al llamar a DSVaultGetData() para la posterior recuperación del secreto o ficha.
[in,out]pdwTokenBlobLenTamaño de pbTokenBlob. La entrada contiene el tamaño total del búfer pbTokenBlob y la salida contendrá el tamaño de los datos copiados en pbTokenBlob.
[fuera]szTokenCadena de longitud D_SVAULT_MAX_TL + 1 que contendrá el testigo generado. Se puede pasar NULL para no recuperar el token generado. El token puede recuperarse de nuevo usando la API DSVaultGetData().
[en]dwReservadoReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Ver también
DSVaultGetData().
Ejemplos
tokenisation.c.

DSVaultGetData()

int AAP_API DSVaultGetData ( HSESSIONCTX hSesión,
DWORD dwOp,
const char * szMK,
const char * szMask,
BYTE * pbTokenBlob,
DWORD dwTokenBlobLen,
char * szData,
DWORD * pdwDataLen,
DWORD dwReservado )

#include <dinamo.h>

Recupera el secreto o token de datos tokenizados utilizando un blob de token. Esta API también permite recuperar el secreto o token enmascarado.

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]dwOpTipo de operación. Puede ser una de las opciones siguientes.
Valor Significado
D_SVAULT_GET_OP_SECRET Recupera el secreto.
D_SVAULT_GET_OP_TOKEN Recupera la ficha.
[en]szMKNombre de la clave utilizada para la protección de datos.
[en]szMaskPatrón de máscara que se aplicará al secreto o token, según el definido al generar el token blob en DSVaultGenToken(). Buffer con un tamaño mínimo de D_SVAULT_MIN_TL y máximo de D_SVAULT_MAX_TL que contiene la máscara. Puede ser NULL para no utilizar la máscara. La máscara es una cadena UTF-8 que contiene los caracteres que se aplicarán a los datos para enmascararlos. Pase '\0' en las posiciones donde desee que se muestren los datos. Consulte los comentarios para ver ejemplos.
[en]pbTokenBlobBuffer de tamaño D_SVAULT_TOKEN_BLOB_LEN, generado por la API DSVaultGenToken(), que contiene el token blob.
[en]dwTokenBlobLenBúfer de tamaño máximo de D_SVAULT_TOKEN_BLOB_LEN, generado por la API DSVaultGenToken(), que contiene el token blob.
[fuera]szDataCadena que contendrá el ficha o el secreto como se especifica en dwOp. Puede utilizar un tamaño de D_SVAULT_MAX_TL + 1 para cubrir todos los datos actuales.
[in,out]pdwDataLenTamaño de la cadena szData. Debe contener el tamaño de szData y el retorno de la API contendrá el tamaño total de los datos copiados.
[en]dwReservadoReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Notas
Ejemplos de uso de una máscara. En este ejemplo utilizaremos un secreto con el valor "123456789".

Utilizando la máscara "***" obtendremos el siguiente resultado.

"***456789"

Aplicando la máscara "9999" obtendremos el siguiente resultado.

"999956789"

Aplicando la máscara "***\0\0***" obtendremos el siguiente resultado.

"***456***"
Ver también
DSVaultGenToken().
Ejemplos
tokenisation.c.