Divide-and-Pair: Faster subgroup membership testing for elliptic curves

Abstract

Subgroup membership testing (SMT) on an elliptic curve with non-trivial cofactor is essential to prevent small-subgroup attacks in cryptographic protocols. In the existing literature, there exist two non-trivial methods for SMT on elliptic curves with modest cofactor (typically a power of 2). Pornin’s approach tests membership by repeatedly dividing by prime divisors of the cofactor (mostly halving), finishing with Legendre symbols; Koshelev’s approach replaces all divisions with Tate pairings (possibly in the quadratic extension of the base field), but requires non-degeneracy conditions that are not always met. In this paper, we observe that both approaches sit at the extremes of a single division-pairing trade-off. The resulting method, Divide-and-Pair, is always at least as fast as either Pornin’s or Koshelev’s method and strictly faster in many cases. We instantiate Divide-and-Pair on five curves in widespread use, including Curve25519, Curve448, GC256A, FourQ and JubJub. Our Go implementation, built on the open-source gnark-crypto library, achieves significant speedups over state-of-the-art tests, namely of 2.4x on Curve25519, 1.6x on Curve448, 1.7x on GC256A, 8.2x on FourQ and 7.5x on JubJub.

Publication
IACR Transactions on Cryptographic Hardware and Embedded Systems 2027, Issue 1