
X-Wing on Cortex-M85: Architecture-Aware Integration and End-to-End Evaluation
An IACR ePrint paper presenting an architecture-aware implementation of the X-Wing hybrid KEM (ML-KEM-768 plus X25519) for the ARM Cortex-M85, using its M-profile Vector Extension NTT and a shared-inversion trick during encapsulation to cut cycle counts by 12 to 19 percent versus a baseline, at a cost of about 35KB extra flash. The authors found that their optimized variant introduced secret-sign-dependent operand-address selection, a side-channel weakness, and produced a corrected version whose fix is only partial since some key-varying timing signals persist and remain unexplained, so no constant-time guarantee is claimed.
What it is
An architecture-aware implementation of X-Wing (ML-KEM-768 + X25519 hybrid KEM) targeting the ARM Cortex-M85, authored by Do-Yun Park and Hwa-Jeong Seo (ePrint 2026/2352, approved 2026-10-07). The paper names two specific variants: B8, the integrated implementation combining eight optimization techniques, and B8S, a corrected version addressing a side-channel issue found in B8. Both are benchmarked against baseline A0 on an EK-RA8M1 board.
How it works
The implementation adapts the coefficient representation and storage order of an M-profile Vector Extension (MVE) NTT to the existing ML-KEM path, optimizes data-format conversions, and reworks X25519 arithmetic — all while preserving conformance to X-Wing draft-10. A specific trick: during encapsulation, the two X25519 field inversions are shared rather than computed separately.
Preconditions / Affected
Targets Cortex-M85 hardware specifically (evaluated on the EK-RA8M1 board), relying on MVE support. Results are hardware/compiler-specific and were validated via ten paired comparisons across five independent reflashes of one board — not an average across diverse hardware.
What to do
If evaluating this for an embedded hybrid-KEM deployment, note the measured minimum cycle reductions of B8 over A0: 18.61% for key generation, 18.89% for encapsulation, 12.25% for decapsulation reusing an expanded key, and 15.22% for decapsulation including seed expansion. The cost is 35,692 B of additional nonvolatile storage, of which 33,024 B is a fixed-base table — meaning the table dominates the flash overhead and could potentially be trimmed or shared if flash is constrained. For side-channel-sensitive deployments, use B8S, not B8, since B8 has a confirmed secret-sign-dependent operand-address selection flaw.
Caveats
Even in the corrected B8S variant, some key-varying timing signals persisted in testing, and their root cause was only partly resolved. The authors explicitly do not claim a whole-program constant-time guarantee for B8S — treat it as hardened, not timing-safe.
Organisations named here
- ML-KEM
Technologies named here
- Cortex-M85
- B8
- EK-RA8M1
- A0
- X-Wing
- B8S
- ML-KEM-768
- X25519
- MVE
Techniques named here
- Secret-sign-dependent operand-address selection
- Shared inversion during encapsulation
Related in Hardware & RF

HAETAE on a Diet: Less Stack, Less Time on Low-End Microcontrollers
geo-tp/ESP32-Bit-Pirate
