Mirrors the naming convention of Derive DUKPT AES Key. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
6.4 KiB
AWS Payment Cryptography Recipe Coverage
Owner:
- Jacob Marks,
https://jacobmarks.com - Fork home:
https://github.com/J8k3/CyberChef
This guide maps AWS Payment Cryptography Data Plane operations to the current payment-facing CyberChef surface.
For validation posture, standards references, and release guardrails, see PAYMENT_VALIDATION_AUDIT.md.
Source baseline:
- AWS Payment Cryptography Data Plane API Reference: https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/Welcome.html
- AWS Data Plane actions list: https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_Operations.html
Coverage legend:
Direct: there is a payment-facing operation or straightforward recipe chain for the software-emulation shape of the AWS actionChained: there is no single operation, but the flow is cleanly achievable by chaining existing operationsEmulated: there is a dedicated operation, but the inline comments call out simplifications versus AWS or HSM custody semantics
Coverage Summary
| AWS operation | Coverage | Use |
|---|---|---|
EncryptData |
Direct |
Encrypt Payment Data |
DecryptData |
Direct |
Decrypt Payment Data |
ReEncryptData |
Direct |
Re-Encrypt Payment Data |
GenerateMac |
Direct |
Generate Payment MAC or Generate EMV MAC |
VerifyMac |
Direct |
Verify Payment MAC or Verify EMV MAC |
VerifyAuthRequestCryptogram |
Direct |
Verify EMV ARQC |
GenerateCardValidationData |
Direct |
Generate Card Validation Data |
VerifyCardValidationData |
Direct |
Verify Card Validation Data |
GeneratePinData |
Direct / Chained |
Generate Payment PIN Data, Generate IBM 3624 PIN Offset, Generate VISA PVV |
TranslatePinData |
Direct / Chained |
Translate Payment PIN Data or clear PIN block plus cipher chaining |
VerifyPinData |
Direct |
Verify Payment PIN Data, Verify IBM 3624 PIN, Verify VISA PVV |
TranslateKeyMaterial |
Chained |
Derive ECDH Key Material + wrap/unwrap + TR-31/TR-34 helpers |
GenerateAs2805KekValidation |
Emulated |
Generate AS2805 KEK Validation |
GenerateMacEmvPinChange |
Direct / Emulated |
Generate EMV MAC For PIN Change |
AWS EncryptData
Preferred operation:
Encrypt Payment Data
Good chain:
Derive DUKPT TDES Key->Triple DES EncryptDerive ECDH Key Material-> KDF if needed ->AES Encrypt
Notes:
- use the payment wrapper when you want payment terminology in one operation
- use the generic ciphers directly when you need fine-grained mode control
AWS DecryptData
Preferred operation:
Decrypt Payment Data
Good chain:
Derive DUKPT TDES Key->Triple DES DecryptDerive ECDH Key Material-> KDF if needed ->AES Decrypt
AWS ReEncryptData
Preferred operation:
Re-Encrypt Payment Data
Good chain:
Decrypt Payment Data->Encrypt Payment Data
AWS GenerateMac
Preferred operations:
Generate Payment MACGenerate EMV MAC
Current MAC coverage:
- HMAC SHA-224 / 256 / 384 / 512
- AES-CMAC
- TDES-CMAC
- ISO 9797-1 Algorithm 1
- ISO 9797-1 Algorithm 3
- AS2805-4.1
- DUKPT TDES-CMAC
- DUKPT ISO 9797-1 Algorithm 1
- DUKPT ISO 9797-1 Algorithm 3
- EMV retail-MAC style generation with a provided session key
Use Generate EMV MAC when:
- the AWS flow is EMV-session-key based rather than a static or DUKPT MAC key
AWS VerifyMac
Preferred operations:
Verify Payment MACVerify EMV MAC
Use the same method, padding rule, and key context as generation.
AWS VerifyAuthRequestCryptogram
Preferred operation:
Verify EMV ARQC
Good chain:
- preassemble the ARQC input block
- derive or supply the session key
- verify the ARQC
Important assumption:
- current ARQC / ARPC support is the implemented AES-CMAC profile
AWS GenerateCardValidationData
Preferred operation:
Generate Card Validation Data
Profiles:
- CVV / CVC
- CVV2 / CVC2
- iCVV
AWS VerifyCardValidationData
Preferred operation:
Verify Card Validation Data
AWS GeneratePinData
Preferred operations:
Generate Payment PIN DataGenerate IBM 3624 PIN OffsetGenerate VISA PVV
Use:
Generate Payment PIN Datafor clear ISO format0,1, and3PIN blocksGenerate IBM 3624 PIN Offsetfor issuer-host offset workflowsGenerate VISA PVVfor PVV workflows
Good chains:
- clear PIN ->
Generate Payment PIN Data->Encrypt Payment Data - clear PIN ->
Generate IBM 3624 PIN Offset - clear PIN ->
Generate VISA PVV
AWS TranslatePinData
Preferred operation:
Translate Payment PIN Data
Good chains:
Parse PIN Block-> inspect ->Translate PIN BlockDecrypt Payment Data->Translate Payment PIN Data->Encrypt Payment Data
Important assumption:
- the direct wrapper is for clear ISO PIN-block translation
- encrypted-key-custody semantics are still emulated by chaining
AWS VerifyPinData
Preferred operations:
Verify Payment PIN DataVerify IBM 3624 PINVerify VISA PVV
Use:
Verify Payment PIN Datafor clear ISO PIN blocksVerify IBM 3624 PINfor issuer offset checksVerify VISA PVVfor PVV checks
AWS TranslateKeyMaterial
Preferred chain:
Derive ECDH Key Material- KDF if needed
AES Key WraporAES Key UnwrapParse TR-31 key blockParse TR-34 B9 envelope
Important assumption:
- this is a recipe chain, not a single HSM-like rewrap boundary
AWS GenerateAs2805KekValidation
Preferred operation:
Generate AS2805 KEK Validation
Important assumption:
- this is an explicit software emulation helper
- the operation comments call out that it does not claim exact HSM-side AS2805 node-initialization behavior
AWS GenerateMacEmvPinChange
Preferred operation:
Generate EMV MAC For PIN Change
Good chain:
- build or obtain the encrypted target PIN block
- assemble the issuer-script APDU body
- generate the PIN-change MAC
Important assumption:
- the helper expects the new PIN block to already be encrypted
Common Chains
A) DUKPT Request MAC
Generate Payment MAC
Method:
DUKPT MAC Request CMAC- or
DUKPT ISO 9797-1 Algorithm 1 - or
DUKPT ISO 9797-1 Algorithm 3
B) EMV Issuer Script MAC
Generate EMV MACVerify EMV MAC
C) EMV PIN Change
Generate EMV MAC For PIN Change
D) Clear PIN To Encrypted PIN Data
Generate Payment PIN DataEncrypt Payment Data
E) ECDH-Based Key Translation Lab Flow
Derive ECDH Key MaterialAES Key UnwrapAES Key WrapParse TR-31 key block