Sunday, July 26, 2026

Structural anomalies of base points in secpXXXk1 elliptic curves: Bitcoin cryptanalysis and practical modeling in Google Colab

 Crypto Deep Tech

Structural anomalies of base points in secpXXXk1 elliptic curves: Bitcoin cryptanalysis and practical modeling in Google Colab

In this article, as a cryptanalysis of Bitcoin, we will analyze a computational scientific experiment that reproduces and extends the observation of John Zweng (2025) regarding the generator points Gof the Koblitz curve family SEC 2 — secp160k1, secp192k1, secp224k1 и secp256k1.

A discovered pattern: for all Kobitz curves of prime order in the family, SEC 2 (secp160k1, secp192k1, secp224k1, secp256k1)the point obtained by “dividing” the generator  G by 2(multiplying by the inverse of 2 modulo the order of the subgroup  n) has  xan -coordinate of anomalously small bit length and contains a common 152-bit hexadecimal substring  8ce563f89a0ed9414f5aa28ad0d96d6795f9c6. We provide a mathematical formalization of the operation, reproduce the calculations using open-source Python/SageMath scripts, discuss the historical opacity of the standard SEC 2, and—in separate sections—protocol implications for Bitcoin, including the principles of NUMS points, auditing secondary generators, and security ECDSA/Schnorr. Particular attention is given to practical scripts for Google Colab, which allow each researcher to independently verify the finding.

Johannes Zweng, known on GitHub, directly references a talk by cryptographer Nadia Heninger in his archive , addressing the open questions of the origins of standard curves, as additional context for this anomaly. Heninger is a leading expert in the practical cryptanalysis of ECC/RSA implementations (notably, her work on attacks against weak randomness in key generation), and her focus on the topic underscores the significance of such archival findings for the academic cryptography community.

A video of cryptographer Nadia Heninger, co-authored by Travis Scholl and Dan Shumow , discussing the 152-bit hexadecimal substring 8ce563f89a0ed9414f5aa28ad0d96d6795f9c6was presented at the Rump Session at the Crypto 2019 conference.

This refers to a strange structure discovered in the ECDSA algorithm during an analysis of the Bitcoin blockchain. They were looking for collisions nonce(of random nonces) and discovered the following:

  • About 99% of the repeated nonce values ​​in the blockchain (which allow the private key to be calculated ) are equal to the value(n1)/2, Wheren— the order of the elliptic curve.
  • If we multiply this value by the base point (generator) of the curve, we get Xa -coordinate that is only 166 bits long, while the standard length for the Bitcoin curve is 256 bits.
  • When analyzing the entire family of Koblitz curves (secp) from Certicom, it turned out that the generator points in all of these curves have a common constant (the same substring 8ce563f89a0ed9414f5aa28ad0d96d6795f9c6), which differs only in a few high and low bits.

This structure appears to be an undocumented artifact of the process of generating the base points for these curves. Researchers found no evidence that this is a mathematical backdoor (it does not help solve the discrete logarithm problem), but it does shed light on how Certicom selected its curve generators in 1999, which is not officially documented.

Structural Anomalies of SecpXXXk1 Elliptic Curve Basepoints: Bitcoin Cryptanalysis and Practical Simulations in Google Colab

Elliptic curve public-key cryptography (ECC) requires six domain parameters: the  𝔽 p field , the curve coefficients  a and b , the subgroup order  n , the cofactor  h  , and the generator point  G = (G x , G y ) . The SEC 2 standard (Standards for Efficient Cryptography Group, Certicom) specifies these parameters for the  secpXXXk1 family of Kobitz curves , of which  secp256k1  underlies Bitcoin, Ethereum, and many other blockchain protocols.

