Page 325 - Hardware Implementation of Finite-Field Arithmetic
P. 325

An Example of Application—Elliptic Curve Cryptography        305


               10.5.1 Computation Resources
               The computation primitives for executing the elliptic-curve operations
                                                                   m
               are: addition, multiplication, division, and squaring over GF(2 ). The
               first one amounts to the component-by-component addition of the
               corresponding polynomials. The corresponding circuit is made up of
               m XOR gates, and its computation time is equal to 1 clock cycle. For
               multiplying, the generic interleaved_mult.vhd model of Chap. 7 (Sec.
               7.1.2) can be used. For dividing, a simplified version of binary
               Algorithm 6.5, adapted to the case where p = 2, is described in App. C.
               The corresponding generic model is binary_algorithm_polynomials.vhd.
               Appendix C also includes a specific algorithm for squaring over
                   163
               GF(2 ). The corresponding model is square_163_7_6_3.vhd.
               10.5.2 Point Addition
               A datapath for computing Eq. (10.16)


                                                   2
                        λ = (y  +  y )/(x  +  x )  x  = λ  +  λ  +  x  +  x  +  1
                             1   2   1    2     3           1   2
                                  y  = λ(x +  x )  +  x  +  y
                                   3    1   3    3   1
               is shown in Fig. 10.1. According to Eq. (10.69) and to the structure of
               the datapath, the computation time is approximately equal to

                           T       ≈ m(T        +  T     )          (10.72)
                            point-addition  mod-f-product  mod-f-division

                         y 1  y 2  x 1  x 2                x 1  x 3


                                                 lambda


                                         start_div   mod f(x)    start_mult
                           mod f(x) divider
                                         div_done    multiplier  mult_done
                                 lambda
                                                               x 3
                                                               y
                        square                                 1
               lambda_square



                              1                          y 3



                            x 3

               FIGURE 10.1  Point addition.
   320   321   322   323   324   325   326   327   328   329   330