Itoh–Tsujii inversion algorithm

From testwiki
Jump to navigation Jump to search

While the algorithm is often called the Itoh-Tsujii algorithm, it was first presented by Feng.[1] Feng's paper was received on March 13, 1987 and published in October 1989. Itoh and Tsujii's paper was received on July 8, 1987 and published in 1988.[2]

Feng and Itoh-Tsujii algorithm is first used to invert elements in finite field Template:Math using the normal basis representation of elements, however, it is generic and can be used for other bases, such as the polynomial basis. It can also be used in any finite field Template:Math.

The algorithm is as follows:

Input: A ∈ GF(pm)
Output: A−1
  1. r ← (pm − 1)/(p − 1)
  2. compute Ar−1 in GF(pm)
  3. compute Ar = Ar−1 · A
  4. compute (Ar)−1 in GF(p)
  5. compute A−1 = (Ar)−1 · Ar−1
  6. return A−1

This algorithm is fast because steps 3 and 5 both involve operations in the subfield GF(p). Similarly, if a small value of p is used, a lookup table can be used for inversion in step 4. The majority of time spent in this algorithm is in step 2, the first exponentiation. This is one reason why this algorithm is well suited for the normal basis, since squaring and exponentiation are relatively easy in that basis.

This algorithm is based on the fact that Template:Math is a cyclic group of order Template:Math. Given a nonzero element Template:Math in finite field Template:Math, we have A1=A2m2=A2m1A2m2A2m3A22A21=i=1m1A2i.

The above Template:Math expression itself is close to that of the multiplicative Norm function in finite field, which is defined as Norm(A)=i=0m1A2i.

This viewpoint leads us to consider the additive absolute Trace function [3] , which is defined as Tr(A)=i=0m1A2i.

If Template:Math=0, then we have A=i=1m1A2i and can express Template:Math as A1=A2i=1m1A2i=i=1m1A2i2=j=0m2(A2)2j1.

In some Template:Maths, for example, Template:Math used in Advanced Encryption Standard (AES), this formula needs 1 less multiplication operation than Feng and Itoh-Tsujii algorithm for elements with Trace value 0: because 0=Tr(A)=A+A2+A4+A8+A16+A32+A64+A128, we have A=A2+A4+A8+A16+A32+A64+A128 and A1=1+A2+A6+A14+A30+A62+A126=1+{(A+A3+A7)+[(A+A3+A7)8A7]}2.

This additive formula needs 3 multiplications, 4 additions and 6 squarings.

But the multiplicative formula A1=A254=A2A4A8A16A32A64A128={A(AA2A4)2(AA2A4)16}2 needs 4 multiplications and 7 squarings.

See also

References

Template:Reflist