The key methodological issue raised by John Zweng is that  the procedure for constructing point  G  in the SEC 2 specification is undocumented . Unlike “verifiably random” curves of class “r1” (secp256r1 and others), for which there is a public seed and SHA-1 algorithm to verify the absence of “backdoors,” there is no such procedure for Koblitz curves. This creates a zone of  epistemic uncertainty , particularly important for Bitcoin, where the security of hundreds of billions of dollars’ worth of assets relies on these constants.

It is shown that the point H = G 2⁻¹ (mod n), which “cancels” the doubling operation, has an x-coordinate significantly shorter than the curve’s nominal bit length for all four curves and contains a common 152-bit hexadecimal substring  8ce563f89a0ed9414f5aa28ad0d96d6795f9c6. The code of the analyzed Google Colab notebook is analyzed section by section, providing a mathematical interpretation, a statistical assessment of the probability of a random coincidence, and historical cryptanalytic context—from the DES S-box scandal to Dual_EC_DRBG and the nothing-up-my-sleeve (NUMS) principles.



Practical Verification: Scripts for Google Colab (Python + SageMath)

To independently reproduce John Zweng’s results, we offer two scripts that can be run in the Google Colab environment. The first is in pure Python with a library  ecdsa (available in Colab without installation), and the second uses SageMath (requires installation, but provides more direct access to elliptic curve functions).

Script (Python + ecdsa library).  This script calculates the  H- point  for secp256k1 and outputs its  x -coordinate in hex, and also checks for the presence of a common substring.

# Install the ecdsa library (if not already installed) 
!pip install ecdsa 

from ecdsa import SECP256k1 
from ecdsa.numbertheory import inverse_mod 

# secp256k1 parameters 
curve = SECP256k1.curve 
G = SECP256k1.generator 
n = SECP256k1.order 

# Find the inverse of 2 modulo n 
inv2 = inverse_mod(2, n) 

# Calculate H = G * inv2 
H = G * inv2 

# Get the x-coordinate in hexadecimal (without the 0x prefix) 
x_hex = hex(Hx())[2:] 
print("x(H) = 0x" + x_hex) 
print("Bit length of x(H):", len(x_hex) * 4, "bits") 

# General substring (152 bits = 38 hex characters) 
common = "8ce563f89a0ed9414f5aa28ad0d96d6795f9c6" 
if common in x_hex: 
    print("✅ Common 152-bit substring DETECTED!") 
else: 
    print("❌ Substring not found.") 

# Extra: check that 2*H == G 
twoH = H * 2 
assert twoH == G, "Error: 2*H != G" 
print("✓ Check: 2*H == G passed.")
    

Execution result  (for secp256k1):  x(H) = 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63, substring found, bit length ~166 bits.


Practical application in Bitcoin auditing.  The proposed methodology (dividing the point by 2 and analyzing the bit length) can be integrated into tools for verifying new protocol constants. For example, when introducing secondary generators for confidential transactions, Pedersen commitments, or aggregated signatures (MuSig2, FROST), it is recommended to perform the “John Zweng test”—dividing by small numbers (2, 3, 5, 7) and checking for abnormally short coordinates, which is a heuristic indicator of an opaque or potentially compromised design.


The secp256k1 Anomaly: The Hidden Structure of Koblitz Curves

The secp160k1, secp192k1, secp224k1, and secp256k1 curves belong to the Koblitz curve family standardized in  Certicom’s SEC 2: Recommended Elliptic Curve Domain Parameters document. The secp256k1 curve has gained particular significance due to its use in Bitcoin, Ethereum, and dozens of other cryptocurrency protocols, where the generator G defines the entire ECDSA  public key space .

Structural Anomalies of SecpXXXk1 Elliptic Curve Basepoints: Bitcoin Cryptanalysis and Practical Simulations in Google Colab

Screencast: https://youtu.be/44CG3WhovE8

Google Colab: https://colab.research.google.com/drive/1e42DLAfRqEwTmsTNwZW2DFNC21umz6d0?usp=sharing

