<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>ECC's Achilles' Heel: Unveiling Weak Keys in Standardized Curves</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Enrico Talotti</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Matteo Paier</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marino Miculan</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Ca' Foscari University of Venice - Dept. of Environmental Sciences</institution>
          ,
          <addr-line>Informatics and Statistics</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>IMT Alti Studi Lucca</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>University of Udine - Dept. of Mathematics</institution>
          ,
          <addr-line>Computer Science and Physics</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>The strength of Elliptic curve cryptography (ECC) relies on curve choice. This work analyzes weak keys in standardized curves, i.e., private keys within small subgroups of the auxiliary group Z*. We quantify weak key prevalence across standardized curves, revealing a potential vulnerability due to numerous small divisors in auxiliary group orders. To address this, we leverage the implicit baby-steps giant-steps algorithm, which transforms the complex elliptic curve discrete logarithm problem into a simpler problem within Z*. This enables eficient detection of weak keys in small-order subgroups. Our findings highlight the importance of rigorous key testing in applications using standardized ECC. While random weak keys are unlikely, malicious actors could exploit this by manipulating key generation libraries. To this end, we show how users can assess their private key vulnerabilities and mitigate risks by eliminating weak keys. Hence, this work contributes to improved ECC security through proactive key management practices.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Elliptic curve cryptography (ECC)</kwd>
        <kwd>Key vulnerabilities</kwd>
        <kwd>Weak keys</kwd>
        <kwd>Standardized curves</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>keys, thus proactively strengthen their cryptographic security by identifying potential weak keys.</p>
      <p>Overall, this paper contributes to the field of ECC security by ofering a comprehensive analysis of
weak keys in standardized curves, introducing an eficient detection method using the iBSGS algorithm,
and highlighting the importance of proactive key testing.</p>
      <p>The rest of the paper is organized as follows. In Section 2 we recall basic definitions about elliptic
curves, the discrete logarithm problem, and the baby-step giant-step algorithm. The implicit version of
this algorithm, dubbed iBSGS, is presented in Section 3. Section 4 covers the main contribution of this
paper: first, we show how to apply the iBSGS algorithm for testing whether a key is weak; then, we
analyse elliptic curves actually used in practice, providing an estimation of the weak keys which can be
found within a given bound. Conclusions and directions for future work are in Section 5.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Preliminary Work</title>
      <p>In this section, we lay the groundwork for our analysis by revisiting some fundamental concepts. We
ifrst recall elliptic curves; next, we describe the discrete logarithm problem in additive groups, such as
those arising from elliptic curves. Finally, we recall the baby-step giant-step algorithm, a powerful tool
for solving the DLP.</p>
      <sec id="sec-2-1">
        <title>2.1. Elliptic Curves</title>
        <p>An elliptic curve (EC)  over a field K, denoted /K, is given by the Weierstraß equation
 : 2 + 1 + 3 = 3 + 22 + 4 + 6
(1)
where the coeficients 1, 2, 3, 4, 6 ∈ K are such that for each point (1, 1) ∈ K2 satisfying
Equation (1), the partial derivatives do not vanish simultaneously.</p>
        <p>We refer to points on the curve  as points with coordinates in K satisfying Equation (1). Points on
 with coordinates in the base field K form the set of K-rational points of E; we denote this set by
(K) = {︀ (1, 1) ∈ K2 : 12 + 11 + 31 = 13 + 212 + 41 + 6}︀</p>
        <p>
          It is well-known that this set can be turned into an additive group ((K), ⊕ , ) where the group law
is given by the chord-tangent operation ⊕ and the identity is given by the point at infinite  [
          <xref ref-type="bibr" rid="ref5 ref6 ref7">5, 6, 7</xref>
          ].
        </p>
        <p>In this work we focus exclusively on elliptic curves defined over finite fields of characteristic diferent
from 2 and 3 so we can assume that the EC is given by a short Weierstraß equation:
 : 2 = 3 + 4 + 6
(2)</p>
        <p>Moreover, we can assume the elliptic curve group (K) to be of order  where  is a prime. This is
done for cryptographic purposes, since it increase the complexity of the Discrete Logarithm Problem.</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Discrete Logarithm Problem</title>
        <p>Let (, ⊕ ) be an additive cyclic group of prime order  and  a generator for . The map
 : Z → 
 ↦→ [] =  ⊕  ⊕ · · · ⊕
