Math Labs

Số học và Lý thuyết số

Định lý phần dư Trung Hoa

Một hệ đồng dư với các môđun nguyên tố cùng nhau luôn có nghiệm duy nhất theo môđun tích của chúng.

Trực giácĐếm quân mà không cần đếm quá 77

Một vị tướng xếp quân theo hàng 33 thấy thừa 22; theo hàng 55 thừa 33; theo hàng 77 thừa 22. Có bao nhiêu người lính? Dù vị tướng chưa từng đếm quá 77, ba số dư nhỏ bé (2,3,2)(2,3,2) đó đã ghim chặt quân số chính xác theo môđun 3×5×7=1053\times5\times7=105: đáp số là 2323 (cộng bất kỳ bội nào của 105105). Đây là định lý phần dư Trung Hoa (CRT): miễn là các môđun đôi một không có ước chung, việc biết số dư theo từng mim_i mang đúng lượng thông tin như biết số dư theo tích m1m2⋯mkm_1 m_2\cdots m_k của chúng. Nó cho phép ta tách một phép tính khó theo một số rất lớn thành nhiều phép tính dễ, độc lập theo các thừa số của nó, rồi lắp ghép kết quả lại.

Đường tròn 15 điểm với dây cung biểu diễn x thành 4x theo môđun 15; số dư mod 3 giữ nguyên, số dư mod 5 đổi dấu.
Với m=15=3⋅5m=15=3\cdot5, ánh xạ dây cung là x↦4x mod 15x\mapsto4x\bmod15. Vì 4≡1(mod3)4\equiv1\pmod3 và 4≡−1(mod5)4\equiv-1\pmod5, nó giữ nguyên số dư mod 3 và đổi dấu số dư mod 5; đây là tác động trên tích vành phía sau định lý CRT.

Phổ thôngPhát biểu và công thức tường minh

Định nghĩa: Hệ đồng dư đồng thời

Cho các môđun m1,…,mkm_1,\dots,m_k đôi một nguyên tố cùng nhau — gcd⁡(mi,mj)=1(i≠j)\gcd(m_i,m_j)=1\quad(i\neq j) — và các số nguyên bất kỳ a1,…,aka_1,\dots,a_k, hệ x≡ai(modmi)(1≤i≤k)x \equiv a_i \pmod{m_i}\quad(1\le i\le k) tìm một số nguyên xx đồng thời có số dư aia_i theo môđun mim_i với mọi ii. Đặt M=m1m2⋯mk,Mi=M/miM = m_1 m_2 \cdots m_k,\quad M_i = M/m_i và gọi yiy_i là nghịch đảo của MiM_i theo môđun mim_i (tức Miyi≡1(modmi)M_i y_i \equiv 1 \pmod{m_i}, tồn tại vì gcd⁡(Mi,mi)=1\gcd(M_i,m_i)=1), nghiệm được cho tường minh bởi x≡∑i=1kaiMiyi(modM)x \equiv \sum_{i=1}^{k} a_i M_i y_i \pmod{M}.

x≡ai(modmi)(1≤i≤k),gcd⁡(mi,mj)=1 (i≠j)x \equiv a_i \pmod{m_i}\quad(1\le i\le k),\qquad \gcd(m_i,m_j)=1\ (i\neq j)

Mỗi số hạng aiMiyia_i M_i y_i trong tổng được thiết kế để ≡ai(modmi)\equiv a_i \pmod{m_i} (vì Miyi≡1(modmi)M_i y_i\equiv1\pmod{m_i}) và ≡0(modmj)\equiv 0 \pmod{m_j} với mọi j≠ij\neq i (vì mjm_j là một thừa số của Mi=M/miM_i = M/m_i). Nên khi rút gọn toàn bộ tổng theo một mim_i cố định, mọi số hạng trừ số hạng thứ ii đều triệt tiêu, để lại aia_i — đúng như yêu cầu.

