Datos sensibles / Seguimiento a encriptación de datos
La encriptación asimétrica, también conocida como encriptación de llave pública, se utilizará para encriptar los datos de la Pista. El Agregador encriptará los datos de la pista usando la llave pública y pasará los datos encriptados de la pista al módulo de API de Tarjeta Presente de Fiserv.
Importante: Una llave, la llave pública, se utiliza para la encriptación y la otra, la llave privada, es para la desencriptación. El Agregador encriptará los datos y Fiserv desencriptará los datos.
La API Card Present utilizará JWE para el cifrado de datos confidenciales con los agregadores:
- Especificación IEFT: draft-ietf-jose-json-web-encryption-40
- JWE: La especificación JWE estandariza la forma de representar el contenido cifrado en una estructura de datos basada en JSON.
Certificados de encriptación
Fiserv creará y compartirá un certificado PEM JWE público para cada agregador incorporado. Cada certificado se identificará con un identificador de clave (KID).
El siguiente campo en el mensaje de solicitud se cifrará mediante clave pública. El módulo CP API recibirá estos campos como encriptados.
- Número de tarjeta
- Valor del código de la tarjeta
- Fecha de expiración (mes y año)
- Seguimiento de datos
Proceso de actualización de llaves
De acuerdo con los estándares Fiserv (Cryptographic Key Rotation Guide) la recomendación es rotar la clave, en función del volumen, cada 2 años.
Al menos 90 días antes de la fecha de vencimiento del certificado, Fiserv generará y compartirá con el Agregador una nueva clave pública y también enviará el nuevo KID correspondiente.
Durante una ventana de mantenimiento programada, Fiserv marcará el nuevo KID como el activo. El objetivo principal de utilizar un KID es optimizar el proceso de rotación de claves.
Se espera que Fiserv permanezca usando la clave anterior durante aproximadamente un mes, y luego comenzará a denegar transacciones con el KID anterior.
Ejemplo de encriptación
El agregador deberá cargar un JWE e ingresar los datos cifrados en:
"paymentCardProtected.encryptedData". Example:
{
"number": 4001100000001234,
"cvv": 1234,
"expiryDateMonth": 12,
"expiryDateYear": 2030,
"track1": "B4001100000001237^John/Doe ^26011110000123000",
"track2": "4001100000001237=2601111123400001230",
"track3": "4001100000001237=2601111123400001230"
}
{
"typ": "JWT",
"alg": "RS256",
"kid": "fc470962-bd6db-0992-156f-47798ffb1d2"
}
JWT Output:
To be filled on "paymentCardProtected.encryptedData"
Updated 5 months ago