中國餘式定理Chinese Remainder Theorem(CRT)在密碼理論當中屬於重要的概念,尤其在RSA密碼系統裡也扮演重要的角色
CRT主要想解決的問題是找到共同的數針對不同的模運算式,這種在像是RSA密碼系統計算合成數n取決於p及q兩個質數很有幫助
對於 n1,n2,⋯,nm 以及 r1,r2,⋯,rm,ni⊥nj,i=j,能夠組成各自的聯立方程式:
x≡rk(mod,nk),1≤k≤m
透過上述的每一個聯立方程式可以找出x:
x=r1N1(N1−1modn1)+⋯+rmNm(Nm−1modnm)modN
其中N=n1n2⋯nm以及Ni=N/ni
舉例:
n1=3,n2=4,n3=7,r1=1,r2=3,r3=1可以組成下列的聯立方程式:
⎩⎨⎧x≡1(mod3)x≡4(mod4)x≡1(mod7)
並且N=n1n2n3=3∗4∗7=84,N1=N/n1=84/3=28,N2=N/n2=84/4=21,N3=N/n3=84/7=12
接著找各個Ni的反元素,
N1−1=28−1mod3≡1mod3N2−1=21−1mod4≡1mod4N3−1=12−1mod7≡3mod7
這樣就能可以找到x:
x=(1×28×1+3×21×1+1×12×3)mod84≡43(mod84)
符合CRT的聯立方程式具有同構的特性,假設 Zn={0,1,2,⋯,n−1} 以及 n1,n2,⋯,nm,ni⊥nj,i=j
Isomorphism:Zn→Zn1×Zn2×⋯×Znm:ψ(x)→(xmodn1,xmodn2,⋯,xmodnm)
使用CRT找到 x 透過 ψ−1(x1,x2,⋯,xm)
舉例:
n=pq=3×5=15,可以看成Z15=Z3×Z5
可以看成0→(0,0)2→(2,2)7→(1,2)10→(1,0)等等
(7+10)mod15=2 可以看成 (1,2)+(1,0)=(2,2)→2
或者(7×10)mod15=10可以看成(1,2)×(1,0)=(1,0)→10
前面提到主要對RSA有用就是因為有同構的特性:
計算x=abmodpq,pq可以想成n,代表n的群來自Zn→Zp×Zq,以及k=len(pq)的長度
abmodn→(abmodnmodp,abmodnmod,q)=(abmodp,abmodq)=((amodp)bmodp−1modp,(amodq)bmodq−1modq)=(x1,x2)
所以abmodn=ψ−1(x1,x2),計算 abmodn 需要 O(k3) 的時間