⏟  tim⏞es

has kernel Z, thus  leads to an isomorphism between (, ⊕ ) and (Z/Z, +) := Z. The problem
of computing the inverse map is called the discrete logarithm problem (DLP) to the base of  . It is the
problem, given  and , to determine  ∈ Z such that  = [ ] . Note that  is unique only modulo
the group order.</p>
        <p>The complexity of this problem depends on the choice of  and its operation. If  = Z with
generator 1, the discrete logarithm of  ∈ Z is  itself. If we choose a generator  ∈ Z, where  ̸= 1,
the problem is still easy to solve because it reduces to compute the inverse of  modulo .</p>
      </sec>
      <sec id="sec-2-3">
        <title>2.3. Baby-Step Giant-Step Algorithm</title>
        <p>
          The baby-step giant-step algorithm (BSGS algorithm) was firstly published by Shanks to compute ideal
class numbers of quadratic number fields [
          <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
          ]. Here we present it in a more general form and we use
it to solve the DLP.
        </p>
        <p>The BSGS method is based on the following:
Lemma 1. Let  be a positive integer. Put  := ⌊√⌋ + 1. Then for any  with 0 ≤  &lt;  there are
integers , , with 0 ≤ ,  ≤  − 1, such that  =  + .</p>
        <p>Proof. If we divide  by  we have  =  +  with 0 ≤  ≤  − 1. We note that  ≤  − 1 =
2 − 1 = ( − 1) + ( − 1) and we know that  ≤  − 1. Hence we have 0 ≤  ≤  − 1.</p>
        <p>Assume now that the order of  ∈  is  and  an integer modulus . Let  = [ ] , then we have
 ⊕ [− ] = [],
for some ,  as in Lemma 1. We have the following:
Proposition 1. Let (, ⊕ ) be a finite, additive, cyclic group of order  and let  be a generator of . The
following algorithm solves the discrete logarithm problem [ ] =  in ( log ) steps, where  is
define as follows.</p>
        <p>
          1. Let  := ⌊√⌋ + 1.
2. Create the two lists:
baby-steps: , [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], . . . , []
giant-steps:  ⊕ [− ],  ⊕ [− 2], . . . ,  ⊕ [− 2]
Then there exist 0 ≤ ,  &lt;  such that  ⊕ [− ] = [] and  =  +  is the solution to the
discrete logarithm problem.
        </p>
        <p>Proof. To compute the two lists we take at most 2 group operations. By Lemma 1, there exists a
match between the two lists, that can be found in log √ steps by using standard searching algorithms
or hash tables. Hence, the total running time for the algorithm is ( log ) steps.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Implicit Baby-Step Giant-Step Algorithm</title>
      <p>
        In this section we describe an implicit version of the BSGS algorithm [
        <xref ref-type="bibr" rid="ref1 ref2 ref3">1, 2, 3</xref>
        ]. The main idea is to
define a group action of Z* on the additive group . In this way we can use the multiplicative group
Z* as auxiliary group, thus reducing the discrete logarithm problem of (, ⊕ ) to a problem in Z*.
The advantage of this approach is that Z* has many subgroup and one can exploit its rich and well
understood subgroup structure.
      </p>
      <p>Assume (, ⊕ ) to be a finite, additive, cyclic group of prime order  and let  be a generator. We
define the following (faithful) group action:
 : Z* →−</p>
      <p>Aut()
 →↦−
  :  →−
 →↦−

[ ]
It is easy to see that  is a group homomorphism with kernel</p>
      <p>ker  = { ∈ Z* :   ( ) =  } = {1}</p>
      <p>If  ∈ Aut() and  is a generator for , then  ( ) = [ ] for some  ∈ Z*. Thus we have an
isomorphism Z* ≃ Aut() and we can identify the element [ ] ∈  with  ∈ Z*.</p>
      <p>We want to solve the discrete logarithm problem in  by using the auxiliary group Z*. Let  be a
primitive element of Z*, then  =  for some 0 ≤  &lt;  and  = [] . Let  := ⌊√⌋ + 1. If we
divide  by  we get ,  with 0 ≤ ,  ≤  − 1 such that  =  + , as in Lemma 1. It follows that
 = [] = [+] = [][] , which leads to</p>
      <p>[− ] = []</p>
      <p>However, we know that  = [ ] , thus we have [− ][ ] = [] and this implies −  = 