x≡∑i=1kaiMiyi(modM),M=m1⋯mk, Mi=M/mi, Miyi≡1(modmi)x \equiv \sum_{i=1}^{k} a_i M_i y_i \pmod{M},\qquad M = m_1\cdots m_k,\ M_i = M/m_i,\ M_i y_i \equiv 1 \pmod{m_i}
Hai môđun so với kk môđun
Trường hợpGiả thiếtDuy nhất theo môđun
22 môđun m1,m2m_1,m_2gcd⁡(m1,m2)=1\gcd(m_1,m_2)=1m1m2m_1 m_2
kk môđun m1,…,mkm_1,\dots,m_kgcd⁡(mi,mj)=1\gcd(m_i,m_j)=1 với i≠ji\neq jM=m1⋯mkM=m_1\cdots m_k

Đại họcCác định lý

Nếu m1,…,mkm_1,\dots,m_k đôi một nguyên tố cùng nhau (gcd⁡(mi,mj)=1(i≠j)\gcd(m_i,m_j)=1\quad(i\neq j)), thì với mọi số nguyên a1,…,aka_1,\dots,a_k hệ x≡ai(modmi)(1≤i≤k)x \equiv a_i \pmod{m_i}\quad(1\le i\le k) có nghiệm xx, và hai nghiệm bất kỳ đồng dư nhau theo môđun M=m1⋯mkM=m_1\cdots m_k.

Vì sao đúng?

Vì các môđun không có ước nguyên tố chung, điều kiện dư a1a_1 theo m1m_1 và điều kiện dư a2a_2 theo m2m_2 là các ràng buộc hoàn toàn độc lập — giống như chỉ định tọa độ xx và tọa độ yy của một điểm một cách tách biệt. Đẳng thức Bézout cho ta các "vectơ cơ sở" bằng 11 theo một môđun và bằng 00 theo mọi môđun khác, cho phép dựng nghiệm trực tiếp như một tổ hợp tuyến tính.

Chứng minh

Trước hết ta chứng minh trường hợp hai môđun (k=2k=2) rồi mở rộng bằng quy nạp. Vì gcd⁡(m1,m2)=1\gcd(m_1,m_2)=1, đẳng thức Bézout cho các số nguyên u,vu,v với m1u+m2v=1m_1 u + m_2 v = 1. Đặt x0=a1m2v+a2m1ux_0 = a_1 m_2 v + a_2 m_1 u.

Kiểm tra theo môđun m1m_1: từ m1u+m2v=1m_1 u + m_2 v = 1 ta có m2v=1−m1u≡1(modm1)m_2 v = 1 - m_1 u \equiv 1 \pmod{m_1}, còn m1u≡0(modm1)m_1 u \equiv 0 \pmod{m_1}, nên x0≡a1⋅1+a2⋅0=a1(modm1)x_0 \equiv a_1\cdot 1 + a_2\cdot 0 = a_1 \pmod{m_1}.

Đối xứng, theo môđun m2m_2: m1u=1−m2v≡1(modm2)m_1 u = 1-m_2 v \equiv 1 \pmod{m_2} và m2v≡0(modm2)m_2 v \equiv 0 \pmod{m_2}, nên x0≡a1⋅0+a2⋅1=a2(modm2)x_0 \equiv a_1\cdot 0 + a_2\cdot 1 = a_2 \pmod{m_2}. Điều này chứng minh sự tồn tại với k=2k=2.

Về tính duy nhất khi k=2k=2: nếu xx và x′x' cùng giải hệ, thì x−x′≡0(modm1)x-x'\equiv0\pmod{m_1} và x−x′≡0(modm2)x-x'\equiv0\pmod{m_2}, tức cả m1m_1 và m2m_2 đều chia hết d=x−x′d=x-x'. Nhân phương trình Bézout m1u+m2v=1m_1 u+m_2 v=1 với dd: d=dm1u+dm2vd = d m_1 u + d m_2 v. Vì m2∣dm_2\mid d, số hạng đầu dm1ud m_1 u là bội của m1m2m_1 m_2; vì m1∣dm_1\mid d, số hạng thứ hai dm2vd m_2 v cũng là bội của m1m2m_1 m_2. Do đó m1m2∣dm_1 m_2 \mid d, tức x≡x′(modm1m2)x\equiv x'\pmod{m_1 m_2}.

