Generic
General payment HSM integratio...

Futurex payment HSMs

24min

This section covers the following payment HSM topics:

  • The Excrypt Plus and Excrypt SSP Enterprise V.2
  • Supported Application Programming Interfaces (API)
  • Supported key blocks
  • Key storage methods
  • Key transport methods
  • TLS (Server-side Authentication), Mutual TLS (MTLS), Clear socket

The Excrypt Plus and Excrypt SSP Enterprise V.2

The Excrypt Plus and Excrypt SSP Enterprise v.2 hardware security modules (HSMs) handle cryptographic processing and key management for various payments-related use cases. Our HSMs protect data in transit, in use, and at rest through various physical and logical security measures. In addition, the HSM, validated under FIPS 140-2 Level 3 and PCI HSM standards, complies with all relevant regulatory requirements for payment transaction processing, including those set out by Accredited Standards Committee X9.

The Secure Cryptographic Device (SCD) contained within the Excrypt Plus and Excrypt SSP Enterprise v.2 HSMs handles all sensitive operations and supports common algorithms used in the payments industry such as 3DES, AES, RSA, ECC, as well as a range of key derivation and wrapping methods, message authentication algorithms, and more.

Most payment applications communicate with the Excrypt Plus or Excrypt SSP Enterprise v.2 by using one of our four payments APIs: Excrypt, Standard, International, and REST. The Excrypt Universal Interface, comprising the first three of these APIs, integrates directly with virtually all major payment application providers and enables easy replacement of legacy HSMs without application code changes.

Excrypt Plus or Excrypt SSP Enterprise v.2 use typically falls under one of two payment use cases covered in this document: Issuing or Acquiring.

Supported APIs

For the most part, the Excrypt, Standard, and RESTful (JSON) APIs are quite similar in their syntax. For all three, the HSM knows when the command starts and stops based on opening and closing delimiters, and then in between each field in the command are values of a specific format (binary, hex, or decimal) and length or length range.

International commands have no delimiters, and the HSM determines the value for each field based on the length of the field and the offset of the field. As an alternative method for International commands, the HSM can determine when a command has ended based on a timer. For example, 15 ms after it stops receiving data, the HSM assumes that the entire command has been sent.

If you need more information about the following command sets, see the User Guide for either the Excrypt SSP Enterprise v.2 or the Excrypt Plus.

Excrypt

The Excrypt Universal Interface (UI) is an API that runs on the Excrypt family of products.

The UI interfaces directly with any host transaction processing application, whether it is vendor-supplied or developed in-house, and it enables support for common domestic and international message formats for PIN translation, PIN verification, and key management.

The Excrypt UI is a unique offering among industry APIs because it can interpret a range of different command syntaxes used in host applications with the following benfits:

  • Extensible design
  • Simple command syntax
  • Wide-spread compatibility

Standard and International

Support for the Standard and International command sets on the Excrypt line of our HSMs enables you to get up and running quickly with minimal changes to existing code.

RESTful (JSON)

The Excrypt command set is based on tags and values (for example, AO is the tag and ECHO is the value). Command have beginning and ending delimiters for the entire command (open an close brackets, [ and ]) delimiters for each field (semicolon, ;). JSON works the same way. It has beginning and end delimiters, tags, tokens, and field delimiters. Except JSON is typically communicated over an HTTP call.

We added JSON support to our HSMs so you can interface with the HSM by using RESTful API operations, exposing the Excrypt command set in a RESTful JSON data structure over an HTTP operations. RESTful libraries are plentiful and make it easy for developers because they eliminate the need for socket management or TLS.

Supported key blocks

We support the following key blocks, described in this section:

  • Variant or modifier-based cryptograms
  • TR-31
  • AKB
  • International key block
  • Key table

Variant or modifier-based cryptograms

Because a cryptogram is simply an encrypted blob of data with no additional security mechanism other than the encryption itself, we recommend using TR-31 key blocks to manage keys.

TR-31

The ANSI X9.24-1-2017 specification describes TR-31 key blocks. The key block structure consists of three parts (Header, encrypted key data, and Message Authentication Code (MAC)):

Part

Description



Header

Is the least sensitive part of the key block. It defines the key block type, key usage, and key type.



Encrypted key data

Contains all the key sensitive data, including the actual key value and its size. It can optionally contain the ciphering mode used and data padding options.



MAC

Is an integrity check of the header and key data and ensures that the key block is unmodified.



