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á 7
Một vị tướng xếp quân theo hàng 3 thấy thừa 2; theo hàng 5 thừa 3; theo hàng 7 thừa 2. Có bao nhiêu người lính? Dù vị tướng chưa từng đếm quá 7, ba số dư nhỏ bé (2,3,2) đó đã ghim chặt quân số chính xác theo môđun 3×5×7=105: đáp số là 23 (cộng bất kỳ bội nào của 105). Đâ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 mi mang đúng lượng thông tin như biết số dư theo tích m1m2⋯mk 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⋅5, ánh xạ dây cung là x↦4xmod15. Vì 4≡1(mod3) và 4≡−1(mod5), 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,…,mkđôi một nguyên tố cùng nhau — gcd(mi,mj)=1(i=j) — và các số nguyên bất kỳ a1,…,ak, hệ x≡ai(modmi)(1≤i≤k) tìm một số nguyên x đồng thời có số dư ai theo môđun mi với mọi i. Đặt M=m1m2⋯mk,Mi=M/mi và gọi yi là nghịch đảo của Mi theo môđun mi (tức Miyi≡1(modmi), tồn tại vì gcd(Mi,mi)=1), nghiệm được cho tường minh bởi x≡∑i=1kaiMiyi(modM).
x≡ai(modmi)(1≤i≤k),gcd(mi,mj)=1(i=j)
Mỗi số hạng aiMiyi trong tổng được thiết kế để ≡ai(modmi) (vì Miyi≡1(modmi)) và ≡0(modmj) với mọi j=i (vì mj là một thừa số của Mi=M/mi). Nên khi rút gọn toàn bộ tổng theo một mi cố định, mọi số hạng trừ số hạng thứ i đều triệt tiêu, để lại ai — đúng như yêu cầu.
Nếu m1,…,mk đôi một nguyên tố cùng nhau (gcd(mi,mj)=1(i=j)), thì với mọi số nguyên a1,…,ak hệ x≡ai(modmi)(1≤i≤k) có nghiệm x, và hai nghiệm bất kỳ đồng dư nhau theo môđun M=m1⋯mk.
Vì sao đúng?
Vì các môđun không có ước nguyên tố chung, điều kiện dư a1 theo m1 và điều kiện dư a2 theo m2 là các ràng buộc hoàn toàn độc lập — giống như chỉ định tọa độ x và tọa độ y 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 1 theo một môđun và bằng 0 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=2) rồi mở rộng bằng quy nạp. Vì gcd(m1,m2)=1, đẳng thức Bézout cho các số nguyên u,v với m1u+m2v=1. Đặt x0=a1m2v+a2m1u.
Kiểm tra theo môđun m1: từ m1u+m2v=1 ta có m2v=1−m1u≡1(modm1), còn m1u≡0(modm1), nên x0≡a1⋅1+a2⋅0=a1(modm1).
Đối xứng, theo môđun m2: m1u=1−m2v≡1(modm2) và m2v≡0(modm2), nên x0≡a1⋅0+a2⋅1=a2(modm2). Điều này chứng minh sự tồn tại với k=2.
Về tính duy nhất khi k=2: nếu x và x′ cùng giải hệ, thì x−x′≡0(modm1) và x−x′≡0(modm2), tức cả m1 và m2 đều chia hết d=x−x′. Nhân phương trình Bézout m1u+m2v=1 với d: d=dm1u+dm2v. Vì m2∣d, số hạng đầu dm1u là bội của m1m2; vì m1∣d, số hạng thứ hai dm2v cũng là bội của m1m2. Do đó m1m2∣d, tức x≡x′(modm1m2).
Với k>2 tổng quát, quy nạp: hai đồng dư đầu tương đương (theo trường hợp k=2) với một đồng dư duy nhất theo môđun m1m2; vì m3 nguyên tố cùng nhau với cả m1 và m2, nó nguyên tố cùng nhau với tích m1m2 của chúng, nên ta lại ghép tiếp được, cứ thế tới k. Cũng chú ý rằng tổng tường minh x≡∑i=1kaiMiyi(modM) hoạt động trực tiếp cho mọi k bằng đúng lập luận đó: Mi=M/mi nguyên tố cùng nhau với mi nên nghịch đảo yi tồn tại, và mọi số hạng j=i đều chứa mi làm thừa số của Mj. ■
Khi gcd(m1,m2)=1, ánh xạ ψ(xmodm1m2)=(xmodm1,xmodm2) là một đẳng cấu vành Z/(m1m2)Z≅(Z/m1Z)×(Z/m2Z), và thu hẹp ψ lên các phần tử khả nghịch chứng minh φ(m1m2)=φ(m1)φ(m2).
Vì sao đúng?
Đây là ý nghĩa cấu trúc của CRT: số học theo môđun m1m2 theo đúng nghĩa đen chính là hai bản sao độc lập của số học modulo (một theo m1, một theo m2) chạy song song. Đó vừa là lý do hàm phi Euler φ 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, ψ xác định tốt: nếu x≡x′(modm1m2) thì m1m2∣(x−x′), nên cả m1 và m2 đều chia hết x−x′, nghĩa là x≡x′(modm1) và x≡x′(modm2).
Thứ hai, ψ 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 mi bảo toàn chúng (đã chứng minh ở chủ đề đầu về đồng dư), nên ψ 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) đều có một x ánh xạ tới nó (nên ψ toàn ánh) và x đó duy nhất theo môđun m1m2 (nên ψ đơn ánh). Do đó ψ là song ánh và vì thế là đẳng cấu vành.
Cuối cùng, trong vành tích R1×R2, một phần tử (u1,u2) có nghịch đảo nhân (v1,v2) khi và chỉ khi u1v1=1 trong R1 và u2v2=1 trong R2 — 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 (có φ(m1m2) 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) (có φ(m1)φ(m2) cặp). Đếm hai vế cho φ(m1m2)=φ(m1)φ(m2). Kết hợp với φ(pr)=pr−pr−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−1 bội của p), điều này lập tức suy ra công thức tích tổng quát cho φ(n) đã dùng ở chủ đề trước. ■
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 cdmodpq bằng cách tính riêng theo môđun p và môđun q rồi ghép lại qua CRT — nhanh hơn khoảng 4 lần vì lũy thừa modulo tốn O((logm)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=8 lần (làm hai lần, nên tổng cộng nhanh hơn 8/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 x thỏa mãn x≡2(mod3), x≡3(mod5), và x≡2(mod7).
Lời giải
Các môđun m1=3,m2=5,m3=7 đôi một nguyên tố cùng nhau với tích M=3×5×7=105, nên công thức CRT tường minh áp dụng được với M1=105/3=35, M2=105/5=21, M3=105/7=15.
Tìm từng nghịch đảo yi của Mi theo môđun mi: (1) 35≡2(mod3), và 2×2=4≡1(mod3), nên y1=2; (2) 21≡1(mod5), nên y2=1; (3) 15≡1(mod7), nên y3=1.
Thay vào x≡∑i=1kaiMiyi(modM) với (a1,a2,a3)=(2,3,2): x≡2⋅35⋅2+3⋅21⋅1+2⋅15⋅1=140+63+30=233(mod105).
Vì 233=2×105+23, rút gọn theo môđun 105 cho x≡23(mod105). Kiểm tra nhanh: 23=3×7+2≡2(mod3), 23=5×4+3≡3(mod5), 23=7×3+2≡2(mod7). Cả ba đều đúng, và nghiệm dương nhỏ nhất là **23**.
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=27, bản mã c=8), hãy tính m=827mod55 bằng cách tách thành hai phép tính nhỏ theo môđun 5 và môđun 11 thay vì làm việc theo môđun 55.
Lời giải
Theo môđun p=5: rút gọn cơ số 8≡3(mod5), và rút gọn số mũ d=27 theo p−1=4 nhờ định lý Fermat nhỏ (27=4×6+3, nên dp=3). Khi đó mp=33=27≡2(mod5) — chỉ một phép lập phương nhỏ!
Theo môđun q=11: cơ số là 8, và rút gọn số mũ 27 theo q−1=10 nhờ Fermat (27=10×2+7, nên dq=7). Tính 87mod11: vì 8≡−3(mod11), ta có 82≡9≡−2, 84≡4, 87=84⋅82⋅8≡4⋅(−2)⋅(−3)=24≡2(mod11).
Giờ ghép m≡2(mod5) và m≡2(mod11) bằng CRT: vì cả hai số dư đều bằng 2, nghiệm duy nhất theo môđun 55 lập tức là m≡2(mod55) (tổng quát, khi mp,mq 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 11 và chưa từng dùng số mũ nào lớn hơn 7 — với các số nguyên tố RSA 2048 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 x thỏa mãn x≡1(mod3) và x≡2(mod5).
Nếu m1=4,m2=9,m3=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) và x≡0(mod6)?
Vì sao CRT tăng tốc giải mã RSA cdmodpq lên khoảng 4 lần?