# Patent

## Title
Algorithms for generating parameters for genus 2 hyperelliptic curve cryptography

## Abstract

An exemplary method includes defining a CM field, representing coefficients of a Frobenius element of a hyperelliptic curve over a prime field as non-linear polynomials that are functions of an integer x and selecting a value for x whereby the product of the Frobenius element and its complex conjugate is a prime number. Such a method may further include determining the order of the Jacobian of the hyperelliptic curve, for example, where the order is an almost prime number. Various other methods, devices, systems, etc., are also disclosed, which may be optionally used for cryptography.

## Background
BACKGROUND
Public-key cryptographic techniques are one type of key-based cipher. In public-key cryptography, each communicating party has a public/private key pair. The public key of each pair is made publicly available (or at least available to others who are intended to send encrypted communications), but the private key is kept secret. In order to communicate a message using encryption to a receiving party, an originating party encrypts the message using the public key of the receiving party and communicates the encrypted message to the receiving party. Upon receipt of the encrypted message, the receiving party decrypts it using its secret private key, and thereby recovers the original message.
The Diffie-Hellman protocol is a well-known example of public/private key cryptography. The DH protocol assumes that it is infeasible to compute gαβ (the shared secret) knowing only gα and gβ. For example, Alice and Bob agree to use a prime number p=23 and base g=5. Alice chooses a secret integer α=6, then sends Bob (gα mod p), which is 56 mod 23=8. Bob chooses a secret integer β=15, then sends Alice (gβ mod p), which is 515 mod 23=19. Alice computes (gβ mod p)α mod p, which is 196 mod 23=2. Bob computes (gα mod p)β mod p, which is 815 mod 23=2.
In recent years, the original DH protocol has been understood to be an example of a much more general cryptographic technique, the common element being the derivation of a shared secret value (i.e., a shared key) from one party's public key and another party's private key. The parties' key pairs may be generated anew at each run of the protocol.
New curve-based cryptography techniques have recently been employed for cryptography. Such techniques allow for more secure communications and for software manufacturers to appreciably reduce the incidence of unauthorized copying of software products. For example, product IDs have been generated using hyperelliptic curve cryptography techniques (HECC techniques). The resulting product IDs provide improved security. Moreover, such IDs can be configured such that the user is not required to input too many characters.
Jacobian groups of HECs are suitable for discrete logarithmic (DL) cryptosystems (e.g., ElGamal, DH and digital signature cryptosystems). In HECC, a Jacobian of a curve of genus g provides a number of points over a finite field F of q elements (Fq) where the number of points is approximately qg. In order to use the Jacobian of a curve for cryptography, suitable parameters must be chosen. One such parameter pertains to the underlying finite field Fq over which the curve is defined. Another important parameter is the cardinality N of the Fq-rational Jacobian of the curve. For many implementations of a discrete logarithm based cryptosystem, Fq should be a prime field, i.e., q is a prime number p (i.e., Fp), and N, the cardinality (or group order) of the Jacobian is prime or “close to” a prime number. Some refer to this as the group order problem on HECs over finite fields. Generally, solutions proceed by fixing a particular type of number field called a Complex Multiplication (CM) field (i.e., a totally imaginary field quadratic extension of a totally real number field) and then finding a suitable prime p and a possible group order N or possible group orders (e.g., N1, N2, . . . , Nn).
Generation of the parameter values for p and N can be time consuming for a genus 2 curve with a cryptographic size of 128 bits as it involves counting the number of points on the Jacobian of the curve over a prime field. As described herein, various exemplary algorithms are presented for generating cryptographically strong parameters (e.g., a “p” and one or more “N”s) for the CM construction of genus 2 curves.
SUMMARY
An exemplary method includes defining a CM field, representing coefficients of a Frobenius element of a hyperelliptic curve over a prime field as non-linear polynomials that are functions of an integer x and selecting a value for x whereby the product of the Frobenius element and its complex conjugate is a prime number. Such a method may further include determining the order of the Jacobian of the hyperelliptic curve, for example, where the order is an almost prime number. Various other methods, devices, systems, etc., are also disclosed, which may be optionally used for cryptography.



DESCRIPTION OF DRAWINGS
Non-limiting and non-exhaustive examples are described with reference to the following figures:
FIG. 1 is a diagram of an exemplary method that represents coefficients of a Frobenius element as non-linear polynomials;
FIG. 2 is a diagram of an exemplary method for publishing a point on a Jacobian for use in a Diffie-Hellman protocol;
FIG. 3 is a diagram of an exemplary system for generating and publishing information for use in a protocol to secure communication; and
FIG. 4 is a block diagram of an exemplary computing device.