Với k>2k>2 tổng quát, quy nạp: hai đồng dư đầu tương đương (theo trường hợp k=2k=2) với một đồng dư duy nhất theo môđun m1m2m_1 m_2; vì m3m_3 nguyên tố cùng nhau với cả m1m_1 và m2m_2, nó nguyên tố cùng nhau với tích m1m2m_1 m_2 của chúng, nên ta lại ghép tiếp được, cứ thế tới kk. Cũng chú ý rằng tổng tường minh x≡∑i=1kaiMiyi(modM)x \equiv \sum_{i=1}^{k} a_i M_i y_i \pmod{M} hoạt động trực tiếp cho mọi kk bằng đúng lập luận đó: Mi=M/miM_i = M/m_i nguyên tố cùng nhau với mim_i nên nghịch đảo yiy_i tồn tại, và mọi số hạng j≠ij\neq i đều chứa mim_i làm thừa số của MjM_j. ■\blacksquare

Khi gcd⁡(m1,m2)=1\gcd(m_1,m_2)=1, ánh xạ ψ(x mod m1m2)=(x mod m1, x mod m2)\psi(x \bmod m_1 m_2) = (x\bmod m_1,\ x\bmod m_2) là một đẳng cấu vành Z/(m1m2)Z≅(Z/m1Z)×(Z/m2Z)\mathbb{Z}/(m_1 m_2)\mathbb{Z} \cong (\mathbb{Z}/m_1\mathbb{Z})\times(\mathbb{Z}/m_2\mathbb{Z}), và thu hẹp ψ\psi lên các phần tử khả nghịch chứng minh φ(m1m2)=φ(m1) φ(m2)\varphi(m_1 m_2) = \varphi(m_1)\,\varphi(m_2).

Vì sao đúng?

Đây là ý nghĩa cấu trúc của CRT: số học theo môđun m1m2m_1 m_2 theo đúng nghĩa đen chính là hai bản sao độc lập của số học modulo (một theo m1m_1, một theo m2m_2) chạy song song. Đó vừa là lý do hàm phi Euler φ\varphi tách nhân gọn gàng trên các số nguyên tố cùng nhau, vừa là lý do máy tính có thể tăng tốc các phép tính số nguyên lớn và mật mã bằng cách thực hiện riêng trên từng thành phần nhỏ.

Chứng minh

Thứ nhất, ψ\psi xác định tốt: nếu x≡x′(modm1m2)x\equiv x'\pmod{m_1 m_2} thì m1m2∣(x−x′)m_1 m_2\mid(x-x'), nên cả m1m_1 và m2m_2 đều chia hết x−x′x-x', nghĩa là x≡x′(modm1)x\equiv x'\pmod{m_1} và x≡x′(modm2)x\equiv x'\pmod{m_2}.

Thứ hai, ψ\psi bảo toàn phép cộng và phép nhân ở từng tọa độ vì phép rút gọn theo môđun mim_i bảo toàn chúng (đã chứng minh ở chủ đề đầu về đồng dư), nên ψ\psi là một đồng cấu vành.

Thứ ba, Định lý 1 ở trên nói chính xác rằng với mỗi cặp (a1,a2)(a_1,a_2) đều có một xx ánh xạ tới nó (nên ψ\psi toàn ánh) và xx đó duy nhất theo môđun m1m2m_1 m_2 (nên ψ\psi đơn ánh). Do đó ψ\psi là song ánh và vì thế là đẳng cấu vành.