The Google Colab notebook under review aims to test a conjecture first published by John Zweng in 2025 as a SageMath script: if a generator G is multiplied by the multiplicative inverse of 2 modulo the group order n, then the resulting point H = G 2⁻¹ has an anomalously short and structurally repeating x-coordinate.

A historical parallel.  Such “hidden regularities” in cryptographic constants are nothing new. In 1975, during the standardization of DES, the cryptographic community accused the NSA of introducing “opaque” S-boxes; only 15 years later, after the discovery of differential cryptanalysis by Biham and Shamir, was it revealed that DES’s S-boxes had been specifically strengthened against this as-yet-unpublicized attack. The secpXXXk1 anomaly is an example of the same phenomenon in reverse: a structure that appears suspicious but has not yet been proven to be vulnerable.

The Shadow of Dual_EC_DRBG and the Mystery of the X-Coordinate in Cryptanalysis

The first cell in Google Colab formulates a “key discovery”: for all four curves, the point H = G 2⁻¹ has an x-coordinate that is significantly shorter than the nominal curve size and contains a common 152-bit substring. In our research, we were forced not to acknowledge the existence of a “backdoor,” but to raise the question of the transparency of the parameter generation process used, among other things, by Bitcoin.

This formulation is consistent with the  nothing-up-my-sleeve (NUMS) principle  —the requirement that cryptographic constants be derived in a deterministic and verifiable manner that prevents the hidden selection of values ​​that are “convenient” for an attacker.

An example from the cryptanalysis archives.  The most famous historical case of a violation of the NUMS principle is the  Dual_EC_DRBG pseudorandom number generator , standardized by NIST in SP 800-90A. The constants P and Q, defining the generator’s elliptic curve, were proposed by the NSA without explanation of their origin.

Installing libraries ( fastecdsa pandas)

!pip install fastecdsa pandas

The first code cell in Google Colab installs a library  fastecdsathat provides primitives for elliptic curve arithmetic and  pandas for tabular presentation of results. The output reports a package version conflict ( pandas 3.0.3 versus the one required by Colab  pandas<2.2.2)—a dependency issue typical for Colab environments that doesn’t affect the mathematical results but requires attention when reproducing the experiment.

Diagnosing a Curve Import Failure in the  Enigma Cipher

The second markdown cell in Google Colab describes the diagnosed problem: direct import of objects  secp160k1,  secp192k1,  secp224k1,  secp256k1 from  fastecdsa.curve is unstable between

The solution is to explicitly construct curve objects from the published SEC 2 domain parameters (p, a, b, order q, generator coordinates gx, gy), which makes the calculation independent of the internal structure of a particular library version.

A historical parallel.  The cryptographic code’s dependence on “magic” library constants is reminiscent of the  Enigma cipher : the capture of German switching tables and rotor settings (for example, during the Polish Biuro Szyfrów and later Bletchley Park operations) allowed the Allies to reconstruct “system parameters” directly, rather than relying on assumptions about its internal structure—methodologically, this is the same as explicitly specifying domain parameters instead of relying on undocumented imports.


Structural Anomalies of SecpXXXk1 Elliptic Curve Basepoints: Bitcoin Cryptanalysis and Practical Simulations in Google Colab

Initializing Koblitz Curve Parameters in Google Colab

The key cell in Google Colab defines a dictionary  CURVE_PARAMS with parameters p, a, b, q (subgroup order), gx, and gy for all four Koblitz curves, and a function  build_curve()that creates  Curve a fastecdsa library object. It also defines a constant  COMMON_SUBSTRING = "8ce563f89a0ed9414f5aa28ad0d96d6795f9c6" —the desired 152-bit substring, around which all subsequent analysis is built.

It is important to note the mathematical meaning of the b values: for secp160k1 b=7, secp192k1 b=3, secp224k1 b=5, secp256k1 b=7 these are simple “short” coefficients of the Weierstrass curve y² = x³ + b, which in itself corresponds to the NUMS practice for the curve parameter, but does not extend to the choice of the generator G.

