Ring-Lwe

RLWE 密鑰交換的 FFT 乘法

  • April 26, 2018

我試圖將兩個多項式商環相乘 $ R=Z[x]/\phi(x) $ 在使用快速傅里葉變換的鼠尾草中:

a=Rq.random_element()

R. = PolynomialRing(GF(40961)) # 整數 Y 的高斯場。

= R.quotient(X^(dimension) + 1) # Cyclotomic field

輸出=Y(a)*Y(a )

我在 github 上找到了以下程式碼來完成這項工作,但它適用於簡單的多項式,當我為商多項式執行此程式碼時,它給了我以下類型錯誤

在此處輸入圖像描述

Sage 本身有一個內部的負循環卷積,這是這裡所必需的。為避免類型錯誤,我們將多項式轉換為係數列表,並使用它們來代替:

from sage.rings.polynomial.convolution import _negaconvolution_fft

n = 10 # degree 1024
Rq = GF(40961)
R.<X> = PolynomialRing(Rq)
S.<x> = R.quotient_ring(X^(2^n) + 1)
u = S.random_element()
v = S.random_element()

w_1 = S(_negaconvolution_fft(list(u), list(v), n))
w_2 = u * v
assert(w_1 == w_2)

引用自:https://crypto.stackexchange.com/questions/58689