Cuối cùng, trong vành tích R1×R2R_1\times R_2, một phần tử (u1,u2)(u_1,u_2) có nghịch đảo nhân (v1,v2)(v_1,v_2) khi và chỉ khi u1v1=1u_1 v_1=1 trong R1R_1 và u2v2=1u_2 v_2=1 trong R2R_2 — tức khi và chỉ khi cả hai tọa độ đều khả nghịch. Vì đẳng cấu vành bảo toàn tính khả nghịch, các phần tử khả nghịch của Z/(m1m2)Z\mathbb{Z}/(m_1 m_2)\mathbb{Z} (có φ(m1m2)\varphi(m_1 m_2) phần tử) tương ứng song ánh với các cặp phần tử khả nghịch trong (Z/m1Z)×(Z/m2Z)(\mathbb{Z}/m_1\mathbb{Z})\times(\mathbb{Z}/m_2\mathbb{Z}) (có φ(m1) φ(m2)\varphi(m_1)\,\varphi(m_2) cặp). Đếm hai vế cho φ(m1m2)=φ(m1) φ(m2)\varphi(m_1 m_2)=\varphi(m_1)\,\varphi(m_2). Kết hợp với φ(pr)=pr−pr−1\varphi(p^r)=p^r-p^{r-1} cho lũy thừa nguyên tố (nơi các số không nguyên tố cùng nhau chỉ là pr−1p^{r-1} bội của pp), điều này lập tức suy ra công thức tích tổng quát cho φ(n)\varphi(n) đã dùng ở chủ đề trước. ■\blacksquare

Nâng caoỨng dụng thực tiễn và Ví dụ minh họa

Vượt ra ngoài các bài đố cổ điển, định lý phần dư Trung Hoa là cỗ máy chủ lực của tính toán hiện đại. Mọi cài đặt RSA thực tế (OpenSSL, BoringSSL, môđun bảo mật phần cứng) đều dùng CRT-RSA (Quisquater–Couvreur, 1982) để tính cd mod pqc^d \bmod pq bằng cách tính riêng theo môđun pp và môđun qq rồi ghép lại qua CRT — nhanh hơn khoảng 44 lần vì lũy thừa modulo tốn O((log⁡m)3)O((\log m)^3) và giảm một nửa độ dài bit của môđun giúp giảm công tính mỗi lũy thừa đi 23=82^3=8 lần (làm hai lần, nên tổng cộng nhanh hơn 8/2=48/2=4 lần). Cùng ý tưởng đó đứng sau Hệ thống số dư (RNS) trong các thư viện số nguyên lớn nhanh và mã hóa đồng cấu, cũng như các phép tính chu kỳ thiên văn và lịch.

Ví dụ: Giải bài toán đếm quân gốc của Tôn Tử

Tìm tất cả các số nguyên xx thỏa mãn x≡2(mod3)x\equiv2\pmod3, x≡3(mod5)x\equiv3\pmod5, và x≡2(mod7)x\equiv2\pmod7.

Lời giải

Các môđun m1=3,m2=5,m3=7m_1=3,m_2=5,m_3=7 đôi một nguyên tố cùng nhau với tích M=3×5×7=105M = 3\times5\times7 = 105, nên công thức CRT tường minh áp dụng được với M1=105/3=35M_1 = 105/3 = 35, M2=105/5=21M_2 = 105/5 = 21, M3=105/7=15M_3 = 105/7 = 15.

Tìm từng nghịch đảo yiy_i của MiM_i theo môđun mim_i: (1) 35≡2(mod3)35 \equiv 2 \pmod 3, và 2×2=4≡1(mod3)2\times2=4\equiv1\pmod3, nên y1=2y_1=2; (2) 21≡1(mod5)21 \equiv 1 \pmod 5, nên y2=1y_2=1; (3) 15≡1(mod7)15 \equiv 1 \pmod 7, nên y3=1y_3=1.

Thay vào x≡∑i=1kaiMiyi(modM)x \equiv \sum_{i=1}^{k} a_i M_i y_i \pmod{M} với (a1,a2,a3)=(2,3,2)(a_1,a_2,a_3)=(2,3,2): x≡2⋅35⋅2+3⋅21⋅1+2⋅15⋅1=140+63+30=233(mod105)x \equiv 2\cdot35\cdot2 + 3\cdot21\cdot1 + 2\cdot15\cdot1 = 140 + 63 + 30 = 233 \pmod{105}.

