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 (UInt32 Op, DinamoApi.SVAULT_GEN_TOKEN TokenInfo, UInt32 Reserved) |
| Tokeniza un dato, generando un token blob y su respectivo token.
|
|
SVaultGenTokenResponse | GenSVaultToken(DinamoApi.SVAULT_GEN_TOKEN TokenInfo) |
| Tokeniza un dato, generando un token blob y su respectivo token.
|
|
SVaultGenTokenResponse | GenSVaultDigitToken (byte CKS, byte MaskFlags, cadena MK, cadena Secret) |
| Tokeniza los dígitos, generando un token blob y su respectivo token.
|
|
SVaultGenTokenResponse | GenSVaultStringToken (byte MaskFlags, cadena MK, cadena Secret) |
| Tokeniza una cadena UTF-8, generando un token blob y su respectivo token.
|
|
cadena | GetSVaultTokenBlobData (UInt32 Op, cadena MK, cadena Mask, byte[] TokenBlob) |
| Recupera el secreto o token de datos tokenizados utilizando un token blob. Esta API también permite recuperar el secreto o token enmascarado.
|
|
cadena | GetSVaultSecret (cadena MK, cadena Mask, byte[] TokenBlob) |
| Recupera el secreto de datos tokenizados utilizando un token blob. Esta API también permite recuperar el secreto enmascarado.
|
|
cadena | GetSVaultToken (cadena MK, cadena Mask, byte[] TokenBlob) |
| Recupera el token de los datos tokenizados utilizando un blob de token. Esta API también permite recuperar el token enmascarado.
|
|
◆ 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
- Token blob y token.
- 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
- Token blob y token.
- 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 |
DinamoApi.D_SVAULT_CKS_NULL | No genera una suma de comprobación. Sólo genera el token. |
DinamoApi.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. |
DinamoApi.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. |
DinamoApi.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. |
DinamoApi.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. |
DinamoApi.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. |
DinamoApi.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 sólo con números. Debe tener una longitud mínima de puntos de codificación DinamoApi . D_SVAULT_MIN_TL y máxima de unidades de codificación DinamoApi.D_SVAULT_MAX_TL. |
- Devolución
- Token blob y token.
- Excepciones
-
- Ejemplos
- tokenisation.cs.
◆ 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. |
DinamoApi.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. |
DinamoApi.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 sólo con números. Debe tener una longitud mínima de puntos de codificación DinamoApi . D_SVAULT_MIN_TL y máxima de unidades de codificación DinamoApi.D_SVAULT_MAX_TL. |
- Devolución
- Token blob y token.
- Excepciones
-
- Ejemplos
- tokenisation.cs.
◆ GetSVaultTokenBlobData()
cadena GetSVaultTokenBlobData |
( |
UInt32 | Op, |
|
|
cadena | MK, |
|
|
cadena | Máscara, |
|
|
byte[] | TokenBlob ) |
|
en línea |
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
-
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áximo de DinamoApi.D_SVAULT_MAX_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 DinamoApi.D_SVAULT_TOKEN_BLOB_LEN, generado por la API GenSVaultToken(), que contiene el token blob. |
- Devolución
- Devolución según lo definido en op.
- Excepciones
-
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.
Aplicando la máscara "9999" obtendremos el siguiente resultado.
Aplicando la máscara "***\0\0***" obtendremos el siguiente resultado.
◆ GetSVaultSecret()
cadena GetSVaultSecret |
( |
cadena | MK, |
|
|
cadena | Máscara, |
|
|
byte[] | TokenBlob ) |
|
en línea |
Recupera el secreto de 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áximo de DinamoApi.D_SVAULT_MAX_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 DinamoApi.D_SVAULT_TOKEN_BLOB_LEN, generado por la API GenSVaultToken(), que contiene el token blob. |
- Devolución
- secreto
- Excepciones
-
- Ejemplos
- tokenisation.cs.
◆ GetSVaultToken()
cadena GetSVaultToken |
( |
cadena | MK, |
|
|
cadena | Máscara, |
|
|
byte[] | TokenBlob ) |
|
en línea |
Recupera el token de los datos tokenizados utilizando un blob de token. 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áximo de DinamoApi.D_SVAULT_MAX_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 DinamoApi.D_SVAULT_TOKEN_BLOB_LEN, generado por la API GenSVaultToken(), que contiene el token blob. |
- Devolución
- ficha
- Excepciones
-