Java API
HSM Dinamo
Loading...
Looking for...
No entries found
SVault

Detailed description

Data tokenization and anonymization operations.

SVault

The SVault module APIs provide tokenization functionalities for anonymizing and pseudonymizing databases containing Personally Identifiable Information (PII). The tokenization process is based on the generation of random numbers by a FIPS SP800-90A DRBG ( NIST CAVP approval).

Architecture

The SVault Dinamo module tokenizes personally identifiable information (also called secret) by generating a random token and a blob token(secret and encrypted metadata).

The token blob can be stored and used for later retrieval of the secret, for pseudonymization operations. For anonymization operations, the token blob must be discarded and the secret cannot be recovered later.

The token generated replaces the secret in the original database and may have the blob token associated with it in cases of pseudonymization. The token can have its format (decimal, base62, etc.) and the ability to generate check digits (in the case of CPF, CNPJ, PAN, etc.) specified at the time of generation.

Sensitive data is protected using a symmetric key protected within the HSM.

Retrieving the secret using the token blob allows it to be retrieved in clear text or masked. Masking is done internally to the HSM, preventing the secret from being manipulated in clear text by the application.

--- title: Secrets coding flow --- sequenceDiagram autonumber participant base as Database participant app as Application participant hsm as HSM Note over hsm: key app ->> hsm: secret hsm ->> hsm: encrypt hsm ->> app: token (pseudomized data)
token blob (encrypted secret) app ->> base: token
token blob Note over base: token
token blob

--- title: Blob token decoding flow --- sequenceDiagram autonumber participant base as Database participant app as Application participant hsm as HSM Note over base: token (pseudomized data)
token blob (encrypted secret) Note over hsm: key app ->> base: search token blob base ->> app: token blob app ->> hsm: token blob hsm ->> hsm: decrypt hsm ->> app: secret

Attention
The tokens are generated randomly and, naturally, there is the possibility of conflicting tokens being generated. Therefore, the application will have to deal with the collisions by requesting the generation of the token again in order to guarantee the storage of unique tokens.

Functions

SVaultGenTokenResponse GenSVaultToken (int op, SVaultGenTokenInfo tokenInfo, int reserved) throws TacException
 It tokenizes a piece of data, generating a token blob and its respective token.
 
SVaultGenTokenResponse GenSVaultToken(SVaultGenTokenInfo tokenInfo ) throws TacException
 It tokenizes a piece of data, generating a token blob and its respective token.
 
SVaultGenTokenResponse GenSVaultDigitToken (byte CKS, byte maskFlags, String MK, String secret) throws TacException
 It tokenizes digits, generating a token blob and its respective token.
 
SVaultGenTokenResponse GenSVaultStringToken (byte maskFlags, String MK, String secret) throws TacException
 It tokenizes a UTF-8 string, generating a token blob and its respective token.
 
String GetSVaultTokenBlobData (int op, String MK, String mask, byte[] tokenBlob) throws TacException
 Retrieves the secret or token of tokenized data using a token blob.
 
String GetSVaultSecret (String MK, String mask, byte[] tokenBlob) throws TacException
 Retrieves the secret of tokenized data using a token blob.
 
String GetSVaultToken (String MK, String mask, byte[] tokenBlob) throws TacException
 Retrieves the token of tokenized data using a token blob.
 

Functions

GenSVaultToken() [1/2]

SVaultGenTokenResponse GenSVaultToken ( int op,
SVaultGenTokenInfo tokenInfo,
int reserved ) throws TacException

It tokenizes a piece of data, generating a token blob and its respective token.

Parameters
opType of operation. Must be 0.
tokenInfoDetails of the tokenization operation
reservedReserved for future use (must be 0).
Return
Exceptions
TacException

GenSVaultToken() [2/2]

SVaultGenTokenResponse GenSVaultToken ( SVaultGenTokenInfo tokenInfo) throws TacException

It tokenizes a piece of data, generating a token blob and its respective token.

Parameters
tokenInfoDetails of the tokenization operation
Return
Exceptions
TacException

GenSVaultDigitToken()

SVaultGenTokenResponse GenSVaultDigitToken ( byte CKS,
byte maskFlags,
String MK,
String secret ) throws TacException

It tokenizes digits, generating a token blob and its respective token.

Parameters
CKSDefines the type of checksum for the generation of tokens. It can be one of the options in the table below
Value Operation
TacNDJavaLib.D_SVAULT_CKS_NULL It doesn't generate a checksum. It only generates the token.
TacNDJavaLib.D_SVAULT_CKS_CPF Generates the 2 check digits in the CPF (Cadastro de Pessoas Físicas) standard on the token. The secret must contain only numbers and include the check digits.
TacNDJavaLib.D_SVAULT_CKS_CNPJ Generates the 2 verification digits in the CNPJ (Cadastro Nacional da Pessoa Jurídica) standard on the token. The secret must contain only numbers and include the check digits.
TacNDJavaLib.D_SVAULT_CKS_PAN Generates a PAN (Primary Account Number) with a valid check digit in the token. The secret must be complete and contain only numbers.
TacNDJavaLib.D_SVAULT_CKS_IEL Generates the 2 check digits in the pattern of the voter registration number on the token. The secret must contain only numbers and include the check digits.
maskFlagsGeneration options. It can be one of the options in the table below
Value Operation
0 It does not use masks for token generation or secret recovery.
TacNDJavaLib.D_SVAULT_F_MASK_TOKEN It uses masks to generate the token. The mask can be passed when retrieving the token or secret.
TacNDJavaLib.D_SVAULT_F_MASK_SECRET It uses masks to generate the secret. The mask can be passed when retrieving the token or secret.
MKName of the key used for data protection
secretThe secret must be a string with numbers only. It should have a minimum size of TacNDJavaLib.D_SVAULT_MIN_TL and a maximum size of TacNDJavaLib.D_SVAULT_MAX_TL.
Return
Exceptions
TacException

