First of all, for the curve p=79, the ratio is 100.
You're right — I used threshold k <= 33 instead of k <= 34 (your function is called "in_first
34" after all). My off-by-one error.
That said, 100% accuracy on a 67-point curve where you hand-crafted the decision tree by inspecting all cases is not impressive — it's enumeration disguised as an algorithm.
Okay, I'll issue a challenge. Since it's possible to do this for toy curves, try creating a 100% successful example for any curve greater than 79 (where a=0 and b=7) and where the order is prime?
That's not how burden of proof works.
You claimed to have broken ECC.
You need to demonstrate it scales.
But for reference: the next curve y² = x³ + 7 with prime order is p=127, n=127, G=(1,32). Go ahead and show us the oracle for that one.
The reason your p=79 oracle works is because with only 66 non-identity points, you can manually construct a decision tree that partitions them correctly. For p=127 you'd need a more complex tree. For secp256k1 (n ≈ 2²⁵⁶), it's computationally impossible to find such a tree — and there's no theoretical reason one should exist.
What
would be convincing:
- Show the
algorithm that generates these decision trees
- Demonstrate it on p=127, p=521, p=1279
- Explain the mathematical basis for why Legendre symbols would correlate with scalar position
Your p=79 result is curve-fitting, not cryptanalysis.
The claim that "there is no adaptive method for SECP256K1" is just an assumption. It's assumed to be so because no one has done it to date.
I asked about a new example curve before you did. I'll wait a while.
If no one can do it, I'll write it myself. First, let's see if anyone can do it, even if it's a toy curve.
Thanks for the comments. Yes, the curve I gave as an example is small and a toy curve I already stated that upfront. But I carefully read the criticisms, and there seems to be a misunderstanding: this attack is not in the same category as classical ECDLP solvers like Pollard Rho, baby-step giant-step, or known index calculus variants.
The oracle here is a decision tree derived from the quadratic residuosity properties (Legendre/Jacobi symbol) of the coordinates over the field. In small curves, this tree can be found via brute force because the group is small. But why should it be impossible in large curves?
Although secp256k1 itself was chosen with “rigid” design criteria, the x and y coordinates are still over a finite field and connected by a simple equation in Weierstrass form: y² = x³ + 7. The constants in this equation (a=0, b=7) and the special form of the prime p (defined as -2³²-977) can actually create hidden patterns in the quadratic characteristics.
Recall: works like Smart (1999) and Nguyen-Shparlinski (2000) showed that ECDLP can be weakened with auxiliary inputs. My observation is similar if we can find an algebraic predicate in the point coordinates that correlates with the MSB (which we did in the toy curve), it behaves like a variant of the hidden number problem and reduces the effective search space logarithmically.
I haven’t yet derived the full tree on the large curve (computational cost is high), but preliminary analyses indicate that some linear combinations (e.g., x + cy + d) show statistical bias in residuosity. This bias provides 100% separation in the small curve and could still be 50%+ε in the large curve which is enough (especially if combined with lattice reduction).
More details coming soon. Be patient.
I'm looking forward to seeing if someone can produce a similarly simple solution for a curve over p=127. If no one manages to do it within a week, I'll write it up myself.
I'm writing this as a collective response for everyone who has been asking me privately about the calculation in Puzzle 130.
https://prnt.sc/6bahidvXg0H6The half of an odd number is equal to the half of (one less than it).
The key in the image is odd, but its half is even.
The notes written in the image will help you understand the logic of the calculation.
The true half of odd numbers lies “in the second half of the curve.” This is what tells us, at every step, whether the number we currently have is even or odd. And this calculation technique itself becomes the formula that reveals the final result.
[moderator's note: consecutive posts merged]