Post-Quantum Cryptography for Smart Cards
Post-quantum cryptography on smart cards: NIST PQC standards, lattice-based algorithms, and migration strategies for card issuers.
Post-Quantum Cryptography for Smart Cards
The NIST Post-Quantum Cryptography standardisation process (completed August 2024) published three algorithms: ML-KEM (CRYSTALS-Kyber), ML-DSA (CRYSTALS-Dilithium), and SLH-DSA (SPHINCS+). A fourth — FN-DSA (FALCON) — is expected in a follow-on standard. Deploying these algorithms on smart cards is technically challenging: public keys and signatures are orders of magnitude larger than their classical counterparts, and lattice operations require more RAM than typical ECCECCCryptographyEfficient public-key cryptography using elliptic curves.Click to view →.
Classical vs. PQC Key Sizes
| Algorithm | Type | Public Key | Private Key | Signature / Ciphertext |
|---|---|---|---|---|
| RSARSACryptographyPublic-key algorithm for smart card signatures and key exchange.Click to view →-2048 | KEM/Sig | 256 B | 1,180 B | 256 B |
| P-256 (ECDSA) | Signature | 64 B | 32 B | 64 B |
| P-256 (ECDH) | KEM | 64 B | 32 B | 64 B |
| ML-KEM-768 | KEM | 1,184 B | 2,400 B | 1,088 B (ciphertext) |
| ML-DSA-65 | Signature | 1,952 B | 4,032 B | 3,293 B |
| SLH-DSA-SHAKE-128f | Signature | 32 B | 64 B | 17,088 B |
| FN-DSA-512 (FALCON) | Signature | 897 B | 1,281 B | 666 B |
SLH-DSA has an extremely small public key but a 17 KB signature — impractical for APDU exchange without chaining. ML-DSA and FN-DSA are the realistic candidates for smart card digital signatures.
Memory Constraints on Smart Cards
A typical smart card has: - RAM: 4–8 KB (stack + working buffers) — some high-end cards up to 32 KB - ROMROMHardwarePermanent mask-programmed OS memory on chip.Click to view →/Flash: 256 KB–1 MB (OS + applets) - EEPROM: 64–256 KB (personalisation data, keys, certs)
ML-KEM-768 key generation requires ~23 KB of RAM in a naive implementation. Optimised implementations (NTT-in-place, stack-only polynomial arithmetic) can reduce this to ~6–8 KB — within reach of high-end smart cards.
APDU Chaining for Large Objects
Standard T=1 APDUAPDUProtocolCommunication unit between card and reader.Click to view → data length is limited to 255 bytes (short form) or 65,535 bytes (extended length). ML-DSA-65 signatures at 3,293 bytes require either:
- Extended length APDUs (ISO 7816ISO 7816StandardPrimary standard for contact smart cards.Click to view →-4 §12.1): Le/Lc encoded as 3 bytes
Command: CLA INS P1 P2 00 [Lc_high] [Lc_low] [data...] 00 [Le_high] [Le_low] - Command chaining (CLA bit 4 = 1): split large data across multiple APDUs; last command has bit 4 = 0
Not all terminals support extended length APDUs — compatibility testing against payment terminal firmware versions is mandatory.
Hybrid Schemes
The NIST and BSI both recommend transitioning via hybrid key exchange — combining a classical algorithm with a PQC algorithm so that the scheme is secure if either remains unbroken:
Hybrid TLS 1.3 Key Exchange:
key_material = HKDF(ECDH_shared_secret || ML-KEM_shared_secret)
For smart card PIVPIVIdentityUS federal identity card standard.Click to view → and CACCACIdentityUS DoD identification smart card.Click to view → cards, the transition path is:
- Phase 1 (now): Dual-certificate slots — classical P-256 + ML-DSA-65 certs
- Phase 2 (2026–2028): ML-DSA-65 as primary, P-256 as legacy fallback
- Phase 3 (2030+): Classical algorithms deprecated
NIST SP 800-208 governs hash-based signature schemes (LMS/HSS, XMSS) for firmware signing — also relevant for smart card OS update authentication.
Implementation Status
| Platform | PQC Status |
|---|---|
| JavaCardJavaCardSoftwareJava applet platform for smart cards.Click to view → 3.1 | No native PQC API — external implementation via javacardx.security extension |
| MULTOSMULTOSSoftwareHigh-security multi-app card OS.Click to view → | ML-KEM experimental support (2024 MULTOS SDK) |
| Infineon SLE97 | ML-KEM-768 hardware acceleration announced |
| NXP SE051 | FN-DSA software implementation (reference) |
| STM32Trust | SLH-DSA in TEETEESecurityIsolated secure execution environment.Click to view → Trusted Application |
Security Considerations
- Side-channel leakage on NTT: Number Theoretic Transform in ML-KEM/DSA is vulnerable to timing attacks on constrained hardware — constant-time NTT is mandatory
- Fault injectionFault injectionSecurityPhysical attack inducing errors to bypass security.Click to view → on decapsulation: ML-KEM decapsulation performs a re-encryption check; a fault skipping this check can leak the decapsulation key
- Random number quality: ML-DSA requires 32 bytes of fresh randomness per signature — critical for smart card RNG quality (NIST SP 800-90A CTR_DRBG mandatory)
For the underlying hardware security model, see TEE vs Secure Element. For the certification framework around Common Criteria and Protection Profiles as they evolve for PQC, see EAL Comparator.
자주 묻는 질문
Our guides cover a range of experience levels. Getting Started guides introduce smart card fundamentals. Security guides address Common Criteria certification and key management. Programming guides target developers working with APDU commands, JavaCard applets, and GlobalPlatform card management.