新概念洋務軟件密碼學FHE之代数基础(二)中国剩余定理
ChrisChenFHE之代数基础(二)中国剩余定理
引言
中国剩余定理(Chinese Remainder theorem, CRT),又称孙子定理,是数论中一个关于一元线性同余方程组的定理,说明了一元线性同余方程组有解的判定及求解方法。其问题最早可见于南北朝时期的《孙子算经》,描述如下:
有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?
白话文:一个整数除以3余2,除以5余3,除以7余2,求该整数。
这个问题怎么解呢?最初对该问题给出完整系统解答的是宋朝数学家秦九韶,后来明朝数学家程大位将该解法收录在《孙子歌诀》中:
三人同行七十稀,五树梅花廿一支,七子团圆正半月,除百零五便得知
白话文:将除以3得到的余数乘以70,将除以5得到的余数乘以21,将除以7得到的余数乘以15,全部加起来后再减去105或者105的整数倍,即得答案。
将该解法用算式表示即为:
70×2+21×3+15×2=233=2×105+23
从特殊到一般
定理叙述
若q1,q2,...,qn均为大于1的整数,那么当q1,q2,...,qn两两互质时,对任意ai∈Z且0≤ai<qi(0<i≤n),以下一元线性同余方程组:
(S):⎩⎨⎧x≡a1(modq1)x≡a2(modq2)⋮x≡an(modqn)
有解。其中一个解可通过如下方法构造得到:
记⎩⎨⎧Q=q1×q2×⋯×qn=∏i=1nqiQi=Q/qi,∀i∈{1,2,⋯,n}Qi−1Qi≡1(modqi),∀i∈{1,2,⋯,n}
x≡i=1∑naiQi−1Qi≡i=1∑nai×[(qiQ)−1]qiqi×qiQ(modQ)
通解:x≡i=1∑naiQi−1Qi+kQ,k∈Z
在模Q意义下有唯一解:x≡i=1∑naiQi−1Qi(modQ)
例子
我们重新看《孙子算经》中的例子,该问题定义了以下方程组
(S):⎩⎨⎧x≡2(mod3)x≡3(mod5)x≡2(mod7)
三个模数⎩⎨⎧q1=3q2=5q3=7,乘积Q=105,对应⎩⎨⎧Q1=3105=35Q2=5105=21Q3=7105=15,
求数论倒数(乘法逆元)⎩⎨⎧Q1−1=2(mod3)Q2−1=1(mod5)Q3−1=1(mod7)。由此我们可以计算出该模数集(i.e.,3,5,7)的基础解:
70=2×35≡⎩⎨⎧1(mod3)0(mod5)0(mod7),21=1×21≡⎩⎨⎧0(mod3)1(mod5)0(mod7),15=1×15≡⎩⎨⎧0(mod3)0(mod5)1(mod7),
可以看到,所谓“基础解”,即轮流对其中一个模数取模为1,对其他模数取模为0得到的一组解。它可以由Qi−1Qi,∀i∈{1,2,⋯,n}计算得到。
而后,我们将这几组Qi−1Qi累加:
2×70+3×21+2×15≡⎩⎨⎧2×1+3×0+2×0≡2(mod3)2×0+3×1+2×0≡3(mod5)2×0+3×0+2×1≡2(mod7)=233
通解:x=233+k×105,k∈Z
最小正整数解:x=233−2×105=23
剩余数表示系统(RNS)
由CRT,我们可以构建一套全新的数字表示系统——剩余数表示系统(Residue Number System, RNS)。这是一个将数值很大的数表示为几个数值小的数的系统。
构建方式
一个RNS系统由一个两两互质的模数集(moduli)定义:
{q1,q2,q3,…,qn}
在该模数集下,任意整数x可表示为:
{x1,x2,x3,…,xn},xi=x(modqi)
运算
在RNS系统下,原数x的加减乘除运算可以分解为每个xi的运算。
我们以模数集(8,7,5,3)为例:
这样分解的好处在于,当x很大的时候,我们不必直接对x进行运算,而是可以并行地对每个小数xi进行运算,提高速度。
下图展示了RNS的ALU结构:
拓展
更多更详细的内容,可参见
更高的视角:环同构
整数环
RNS:向我们揭示了一个整数环的自同构:
xmodq≅(∣x∣q1,⋯,∣x∣qk),即Zq≅i=1∏kZqi。
多项式环
引理
令(R,+,⋅)是一个交换环,而(Ii)1≤i≤n是R的一族两两互素的理想(ideal),即对任何i=j均有Ii+Ij=R,由交换环性质,有
I=I1∩I2∩⋯∩Ik=I1I2⋯In
此时我们有一组同构:
R/IxmodI≅(R/I1)×⋯×(R/In)≅(xmodI1,…,xmodIn)
特别的,当⋂i=1kIi=0时,有以下同构:
φ:R≅(R/I1)×⋯×(R/In)
有了以上引理后,由RNS定义的整数环同构的可以自然而然推广到多项式环上。
多项式环同构
若已知 Rq=Zq[X]/⟨f(X)⟩ 且 (在 Zq[X] 上) f(x)=g(x)⋅h(x) ,
其中 g(x) 与 h(x) 互素,则以下映射为同构映射:
π:Zq[X]/⟨f(X)⟩→Zq[X]/⟨g(X)⟩×Zq[X]/⟨h(X)⟩简记为Pd(x)↦(Ad1(x),Bd2(x))
其中假设 d=d1+d2 分别是多项式 f(x),g(x),h(x) 的次数,
并且
⎩⎨⎧Ad1(x)=Pd(x)modg(x)Bd2(x)=Pd(x)modh(x)
也就是说, Rq上的 d 次多项式 Pd(x) ,可转换为Pd(x)(modg(x)) 得到的 d1 次多项式 Ad(x) 和 Pd(x)(modh(x)) 得到的 d2 次多项式Bd(x) 。该转换为同构映射。
基于该多项式环的同构,我们可以引出NTT。