Our HSMs use TR-31 key blocks for external key escrow and key transport. We recommend using TR-31 key blocks to manage keys instead of cryptograms because key blocks safeguard against unauthorized substitution, replacement, or misuse of cryptographic keys by embedding information about a key within the key and data itself. Cryptograms, however, do not provide this extra level of security.

AKB

A key that is secured by the AKB consists of three parts:

  1. An 8-byte header containing the attributes of the key (header)
  2. A 48-byte key field containing the Triple-DES cipher block chaining (CBC) mode ciphertext of the key (encrypted key field)
  3. A 16-byte field containing the Triple-DES message authentication code (MAC) computed over the header and the encrypted key field.

International key block

The International key block structure defines four blocks instead of the three blocks defined by the TR-31:

  • Header (16 bytes)
  • Optional header
  • Encrypted key data
  • Authenticator

Adding the optional extra header block provides more leeway in the management of the key.

Key table

You can also store keys the HSM. Generate the keys on the internal HSM, wrap them with a major key, and store them on the HSM internal storage table in one of the 25,000 available key slots. However, you can use these leys only with cryptographic operations on the internal HSM.

You must use this method of key storage if you use the PKCS #11 library, which does not support external key escrow. For this reason, this method is favored by those using the HSM in a General Purpose environment. Note that this method is not available through the International API, but you can use the Excrypt and Standard APIs, as well as managing the keys through Excrypt Manager and Web Portal interfaces.

Key storage methods

When considering different key storage methods, the following considerations come into play:

Consideration

Description



Do you store keys on or off the HSM?

For most payments-related use cases, you store keys off the HSM rather than inside the key table on the HSM. When you keep keys off the HSM, you encrypt them with a master key that is stored on the HSM.



In what format do you store encrypted keys?

Generally, you store encrypted keys in one of the following two formats:

  • Cryptogram
  • TR-31 key block

Key block formats other than TR-31 exist, but they are generally more proprietary. The American Nation Standards Institute (ANSI) developed TR-31 key blocks, so they have more widespread support than the alternatives.

Key transport methods

Various options are available for transporting keys from an external source to a HSM. The process you choose depends on the key source (that is, where you are transferring the keys from), the key type (symmetric versus asymmetric), and the number of keys that you need to move.

Exporting keys from third-party HSMs or key management servers

Typically, third-party (non-) HSMs and key management servers support exporting keys, including private keys, under a wrapping key (such as as a KEK). In some cases, you must put the HSM or key management server in a special export mode. Refer to the documentation specific to each third-party HSM or key management server for details.

Exporting keys from software sources

Exporting keys from software sources is often a more straightforward process than exporting from HSMs because you can transfer keys in PKCS #12 format. PKCS #12 defines an archive file format for storing many cryptography objects as a single file. Commonly, you can use it to bundle a private key with its X.509 certificate or to bundle all the members of a chain of trust.

If you have the clear private key and its corresponding certificate, you can also use the following Open SSL command to generate a PKCS #12 file:

Shell


Encrypted key import

Use the following methods to import encrypted keys into a HSM:

  • PKCS #12 import using Futurex Command Line Interface (FXCLI)
  • PKCS #8 Import using the RSTE Excrypt command
  • Using a Key Exchange Key (KEK)

The PKCS #12 and PKCS #8 import options apply to asymmetric keys, and using a KEK for key import applies to symmetric keys.

Clear Key Import

Use the following methods to import clear keys into our HSMs.

  • Full clear key import using Excrypt Manager: If you have the full clear key value, you can import it into the HSM by logging in under dual control through Excrypt Manager and then loading the key by using either the Symmetric or Asymmetric Key Loading Wizard.
  • Component import with either Excrypt Manager or FXCLI: You can load clear keys as components. In this scenario, more than one person possesses the clear-key values for different parts of a key. Component holders must log in to the HSM under dual control (by using either Excrypt Manager or FXCLI) and load each of the key components. Then, the system XORs the key parts together and stores them on the HSM. This option is most common in the payment space.
  • Convert to KEK for batch import: If you need to import a large number of keys, making logging in under dual control and loading every individual key unfeasible, you can encrypt all the keys under a single KEK and then batch import them into the HSM by using the TWKS Excrypt command.

TLS (server-side authentication), mutual TLS (MTLS), and clear socket

We recommend mutually authenticating to the HSM by using client certificates, but we do support server-side authentication. To enable server-side authentication, select the Allow Anonymous option for the Excrypt Port.

In a non-production setting, you can use clear socket for connections to the Excrypt HSM. However, do not use this setting in production because all traffic is unencrypted and in the clear.