mod . Hence, if we find such an  and , we can compute  = + and we have the solution of the
discrete logarithm problem. We can now proceed as in Proposition 1.</p>
      <p>We put  := ⌊√⌋ + 1 and we build the two following lists:
baby-steps: [], [2], . . . , []
giant-steps: [− ], [− 2], . . . , [− 2 ]</p>
      <p>Using binary search, we find a match that solves the DLP in time ( log ). The algorithm
described above is what we call implicit baby-step giant-step (iBSGS).</p>
      <p>If a divisor  of  − 1 is known, this idea can be improved. Let  =  − 1 be a generator for the
√
order  subgroup of Z*. We put ′ := ⌊ ⌋ + 1 and run the implicit baby-step giant-step by using 
instead of , that is, using the following lists:
baby-steps: [], [2], . . . , [′ ]
giant-steps: [− ′ ], [− 2′ ], . . . , [− ′2 ]</p>
      <p>If the unknown  lies in the -order subgroup of Z*, then  will be equal to  for some  modulus
 and the algorithm will find a match [− ′ ] = [] . Hence, [− ′ ][ ] = [] , which lead to
+′ and the DLP is solved in times (′ log ′).
 =</p>
      <p>In this case we either find  or verify that  is not in the order  subgroup after at most  iterations.
Thus, if  is suficiently small and  lies in the -order subgroup, the DLP can be solved much easily.</p>
      <p>To summarize:
Theorem 1. Let  be an additive, cyclic group of prime order , with generator  . Let  = [ ] be
another given element of  (with  unknown). For a given divisor  of  − 1, let  be the subgroup of Z*
of order . Then, one can decide whether  belongs to  in (√) steps. Moreover, if  belongs to , the
same algorithm will find the discrete logarithm  in (√) steps.</p>
      <p>In cryptographic applications using elliptic curve cryptosystems, the integer  represent the 
, while the point  = [ ] is the  . Therefore, every public key for which the
corresponding private key lies in a small subgroup of Z* is deemed to be weak.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Weak Key Testing in ECC</title>
      <p>This section tackles the vulnerability of weak keys in standardized elliptic curves. We begin by
demonstrating how the iBSGS algorithm can eficiently test whether a key within a given curve belongs to a
small-order subgroup of the auxiliary group Z*. Subsequently, we conduct a comprehensive analysis
of standardized curves, enumerating weak keys residing in subgroups with orders below a specified
threshold for each individual curve. Finally, we present a concise overview of our implementation of
these algorithms in Rust and PARI/GP.</p>
      <sec id="sec-4-1">
        <title>4.1. Testing whether a key is weak</title>
        <p>A simple approach to test whether the private key corresponding to a public key is weak is to set a