Vì 233=2×105+23233 = 2\times105 + 23, rút gọn theo môđun 105105 cho x≡23(mod105)x \equiv 23 \pmod{105}. Kiểm tra nhanh: 23=3×7+2≡2(mod3)23 = 3\times7+2\equiv2\pmod3, 23=5×4+3≡3(mod5)23=5\times4+3\equiv3\pmod5, 23=7×3+2≡2(mod7)23=7\times3+2\equiv2\pmod7. Cả ba đều đúng, và nghiệm dương nhỏ nhất là **2323**.

Ví dụ: Giải mã RSA nhanh qua CRT (CRT-RSA)

Trong ví dụ RSA ở chủ đề trước (p=5,q=11,n=55,d=27p=5,q=11,n=55,d=27, bản mã c=8c=8), hãy tính m=827 mod 55m = 8^{27} \bmod 55 bằng cách tách thành hai phép tính nhỏ theo môđun 55 và môđun 1111 thay vì làm việc theo môđun 5555.

Lời giải

Theo môđun p=5p=5: rút gọn cơ số 8≡3(mod5)8\equiv3\pmod5, và rút gọn số mũ d=27d=27 theo p−1=4p-1=4 nhờ định lý Fermat nhỏ (27=4×6+327 = 4\times6+3, nên dp=3d_p = 3). Khi đó mp=33=27≡2(mod5)m_p = 3^3 = 27 \equiv 2 \pmod 5 — chỉ một phép lập phương nhỏ!

Theo môđun q=11q=11: cơ số là 88, và rút gọn số mũ 2727 theo q−1=10q-1=10 nhờ Fermat (27=10×2+727 = 10\times2+7, nên dq=7d_q = 7). Tính 87 mod 118^7 \bmod 11: vì 8≡−3(mod11)8\equiv-3\pmod{11}, ta có 82≡9≡−28^2\equiv9\equiv-2, 84≡48^4\equiv4, 87=84⋅82⋅8≡4⋅(−2)⋅(−3)=24≡2(mod11)8^7 = 8^4\cdot8^2\cdot8\equiv 4\cdot(-2)\cdot(-3)=24\equiv2\pmod{11}.

Giờ ghép m≡2(mod5)m\equiv2\pmod5 và m≡2(mod11)m\equiv2\pmod{11} bằng CRT: vì cả hai số dư đều bằng 22, nghiệm duy nhất theo môđun 5555 lập tức là m≡2(mod55)m\equiv2\pmod{55} (tổng quát, khi mp,mqm_p,m_q khác nhau, ta chỉ cần áp dụng công thức CRT hai môđun một lần). Chú ý ta chưa từng bình phương số nào lớn hơn 1111 và chưa từng dùng số mũ nào lớn hơn 77 — với các số nguyên tố RSA 20482048 bit, chính phép tách này giảm thời gian giải mã xuống còn khoảng một phần tư.

Nghiên cứuCRT ở biên giới nghiên cứu: số học nhanh, tấn công lỗi và mật mã dàn

Tìm số nguyên không âm nhỏ nhất xx thỏa mãn x≡1(mod3)x\equiv1\pmod3 và x≡2(mod5)x\equiv2\pmod5.

Nếu m1=4,m2=9,m3=25m_1=4,m_2=9,m_3=25, nghiệm của hệ CRT với các môđun này duy nhất theo môđun:

Có thể nói gì về hệ x≡1(mod4)x\equiv1\pmod4 và x≡0(mod6)x\equiv0\pmod6?

Vì sao CRT tăng tốc giải mã RSA cd mod pqc^d\bmod pq lên khoảng 44 lần?

Tài liệu tham khảo

  1. Jean-Jacques Quisquater, Christophe Couvreur (1982). Fast decipherment algorithm for RSA public-key cryptosystem · DOI:10.1049/el:19820617
  2. David Harvey, Joris van der Hoeven (2021). Integer multiplication in time O(n log n) · DOI:10.4007/annals.2021.193.2.4