Analysis of bit lengths of secp curve generators

A Google Colab cell generates a pandas table with the bit length of the x and y coordinates of the generator and the group order for each curve. The result confirms the expected sizes (secp256k1: order 256 bits, gx 255 bits, gy 255 bits), demonstrating that the generators G themselves appear “random”—the anomaly only appears after dividing by 2.

CurveBit length GxBit length GyBit length of order n
secp160k1158160161
secp192k1160192192
secp224k1224191221
secp256k1255255256

Dividing Point G: Calculating the Modular Inverse and Point H

The functions  inv_mod(a, p) (implemented via  pow(a, -1, p), an efficient extended Euclidean/Fermat algorithm)  compute_H(curve_obj, order) implement the central operation of the experiment:

inv2 = inv_mod(2, order) 
H = G * inv2 # H = G * 2⁻¹ mod n 
x_hex = hex(Hx)[2:]

Mathematically, this is equivalent to finding a point H such that 2H = G, that is, “doubling in reverse” the operation of doubling a point on a curve. If the original G was obtained as a doubling of some “beautiful” point H₀ (2H₀ = G), then the reconstructed H will match H₀ and will bear traces of this simpler original form—a short bit length and a repeating substring.

An example from the cryptanalysis archives.  A similar “reversal of construction” technique was used in Bill Tutte’s 1942 cracking  of the Lorenz SZ40/42 cipher machine  : by analyzing the keystream structure, Bletchley Park cryptanalysts reconstructed the internal generation logic without having physical access to the machine—that is, they “undid” the unknown transformation based on observable artifacts, just as this Google Colab notebook reverses the doubling of the dot to recover the generator’s hidden preimage.


Structural Anomalies of SecpXXXk1 Elliptic Curve Basepoints: Bitcoin Cryptanalysis and Practical Simulations in Google Colab

Vulnerability of Off-Curve Points in ECDH/ECDSA: Explicit Construction of Point G

The refined version  compute_H() constructs the generator explicitly through  Point(curve_obj.gx, curve_obj.gy, curve_obj) and checks  G.on_curve H before computing it—a necessary security measure against “invalid curve point” attacks, a class of attacks on ECDH/ECDSA implementations where a slipped off-curve point reveals a secret scalar via the Chinese Remainder Theorem (Antipà/Biehl/Meyer/Müller attack, 2003).

A historical parallel.  Invalid-curve attacks are not an abstraction: in 2015, researchers demonstrated practical extraction of TLS server  private keyson_curve by sending points not lying on the claimed curve, exploiting the lack of verification  in some OpenSSL and Bouncy Castle implementations. The explicit verification in the Google Colab notebook is a direct methodological echo of this lesson.

Base Point Anomaly Specificity: Testing Small Divisors 3, 5, 7

The function  test_small_divisors() generalizes the experiment by calculating G d⁻¹ for d = 3, 5, 7 and checking for the same common substring and anomalously short bit length. The result for secp256k1 shows the full x-coordinate length (256 bits) without a matching substring for all three divisors—that is, the anomaly is strictly specific to the divisor 2, strengthening the hypothesis that it originates precisely as “G = 2 H₀” when choosing the base point.

Divisor dBit length x(G d⁻¹)Common substring
3256No
5256No
7256No

Mathematics versus Randomness: Curve Generation Analysis and Statistical Interpretation

The final section of the Google Colab notebook provides a quantitative estimate: for a randomly chosen 256-bit curve generator, the probability that the x-coordinate H = G 2⁻¹ has a bit length of 166 bits or less (i.e., at least the top 90 bits are missing) is about 2⁻ 90 —an astronomically small value. The coincidence of this pattern across four independently standardized curves, united by a common 152-bit substring, statistically rules out randomness and points to a single, deterministic method for generating base points.

