2

In NTRUEncryption, I seen the trucated polynimials, but I cannot understand the trunacated polynomial calculation.
So, could tell me anyone How we calculate the truncated polynomial?

sravan nagiri
  • 95
  • 3
  • 10
  • 2
    I'm voting to close this question as off-topic because this is not directly related to programming. [crypto.se] or [math.se] are better suited for questions like this. – Artjom B. Jan 31 '16 at 10:36
  • Stack Overflow is a site for programming and development questions. This question appears to be off-topic because it is not about programming or development. See [What topics can I ask about here](http://stackoverflow.com/help/on-topic) in the Help Center. Perhaps [Mathematics Stack Exchange](http://math.stackexchange.com/) would be a better place to ask. – jww Jul 06 '18 at 02:17
  • Also see OnBoard Security's [NTRU Resources](https://www.onboardsecurity.com/products/ntru-crypto/ntru-resources). – jww Jul 06 '18 at 02:19

1 Answers1

2

The polynomials are truncated in the sense that they only have coefficients up to a certain degree.

Here is how you truncate the product of two truncated polynomials (the sum is trivial):

Assume you have two truncated polynomials, i.e. two polynomials of degree no greater than n-1

a = a[0] + a[1]X + ... + a[n-1]X^(n-1)
b = b[0] + b[1]X + ... + b[n-1]X^(n-1)

Then their "truncated" product is defined as the polynomial

a * b = c[0] + c[1]X + ... +c[n-1]X^(n-1)

where the c[k] coefficients are computed as follow:

  1. Reverse b[0]..b[n-1] to get b[n-1]..b[0].
  2. Rotate the result of step 1 above k+1 times to the right and get b[k]..b[0]b[n-1]..b[k+1]
  3. Denote with b_k[0]..b_k[n-1] the array calculated in 2.

Now define

c[k] = a[0]b_k[0] + a[1]b_k[1] + ... + a[n-1]b_k[n-1].

This operation can also be made by multiplying the polynomials a and b in the usual way and then truncating the result to the degree n-1. The reason for the algorithm above is to avoid computing coefficients that will not be used in the final result.

Leandro Caniglia
  • 14,495
  • 4
  • 29
  • 51