Chinese Remainder Theorem — 중국인의 나머지 정리

서로 다른 시계 여러 개가 동시에 특정 시각을 가리키는 순간은 언제인가 — 중국인의 나머지 정리는 이 질문에 항상 유일한 답이 존재함을 보장하고, 그 답을 명시적으로 구성한다.

이 글의 주요 개념
  • 설정: m₁,...,mᵣ이 서로 쌍으로 서로소(pairwise coprime)이고 m = m₁···mᵣ
  • 보장: 임의의 c₁,...,cᵣ에 대해 x ≡ cᵢ (mod mᵢ)를 동시에 만족하는 x가 mod m에서 유일하게 존재
  • 구성: Mᵢ = m/mᵢ, Nᵢ = Mᵢ⁻¹ mod mᵢ, x = Σ cᵢ·Mᵢ·Nᵢ mod m
  • 응용: RSA-CRT 최적화 (처리 속도 약 4배 향상)

정확한 설정

m1,,mrm_1, \ldots, m_r이 쌍으로 서로소(pairwise coprime): 임의의 iji \neq j에 대해 gcd(mi,mj)=1\gcd(m_i, m_j) = 1.

여기서 주의할 점은 전체 gcd가 1인 것쌍으로 서로소 는 다르다는 것이다. 예를 들어 {6,10,15}\{6, 10, 15\}gcd(6,10,15)=1\gcd(6,10,15)=1이지만, gcd(6,10)=21\gcd(6,10)=2 \neq 1이므로 쌍으로 서로소가 아니다.

m=m1m2mrm = m_1 \cdot m_2 \cdots m_r로 정의한다.

정리: 임의의 정수 c1,,crc_1, \ldots, c_r에 대해, 다음 연립 합동식을 동시에 만족하는 xxmod m\bmod\ m에서 유일하게 존재한다.

xc1(modm1),xc2(modm2),,xcr(modmr)x \equiv c_1 \pmod{m_1}, \quad x \equiv c_2 \pmod{m_2}, \quad \ldots, \quad x \equiv c_r \pmod{m_r}

유일성 증명

xxyy가 모두 연립 합동식을 만족한다고 하자. 그러면 각 ii에 대해

xci(modmi),yci(modmi)    mi(xy)x \equiv c_i \pmod{m_i}, \quad y \equiv c_i \pmod{m_i} \implies m_i \mid (x - y)

m1,,mrm_1, \ldots, m_r이 쌍으로 서로소이고 모두 (xy)(x-y)를 나누므로, 이들의 곱도 (xy)(x-y)를 나눈다.

m=m1mr(xy)    xy(modm)m = m_1 \cdots m_r \mid (x - y) \implies x \equiv y \pmod{m}

따라서 해는 mod m\bmod\ m에서 유일하다.

존재성 증명 — 구성 (Construction)

다음과 같이 변수를 정의한다.

Mi=mmi(mi를 제외한 나머지를 모두 곱한 값)M_i = \frac{m}{m_i} \quad \text{($m_i$를 제외한 나머지를 모두 곱한 값)}

MiM_imim_i는 서로소이다 (mim_i를 제외한 나머지의 곱이므로). 따라서 MiM_imod mi\bmod\ m_i 역원이 존재한다.

Ni=Mi1(modmi)(베주 항등식으로 계산)N_i = M_i^{-1} \pmod{m_i} \quad \text{(베주 항등식으로 계산)}

이제 다음을 해(解)로 정의한다.

x=i=1rciMiNi(modm)x = \sum_{i=1}^{r} c_i M_i N_i \pmod{m}

검증: jj번째 조건 xcj(modmj)x \equiv c_j \pmod{m_j}를 확인한다.

xmodmj=i=1rciMiNimodmjx \bmod m_j = \sum_{i=1}^{r} c_i M_i N_i \bmod m_j
  • iji \neq j인 항: Mi=m/miM_i = m/m_imjm_j가 인수로 포함되어 있으므로 Mi0(modmj)M_i \equiv 0 \pmod{m_j}. 해당 항은 사라진다.
  • i=ji = j인 항: MjNj1(modmj)M_j N_j \equiv 1 \pmod{m_j} (역원의 정의). 따라서 cjMjNjcj(modmj)c_j M_j N_j \equiv c_j \pmod{m_j}.
xcj(modmj)x \equiv c_j \pmod{m_j} \quad \checkmark
쉽게 말하면

CRT는 "여러 개의 작은 시계를 보고 하나의 큰 시계 시각을 알아내는 방법"이다. 서로소인 여러 수로 나눈 나머지들을 동시에 만족하는 수가 딱 하나 존재하고, 그 수를 명시적으로 구성할 수 있다. RSA에서는 이를 이용해 큰 수의 연산을 작은 수들의 연산으로 쪼개서 약 4배 빠르게 처리한다.