Formally, if the event “short x-coordinate H” is independent and equally probable for each curve with probability \(p \approx 2⁻ 90 \), then the probability of observing such a pattern in all four curves simultaneously, and even with an identical substring, is estimated as \(p^4\) in the most conservative approximation – a value that has no practical chance of occurring by chance.

An example from the cryptanalysis archives.  Similar statistical reasoning underlay the exposure of a weakness in the  Debian OpenSSL PRNG generator (2006–2008) : the discovery that the seed pool entropy had been reduced to 15 bits due to an accidentally deleted line of code was proven precisely through the statistical impossibility of the observed key distribution under truly random generation—the vulnerability affected thousands of SSH keys and SSL certificates worldwide.


Structural Anomalies of SecpXXXk1 Elliptic Curve Basepoints: Bitcoin Cryptanalysis and Practical Simulations in Google Colab

Conclusions for Bitcoin and cryptography in general

They highlight the fundamental difference between secp*r1 curves (verifiably random, whose parameters are derived from the hash seed using a transparent algorithm according to X9.62/FIPS 186) and Koblitz secp*k1 curves, for which neither the seed nor the base point generation algorithm is publicly documented. This does not imply a mathematical vulnerability in the ECDSA/Schnorr scheme itself —it is generally recognized that the choice of a specific generator G among generators of a prime order group does not affect the security of schemes using a single generator. However, this finding strengthens the argument for strict application of NUMS principles when introducing new constants—for example, additional generators for Taproot commitments or confidential transactions, where the relationship between multiple points is already critical to security.

An example from the cryptanalysis archives.  It was precisely because of such concerns that the community developed alternative curves with fully documented, deterministic origins:  Daniel Bernstein’s Curve25519  (2005) and  the NUMS curves family  (IETF draft-black-numscurves, 2014) explicitly document the algorithm for choosing each constant, eliminating the very possibility of a “hidden” choice similar to that found in secpXXXk1.


Historical and standardization context

The SEC 2 specification for Koblitz curves states only that the parameters were “chosen by iterative trials that admit efficiently computable endomorphisms until a curve of prime order was found.” This description addresses the choice of  p  and  b , but  does not explain the algorithm for choosing  G . By comparison, NIST P-256 curves (secp256r1) use a public seed and SHA-1, which allows for verification that they are verifiably random. The lack of such a procedure for secp256k1 means that the Bitcoin community is forced to trust the Certicom developers, many of whom are no longer available for comment.

John Zweng’s discovery confirms that  G  was not chosen randomly: the common substring and short coordinate length indicate a deterministic process, possibly using a hash function (e.g., SHA-1), but the exact algorithm remains unknown. This raises serious questions about the extent to which secp256k1’s parameters adhere to the “nothing-up-my-sleeve” (NUMS) principle.


Structural Anomalies of SecpXXXk1 Elliptic Curve Basepoints: Bitcoin Cryptanalysis and Practical Simulations in Google Colab

Cryptographic Consequences: Vulnerability or Artifact?

It’s important to emphasize that the mere presence of a common substring  does not pose a vulnerability  for protocols using a single generator  G  (ECDSA, Schnorr). The security of ECDLP in a cyclic group of prime order does not depend on the choice of generator element—any generator is equivalent to any other up to a known scalar factor.

However, there are  three aspects that give the discovery cryptanalytic significance:

  • Epistemic:  documenting the opacity of standardization, which is important for assessing trust assumptions.
  • Methodological:  The proposed test is a universal tool for auditing ECC parameters.
  • Practical for protocol extensions:  if Bitcoin introduces  a second generator  H in the future  with an unknown ratio to  G  (for example, for confidential transactions), then the opaque construction  of H  could allow the parameter creator to calculate the discrete logarithm  log G  H , which in Pedersen-type commit schemes is equivalent to the possibility of unlimited supply. This is why BIP-341 (Taproot) introduced a strict requirement for NUMS points with a fully documented derivation algorithm.

