The Challenge
Your white-box cipher implementation is part of a payment application, designed to protect cryptographic keys in an environment where attackers control the host. You've fortified it against leakage attacks, but what if attackers do more than just observe? What if they corrupt your lookup tables?
Researchers found that active adversaries can manipulate key-embedded lookup table entries without disrupting control flow. Unlike passive attacks that require bandwidth and face firewall restrictions, these fault injections are local. The attacker maintains your code's execution path but corrupts specific table values, weakening the implementation until faulty ciphertexts are easy to decrypt.
This vulnerability is real. When researchers tested three production-grade white-box implementations, two Feistel-based designs failed, while an SPN-based cipher remained secure.
The Environment and Constraints
White-box cryptography assumes the worst: an adversary with full visibility into your implementation and control of the execution environment. Traditionally, research focused on passive adversaries extracting secrets through side channels. You'd defend by obfuscating key material across lookup tables, making extraction computationally difficult.
However, this model overlooked active adversaries. A data-only tampering adversary can:
- Corrupt a limited number of lookup table entries
- Choose which positions to corrupt and what values to inject
- Preserve control flow to avoid detection
- Operate without network transmission, bypassing exfiltration monitoring
The research team formalized this adversary through a new security notion and tested it against three white-box implementations: WEM (an SPN-based design), and SPACE and Galaxy (both Feistel-based). Each embedded keys in lookup tables, a standard approach in payment applications.
The key constraint: the adversary could corrupt up to one-fourth of table entries, a realistic capability for malware with write access to application memory.
The Approach Taken
Researchers analyzed how structural differences between Feistel and SPN architectures affect resistance to fault injection. Feistel networks process data through alternating rounds, where one half of the block remains unchanged while the other half transforms. SPN (Substitution-Permutation Network) designs transform the entire block in each round through substitution and permutation layers.
For WEM, the SPN structure meant faults spread through the entire state in each round. An attacker corrupting table entries would see their injected faults diffuse across computations, making it hard to control the relationship between correct and faulty outputs.
For SPACE and Galaxy, the Feistel structure created a different dynamic. The unchanged half of each round meant faults propagated predictably. An adversary could corrupt specific table entries, observe the structured differences between correct and faulty ciphertexts, and use those patterns to recover the message.
The team tested each implementation under various adversarial models, varying the attacker's control over fault positions and values. They measured message recovery probability, the likelihood an adversary could decrypt a faulty ciphertext.
Results and Metrics
WEM maintained high security under all adversarial models tested. Even when attackers could choose fault positions and values while corrupting one-fourth of table entries, the SPN structure prevented effective exploitation.
SPACE and Galaxy failed catastrophically under the same conditions. Both Feistel-based ciphers allowed message recovery with a probability of 2^-8. This isn't theoretical, it's a practical break. An adversary running 256 attempts would likely decrypt a message.
The structural disparity was clear: Feistel-based white-box ciphers are significantly more vulnerable to fault injection than SPN-based designs.
The researchers proposed a software-based fault detection mechanism. By embedding redundant computations and consistency checks within the white-box implementation, they could detect injected faults with high probability before corrupted outputs left the cryptographic boundary.
What They Would Do Differently
The research highlighted a gap in white-box security evaluation. Current testing focuses almost exclusively on passive leakage resistance. You run differential computation analysis, measure side-channel leakage, and verify that key extraction requires infeasible computation time.
But you don't test what happens when an adversary corrupts your tables.
If the team were designing these implementations today, they'd:
- Evaluate fault injection resistance during architecture selection, not after deployment
- Prefer SPN-based designs for environments where active adversaries are realistic threats
- Integrate fault detection into the white-box construction itself
- Test under adversarial models that assume local write access to implementation memory
The critical insight: white-box security isn't just about hiding keys. It's about maintaining cryptographic strength when adversaries can manipulate your implementation's internal state.
Takeaways for Your Team
If you're deploying white-box cryptography in payment applications, this research changes your threat model:
Assume active adversaries. Malware with write access to your application's memory can do more than leak, it can corrupt. Your white-box implementation must resist both.
Architecture matters for fault resistance. If you're choosing between Feistel and SPN designs, understand that they have fundamentally different vulnerability profiles under fault injection. This isn't a minor implementation detail; it's a structural security property.
Test beyond leakage. Add fault injection scenarios to your white-box security evaluation. Simulate adversaries who can corrupt table entries and measure whether your implementation degrades gracefully or collapses.
Build detection into the implementation. Software-based fault detection can catch corrupted computations before they produce exploitable outputs. This isn't perfect protection, but it raises the bar for attackers who need repeatable, undetected faults.
Validate your white-box vendor's testing methodology. Ask what adversarial models they test against. If they only evaluate passive leakage, you're not getting the full security picture.
The payment security community spent years hardening white-box implementations against extraction attacks. Now we know that's not enough. Your cryptography needs to survive adversaries who don't just watch, they tamper.