DETAILED DESCRIPTION
Various exemplary methods, devices and system described herein pertain to hyperelliptic curve cryptosystems (HECCs). An exemplary algorithm can generate parameter values p and N for an underlying finite field Fp for an HEC and the cardinality N of the Fp-rational Jacobian of the HEC, respectively. An exemplary algorithm represents the parameter p in terms of polynomials. Such an algorithm can reduce computation requirements (e.g., computation time, or resource requirements). Such an exemplary algorithm can start from a specific collection of invariants associated to a primitive quartic complex multiplication (CM) field, denoted K.
An exemplary method can start with a “Complex Multiplication” (CM) field, which is a number field, meaning that it is a finite extension of the field of the rational numbers. In such a method, a finite field is defined by the prime number p, which is one of the parameters of a cryptosystem (i.e., the number of elements of the finite field is a prime number p so it may be called a “prime field”). For a defined CM field, one wants to find a genus 2 curve (e.g., given by an appropriate equation) over a prime field such that the “endomorphism ring” of the Jacobian of the curve over the prime field is a subring of the ring of the algebraic integers of the CM field.
In the foregoing method, the various mathematical objects can be identified, such as, (i) a prime field; (ii) a genus 2 curve over a prime field′; (iii) a Jacobian of the curve (over a prime field); (iv) an endomorphism ring of the Jacobian (of the curve over a prime field); (v) a CM field; and (vi) algebraic integers of the CM field.
As described herein, (i) a “prime field” (Fp), is a field with p elements, where p is a prime number; (ii) a “genus 2 curve over a prime field” is given by an equation in two variables (e.g., x and y) with coefficients in the prime field Fp; (iii) the “(Fq rational points of the) Jacobian of the curve” is a mathematical object related to the curve, but not a subset of the curve and given a curve equation over a prime field Fp, its Jacobian is a finite set, whose order/cardinality is denoted by N; (iv) the “endomorphism ring/algebra of the Jacobian” is another mathematical object that is related to the Jacobian, but not a subset of the Jacobian; and (v-vi) the “algebraic integers of the CM field” is a subset of the “CM field”.
Accordingly, an endomorphism ring/algebra of the Jacobian of a genus 2 curve is desired to be a subring of the ring of algebraic integers of a CM field. In other words, the ring of the “algebraic integers of a CM field” has the “endomorphism ring of the Jacobian” as a subset. This is an inclusion relation that involves “the endomorphism ring of the Jacobian” and the “algebraic integers of the CM field”. Further, the Frobenius element is sought to be an element of the endomorphism ring and hence an element of the subring of the ring of algebraic integers of the CM field. Or more generally, the Frobenius element is sought to be an element of the ring of integers of the CM field.
Various exemplary algorithms can be combined to form an overall algorithm. Implementation of these algorithms is described further below with respect to some actual trial results.
Let K:=Q(η), where η=i(a+b(d0.5))0.5 if d≡2, 3 (mod 4); and η=i(a+0.5b(−1+d0.5)0.5 if d≡1 (mod 4), be a fixed primitive quartic CM field, where d>0 is squarefree and Q(d0.5) has class number 1. The condition that K is primitive is equivalent to Δ>0 is not a square, where Δ=a2−b2d>0, if d≡2, 3 (mod 4), and Δ=a2−a·b−0.25b2(d−1), if d≡1 (mod 4).
As described herein, it is desirable to construct a genus 2 hyperelliptic curve C over a finite field Fp of prime order such that End(JacFq(C))Q=K, and N:=#JacFq(C) is “almost prime”, meaning that N is a product of a large prime number and a small cofactor. If such a curve C is found, then there exists an element, called the Frobenius element, πεEnd(JacFq(C)) (i.e., π is an endomorphism on the Jacobian of the curve C over the finite field Fq) that satisfies the condition that π π=q, where π is the complex conjugate of π.
In the analysis described herein, the concept of Weil numbers may be used. For example, let p be a prime and q=pa a power of p. An algebraic integer π is called a q-Weil number, if πσ πσ=q=pa and πσ is any conjugate of π.
Assume that the Frobenius element π is in an order as follows for two particular cases (first case and second case):

O:=Z+d0.5Z+ηZ+ηd0.5Z,if d≡2,3(mod 4);and

O:=Z+0.5(−1+d0.5)Z+ηZ+0.5η(−1+d0.5)Z,if d≡1(mod 4).

The first case is described followed by the second case. In the first case d≡2, 3 (mod 4), the Frobenius element is written π=c1+c2d0.5+η(c3+c40.5), ciεZ.

For the first case, the relationship π π=p provides:

(c21+c22d+c23a+c24ad+2c3c4bd)+(2c1c2+2c3c4a+c23b+c24bd)d0.5=p. 

Since “1” and d0.5 are linearly independent over Q, the following equations exist:

c21+c22d+c23a+c24ad+2c3c4bd=p  (1)

2c1c2+2c3c4a+c23b+c24bd=0  (2)

Also, for the first case, let α and ασ denote the imaginary and real embeddings of K into K.

For the first case, the characteristic polynomial of π is




  
    
      
        
          h
          ⁡
          
            (
            x
            )
          
        
        =
        
        ⁢
        
          
            (
            
              x
              -
              π
            
            )
          
          ⁢
          
            (
            
              x
              -
              
                π
                _
              
            
            )
          
          ⁢
          
            (
            
              x
              -
              
                π
                σ
              
            
            )
          
          ⁢
          
            (
            
              x
              -
              
                
                  π
                  _
                
                σ
              
            
            )
          
        
      
    
  
  
    
      
        =
        
        ⁢
        
          
            x
            4
          
          -
          
            4
            ⁢
            
              c
              1
            
            ⁢
            
              x
              
                3
                ⁢
                
                  
                
              
            
          
          +
          
            
              (
              
                
                  2
                  ⁢
                  p
                
                +
                
                  4
                  ⁢
                  
                    (
                    
                      
                        c
                        1
                        2
                      
                      -
                      
                        
                          c
                          2
                          2
                        
                        ⁢
                        d
                      
                    
                    )
                  
                
              
              )
            
            ⁢
            
              x
              2
            
          
          -
          
            4
            ⁢
            
              c
              1
            
            ⁢
            px
          
          +
          
            p
            2
          
        
      
    
  




The fact that #JacFq(C)=h(1) gives the condition for N:

N=(p+1)2−4(p+1)c1+4(c21−c22d)  (3)

As mentioned, it is desirable to have N be almost prime, i.e., N=c·r with r prime and c small (e.g., c<2000).

For the present analysis, a prime number p is roughly the size of N0.5 (i.e., p ̃N0.5). A technique described by Weng, “Constructing hyperelliptic curves of genus 2 suitable for cryptography”, Mathematics of Computation, Vol. 72, No. 241, pp. 435-458 (2002), searches for parameters to provide prime p and almost prime N with a heuristic probability  ̃1/(log N)2. While this probability may be acceptable for some implementations, the technique of Weng relies on factorization of big integers, repeatedly in every step of the search, which makes the Weng technique computationally intensive (e.g., slow or unsuitable for devices with limited computing resources). The Weng article is incorporated herein by reference.
An exemplary algorithm described herein is more efficient than the technique of Weng for generating parameters for genus 2 cryptography. The exemplary algorithm includes parameterizing the coefficients ci (e.g., where i=1, 2, . . . n) as polynomials ci(x) and then generating “families of parameters” by factorizing quartic polynomials with small integral coefficients. In this representation, x is an integer, which may be selected as described further below.
An exemplary algorithm finds polynomials c1(x), c2(x), c3(x), c4(x)υQ[x], for example, all of the same degree (to control the sizes of parameters), satisfying the equation:

−2c1(x)c2(x)=2c3(x)c4(x)a+c23(x)b+c24(x)bd. 

Given a polynomial representation and the foregoing equation, p(x) can be written as:

p(x)=c21(x)+c22(x)d+c23(x)a+c24(x)ad+2c3(x)c4(x)bd, 

Given this representation of p, an exemplary algorithm lets x range through integer values (e.g., of certain sizes) until the value p(x) is a prime number. Once the value of p(x) is a prime number, Equation (3) can be used to compute the cardinality of the Jacobian (N) and check if it is almost prime (i.e., is N almost prime?).

The following lemma (Lemma 1) can help to avoid some inappropriate or sub-optimal choices of ci(x).
Lemma 1:
Let c1(x), c2(x), c3(x), c4(x) be linear polynomials in Q[x] such that:

2c1(x)c2(x)+2c3(x)c4(x)a+c23(x)b+c24(x)bd=0.

Then p(x)=c21(x)+c22(x)d+c23(x)a+c24(x)ad+2c3(x)c4(x)bd is reducible in Q[x].
Proof of Lemma 1.
Let c1(x), c2(x), c3(x), c4(x) be linear polynomials in Q[x] such that:

2c1(x)c2(x)+2c3(x)c4(x)a+c23(x)b+c24(x)bd=0.

Then we have:

−2c1(x)c2(x)=2c3(x)c4(x)a+c23(x)b+c24(x)bd  (4)

Let αεQ be a root of c1(x). Clearly,

0=−2c1(α)c2(α)=bc23(α)+2ac3(α)c4(α)+bdc24(α)=0  (5)

Examine the quadratic equations:

bX2+2aX+bd=0  (6)

bdX2+2aX+b=0  (7)

Both Equations (6) and (7) have discriminant Δ=(2a)2−4b(bd)=4(a2−b2d)>0, which is not a square in Q by the assumption on a, b and d, namely, that K is primitive. Therefore, Equation (5) holds if and only if c3(α)=c4(α)=0. Hence, c3(α)=c4(α)=0. By Equation (5) one can conclude that α is a zero of −2c1(x)c2(x) with multiplicity 2. Since c1(x) and c2(x) are linear, one must have c2(α)=0.

Therefore, the polynomial:

p(x)=c21(x)+c22(x)d+c23(x)a+c24(x)ad+2c3(x)c4(x)bd 

has α as a zero of multiplicity 2. So (x−α)2|p(x) in Q[x]. Obviously, p(x) is reducible.

Since it is desirable to want p(x) to be prime for some values xεZ, it is reasonable, given Lemma 1 and corresponding proof, to expect p(x) to be irreducible. Therefore, an exemplary technique chooses c3(x) and c4(x) to be quadratic polynomials, as elaborated with respect to Algorithm 1 below.
Algorithm 1: Parameter generator polynomials for K=Q(η), d≡2, 3 (mod 4).
Input: Integers a, b, d with d>0 squarefree, d≡2, 3 (mod 4), a2−b2d>0 not a square.
Output: Four quadratic polynomials c1(x), c2(x), c3(X), c4(x) and a quartic polynomial p(x) are generated such that they satisfy Equations (1) and (2). Polynomials N1(x) and N2(x) of degree 8 are generated as possible group orders.

    1: Repeat (e.g., “repeat” is an opening tag of a loop that corresponds to a closing tag “until” where intervening operations are performed until one or more conditions are satisfied).
    2: Repeat.
    3: Choose quadratic polynomials c3(x) and c4(X) in Z[x] with small coefficients and gcd(c3(x), c4(x))=1.
    4: Set n(x)=2c3(x)c4(x)a+c23(x)b+c24(x)bd.
    5: Until deg n(x)=4 and n(x)={tilde over (c)}1(x)·{tilde over (c)}2(x), deg {tilde over (c)}1(x)=2=deg {tilde over (c)}2(x), gcd({tilde over (c)}1(x), {tilde over (c)}2(x))=1, n(x) and {tilde over (c)}1(x) have the same content.
    6: Set c1(x)=−0.5 {tilde over (c)}1(x), c2(x)={tilde over (c)}2(x).
    7: Set p(x)=c21(x)+c22(x)d+c23(x)a+c24(x)ad+2c3(x)c4(x)bd.
    8: Until p(x) is irreducible and has no fixed prime divisor (a prime q is a fixed prime divisor of a polynomial f(x) with rational coefficients if q divides every integer-valued f(n) for integers n).
    9: Set N1(x)=(p(x)+1)2−4(p(x)+1)c1(x)+4(c21(x)−c22(x)d),
     N2(x)=(p(x)+1)2+4(p(x)+1)c1(x)+4(c21(x)−c22(x)d).


Algorithm 1: Parameter generator polynomials for K=Q(η), d≡1 (mod 4).
For the case d≡1 (mod 4), the Frobenius element can be written as:

π=c1+0.5c2(−1+d0.5)+η(c3+0.5c4(−1+d0.5)),ciεZ 

Again, π π=p gives

(c21+0.25(d−1)c22+ac23+0.5b(d−1)c3c4+0.25(a−b)(d−1)c24)+(2c1c2−c22+bc23+2(a−b)c3c4+(0.25b(d+3)−a)c24)(0.5(−1+d0.5))=p. 

The linear independence of 1 and 0.5(−1+d0.5) over Q implies the following two equations:

c21+0.25(d−1)c22+ac23+0.5b(d−1)c3c4+0.25(a−b)(d−1)c24=p  (8)

2c1c2−c22+bc23+2(a−b)c3c4+(0.25(b(d+3)−a))c24=0  (9)

The corresponding cardinality (or order) of the Jacobian is as follows:

N=(p+1)2−(4c1−2c2)(p+1)+4[c21−c1c2−0.25(d−1)c22]  (10)

Algorithm 2: Parameter generator polynomials for K=Q(η), d≡1 (mod 4)
Input: Integers a, b, d with d>0 squarefree, d≡1 (mod 4), a2−ab−0.25b2(d−1)>0 not a square.
Output: Four quadratic polynomials c1(x), c2(x), c3(x), c4(x) and a quartic polynomial p(x) are generated such that they satisfy the equations (8) and (9). Polynomials N1(x) and N2(x) of degree 8 are generated as possible group orders.

    1: Repeat (e.g., “repeat” is an opening tag of a loop that corresponds to a closing tag “until” where intervening operations are performed until one or more conditions are satisfied).
    2: Repeat.
    3: Choose quadratic polynomials c3(x) and c4(X) in Z[x] with small coefficients and gcd(c3(x), c4(x))=1.
    4: Set n(x)=2c3(x)c4(x)a−c24(x)a+c23(x)b−2c3(x)c4(x)b+0.25c24(x)b(d+3).
    5: Until deg n(x)=4 and n(x)={tilde over (c)}1(x)·{tilde over (c)}2(x), deg {tilde over (c)}1(x)=2=deg {tilde over (c)}2(x), gcd({tilde over (c)}1(x), {tilde over (c)}2(x))=1, n(x) and {tilde over (c)}1(x) have the same content.
    6: Set c1(x)={tilde over (c)}1(x), c2(x)=0.5(−{tilde over (c)}2(x)+c1(x)).
    7: Set p(x)=c21(x)+0.25c22(x)(d−1)+c23(x)a+0.25c24(x)a(d−1)+0.5c3(x)c4(x)b(d−1)−0.25bc24(x)(d−1).
    8: Until p(x) is irreducible and has no fixed prime divisor (a prime q is a fixed prime divisor of a polynomial f(x) with rational coefficients if q divides every integer-valued f(n) for integers n).
    9: Set:


N1(x)=(p(x)+1)2−(p(x)+1)(4c1(x)−2c2(x))+4(c21(x)−c1(x)c2(x)−0.25c22(x)(d−1),
N2(x)=(p(x)+1)2+(p(x)+1)(4c1(x)−2c2(x))+4(c21(x)−c1(x)c2(x)−0.25c22(x)(d−1).
The polynomials returned from Algorithms 1 and Algorithm 2 are candidates of parameter generator polynomials. These polynomials can be inserted with various integer values for x, where the values are of a suitable size, until p(x) is prime and N1(x) or N2(x) is almost prime. Hence, the Algorithms 1 and Algorithm 2 can provide for a parameter value for p (i.e., a large prime) and two cardinalities or orders N1 and N2, which also depend on the value of the integer x. This process is written formally as Algorithm 3, which follows.
Algorithm 3: Algorithm for generating parameters for HEC cryptography (HECC).
Input: Polynomials c1(x), p(x), N1(x) and N2(x) generated by Algorithm 1 or Algorithm 2; bit size of the desired size of the prime field over which the curve is defined, μ; and the maximum number of trials, M.
Output: Triples (p, N1, N2) for constructing hyperelliptic curves over Fp with CM by K=Q(η) whose Jacobians have almost prime group orders N1 or N2 ̃2(2μ); or “Not found”.

    1: Set number of trial m=0 (i.e., m=0, 1, . . . , M).
    2: Repeat. (e.g., “repeat” is an opening tag of a loop that corresponds to a closing tag “until” where intervening operations are performed until one or more conditions are satisfied).
    3: Choose x0 ̃20.25μ (i.e., an initial value for integer x, of a suitable size that depends on the bit size μ).
    4: If c1(x0) is an integer then
    5: p←p(x0).
    6: If p is prime, 2μ−1<p<2μ, and N1←N1(x0) or N2←N2(x0) is almost prime then
    7: Return (p, N1, N2).
    8: End if.
    9: End if.
    10: m←m+1.
    11: Until m=M.
    12: Return “Not Found”.


FIG. 1 shows an exemplary method 100 for determining a prime field and an order for an HEC over this prime field. The method commences in a definition block 104 that defines a quartic CM field. A representation block 108 represents coefficients of a Frobenius element of a HEC, over the defined field, as non-linear polynomials. For example, consider, the non-linear polynomials for the coefficients c1, c2, c3 and c4, which are a function of an integer x. In a selection and determination block 112, a value for the integer is selected and the product of the Frobenius element and its complex conjugate is determined (e.g., π π=p).
In the example of FIG. 1, a decision block 116 follows that decides if the product is a prime number “p”. If the decision block 116 decides that the product is not a prime number, then the method 100 returns to the selection and determination block 112 to select a different value for the integer x. However, if the product is a prime number, then the method 100 continues at a determination block 120 that determines the order (cardinality) of the Jacobian of the HEC over the prime field defined by this prime number. Another decision block 124 decides if the order is almost a prime number. If the decision block 124 decides that the order is not almost a prime number, then the method 100 continues at the selection and determination block 112 to select a different value for the integer x. However, if the decision block 124 decides that the order is almost a prime number, then the method 100 terminates in a termination block 128, as a prime (i.e., the product) and an order (e.g., N) have been found that meet certain criteria.
While the method 100 shows only a single order being determined in the determination block 120, as explained above, more than one order may be determined. For example, the method 100 may determine a triple (p, N1, N2) where the decision block 124 decides if one of the orders is almost prime, which may be sufficient. The existence of multiple orders stems from the multiplicity of solutions, as described with respect to Algorithm 1 and Algorithm 2, above.
The method 100 searches for factorizations of polynomials as opposed to the technique of Weng, which searches for factorizations of integers. The method 100 essentially parameterizes the coefficients of the Frobenius element as non-linear polynomials (e.g., polynomials having a degree greater than 1). In various examples, polynomials having a degree of two were used to represent the coefficients of the Frobenius element. As described herein, polynomials of higher degree may be optionally used; noting that, for sake of simplicity, second order polynomials suffice.
In the method 100, the decision block 116 decides if the product, which may be represented by an equation p(x), is a prime number or, in other words, is irreducible. In the decision block 124, the decision is made based on deciding if the order is almost irreducible. A large integer is almost prime if it can be written as a product of a large prime number and a relatively small cofactor. For example, the following 256-bit number N can be regarded as almost prime:
N=58216888249078746955854475856559517495479835454491180632120016819914968258608 where
N=24*3638555515567421684740904741034969843467489715905698789507501051244685516163, which is a product of a small number 24=16 and a large (252-bit) prime number. For purposes of the method 100, the standard for almost irreducible or almost prime can be determined by specifying one or more criteria (e.g., number of prime factors).
FIG. 2 shows an exemplary method 200 for a Diffie-Hellman protocol. A provision block 204, provides, for a defined CM field, a prime number “p” and a number of points “N” on a Jacobian of a HEC over the finite field with p elements wherein “p” and “N” are determined, at least in part, using non-linear polynomials of an integer “x”. A publication block 208 publishes the point “p” on the Jacobian for use in a Diffie-Hellman protocol.
Once the publication occurs, the method 200 may be used in a two-party key exchange as follows. As explained in the Background section, the DH protocol assumes that it is infeasible to compute gαβ (the shared secret) knowing only gα and gβ. According to the method 200, Alice and Bob agree to use a public point on the Jacobian as base g. Alice chooses a secret exponent α and then sends Bob gα. Bob chooses a secret exponent β and then sends Alice gβ. To derive the shared secret, Alice computes gβα and Bob computes gαβ.
FIG. 3 shows an exemplary system 300 that includes a computing device 301 for generating a public key 303 according to an exemplary method that relies on one or more algorithms 310. For example, the algorithms 310 can include Algorithm 1 312, Algorithm 2 314 and Algorithm 3 316, as described herein. In general, the algorithms rely on representing coefficients as non-linear polynomials, which can make generation of information for use in cryptography more efficient (e.g., generation of the public key 303).
The system 300 further includes a network 305 that allows for communication between parties and acquisition and sharing of cryptographic information. For example, parties Alice 320 and Bob 340 desire to communicate in a secure manner over the network 305. Alice 320 relies on a computing device 322 to generate a private key 323 while Bob 340 relies on a computing device 342 to generate a private key 343. According to the timeline 307, the computing device 301 generates and publishes the public key 303, which is acquired by the devices 322 and 342. The device 322 raises the public key 303 to a power determined by the private key 323 (i.e., the private key may simply be a scaler) and the device 342 raises the public key 303 to a power determined by the private key 343. The values determined by the device 322 and the device 342 are then transmitted to each other. Once received, the device 322 and the device 342 can determine a shared key by, for example, raising the public key to the power determined by a respective private key (i.e., the private key 323 for the device 322 and the private key 343 by the device 342).
While several possible schemes have been described, the information generated by the algorithms 310 may be used in any of a variety of secure transactions. For example, information may be used to secure products such as software products.
An exemplary computing device (e.g., the device 301 of FIG. 3) includes a processor; and processor executable instructions to define a CM field, to represent coefficients of a Frobenius element of a hyperelliptic curve over a prime field as non-linear polynomials that are functions of an integer x and to select a value for x whereby the product of the Frobenius element and its complex conjugate is a prime number. Such a device may further include instructions to determine the order of the Jacobian of the hyperelliptic curve where the order comprises an almost prime number. Such a device may further include a network interface configured to communicate the prime number, the almost prime number or the prime number and the almost prime number for use in a cryptographic protocol.
In various examples, a cryptographic protocol may be a discrete logarithm-based protocol (e.g., a protocol selected from a group consisting of an ElGammal protocol, a Diffie-Hellman protocol and a digital signature protocol).
An exemplary computing device optionally includes instructions to protect a software product using, directly or indirectly, a selected integer x that generates the prime number. For example, using the Jacobian of a hyperelliptic curve determined by a selected value for the integer x.
Trial Results: Implementation of the foregoing algorithms produced trial results that were compared to the results achieved using the technique described in the article by Weng. The exemplary algorithms generated (prime, group order) pairs (p, N) with respect to randomly chosen quartic CM fields, specified by parameters a, b, d of small sizes, with class number 1. Trial factorization of integers up to a fixed bound (10,000) was used for the technique of Weng.
Trials for p of size 128-bit (μ):
(A) In the case d≡2, 3 (mod 4), the exemplary Algorithm 3 generated parameter pairs (p, N) at an average rate of 2.1402 seconds per pair, while the technique of Weng generated pairs at 7.7538 seconds per pair.
(B) In the case d≡1 (mod 4), our method generates parameter pairs at an average rate of 3.6423 seconds per pair while the technique of Weng generated pairs at 11.4407 seconds per pair.
Trials for p of size 256-bit (μ):
(A) In the case d≡2, 3 (mod 4), the exemplary Algorithm 3 generated parameter pairs at an average rate of 21.7344 seconds per pair, while the technique of Weng generated pairs at 97.9592 seconds per pair.
(B) In the case d≡1 (mod 4), the exemplary Algorithm 3 generated parameter pairs at an average rate of 41.0917 seconds per pair, while the technique of Weng generated pairs at 108.5106 seconds per pair.
Trials demonstrated robust operation, noting that in rare instances the exemplary Algorithm 3 failed to find suitable parameters. Given the robust operation of Algorithm 3, on average, as the size of the prime p increases, Algorithm 3 performs better than the technique of Weng, if complete factorization of integers is used for the technique of Weng.
Trials were performed using PARI/GP, which is a widely used computer algebra system designed for fast computations in number theory (factorizations, algebraic number theory, elliptic curves, etc.) that also contains a large number of other useful functions to compute with mathematical entities such as matrices, polynomials, power series, algebraic numbers etc., and transcendental functions.
In the trial results that follow, the primes p(x0), corresponding to value x0, are of 128 bits and the group orders N(x0) are almost prime (in this case, a product of a positive integer<2000 and a prime number).
Example 1
Field Parameter Values a=20, b=1, d=19
Polynomials and p(x)

    
    
        c1(x)=−(5/2)x2−24x−39/2,
        c2(x)=12x2+42x+5,
        c3(x)=x2+2x+4,
        c4(x)=x2+9x+1.
        p(x)=(12721/4)x4+26610x3+(138247/2)x2+17520x+6829/4.
    
    


Orders N1(x) and N2(x)

    
    
        N1(x)=(161823841/16)x8+169252905x7+(4591135697/4)x6+3790760034x5+(45798567295/8)x4+2521811013x3+(2200243933/4)x2+61359456x+48815721/16,
        N2(x)=(161823841/16)x8+169252905x7+(4590881277/4)x6+3789617226x5+(45742665623/8)x4+2504037741x3+(2143518849/4)x2+58298352x+44551929/16.
    
    


Integers, Primes and Orders

    
    
        x0=548050991,
        p(x0)=286909637977764067855221276777587727961,
        N2(x0)=82317140364531637515130621054159952023115110860990352140958946602968889685624=23·103·99899442189965579508653666327864019445528047161396058423493867236612730201.
        x0=507822535,
        p(x0)=211499402528761325611378043169347082601,
        N1(x0)=44731997270023012615201443067044482876392989995456465952479290805233356211416=23·32·621277739861430730766686709264506706616569305492450916006656816739352169603.
    
    


Example 2
Field Parameter Values a=49, b=2, d=43
Polynomials and p(x)

    
    
        c1(x)=−19x2−81x−57,
        c2(x)=25x2+77x+37,
        c3(x)=3x2+9x+7,
        c4(x)=2x2+8x+4.
        p(x)=37137x4+245922x3+534667x2+411094x+103045.
    
    


Orders N1(x) and N2(x)

    
    
        N1(x)=1379156769x8+18265610628x7+100192309254x6+293537074164x5+495845231429x4+490539243800x3+279450495148x2+84849357864x+10641750132.
        N2(x)=1379156769x8+18265610628x7+100186664430x6+293475629244x5+495587670117x4+490018152864x3+278924635092x2+84595125192x+10594761156.
    
    


Integers, Primes and Orders

    
    
        x0=269037344,
        p(x0)=194561585104011195498898535676821242693,
        N1(x0)=37854210398185391119909734603213541810938851919821474895863614596469844460916=22·7·17·79525652097028132604852383620196516409535403192902258184587425622835807691
        x0=272775528,
        p(x0)=205602527203239038572121987052863495221,
        N1(x0)=42272399192358648873426271719066469393935346629841579846207943767125190226868=22·3·101·34878217155411426463222996467876624912487909760595362909412494857364018339.
    
    


Example 3
Field Parameter Values a=24, b=7, d=21
Polynomials and p(x)

    
    
        c1(x)=−7x2−43x−15,
        c2(x)=7x2+36x+23,
        c3(x)=x2+8x+7,
        c4(x)=2x2+9x+3.
        p(x)=798x4+8316x3+26156x2+22938x+6281.
    
    


Orders N1(x) and N2(x)

    
    
        N1(x)=636804x8+13272336x7+110934348x6+472179624x5+1078878880x4+1312636376x3+863392212x2+292135424x+40121116.
        N2(x)=636804x8+13272336x7+110867316x6+471091656x5+1072454392x4+1296182464x3+846125708x2+284206952x+38789332
    
    


Integers, Primes and Orders

    
    
        x0=690918783,
        p(x0)=181848990878426194442759846747024276669,
        N1(x0)=33069055483501933273197540182643492422771446574415202943269985210245986359248=24·2066815967718870829574846261415218276423215410900950183954374075640374147453.
        x0=788336903,
        p(x0)=308212554264460561682107015586616490669,
        N2(x0)=94994978606223046358527917755472879305246966478154462196668039263663901851088=24·5937186162888940397407994859717054956577935404884653887291752453978993865693.
    
    


Example 4
Field Parameter Values a=29, b=5, d=37
Polynomials and p(x)

    
    
        c1(x)=−(1/2)x2+24x+23/2,
        c2(x)=14x2+96x+30,
        c3(x)=3x2+8x+3,
        c4(x)=x2+8x+1.
        p(x)=(10045/4)x4+31896x3+(228005/2)x2+60120x+35917/4.
    
    


Orders N1(x) and N2(x)

    
    
        N1(x)=(100902025/16)x8+160197660x7+(6360030839/4)x6+7575598140x5+(135066868587/8)x4+14293625076x3+(22676894823/4)x2+1081276596x+1291797801/16.
        N2(x)=(100902025/16)x8+160197660x7+(6359428139/4)x6+7573202220x5+(134962592611/8)x4+14267236308x3+(22615799123/4)x2+1077869028x+1287774649/16.
    
    


Integers, Primes and Orders

    
    
        x0=558110127,
        p(x0)=243651770406870114098910643106437464421,
        N1(x0)=59366185222402147088423186429975169231560942759037695692632492437442791846592=26·33·34355431262964205490985640295124519231227397429998666488791 951642038652689.
        x0=556747959,
        p(x0)=241281761119813502902407304706517574357,
        N2(x0)=58216888249078746955854475856559517495479835454491180632120016819914968258608=24·3638555515567421684740904741034969843467489715905698789507501051244685516163.

Exemplary Computing Device

    
    


FIG. 4 illustrates an exemplary computing device 400 that may be used to implement various exemplary components and in forming an exemplary system. For example, the computing devices 301, 322 and 342 of the system of FIG. 3 may include various features of the device 400.
In a very basic configuration, computing device 400 typically includes at least one processing unit 402 and system memory 404. Depending on the exact configuration and type of computing device, system memory 404 may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination of the two. System memory 404 typically includes an operating system 405, one or more program modules 406, and may include program data 407. The operating system 405 include a component-based framework 420 that supports components (including properties and events), objects, inheritance, polymorphism, reflection, and provides an object-oriented component-based application programming interface (API), such as that of the .NETTM Framework marketed by Microsoft Corporation, Redmond, Wash. The device 400 is of a very basic configuration demarcated by a dashed line 408. Again, a terminal may have fewer components but will interact with a computing device that may have such a basic configuration.
Computing device 400 may have additional features or functionality. For example, computing device 400 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated in FIG. 4 by removable storage 409 and non-removable storage 410. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. System memory 404, removable storage 409 and non-removable storage 410 are all examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computing device 900. Any such computer storage media may be part of device 400. Computing device 900 may also have input device(s) 412 such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 414 such as a display, speakers, printer, etc. may also be included. These devices are well know in the art and need not be discussed at length here.
Computing device 400 may also contain communication connections 416 that allow the device to communicate with other computing devices 418, such as over a network. Communication connections 416 are one example of communication media. Communication media may typically be embodied by computer readable instructions, data structures, program modules, or other data forms. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

## Claims

1. A method, implemented at least in part by a computing device, comprising:
defining, by the computing device, a Complex Multiplication (CM) field;
representing coefficients of a Frobenius element of a hyperelliptic curve over a prime field as non-linear polynomials that are functions of an integer x wherein the Frobenius element comprises an element of a ring of integers of the CM field; and
iteratively selecting, by the computing device, a value for x until a product of the Frobenius element and a complex conjugate of the Frobenius element is a prime number.

2. The method of claim 1 further comprising determining an order of a Jacobian of the hyperelliptic curve.

3. The method of claim 2 further comprising determining if the order comprises an almost prime number, the almost prime number being represented as a product of a large prime number and a small cofactor.

4. The method of claim 3 further comprising implementing a discrete logarithm-based cryptography protocol using at least the prime number or the almost prime number.

5. The method of claim 4 wherein the protocol comprises a Diffie-Hellman protocol.

6. The method of claim 2 wherein the selected value for x generates an almost prime number for the order as a value of the non-linear polynomials.

7. The method of claim 1 wherein the non-linear polynomials comprise at least one second order polynomial.

8. The method of claim 1 comprising searching for factorizations of polynomials.

9. The method of claim 1 wherein the selected value for x generates a prime number as a value of the non-linear polynomials.

10. A method, implemented at least in part by a computing device, comprising:
parameterizing coefficients of the Frobenius element of a hyperelliptic curve as non-linear polynomials that include polynomials that depend on a common variable; and
based at least in part on the parameterizing, determining, by the computing device, the common variable that yields a prime number as a product of the Frobenius element and a complex conjugate of the Frobenius element and determining, by the computing device, one or more orders for a Jacobian of the hyperelliptic curve wherein at least one of the orders comprises an almost prime number.

11. The method of claim 10 wherein the common variable comprises integer values.

12. The method of claim 10 wherein the determining one or more orders comprises determining two orders.

13. The method of claim 10 wherein the non-linear polynomials comprise a second order polynomial.

14. A computing device comprising:
one or more processors; and
processor executable instructions to define a Complex Multiplication (CM) field, to represent coefficients of a Frobenius element of a hyperelliptic curve over a prime field as non-linear polynomials that are functions of an integer x wherein the Frobenius element comprises an element of a ring of integers of the CM field and to select a value for x that yields a prime number as a solution for a closed form equation that includes the non-linear polynomials, wherein the closed form equation represents a product of the Frobenius element and a complex conjugate of the Frobenius element as the prime number.

15. The computing device of claim 14 further comprising instructions to determine an order of a Jacobian of the hyperelliptic curve wherein the order comprises an almost prime number.

16. The computing device of claim 15 further comprising a network interface configured to communicate the prime number, the almost prime number or the prime number and the almost prime number for use in a cryptographic protocol.

17. The computing device of claim 16 wherein the cryptographic protocol comprises a discrete logarithm-based protocol.

18. The computing device of claim 16 wherein the cryptographic protocol comprises a protocol selected from a group consisting of an ElGammal protocol, a Diffie-Hellman protocol and a digital signature protocol.

19. The computing device of claim 14 further comprising instructions to protect a software product using, directly or indirectly, the Jacobian of a hyperelliptic curve determined by the selected value of the integer x.