GenSVaultStringToken()

SVaultGenTokenResponse GenSVaultStringToken ( byte maskFlags,
String MK,
String secret ) throws TacException

It tokenizes a UTF-8 string, generating a token blob and its respective token.

Parameters
maskFlagsGeneration options. It can be one of the options in the table below
Value Operation
0 It does not use masks for token generation or secret recovery.
TacNDJavaLib.D_SVAULT_F_MASK_TOKEN It uses masks to generate the token. The mask can be passed when retrieving the token or secret.
TacNDJavaLib.D_SVAULT_F_MASK_SECRET It uses masks to generate the secret. The mask can be passed when retrieving the token or secret.
MKName of the key used for data protection
secretThe secret must be a UTF-8 string. It must have a minimum size of TacNDJavaLib.D_SVAULT_MIN_TL and a maximum size of TacNDJavaLib.D_SVAULT_MAX_TL.
Return
Exceptions
TacException

GetSVaultTokenBlobData()

String GetSVaultTokenBlobData ( int op,
String MK,
String mask,
byte[] tokenBlob ) throws TacException

Retrieves the secret or token of tokenized data using a token blob.

This API also allows the recovery of the masked secret or token.

Parameters
opType of operation. This can be one of the options below.
Value Meaning
TacNDJavaLib.D_SVAULT_GET_OP_SECRET Get the secret back.
TacNDJavaLib.D_SVAULT_GET_OP_TOKEN Recover the token.
MKName of the key used for data protection.
maskMask pattern that will be applied to the secret or token, according to the one defined when generating the token blob in GenSVaultToken(). Buffer with a minimum size of TacNDJavaLib.D_SVAULT_MIN_TL and a maximum of TacNDJavaLib.D_SVAULT_MIN_TL containing the mask. It can be an empty string "" so as not to use masking. The mask is a UTF-8 string containing the characters that will be applied to the data to mask it. Pass '\0' in the positions where you want the data to be displayed. See the notes for examples.
tokenBlobBuffer of size TacNDJavaLib.D_SVAULT_TOKEN_BLOB_LEN, generated by the GenSVaultToken() API, containing the blob token.
Return
Return as defined in op
Exceptions
TacException
Notes
Examples with a secret of value "123456789".
  1. With the "***" mask we get the following result: "***456789".
  2. With the mask "9999" we will have the following result: "999956789".
  3. With the mask "***\0\0\0***" we will have the following result: "***456***".

GetSVaultSecret()

String GetSVaultSecret ( String MK,
String mask,
byte[] tokenBlob ) throws TacException

Retrieves the secret of tokenized data using a token blob.

This API also allows the masked secret to be recovered.

Parameters
MKName of the key used for data protection.
maskMask pattern that will be applied to the secret or token, according to the one defined when generating the token blob in GenSVaultToken(). Buffer with a minimum size of TacNDJavaLib.D_SVAULT_MIN_TL and a maximum of TacNDJavaLib.D_SVAULT_MIN_TL containing the mask. It can be an empty string "" so as not to use masking. The mask is a UTF-8 string containing the characters that will be applied to the data to mask it. Pass '\0' in the positions where you want the data to be displayed. See the notes on GetSVaultTokenBlobData() for examples.
tokenBlobBuffer of size TacNDJavaLib.D_SVAULT_TOKEN_BLOB_LEN, generated by the GenSVaultToken() API, containing the blob token.
Return
secret
Exceptions
TacException

GetSVaultToken()

String GetSVaultToken ( String MK,
String mask,
byte[] tokenBlob ) throws TacException

Retrieves the token of tokenized data using a token blob.

This API also allows the masked token to be recovered.

Parameters
MKName of the key used for data protection.
maskMask pattern that will be applied to the secret or token, according to the one defined when generating the token blob in GenSVaultToken(). Buffer with a minimum size of TacNDJavaLib.D_SVAULT_MIN_TL and a maximum of TacNDJavaLib.D_SVAULT_MIN_TL containing the mask. It can be an empty string "" so as not to use masking. The mask is a UTF-8 string containing the characters that will be applied to the data to mask it. Pass '\0' in the positions where you want the data to be displayed. See the notes on GetSVaultTokenBlobData() for examples.
tokenBlobBuffer of size TacNDJavaLib.D_SVAULT_TOKEN_BLOB_LEN, generated by the GenSVaultToken() API, containing the blob token.
Return
token
Exceptions
TacException