Skip to main content

中國餘式定理與同構特性

•3 min•685 words

簡介

中國餘式定理Chinese Remainder Theorem(CRT)在密碼理論當中屬於重要的概念,尤其在RSA密碼系統裡也扮演重要的角色

中國餘式定理

CRT主要想解決的問題是找到共同的數針對不同的模運算式,這種在像是RSA密碼系統計算合成數nn取決於pp及qq兩個質數很有幫助

對於 n1,n2,⋯ ,nmn_{1}, n_{2}, \cdots, n_{m} 以及 r1,r2,⋯ ,rmr_{1}, r_{2},\cdots, r_{m},ni⊥nj,i≠jn_{i} \perp n_{j}, i \neq j,能夠組成各自的聯立方程式:

x≡rk  (mod,nk),1≤k≤mx \equiv r_{k} \>\> (mod , n_{k}), 1 \leq k \leq m

透過上述的每一個聯立方程式可以找出xx:

x=r1N1(N1−1  mod  n1)+⋯+rmNm(Nm−1  mod  nm)  mod  Nx = r_{1}N_{1}(N_{1}^{-1} \>\> mod \>\> n_{1}) + \cdots + r_{m}N_{m}(N_{m}^{-1} \>\> mod \>\> n_{m}) \>\> mod \>\> N

其中N=n1n2⋯nmN = n_{1}n_{2} \cdots n_{m}以及Ni=N/niN_{i} = N/n_{i}

舉例:

n1=3,n2=4,n3=7,r1=1,r2=3,r3=1n_{1} = 3, n_{2} = 4, n_{3} = 7, r_{1} = 1, r_{2} = 3, r_{3} = 1可以組成下列的聯立方程式:

{x≡1  (mod  3)x≡4  (mod  4)x≡1  (mod  7)\begin{cases} x \equiv 1 \>\> (mod \>\> 3)\\ x \equiv 4 \>\> (mod \>\> 4)\\ x \equiv 1 \>\> (mod \>\> 7) \end{cases}

並且N=n1n2n3=3∗4∗7=84,N1=N/n1=84/3=28,N2=N/n2=84/4=21,N3=N/n3=84/7=12N = n_{1}n_{2}n_{3} = 3*4*7 = 84, N_{1} = N/n_{1} = 84/3 = 28, N_{2} = N/n_{2} = 84/4 = 21, N_{3} = N/n_{3} = 84/7 = 12

接著找各個NiN_{i}的反元素,

N1−1=28−1  mod  3≡1  mod  3N2−1=21−1  mod  4≡1  mod  4N3−1=12−1  mod  7≡3  mod  7N_{1}^{-1} = 28^{-1} \>\> mod \>\> 3 \equiv 1 \>\> mod \>\> 3\\ N_{2}^{-1} = 21^{-1} \>\> mod \>\> 4 \equiv 1 \>\> mod \>\> 4\\N_{3}^{-1} = 12^{-1} \>\> mod \>\> 7 \equiv 3 \>\> mod \>\> 7

這樣就能可以找到xx:

x=(1×28×1+3×21×1+1×12×3)  mod  84≡43  (mod  84)x = (1 \times 28 \times 1 + 3 \times 21 \times 1 + 1 \times 12 \times 3) \>\> mod \>\> 84 \equiv 43 \>\> (mod \>\> 84)

同構 Isomorphism

符合CRT的聯立方程式具有同構的特性,假設 Zn={0,1,2,⋯ ,n−1}Z_{n} = \{0, 1, 2,\cdots, n-1\} 以及 n1,n2,⋯ ,nmn_{1},n_{2},\cdots, n_{m},ni⊥nj,i≠jn_{i} \perp n_{j}, i \neq j

Isomorphism:Zn→Zn1×Zn2×⋯×Znm:ψ(x)→(x  mod  n1,x  mod  n2,⋯ ,x  mod  nm)Isomorphism: Z_{n} \to Z_{n_{1}} \times Z_{n_{2}} \times \cdots \times Z_{n_{m}}: \\ \psi(x) \to (x \>\> mod \>\> n_{1}, x \>\> mod \>\> n_{2}, \cdots, x \>\> mod \>\> n_{m})

使用CRT找到 xx 透過 ψ−1(x1,x2,⋯ ,xm)\psi^{-1}(x_{1},x_{2},\cdots, x_{m})

舉例:

n=pq=3×5=15n = pq = 3 \times 5 = 15,可以看成Z15=Z3×Z5Z_{15} = Z_{3} \times Z_{5}

可以看成0→(0,0)2→(2,2)7→(1,2)10→(1,0)\begin{aligned}\text{0} \to (0, 0)\\ \text{2} \to (2, 2) \\ \text{7} \to (1 ,2)\\ \text{10} \to (1, 0)\end{aligned}等等

(7+10)  mod  15=2(7 + 10) \>\> mod \>\> 15 = 2 可以看成 (1,2)+(1,0)=(2,2)→2(1, 2) + (1, 0) = (2, 2) \to 2

或者(7×10)  mod  15=10(7 \times 10) \>\> mod \>\> 15 = 10可以看成(1,2)×(1,0)=(1,0)→10(1, 2) \times (1, 0) = (1, 0) \to 10

前面提到主要對RSA有用就是因為有同構的特性:

計算x=ab  mod  pqx = a^{b} \>\> mod \>\> pq,pqpq可以想成nn,代表nn的群來自Zn→Zp×ZqZ_{n} \to Z_{p} \times Z_{q},以及k=len(pq)k = len(pq)的長度

ab  mod  n→(ab  mod  n  mod  p,ab  mod  n  mod,q)=(ab  mod  p,ab  mod  q)=((a  mod  p)b  mod  p−1  mod  p,(a  mod  q)b  mod  q−1  mod  q)=(x1,x2)a^{b} \>\> mod \>\> n \\ \to (a^{b} \>\> mod \>\> n \>\> mod \>\> p, a^{b} \>\> mod \>\> n \>\> mod , q)\\ = (a^{b} \>\> mod \>\> p, a^{b} \>\> mod \>\> q) \\ = ((a \>\> mod \>\> p)^{b \>\> mod \>\> p-1} \>\> mod \>\> p, (a \>\> mod \>\> q)^{b \>\> mod \>\> q-1} \>\> mod \>\> q)\\ = (x_{1}, x_{2})

所以ab  mod  n=ψ−1(x1,x2)a^{b} \>\> mod \>\> n = \psi^{-1} (x_{1}, x_{2}),計算 ab  mod  na^{b} \>\> mod \>\> n 需要 O(k3)O(k^{3}) 的時間

...quare-multiply-algorithm|Square and Multiply 演算法]] 計算$c = m^{e} \ \ mod \ \ n$只需要少量的乘法就可以。 另外就是透過[[中國餘式定理與同構特性]]的特性計算$m = c^{d} \ \ mod \ \ n$: 首先設定$sk = (d{1},...

Referenced in this post