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
El módulo SVault Dinamo tokeniza la información personal identificable (también llamada secreta) 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.
|
SVaultGenTokenResponse | GenSVaultToken (int op, SVaultGenTokenInfo tokenInfo, int reserved) throws TacException |
| Tokeniza un dato, generando un token blob y su respectivo token.
|
|
SVaultGenTokenResponse | GenSVaultToken(SVaultGenTokenInfo tokenInfo ) throws TacException |
| Tokeniza un dato, generando un token blob y su respectivo token.
|
|
SVaultGenTokenResponse | GenSVaultDigitToken (byte CKS, byte maskFlags, String MK, String secret) throws TacException |
| Tokeniza los dígitos, generando un token blob y su respectivo token.
|
|
SVaultGenTokenResponse | GenSVaultStringToken (byte maskFlags, String MK, String secret) throws TacException |
| Tokeniza una cadena UTF-8, generando un token blob y su respectivo token.
|
|
Cadena | GetSVaultTokenBlobData (int op, String MK, String mask, byte[] tokenBlob) lanza una TacException |
| Recupera el secreto o token de datos tokenizados utilizando un token blob.
|
|
Cadena | GetSVaultSecret (String MK, String mask, byte[] tokenBlob) throws TacException |
| Recupera el secreto de los datos tokenizados mediante un blob de token.
|
|
Cadena | GetSVaultToken (String MK, String mask, byte[] tokenBlob) throws TacException |
| Recupera el token de los datos tokenizados utilizando un token blob.
|
|
◆ GenSVaultToken() [1/2]
Tokeniza un dato, generando un token blob y su respectivo token.
- Parámetros
-
op | Tipo de operación. Debe ser 0. |
tokenInfo | Detalles de la operación de tokenización |
reservado | Reservado para uso futuro (debe ser 0). |
- Devolución
- Excepciones
-
◆ GenSVaultToken() [2/2]
Tokeniza un dato, generando un token blob y su respectivo token.
- Parámetros
-
tokenInfo | Detalles de la operación de tokenización |
- Devolución
- Excepciones
-
◆ GenSVaultDigitToken()
Tokeniza los dígitos, generando un token blob y su respectivo token.
- Parámetros
-
CKS | Define el tipo de suma de comprobación para la generación de fichas. Puede ser una de las opciones de la siguiente tabla
Valor | Operación |
TacNDJavaLib.D_SVAULT_CKS_NULL | No genera una suma de comprobación. Sólo genera el token. |
TacNDJavaLib.D_SVAULT_CKS_CPF | Genera los 2 dígitos de verificación del estándar CPF (Cadastro de Pessoas Físicas) en el token. El secreto debe contener solo números e incluir los dígitos de verificación. |
TacNDJavaLib.D_SVAULT_CKS_CNPJ | Genera los 2 dígitos de verificación en el estándar CNPJ (Registro Nacional de Personas Jurídicas) en el token. El secreto debe contener sólo números e incluir los dígitos de verificación. |
TacNDJavaLib.D_SVAULT_CKS_PAN | Genera un PAN (Primary Account Number) con un dígito de control válido en el token. El secreto debe estar completo y contener solo números. |
TacNDJavaLib.D_SVAULT_CKS_IEL | Genera los 2 dígitos de control en el patrón del número de registro de votante en la ficha. El secreto debe contener solo números e incluir los dígitos de control. |
|
maskFlags | Opciones de generación. Puede ser una de las opciones de la siguiente tabla
Valor | Operación |
0 | No utiliza máscaras para la generación de testigos ni para la recuperación de secretos. |
TacNDJavaLib.D_SVAULT_F_MASK_TOKEN | Utiliza máscaras para generar el token. La máscara se puede pasar al recuperar el token o el secreto. |
TacNDJavaLib.D_SVAULT_F_MASK_SECRET | Utiliza máscaras para generar el secreto. La máscara se puede pasar al recuperar el token o el secreto. |
|
MK | Nombre de la clave utilizada para la protección de datos |
secreto | El secreto debe ser una cadena con números solamente. Debe tener un tamaño mínimo de TacNDJavaLib . D_SVAULT_MIN_TL y un tamaño máximo de TacNDJavaLib.D_SVAULT_MAX_TL. |
- Devolución
- Excepciones
-
◆ GenSVaultStringToken()
Tokeniza una cadena UTF-8, generando un token blob y su respectivo token.
- Parámetros
-
maskFlags | Opciones de generación. Puede ser una de las opciones de la siguiente tabla
Valor | Operación |
0 | No utiliza máscaras para la generación de testigos ni para la recuperación de secretos. |
TacNDJavaLib.D_SVAULT_F_MASK_TOKEN | Utiliza máscaras para generar el token. La máscara se puede pasar al recuperar el token o el secreto. |
TacNDJavaLib.D_SVAULT_F_MASK_SECRET | Utiliza máscaras para generar el secreto. La máscara se puede pasar al recuperar el token o el secreto. |
|
MK | Nombre de la clave utilizada para la protección de datos |
secreto | El secreto debe ser una cadena UTF-8. Debe tener un tamaño mínimo de TacNDJavaLib . D_SVAULT_MIN_TL y un tamaño máximo de TacNDJavaLib.D_SVAULT_MAX_TL. |
- Devolución
- Excepciones
-
◆ GetSVaultTokenBlobData()
Cadena GetSVaultTokenBlobData |
( |
int | op, |
|
|
Cadena | MK, |
|
|
Cadena | máscara, |
|
|
byte[] | tokenBlob ) lanza una TacException |
Recupera el secreto o token de datos tokenizados utilizando un token blob.
Esta API también permite recuperar el secreto enmascarado o el token.
- Parámetros
-
op | Tipo de operación. Puede ser una de las opciones siguientes.
|
MK | Nombre de la clave utilizada para la protección de datos. |
máscara | Patrón de máscara que se aplicará al secreto o token, según el definido al generar el token blob en GenSVaultToken(). Buffer con un tamaño mínimo de TacNDJavaLib.D_SVAULT_MIN_TL y máximo de TacNDJavaLib.D_SVAULT_MIN_TL que contiene la máscara. Puede ser una cadena vacía "" para no utilizar el enmascaramiento. 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 en las que desee que se muestren los datos. Consulte las notas para ver ejemplos. |
tokenBlob | Buffer de tamaño TacNDJavaLib.D_SVAULT_TOKEN_BLOB_LEN, generado por la API GenSVaultToken(), que contiene el blob token. |
- Devolución
- Retorno definido en op
- Excepciones
-
◆ GetSVaultSecret()
String GetSVaultSecret |
( |
Cadena | MK, |
|
|
Cadena | máscara, |
|
|
byte[] | tokenBlob ) lanza una TacException |
Recupera el secreto de los datos tokenizados utilizando un token blob.
Esta API también permite recuperar el secreto enmascarado.
- Parámetros
-
MK | Nombre de la clave utilizada para la protección de datos. |
máscara | Patrón de máscara que se aplicará al secreto o token, según el definido al generar el token blob en GenSVaultToken(). Buffer con un tamaño mínimo de TacNDJavaLib.D_SVAULT_MIN_TL y máximo de TacNDJavaLib.D_SVAULT_MIN_TL que contiene la máscara. Puede ser una cadena vacía "" para no utilizar el enmascaramiento. 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 en las que desee que se muestren los datos. Consulta las notas sobre GetSVaultTokenBlobData() para ver ejemplos. |
tokenBlob | Buffer de tamaño TacNDJavaLib.D_SVAULT_TOKEN_BLOB_LEN, generado por la API GenSVaultToken(), que contiene el blob token. |
- Devolución
- secreto
- Excepciones
-
◆ GetSVaultToken()
String GetSVaultToken |
( |
Cadena | MK, |
|
|
Cadena | máscara, |
|
|
byte[] | tokenBlob ) lanza una TacException |
Recupera el token de los datos tokenizados utilizando un token blob.
Esta API también permite recuperar el token enmascarado.
- Parámetros
-
MK | Nombre de la clave utilizada para la protección de datos. |
máscara | Patrón de máscara que se aplicará al secreto o token, según el definido al generar el token blob en GenSVaultToken(). Buffer con un tamaño mínimo de TacNDJavaLib.D_SVAULT_MIN_TL y máximo de TacNDJavaLib.D_SVAULT_MIN_TL que contiene la máscara. Puede ser una cadena vacía "" para no utilizar el enmascaramiento. 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 en las que desee que se muestren los datos. Consulta las notas sobre GetSVaultTokenBlobData() para ver ejemplos. |
tokenBlob | Buffer de tamaño TacNDJavaLib.D_SVAULT_TOKEN_BLOB_LEN, generado por la API GenSVaultToken(), que contiene el blob token. |
- Devolución
- ficha
- Excepciones
-