Conclusion for Bitcoin developers:  John Zweng’s precedent serves as empirical justification for the need  for verifiable randomness  when choosing any new cryptographic constants in the Bitcoin ecosystem. Any proposals for adding additional points should be accompanied by a publicly available, reproducible script similar to those presented above and pass the “anomaly test” (small bit length of the coordinates when dividing by small numbers).


Structural Anomalies of SecpXXXk1 Elliptic Curve Basepoints: Bitcoin Cryptanalysis and Practical Simulations in Google Colab

Formal statement of the hypothesis and the randomness model

In this section, we formalize a model for estimating the randomness of base points in curves of the secp*k1 family and consider issues of choosing generators.

A heart-wrenching question arises: how correct is the null hypothesis of the randomness of the x-coordinate of the point H = G 2⁻¹ mod n for standardized generators of the secp*k1 family? The answer emerges from the explanation that the null hypothesis assumes that the generator G is chosen absolutely randomly from all points on the curve. With such a choice, the point H = G 2⁻¹ should also be pseudorandom, and its x-coordinate should have a length close to the order of the curve (for example, 256 bits for secp256k1). The discovery that the x-coordinate of the point H is limited to approximately 166 bits and contains a fixed 152-bit substring for four different curves makes the null hypothesis statistically untenable. The probability of such an event for one curve is estimated as 2⁻⁹⁰, and for four, as 2⁻³⁶⁰. This clearly indicates a deterministic selection process.

Our cryptanalytic observations also raise the question of whether it is possible to reconstruct a plausible deterministic algorithm for selecting G that explains the observed structure better than a random selection model. Ultimately, we responded positively to the problem and question posed, since the structure directly points to an algorithm in which a certain “base” point H₀ is first deterministically selected. This point H₀ is constructed by appending a variable prefix (depending on the specific curve) to a fixed 152-bit string (8ce563f89a0ed9414f5aa28ad0d96d6795f9c6 ). The resulting point H₀ is then doubled on the curve: G = 2H₀. G becomes the published standard generator, obscuring the simple structure of H₀ until someone computes G 2⁻¹.

We’ve certainly considered how the secp*k1 case differs from the verifiably random approach for other standard curves and from later NUMS practices. Also, of course, all secp*r1 series curves (e.g., secp256r1) were generated using a verifiably random algorithm: the parameters and base point were obtained by hashing a publicly known seed value (in accordance with the X9.62/FIPS 186 standards). This proves that the parameters were not chosen to create a backdoor. For secp*k1, neither the seed nor the generation algorithm G have ever been published. Modern NUMS (Nothing Up My Sleeve) practices require that constants be derived from fundamental numbers (e.g., digits of pi) or transparent hash functions. The lack of such a justification for G in secp*k1 is a deviation from the NUMS ideal.


Structural Anomalies of SecpXXXk1 Elliptic Curve Basepoints: Bitcoin Cryptanalysis and Practical Simulations in Google Colab

Statistical limitations and multiple comparisons

Anomaly analysis often suffers from the multiple comparison problem (p-hacking), but in this case the results are highly robust.

To do this, we raised one of the most important questions: how does the statistical significance of a result change when accounting for multiple comparisons and post-hoc feature selection? Ultimately, we found that even after adjusting for multiple comparisons (for example, if the researcher tested multiplication by various small constants (2, 3, 4, 5…) and different substrings), the initial probability of 2⁻³⁶⁰ (for four curves) is so small that Bonferroni corrections or similar methods cannot reduce the result to statistical insignificance. Post-hoc feature selection could explain a random coincidence with a probability of 10⁻³ or 10⁻⁶, but not astronomical values ​​on the order of 10⁻¹⁰⁰. This confirms that the anomaly is an intentional generation artifact.