bound  for the order of the subgroups of Z*. We can run the iBSGS algorithm on all divisors of  − 1
that are less than . However, this would be ineficient and redundant, because testing whether a key
is in a subgroup of order  also covers all subgroups of order divisible by . Thus, we instead generate a
list of integers 1 &lt; 2 &lt; · · · &lt;  ≤  dividing  − 1 such that  ∤  for all 1 ≤  &lt;  ≤ .</p>
        <p>
          As an example, let us consider the elliptic curve secp192r1 (P192) [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. The curve is defined over the
ifnite field F where  is a prime specified by the standard. The generator in afine coordinates is
        </p>
        <p>
          By using a computer algebra system (e.g., PARI/GP or SageMath [
          <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
          ]), one can factor  − 1 in few
seconds, and compute the primitive element  = 3 in the auxiliary group Z*. Let us choose a bound
 = 27. There are 9 non trivial divisors of  − 1 below , namely 2, 4, 5, 8, 10, 16, 20, 40, 80. In order
to test whether a given private key is in any of the subgroups of these orders, it sufices to test only the
subgroups of order  = 80 as the first eight subgroup orders divide 80, and thus any element of one of
these smaller orders is also an element of the subgroup of order 80.
        </p>
        <p>Let us choose a public key as the point
If we run the iBSGS algorithm, we find a match in a couple of seconds. This gives us the discrete
logarithm in base  of :
which is the corresponding private key.</p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Analysis of Weak Keys</title>
        <p>
          In this subsection we investigate elliptic curves described in [
          <xref ref-type="bibr" rid="ref10 ref13">10, 13</xref>
          ] and other curves used by OpenSSL
[
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. For each curve, we enumerate the weak keys appearing in subgroups of order bounded by
 ∈ {232, 264, 2128, 2160}. As described in Section 3, the cost to determine whether a given key is weak
with respect to the bound  is roughly 216, 232, 264, 280 groups operations. Due to the magnitude order
of the results, and to facilitate an easier comparison, we compute the base-2 logarithm of each number
(i.e. the number of bits of its representation).
        </p>
        <p>For each curve we describe:
() number of bits of the prime number  which is the order of the generator of group (F);
 base-2 logarithm of the number of weak keys with order bounded by B. Since () is the number of
generators of a cyclic group of order , i.e., the number of elements of order exactly , we define
 base-2 logarithm of the worst-case number of elliptic curve scalar multiplications required to
test whether a key comes from a subgroup of order bounded by  using iBSGS algorithm. Let
(, ) = {1, . . . ,  :  |  − 1,  ≤ ,  ∤  for all 1 ≤  &lt;  ≤ }. We define
 = log2 ∑︁ ()
|− 1
≤ 
 = log2</p>
        <p>∑︁
∈(,)</p>
        <p>2⌈√⌉
Curve
brainpoolP160r1
brainpoolP192r1
brainpoolP224r1
brainpoolP256r1
brainpoolP320r1
brainpoolP384r1
brainpoolP512r1</p>
        <sec id="sec-4-2-1">
          <title>4.2.1. Analysis of Weak Keys on secp192r1</title>
          <p>
            Here we describe the weak keys analysis of the curve secp192r1, as in Section 4.1. We use the computer
algebra system PARI/GP [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ] for computations. Similarly, we can perform the weak keys analysis for
other NIST’s curves using the values of  presented in [
            <xref ref-type="bibr" rid="ref10 ref15">10, 15</xref>
            ].
          </p>
          <p>The elliptic curve group of secp192r1 is cyclic of prime order
and the divisors of  − 1 below the bound  = 232 are</p>
          <p>{2, 4, 5, 8, 10, 16, 20, 40, 80, 2389, 4778, 9556, 11945, 19112, 23890, 38224, 47780, 95560, 191120}
thus by removing redundant divisors we get</p>
          <p>() = {191120}</p>
          <p>Doing the calculations we find that  = 17.54 and  = 9.8. This shows that secp192r1 has
approximately 217.54 weak keys lying in subgroups of order below the bound  = 232 and they can
be detected in roughly 29.8 group operations in the elliptic curve group. We can repeat the test with a
bound  = 2160 and this leads to 2109.0 weak keys, computable in roughly 255.6 group operations.</p>
        </sec>
        <sec id="sec-4-2-2">
          <title>4.2.2. Analysis of Standard Curves</title>
          <p>Our analysis of weak keys within commonly used elliptic curves, specifically focusing on recommended
and standardized ones, aims to identify them and to specify the worst-case scenario for their detection,
expressed as the required number of scalar multiplications.</p>
          <p>The results are summarized in tables, according to curve characteristics and standards: curves
from the Brainpool standard (Table 1), curves defined over prime fields (Table 2), curves over binary
ifelds (Table 3), and curves specifically used in Wireless Transport Layer Security (Table 4), a security
protocol employed in the WPA architecture to ensure privacy, data integrity, and authentication during
communication between wireless devices.</p>
          <p>The data show that many curves have an abundance of weak keys at all levels, due to rather smooth
factorization of  − 1 and, in particular, many divisors of  − 1 below the given bound . The actual
counts of weak keys vary among the curves, but several of them has around 2160 weak keys within the
bound  = 2160.</p>
          <p>Tables 1 to 4 show notable examples of curves that have remarkably few weak keys, especially
Brainpool256r1, Brainpool224r1, secp224k1 and ECCp-359. Curves such as secp193r2, Curve25519,
c2pnb163v3 and ECCp-353 have few weak keys at lower bounds, but many at  ≥ 2128. Therefore, the
dificulty of identifying weak keys in these curves varies depending on the attacker’s computational
resources. While computationally constrained attackers may find this task arduous, adversaries with
suficient computational power encounter a significantly reduced barrier, due to the fact that the density
of weak keys does not scale linearly.
Curve
c2pnb163v1
c2pnb163v2
c2pnb163v3
c2tnb191v1
c2tnb191v2
c2tnb191v3
c2pnb208w1
sect193r2
c2tnb239v1
c2tnb239v2
c2tnb239v2
c2tnb271v2
c2pnb304w1
ECCp-353
c2pnb368w1
c2tnb431r1
ECCp-359</p>
          <p>In most cases, however, our analysis show that the probability that a randomly selected key is weak
(simply given by the number of weak keys divided by the total number of keys) is very low. Thus, only
verifiable randomness in key generation, demonstrably achieved through rigorous audits, can ensure
the low probability of picking weak keys susceptible to this attack.</p>
          <p>Moreover, a malicious party could cause users to be assigned weak keys, for example via compromised
key generation software. To mitigate potential vulnerabilities, it is thus highly advisable that each
participant validates the security of their own private key through self-testing, before exposing the
public key for any purpose. Conversely, in scenarios demanding high security, a participant should
verify the public key of the other party in order to ensure the exchange is robust to attacks up to a
bounded computational efort.</p>
          <p>It is interesting to notice that we can also use the described method to generate private keys that are
secure against this kind of attacks. For this aim we restrict them to be a random power of  −  1 , where
 is a primitive root in Z and  is a large prime factor of  − 1, thus forcing the private key to lie in an
-order subgroup of Z*.</p>
        </sec>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Software Implementation</title>
        <p>We implemented the finite fields arithmetic and the elliptic curve arithmetic using the Rust programming
language. We employ the Montgomery ladder algorithm in the generation of private and public key
pairs, thus fortifying resistance against side-channel attacks.</p>
        <p>
          Moreover, we implemented the iBSGS algorithm presented in [
          <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
          ] to test whether a given public
key derives from a weak private key (up to a certain bound).
        </p>
        <p>Using PARI/GP we implemented a script to calculate the number of weak keys up to a given bound
and the worst-case complexity of finding them in terms of scalar multiplications.</p>
        <p>
          It is noteworthy that identifying weak keys in a specific curve primarily involves computing the
divisors of  − 1, which translates to factoring. The comprehensive analysis of standardized curves
was completed within several days, primarily using a computer with a Intel® CoreTM i3-2350M CPU @
2.30GHz × 4 cores, running Linux. All these tools are available at [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusions</title>
      <p>In this work we have presented a comprehensive analysis of standardized elliptic curves employed
in prevalent applications. Our objective has been to quantify the prevalence of weak keys, defined as
private keys residing within subgroups of the auxiliary group Z* whose orders fall below a specified
threshold (and hence amenable to recovery attacks). Furthermore, we have established the worst-case
complexity associated with verifying whether a given key possesses this vulnerability.</p>
      <p>
        To achieve these results, we leverage the implicit baby-step giant-step algorithm [
        <xref ref-type="bibr" rid="ref1 ref2 ref3">1, 2, 3</xref>
        ]. This
algorithm hinges on defining a group action that maps elements from Z* to the elliptic curve group
(K). By doing so, the elliptic curve discrete logarithm problem (DLP) is efectively transformed into
a problem within Z*, where it benefits from a well-defined and well-understood subgroup structure.
Consequently, the primary advantage of this approach lies in reducing the DLP’s complexity for private
keys belonging to small-order subgroups of Z*.
      </p>
      <p>
        Our analysis reveals a potential vulnerability in many standardized curves where a significant number
of private keys reside within a small subgroup of the auxiliary group. This arises from the presence
of numerous small divisors in the auxiliary group order. While the likelihood of randomly selecting a
weak key remains low, malicious actors could exploit this weakness by manipulating the key generation
libraries utilized by applications. This manipulation would enable the construction of private keys
readily recoverable from their corresponding public keys via the iBSGS algorithm. Consequently, it is
imperative for applications to implement rigorous testing of keys generated by these libraries prior to
their usage. In fact, we have implemented all the algorithms used in this paper in Rust and PARI/GP.
These tools, available at [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], empower users to assess the susceptibility of private keys to these specific
attack vectors.
      </p>
      <p>Future Work. To counteract the positive impact of using the iBSGS algorithm, a possible solution
would be to standardize elliptic curves whose group order is a safe prime, i.e., a prime  such that
 = 2 + 1 where  is also a prime. More efort should be made in order to evaluate and assess the
possible pitfalls of using such a prime.</p>
      <p>
        Moreover, it would be interesting to use the implicit representation to improve other algorithms such
as the Pohlig-Hellman [
        <xref ref-type="bibr" rid="ref6 ref7">6, 7</xref>
        ], akin to what it was done for the Pollard’s kangaroo algorithm in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgments</title>
      <p>This work has been partially supported by the Department Strategic Project on Artificial Intelligence
(2020-25) of the University of Udine, and the project SERICS (PE00000014) under the NRRP MUR
program funded by the EU - NGEU. We thank Luca Campa for discussions and suggestions about the
content of this paper.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>U. M.</given-names>
            <surname>Maurer</surname>
          </string-name>
          ,
          <string-name>
            <surname>S. Wolf,</surname>
          </string-name>
          <article-title>The relationship between breaking the Difie-Hellman protocol and computing discrete logarithms</article-title>
          ,
          <source>SIAM Journal on Computing</source>
          (
          <year>1999</year>
          ). doi:
          <volume>10</volume>
          .1137/S0097539796302749.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>P.</given-names>
            <surname>Kushwaha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mahalanobis</surname>
          </string-name>
          ,
          <article-title>A probabilistic baby-step giant-step algorithm</article-title>
          ,
          <source>arXiv preprint arXiv:1701.07172</source>
          (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Jacobson</surname>
          </string-name>
          , Jr., P. Kushwaha,
          <article-title>Removable weak keys for discrete logarithm-based cryptography</article-title>
          ,
          <source>Journal of Cryptographic Engineering</source>
          (
          <year>2020</year>
          ).
          <source>doi:10.1007/s13389-020-00250-7.</source>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>E.</given-names>
            <surname>Talotti</surname>
          </string-name>
          ,
          <article-title>Elliptic curve cryptography weak keys</article-title>
          , Available at https://github.com/cysecud/ecc_ weak_keys,
          <year>2024</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Silverman</surname>
          </string-name>
          ,
          <source>The arithmetic of elliptic curves</source>
          , Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>D. R.</given-names>
            <surname>Stinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. B.</given-names>
            <surname>Paterson</surname>
          </string-name>
          ,
          <source>Cryptography theory and practice</source>
          , Chapman and Hall/CRC,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Hofstein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Pipher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Silverman</surname>
          </string-name>
          , An Introduction to Mathematical Cryptography, Springer,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>D.</given-names>
            <surname>Shanks</surname>
          </string-name>
          ,
          <article-title>Class number, a theory of factorization, and genera</article-title>
          ,
          <source>in: Proc. Symp. Math. Soc.</source>
          , volume
          <volume>20</volume>
          ,
          <year>1971</year>
          , pp.
          <fpage>415</fpage>
          -
          <lpage>440</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>H.</given-names>
            <surname>Cohen</surname>
          </string-name>
          ,
          <string-name>
            <surname>A Course</surname>
          </string-name>
          <source>in Computational Algebraic Number Theory</source>
          , Springer,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>L.</given-names>
            <surname>Chen</surname>
          </string-name>
          , D. Moody, A. Regenscheid,
          <string-name>
            <given-names>K.</given-names>
            <surname>Randall</surname>
          </string-name>
          ,
          <article-title>Recommendations for discrete logarithm-based cryptography: Elliptic curve domain parameters</article-title>
          ,
          <source>Technical Report, National Institute of Standards and Technology</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11] parigp, PARI/GP, Available at https://pari.math.u-bordeaux.fr/,
          <year>2023</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12] sagemath, SageMath, Available at https://www.sagemath.org/,
          <year>2023</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J.</given-names>
            <surname>Merkle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Lochter</surname>
          </string-name>
          ,
          <article-title>Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation</article-title>
          , RFC
          <volume>5639</volume>
          ,
          <year>2010</year>
          . URL: https://www.rfc-editor.
          <source>org/info/rfc5639. doi:10</source>
          .17487/ RFC5639.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <article-title>The OpenSSL Project, OpenSSL: The open source toolkit for SSL/TLS,</article-title>
          <year>2023</year>
          . Available at www. openssl.org.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <article-title>[15] crocs, Center for research on cryptography and security</article-title>
          , Available at https://neuromancer.sk/std/ search/,
          <year>2023</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>