SDA vs DDA vs CDA: EMV Offline Data Authentication Explained
When you insert a chip card at a terminal with no internet connection, how does the terminal know the card is genuine? The answer lies in three cryptographic methods baked into every EMV chip β and understanding the differences between them is essential for anyone building or debugging payment systems.
What is Offline Data Authentication?
Offline Data Authentication (ODA) is the process by which an EMV terminal verifies that the data on a chip card is authentic β without contacting the issuer’s host. The terminal uses public key cryptography to validate that critical card data (PAN, expiry, usage restrictions) hasn’t been tampered with since the issuer personalized the chip.
ODA matters because:
- Not every terminal is online β vending machines, transit gates, in-flight POS, and markets in rural areas may lack connectivity
- Speed β offline authentication takes milliseconds vs. seconds for an online authorization
- Liability β the strength of the ODA method directly affects chargeback liability under EMV chip liability shift rules
There are three ODA methods defined by EMVCo, each progressively stronger:
| Method | Full Name | Security Level | Card Cloning Protection |
|---|---|---|---|
| SDA | Static Data Authentication | Basic | None |
| DDA | Dynamic Data Authentication | Strong | Yes |
| CDA | Combined DDA/Application Cryptogram Generation | Strongest | Yes + transaction binding |
See it in action: Decode the AIP tag (
82) in our EMV Tag Inspector to see which ODA methods a card supports.
Also Known As…
Offline data authentication terminology varies across specifications and vendor documentation:
| Term | Meaning |
|---|---|
| ODA | Offline Data Authentication β the umbrella term |
| SDA | Static Data Authentication |
| DDA | Dynamic Data Authentication |
| CDA | Combined DDA / Application Cryptogram Generation |
| fDDA | Fast DDA β contactless-optimized DDA (used by Visa payWave) |
| Offline CAM | Offline Card Authentication Method β alternative industry term |
| RSA ODA | ODA using RSA public key cryptography (current standard) |
| ECC ODA | ODA using Elliptic Curve Cryptography (future EMVCo direction) |
The PKI Foundation: How EMV Certificates Work
Before diving into SDA, DDA, and CDA, you need to understand the certificate chain that makes them all possible. EMV uses a three-level Public Key Infrastructure (PKI):
Level 1: Certificate Authority (CA)
βββββββββββββββββββββββββββββββββββ
β EMVCo / Payment Brand CA β
β CA Public Key stored in terminalβ
β (loaded during terminal config) β
ββββββββββββββ¬βββββββββββββββββββββ
β signs
βΌ
Level 2: Issuer
βββββββββββββββββββββββββββββββββββ
β Issuer Public Key Certificate β
β Tag 90 (stored on card chip) β
β Signed by CA Private Key β
ββββββββββββββ¬βββββββββββββββββββββ
β signs
βΌ
Level 3: ICC (Card)
βββββββββββββββββββββββββββββββββββ
β ICC Public Key Certificate β
β Tag 9F46 (stored on card chip) β
β Signed by Issuer Private Key β
β (DDA and CDA only) β
βββββββββββββββββββββββββββββββββββ
The terminal verifies this chain from top to bottom:
- Terminal has the CA Public Key (pre-loaded by the payment brand)
- Terminal recovers the Issuer Public Key from the Issuer Certificate (tag
90) using the CA Public Key - Terminal recovers the ICC Public Key from the ICC Certificate (tag
9F46) using the Issuer Public Key β but only for DDA and CDA
This chain ensures that every key traces back to a trusted root β the payment brand’s Certificate Authority.
Key EMV Tags in the PKI Chain
| Tag | Name | Role in ODA |
|---|---|---|
| 8F | CA Public Key Index | Identifies which CA key to use |
| 90 | Issuer Public Key Certificate | Contains Issuer PK signed by CA |
| 92 | Issuer Public Key Remainder | Overflow bytes for large Issuer keys |
| 9F32 | Issuer Public Key Exponent | RSA exponent (usually 03 or 010001) |
| 9F46 | ICC Public Key Certificate | Contains ICC PK signed by Issuer (DDA/CDA) |
| 9F48 | ICC Public Key Remainder | Overflow bytes for large ICC keys |
| 9F47 | ICC Public Key Exponent | RSA exponent for ICC key |
| 93 | Signed Static Application Data | SDA signature over card data |
| 9F4B | Signed Dynamic Application Data | DDA/CDA signature (dynamic) |
Look up any tag: Search our Reference Database for full EMV tag descriptions, or paste raw TLV data into the EMV Tag Inspector.
How SDA Works
Static Data Authentication is the simplest and oldest ODA method. The issuer signs a fixed block of card data during personalization, and the terminal verifies that signature at the point of sale.
SDA Step-by-Step
Card Personalization (at issuer):
ββββββββββββββββββββββββββββββββββββββββ
β 1. Issuer selects critical data β
β (PAN, expiry, restrictions, etc.) β
β 2. Issuer hashes the data β
β 3. Issuer signs hash with β
β Issuer Private Key β
β 4. Signature stored as tag 93 β
β (Signed Static Application Data) β
ββββββββββββββββββββββββββββββββββββββββ
Transaction (at terminal):
ββββββββββββββββββββββββββββββββββββββββ
β 1. Terminal reads tag 8F β
β (CA Public Key Index) β
β 2. Terminal recovers Issuer PK β
β from tag 90 using CA PK β
β 3. Terminal verifies tag 93 β
β using recovered Issuer PK β
β 4. If signature valid β SDA passed β
β If invalid β set TVR bit 7 byte 1 β
ββββββββββββββββββββββββββββββββββββββββ
What SDA Proves
| Verification | Result |
|---|---|
| Card data is genuine | Yes β signed by issuer |
| Data hasn’t been modified | Yes β signature covers critical data |
| Card itself is genuine | No β signature is static, can be copied |
| Transaction is unique | No β same signature every time |
The Fatal Flaw: Cloning
Because the signature in tag 93 is static β identical for every transaction β an attacker who intercepts the card’s data can create a clone that produces the exact same signature. The terminal cannot distinguish the original card from the clone.
Original Card: Tag 93 = A1B2C3D4... (always the same)
Cloned Card: Tag 93 = A1B2C3D4... (copied verbatim)
β
Terminal sees no difference
This is why SDA cards are effectively extinct in developed markets. They were common in early EMV deployments (2000-2010) but have been replaced by DDA and CDA cards.
SDA in the Terminal Verification Results
When SDA fails, the terminal sets byte 1, bit 7 of the TVR (tag 95):
| TVR Byte 1 | Bit | Meaning |
|---|---|---|
| Bit 8 | 0x80 | Offline data authentication not performed |
| Bit 7 | 0x40 | SDA failed |
| Bit 6 | 0x20 | ICC data missing |
| Bit 5 | 0x10 | Card on terminal exception file |
| Bit 4 | 0x08 | DDA failed |
| Bit 3 | 0x04 | CDA failed |
Decode TVR values in our EMV Tag Inspector β paste the 5-byte TVR (tag
95) to see which checks passed or failed.
How DDA Works
Dynamic Data Authentication solves SDA’s cloning problem by requiring the card to perform a real-time RSA signature during each transaction. The card has its own private key that never leaves the chip.
DDA Step-by-Step
Card Personalization (at issuer):
ββββββββββββββββββββββββββββββββββββββββ
β 1. Issuer generates RSA key pair β
β for the card (ICC keys) β
β 2. Issuer signs ICC Public Key with β
β Issuer Private Key β
β 3. ICC Public Key Certificate stored β
β as tag 9F46 β
β 4. ICC Private Key stored in secure β
β element of chip (never exported) β
ββββββββββββββββββββββββββββββββββββββββ
Transaction (at terminal):
ββββββββββββββββββββββββββββββββββββββββ
β 1. Terminal recovers Issuer PK β
β from tag 90 using CA PK β
β 2. Terminal recovers ICC PK β
β from tag 9F46 using Issuer PK β
β 3. Terminal sends INTERNAL AUTHENTICATEβ
β command with unpredictable number β
β (random data from terminal) β
β 4. Card signs the data using ICC β
β Private Key (on-chip RSA) β
β 5. Card returns Signed Dynamic β
β Application Data (tag 9F4B) β
β 6. Terminal verifies signature using β
β ICC Public Key β
β 7. If valid β DDA passed β
β If invalid β set TVR bit 4 byte 1 β
ββββββββββββββββββββββββββββββββββββββββ
What DDA Proves
| Verification | Result |
|---|---|
| Card data is genuine | Yes β certificate chain traces to CA |
| Data hasn’t been modified | Yes β signed data is verified |
| Card itself is genuine | Yes β only the real chip has the private key |
| Transaction is unique | Yes β unpredictable number makes each signature different |
Why Cloning Fails Against DDA
The critical difference is the ICC Private Key. This key is generated inside the chip’s secure element and cannot be extracted β even with physical access to the chip. A cloned card would need to sign data with a private key it doesn’t have:
Original Card: INTERNAL AUTHENTICATE β signs with private key β unique signature
Cloned Card: INTERNAL AUTHENTICATE β ??? no private key β FAILS
DDA Performance Consideration
The on-chip RSA operation takes 100-300 milliseconds depending on the key size and chip hardware. This is acceptable for contact transactions but adds noticeable latency for contactless tap-and-go payments, which led to the development of fDDA (fast DDA) for contactless.
| Key Size | On-Chip Signing Time | Use Case |
|---|---|---|
| RSA-1024 | ~100 ms | Legacy contact cards |
| RSA-1408 | ~200 ms | Current contact cards |
| RSA-1984 | ~300 ms | High-security cards |
| ECC P-256 | ~50 ms | Future specification |
fDDA: Fast DDA for Contactless
Visa’s payWave specification introduced fDDA (also called qVSDC mode) to speed up DDA for contactless transactions. The card pre-computes part of the signature and combines it with transaction-specific data on the fly:
| Feature | Standard DDA | fDDA (Contactless) |
|---|---|---|
| INTERNAL AUTHENTICATE | Separate command | Combined with GPO response |
| Terminal round-trips | 2+ (GPO + INTERNAL AUTH) | 1 (GPO only) |
| Total latency | 500+ ms | ~300 ms |
| Specification | EMVCo Book 3 | Visa payWave (Book C-3) |
How CDA Works
Combined DDA/Application Cryptogram Generation (CDA) is the strongest ODA method. It combines DDA’s dynamic signing with the application cryptogram (ARQC/TC/AAC) into a single operation, binding the authentication to the specific transaction.
CDA Step-by-Step
Card Personalization:
Same as DDA β ICC key pair + certificates
Transaction (at terminal):
ββββββββββββββββββββββββββββββββββββββββ
β 1. Terminal recovers Issuer PK β
β from tag 90 using CA PK β
β 2. Terminal recovers ICC PK β
β from tag 9F46 using Issuer PK β
β 3. Terminal sends GENERATE AC commandβ
β (not INTERNAL AUTHENTICATE) β
β 4. Card generates cryptogram (ARQC, β
β TC, or AAC) using symmetric key β
β 5. Card signs the cryptogram + data β
β using ICC Private Key (RSA) β
β 6. Card returns Signed Dynamic β
β Application Data (tag 9F4B) β
β containing both the signature β
β AND the cryptogram β
β 7. Terminal verifies RSA signature β
β and extracts cryptogram β
β 8. If valid β CDA passed β
β If invalid β set TVR bit 3 byte 1 β
ββββββββββββββββββββββββββββββββββββββββ
What CDA Proves
| Verification | Result |
|---|---|
| Card data is genuine | Yes β certificate chain traces to CA |
| Data hasn’t been modified | Yes β signed data is verified |
| Card itself is genuine | Yes β only real chip has private key |
| Transaction is unique | Yes β unpredictable number in signature |
| Cryptogram is authentic | Yes β cryptogram bound to signature |
| No wedge attack possible | Yes β authentication and cryptogram are atomic |
The Wedge Attack: Why CDA Matters
CDA’s critical advantage over DDA is protection against wedge attacks (also called man-in-the-middle or relay attacks). In a wedge attack against DDA:
DDA Vulnerability (wedge attack):
ββββββββββββ ββββββββββββ ββββββββββββ
β Terminal β βββΈ β Attacker β βββΈ β Real Cardβ
β β β (wedge) β β β
β INTERNAL β β Pass β β Signs β
β AUTH β β through β β data β
β β βββ β β βββ β β
β DDA OK! β β Modify β β β
β β β GENERATE β β β
β GENERATE β βββΈ β AC β βββΈ β β
β AC β β (change β β Generate β
β β β amount!) β β TC β
β β βββ β β βββ β β
β TC OK! β β β β β
ββββββββββββ ββββββββββββ ββββββββββββ
β
DDA and cryptogram are separate operations.
Attacker can pass DDA honestly, then
modify the GENERATE AC command data.
CDA Defense:
ββββββββββββ ββββββββββββ ββββββββββββ
β Terminal β βββΈ β Attacker β βββΈ β Real Cardβ
β β β (wedge) β β β
β GENERATE β β Cannot β β Signs β
β AC β β modify β β cryptogramβ
β (CDA) β β without β β + data β
β β βββ β breaking β βββ β together β
β Verify β β signatureβ β β
β signature β β β β β
β + crypto β β β β β
β ATOMIC! β β β β β
ββββββββββββ ββββββββββββ ββββββββββββ
β
Cryptogram is INSIDE the signed data.
Any modification breaks the signature.
Side-by-Side Comparison
This table summarizes the key differences across all three ODA methods:
| Feature | SDA | DDA | CDA |
|---|---|---|---|
| Signed by | Issuer (static) | ICC chip (dynamic) | ICC chip (dynamic) |
| Signature type | Fixed at personalization | Generated per transaction | Generated per transaction |
| Certificate chain | CA β Issuer | CA β Issuer β ICC | CA β Issuer β ICC |
| Prevents cloning | No | Yes | Yes |
| Prevents wedge attacks | No | No | Yes |
| APDU command | None (data on card) | INTERNAL AUTHENTICATE | GENERATE AC |
| Cryptogram binding | None | None | Yes |
| On-chip crypto | None required | RSA signature | RSA signature |
| Chip cost | Lowest | Medium | Medium |
| Transaction speed | Fastest | Slower (+100-300ms) | Similar to DDA |
| AIP bits (tag 82) | Bit 7 byte 1 | Bit 6 byte 1 | Bit 5 byte 1 |
| TVR failure bit | Byte 1 bit 7 | Byte 1 bit 4 | Byte 1 bit 3 |
| Industry status | Obsolete | Active | Preferred |
Application Interchange Profile (AIP) - Tag 82
The AIP (tag 82) tells the terminal which ODA methods the card supports. This is a 2-byte value where specific bits indicate SDA, DDA, and CDA capability:
| AIP Byte 1 | Bit | Hex Mask | Meaning |
|---|---|---|---|
| Bit 7 | 7 | 0x40 | SDA supported |
| Bit 6 | 6 | 0x20 | DDA supported |
| Bit 5 | 5 | 0x10 | Cardholder verification supported |
| Bit 4 | 4 | 0x08 | Terminal risk management to be performed |
| Bit 1 | 1 | 0x01 | CDA supported |
Reading the AIP
Here’s how to interpret common AIP values:
| AIP Value | Binary (Byte 1) | Meaning |
|---|---|---|
1980 | 0001 1001 | CDA + terminal risk management + cardholder verification |
3980 | 0011 1001 | DDA + CDA + terminal risk management + cardholder verification |
5980 | 0101 1001 | SDA + CDA + terminal risk management + cardholder verification |
7980 | 0111 1001 | SDA + DDA + CDA (supports all three methods) |
4000 | 0100 0000 | SDA only |
2000 | 0010 0000 | DDA only |
Try it yourself: Paste a complete Field 55 into our EMV Tag Inspector to see the AIP decoded with bit-level descriptions.
ODA in the Transaction Flow
Here’s where ODA fits in the overall EMV transaction flow:
Card Insertion / Tap
β
βΌ
βββββββββββββββββββββββ
β SELECT Application β β AID selection
ββββββββββββ¬βββββββββββ
βΌ
βββββββββββββββββββββββ
β GET PROCESSING OPTS β β Returns AIP (tag 82) + AFL (tag 94)
ββββββββββββ¬βββββββββββ
βΌ
βββββββββββββββββββββββ
β READ RECORDS β β Read SDA/DDA/CDA data from card
ββββββββββββ¬βββββββββββ
βΌ
βββββββββββββββββββββββ
β OFFLINE DATA AUTH β β SDA, DDA, or CDA performed HERE
β (ODA) β
ββββββββββββ€βββββββββββ
βΌ
βββββββββββββββββββββββ
β Processing β β CVM, risk management
β Restrictions β
ββββββββββββ¬βββββββββββ
βΌ
βββββββββββββββββββββββ
β GENERATE AC β β Cryptogram (ARQC/TC/AAC)
β (CDA: combined) β For CDA: ODA happens here instead
ββββββββββββ¬βββββββββββ
βΌ
Online / Offline Decision
For SDA and DDA, ODA happens as a separate step before GENERATE AC. For CDA, authentication is combined with the GENERATE AC command β the card produces the cryptogram and the RSA signature in a single atomic operation.
What ODA Does NOT Protect Against
Understanding the limitations prevents overconfidence:
| Threat | ODA Protection |
|---|---|
| Card cloning (magnetic stripe) | No β ODA only applies to chip transactions |
| Card-not-present (CNP) fraud | No β ODA requires physical chip interaction |
| Lost/stolen card (genuine chip used) | No β ODA proves the card is real, not the cardholder |
| PIN capture / shoulder surfing | No β ODA doesn’t cover cardholder verification |
| Issuer-side data breach | No β ODA protects terminal-to-card, not host-side |
| Replay of online-authorized transactions | No β ODA is offline only; ARQC handles online auth |
ODA answers one question: “Is this chip card genuine and unmodified?” It does not replace online authorization, cardholder verification, or issuer risk management.
Card Brand ODA Requirements
Each payment brand sets minimum ODA requirements for cards and terminals on their network:
| Brand | Minimum Card ODA | Minimum Terminal Support | Notes |
|---|---|---|---|
| Visa | DDA or CDA | DDA and CDA | SDA-only cards deprecated; fDDA for contactless |
| Mastercard | CDA preferred | CDA | M/Chip Advance requires CDA |
| American Express | DDA | DDA | AEIPS standard |
| Discover | DDA | DDA | D-PAS standard |
| JCB | DDA or CDA | DDA | J/Speedy for contactless |
| UnionPay | DDA or CDA | DDA + CDA | PBOC 3.0 standard |
Quick Reference Table
| Concept | Description |
|---|---|
| ODA | Offline Data Authentication β terminal verifies card genuineness without going online |
| SDA | Static Data Authentication β fixed signature, vulnerable to cloning |
| DDA | Dynamic Data Authentication β per-transaction signature, clone-resistant |
| CDA | Combined DDA + Cryptogram β atomic binding prevents wedge attacks |
| fDDA | Fast DDA β Visa’s contactless-optimized DDA variant |
| AIP | Application Interchange Profile (tag 82) β declares ODA capabilities |
| TVR | Terminal Verification Results (tag 95) β records ODA pass/fail |
| Tag 90 | Issuer Public Key Certificate β signed by CA |
| Tag 93 | Signed Static Application Data β the SDA signature |
| Tag 9F46 | ICC Public Key Certificate β signed by Issuer (DDA/CDA) |
| Tag 9F4B | Signed Dynamic Application Data β per-transaction signature |
| Tag 8F | CA Public Key Index β identifies which root key to use |
| INTERNAL AUTHENTICATE | APDU command that triggers DDA |
| GENERATE AC | APDU command that triggers CDA (combined with cryptogram) |
Next Steps
Now that you understand SDA, DDA, and CDA:
- Decode chip data with the EMV Tag Inspector β look for tags
82,90,93,9F46, and9F4B - Look up ODA tags in the Reference Database for complete tag definitions
- Understand the cryptogram in our EMV Field 55 Guide β CDA binds ODA to the ARQC/TC
- Learn about HSMs in our HSM Basics Guide β the devices that manage CA and Issuer key pairs
- Explore 3DES vs AES in our 3DES vs AES in Payments β the encryption that protects cryptogram keys
- Review ARQC generation with the ARQC Calculator β the online counterpart to offline authentication
- Understand entry modes in our POS Entry Mode Guide β entry modes
05and07indicate chip/contactless ODA
This post is part of the ISO 8583 Mastery series. Follow along as we explore payment messaging in depth.
Related Posts
π¬ Discussion
Have a question or feedback? Leave a comment below β powered by GitHub Discussions.
What is the difference between SDA, DDA, and CDA?
SDA (Static Data Authentication) authenticates static card data. DDA (Dynamic Data Authentication) prevents card cloning by having the chip generate a dynamic signature. CDA (Combined DDA/Application Cryptogram Generation) adds security by combining the dynamic signature with the transaction cryptogram.
Why is SDA being phased out?
SDA relies on static data signed by the issuer. It proves the data wasn’t altered but cannot prove the chip itself wasn’t cloned (skimming). DDA and CDA are required to prevent modern cloning attacks.
When is offline authentication used?
Offline authentication is crucial for transit systems (like the London Underground), toll booths, and regions with unreliable telecom networks where waiting for online authorization is impossible.