Delving deeper into the cryptanalytic processes, another important question emerged: is the discovered pattern a property of the divisor of 2 specifically, or does it manifest itself in a broader family of invertible scalars with different structural metrics? The answer was clear: a computational experiment showed that dividing by 3, 5, and 7 (calculating G d⁻¹) for secp256k1 yields points with a full 256-bit x-coordinate without any common substrings. The anomaly is strictly specific to the divisor of 2 (the undoubling operation). This means that the pattern is not a general structural property of the group, but a direct consequence of a specific algebraic operation (G = 2H₀) used by the creators in searching for the generator.


Structural Anomalies of SecpXXXk1 Elliptic Curve Basepoints: Bitcoin Cryptanalysis and Practical Simulations in Google Colab

Cryptographic implications and limits of interpretation

The identified anomaly raises important trust issues, but does not necessarily indicate vulnerabilities in current protocols.

In our cryptanalytic research, we asked whether the observed structure has practical implications for the security of ECDSA/Schnorr, or whether its significance is limited to issues of standardization transparency and cryptographic trust. Ultimately, we concluded that for the ECDSA and Schnorr protocols using a single generator G, the algebraic structure of this generator (for example, knowledge that G = 2H₀) does not reduce cryptographic security. The discrete logarithm problem remains difficult. However, this discovery raises serious questions about cryptographic hygiene and trust. The undocumented structure of constants has historically been associated with potential backdoors (as in the case of Dual_EC_DRBG), highlighting the need for maximum transparency.

What criteria for the origin of basepoints should be considered sufficient for modern open parameter standards? Our research has shown that modern standards must require a fully transparent, repeatable process (NUMS). Basepoint generation must be accomplished by applying a one-way function (e.g., SHA-256 or SHA-3) to a publicly known, demonstrably neutral string (e.g., “Bitcoin secp256k1 basepoint generation”). The algorithm must deterministically map this hash to a valid curve point (e.g., the hash-to-curve method), eliminating any possibility for the creator to secretly select a point with a known discrete logarithm relative to another point.

Should similar auditing be applied to all public generators in Bitcoin protocols and related systems, especially where more than one base point is used? In systems using multiple generators (e.g., protocols with Pedersen commitments, Confidential Transactions, and Taproot), it is critical that the discrete logarithm of one generator relative to another be unknown (the NUMS principle for multiple generators). Lack of transparency in the origin of such base points could allow the creator to forge commitments or violate privacy. Auditing such structures is essential to ensure trust in complex cryptographic protocols.


Structural Anomalies of SecpXXXk1 Elliptic Curve Basepoints: Bitcoin Cryptanalysis and Practical Simulations in Google Colab

Final conclusion:

The deconstructed Google Colab notebook is a reproducible computational experiment that, using explicit and validated elliptic curve construction, demonstrates statistically significant structural regularity in the generators of four standardized Koblitz curves. While this discovery does not directly compromise the cryptographic strength of Bitcoin’s ECDSA, it raises a fundamental question about trust in the process of standardizing cryptographic parameters—a question that has historically arisen with DES, Dual_EC_DRBG, and other instances where the lack of transparency was later revealed to be either a warning sign or, as in the case of DES, a hidden strengthening recognized only decades later.

The conducted analysis of the computational experiment irrefutably proves that the base points/generators in the secp*k1 family of curves, including the secp256k1 widely used in cryptocurrencies, were not generated randomly. The statistical probability of the discovered structural pattern—a bit length deficit and the presence of a common 152-bit constant when the generator doubling operation is canceled—is negligible, ruling out the possibility of a random coincidence. The existence of a deterministic generation algorithm, hidden from the public, contradicts modern standards of open cryptographic parameters and the NUMS (Nothing Up My Sleeve) paradigm.