단계별 계산 예시

연립 합동식: x2(mod3)x \equiv 2 \pmod{3}, x3(mod5)x \equiv 3 \pmod{5}, x2(mod7)x \equiv 2 \pmod{7}

m=3×5×7=105m = 3 \times 5 \times 7 = 105

CRT 구성 계산표

단계 1MiM_i 계산:

M1=1053=35,M2=1055=21,M3=1057=15M_1 = \frac{105}{3} = 35, \quad M_2 = \frac{105}{5} = 21, \quad M_3 = \frac{105}{7} = 15

단계 2NiN_i 계산 (베주 항등식 또는 직접 탐색):

352(mod3)    N1=21(mod3)=2(2×2=41)35 \equiv 2 \pmod{3} \implies N_1 = 2^{-1} \pmod{3} = 2 \quad (2 \times 2 = 4 \equiv 1) 211(mod5)    N2=11(mod5)=121 \equiv 1 \pmod{5} \implies N_2 = 1^{-1} \pmod{5} = 1 151(mod7)    N3=11(mod7)=115 \equiv 1 \pmod{7} \implies N_3 = 1^{-1} \pmod{7} = 1

단계 3 — 합산:

x=2352+3211+2151=140+63+30=233x = 2 \cdot 35 \cdot 2 + 3 \cdot 21 \cdot 1 + 2 \cdot 15 \cdot 1 = 140 + 63 + 30 = 233 233mod105=23233 \bmod 105 = 23

검증: 23=7×3+223 = 7 \times 3 + 2 ✓, 23=4×5+323 = 4 \times 5 + 3 ✓, 23=3×7+223 = 3 \times 7 + 2

연산 보존 성질

xx(c1,,cr)(c_1, \ldots, c_r)에, yy(d1,,dr)(d_1, \ldots, d_r)에 대응할 때, CRT 표현에서의 연산이 원래 연산을 보존한다.

x+y(c1+d1, c2+d2, , cr+dr)x + y \longleftrightarrow (c_1 + d_1,\ c_2 + d_2,\ \ldots,\ c_r + d_r) xy(c1d1, c2d2, , crdr)x \cdot y \longleftrightarrow (c_1 d_1,\ c_2 d_2,\ \ldots,\ c_r d_r)

즉, mm에 대한 큰 연산을 mim_i들에 대한 작은 연산들로 분해 할 수 있고, 결과를 다시 합칠 수 있다. 이것이 CRT 최적화의 핵심이다.

응용 — RSA-CRT 최적화

RSA 복호화는 m=cdmodnm = c^d \bmod n (n=pqn = pq)을 계산하는데, dd가 수백 비트이면 비용이 크다.

RSA-CRT 방법: n=pqn = pq (pp, qq 소수, gcd(p,q)=1\gcd(p,q)=1)일 때 CRT를 적용한다.

mp=cdp(modp),dp=dmod(p1)(페르마의 소정리 적용)m_p = c^{d_p} \pmod{p}, \quad d_p = d \bmod (p-1) \quad \text{(페르마의 소정리 적용)} mq=cdq(modq),dq=dmod(q1)m_q = c^{d_q} \pmod{q}, \quad d_q = d \bmod (q-1)

mpm_pmqm_q를 구한 뒤 CRT로 mmodnm \bmod n을 복원한다.

속도 향상 이유: 지수 연산의 복잡도는 모듈러스 크기의 제곱에 비례한다. nn 대신 ppqq (nn의 절반 크기)로 나누어 계산하면, 각각 1/41/4 비용이고 두 번 수행하므로 전체는 1/21/2 비용이다. 실제로는 CRT 조합 과정까지 포함해도 약 4배 가속이 가능하다.

핵심 정리
  • CRT는 쌍으로 서로소인 모듈러스들에 대한 연립 합동식이 mod m에서 유일한 해를 가짐을 보장한다.
  • 유일성: 두 해의 차가 모든 mᵢ의 배수이므로 m의 배수 → mod m에서 동일. 존재성: 구성적 증명으로 해를 명시적으로 구성한다.
  • 연산 보존 성질 덕분에 큰 모듈러스 연산을 작은 연산들로 분해·병렬화할 수 있다. 이것이 RSA-CRT의 수학적 근거다.
  • RSA-CRT는 n=pq 구조를 활용해 복호화 속도를 약 4배 향상시키는 실용적 최적화 기법이다.
다음 포스트

Find Prime — 소수 판별과 확률적 소수 탐색 — 소수 밀도 추정, Fermat 테스트의 한계, Witness와 Miller-Rabin 테스트까지 — RSA에서 큰 소수를 어떻게 찾는지 다룬다.

© 2026 XsQuare01. Powered by GitHub Pages.