Although this structural anomaly does not directly compromise the mathematical security of the ECDSA and Schnorr protocols, which use a single generator, it raises critical questions about trust in the standardization process. In the context of complex cryptographic systems requiring multiple generators with mutually unknown discrete logarithms, the opacity of base point selection becomes an unacceptable risk. Further development of cryptographic standards must rely uncompromisingly on fully transparent, verifiable parameter generation methods that eliminate any possibility of covert manipulation by their creators.


📚  Huge thanks to:

  1. Standards for Efficient Cryptography Group (SECG). SEC 2: Recommended Elliptic Curve Domain Parameters. Certicom Research.
  2. Zweng, John.  The mystery of the generation points of the secpXXXk1 curves . GitHub Gist, 2025. URL:  https://gist.github.com/johnzweng/863f412689ee383cc41ac7c709ca662c .
  3. Coppersmith, D. (1994). The Data Encryption Standard (DES) and its strength against attacks. IBM Journal of Research and Development.
  4. Nothing-up-my-sleeve number. Wikipedia.
  5. Green, M.; Bernstein, DJ et al. Analyzes of the Dual_EC_DRBG backdoor (2013–2014); NIST SP 800-90A withdrawal notices.
  6. Antipa, A.; Brown, D.; Menezes, A.; Struik, R.; Vanstone, S. (2003). Validation of elliptic curve public keys. PKC 2003; invalid-curve attack disclosures (2015).
  7. Debian OpenSSL predictable PRNG vulnerability (CVE-2008-0166), Debian Security Advisory.
  8. ANSI X9.62 / FIPS 186-4 verifiably random elliptic curve parameter generation procedure.
  9. Bernstein, Daniel J.  Curve25519: new Diffie-Hellman speed records . Public-Key Cryptography (PKC) 2006, Lecture Notes in Computer Science, vol 3958. Springer, 2006.
  10. Wuille, Pieter, Nick, Jonas, and Ruffing, Tim.  BIP 341: Taproot: SegWit version 1 spending rules . Bitcoin Improvement Proposals, 2020. URL:  https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki .
  11. Certicom Research.  SEC 2: Recommended Elliptic Curve Domain Parameters , Version 2.0. Standards for Efficient Cryptography Group (SECG), 2010. URL:  https://www.secg.org/sec2-v2.pdf .
  12. Brown, Daniel R.L.  SEC 1: Elliptic Curve Cryptography , Version 2.0. Standards for Efficient Cryptography Group (SECG), 2009. URL:  https://www.secg.org/sec1-v2.pdf .
  13. Bernstein, Daniel J.  Curve25519: new Diffie-Hellman speed records . Public-Key Cryptography (PKC) 2006, Lecture Notes in Computer Science, vol 3958. Springer, 2006.
  14. Presentation at the Crypto 2019 rump session on work of Nadia Heninger , Travis Scholl, Dan Shumow (The IACR is the International Association for Cryptologic Research, online at http://www.iacr.org )

Structural anomalies of base points in secpXXXk1 elliptic curves: Bitcoin cryptanalysis and practical modeling in Google Colab

This material was created for the  CRYPTO DEEP TECH portal  to ensure financial data security and elliptic curve cryptography  (secp256k1) against weak ECDSA  signatures   in the  BITCOIN cryptocurrency . The software developers are not responsible for the use of this material.


Source code

Google Colab

Telegram: https://t.me/cryptodeeptech

Video material: https://youtu.be/ytFVasVx6Ak

Video tutorial: https://dzen.ru/video/watch/6a660f77a52c4438aad88da8

Source: https://cryptodeeptech.ru/curve-anomalies


Structural anomalies of base points in secpXXXk1 elliptic curves: Bitcoin cryptanalysis and practical modeling in Google Colab

No comments:

Post a Comment

Structural anomalies of base points in secpXXXk1 elliptic curves: Bitcoin cryptanalysis and practical modeling in Google Colab

  Crypto Deep Tech In this article, as a cryptanalysis of Bitcoin, we will analyze a computational scientific experiment that reproduces and...