Modular Arithmetic — 모듈러 산술과 잉여계

GCD가 ‘두 수의 관계’라면, 모듈러 산술은 ‘수의 세계 자체를 재정의’한다. 나머지를 공유하는 수들을 하나로 묶는 순간, 덧셈·곱셈·역원이 정의된 대수 구조가 탄생한다 — RSA, ElGamal, Diffie-Hellman의 계산 엔진이 바로 이 위에서 돌아간다.

이 글의 주요 개념
  • 모듈러 산술: a ≡ b (mod m) ↔ m | (b − a) — 동치 관계(반사·대칭·추이) 성립
  • 완전 잉여계 Zm: {0, 1, ..., m−1} — 덧셈·뺄셈에 대해 닫혀있음
  • 축약 잉여계 Zm*: {a | gcd(a, m) = 1} — 곱셈에 대해 닫혀있고 역원 존재
  • 오일러 정리: a^φ(m) ≡ 1 (mod m) (a ∈ Zm*, φ(m) = |Zm*|)
  • 중국인의 나머지 정리: 서로소인 m1,...,mr에 대해 연립 합동식의 해 존재·유일

GCD와 LCM의 관계

본론에 앞서, GCD와 LCM(최소공배수)의 관계를 정리한다.

aabb의 최대공약수가 d=gcd(a,b)d = \gcd(a, b)이고 a=ada = a'd, b=bdb = b'd로 쓰면,

lcm(a,b)=abd\text{lcm}(a, b) = a'b'd

따라서 다음이 성립한다.

gcd(a,b)lcm(a,b)=dabd=abd2=ab\gcd(a, b) \cdot \text{lcm}(a, b) = d \cdot a'b'd = a'b'd^2 = a \cdot b

특히 aa, bb가 서로소이면 d=1d = 1이므로 lcm(a,b)=ab\text{lcm}(a, b) = ab이다.

모듈러 산술과 동치 관계

모듈러 산술(Modular Arithmetic) 은 다음과 같이 정의한다.

ab(modm)    m(ba)a \equiv b \pmod{m} \iff m \mid (b - a)

직관적으로 aabbmm으로 나눴을 때 나머지가 같다는 의미이다.

이 관계는 동치 관계(Equivalence Relation) 이다 — 다음 세 성질을 만족한다.

mod 7 시계 다이어그램 — 동치류 시각화

반사성(Reflexive): aa(modm)a \equiv a \pmod{m}

m0m \mid 0이므로 성립.

대칭성(Symmetric): ab(modm)    ba(modm)a \equiv b \pmod{m} \implies b \equiv a \pmod{m}

m(ba)m \mid (b-a)이면 m(ab)m \mid (a-b)이므로 성립.

추이성(Transitive): ab(modm)a \equiv b \pmod{m}이고 bc(modm)b \equiv c \pmod{m}이면 ac(modm)a \equiv c \pmod{m}

m(ba)m \mid (b-a), m(cb)m \mid (c-b)이면 m(ca)m \mid (c-a)이므로 성립.

따라서 ab(modm)a \equiv b \pmod{m}은 “aabb가 모듈러 연산에서 같은 부류에 속한다”는 의미이다.

모듈러 연산의 보존 성질

ab(modm)a \equiv b \pmod{m}이고 cd(modm)c \equiv d \pmod{m}이면 다음이 성립한다.

a+cb+d(modm)a + c \equiv b + d \pmod{m} acbd(modm)a - c \equiv b - d \pmod{m} acbd(modm)ac \equiv bd \pmod{m}

증명: ba=mkb - a = mk, dc=mkd - c = mk'로 쓰면,

  1. (b+d)(a+c)=(ba)+(dc)=m(k+k)(b+d) - (a+c) = (b-a) + (d-c) = m(k+k') — 덧셈 성립
  2. (bd)(ac)=(ba)(dc)=m(kk)(b-d) - (a-c) = (b-a) - (d-c) = m(k-k') — 뺄셈 성립
  3. bd=(a+mk)(c+mk)=ac+m(ak+ck+mkk)bd = (a+mk)(c+mk') = ac + m(ak'+ck+mkk') — 곱셈 성립

마찬가지로 상수 연산과 지수 연산에 대해서도 닫혀있다.

ab(modm)    a+kb+k(modm)a \equiv b \pmod{m} \implies a + k \equiv b + k \pmod{m} ab(modm)    akbk(modm)a \equiv b \pmod{m} \implies ak \equiv bk \pmod{m} ab(modm)    anbn(modm)a \equiv b \pmod{m} \implies a^n \equiv b^n \pmod{m}

단, 나눗셈은 일반적으로 성립하지 않는다. 예를 들어 mod 6\text{mod}\ 6에서 2302 \cdot 3 \equiv 0이므로, 곱셈의 결과만으로는 원래 인수를 복원할 수 없다.

모듈러 연산 보존 성질 — 덧셈·곱셈·지수 예시

완전 잉여계 (Complete Residue System)

완전 잉여계 Zm\mathbb{Z}_mmm으로 나눈 나머지 전체의 집합이다.

Zm={0,1,2,,m1}\mathbb{Z}_m = \{0, 1, 2, \ldots, m-1\}

이 집합의 원소는 두 가지 방식으로 해석할 수 있다.

  1. 정수 자체: 원소 22는 정수 22를 의미한다.
  2. 동치류(Equivalence Class): 원소 22mm으로 나눴을 때 나머지가 22인 모든 정수의 집합 {,2m,2,2+m,2+2m,}\{\ldots, 2-m, 2, 2+m, 2+2m, \ldots\}를 의미한다.

Zm\mathbb{Z}_m에서 덧셈과 뺄셈은 잘 정의된다(well-defined) — 연산 결과가 집합 안에 존재하고, 항등원(00)과 역원이 존재한다. 원소 aa의 덧셈 역원은 ama(modm)-a \equiv m - a \pmod{m}이다.

정리: kakb(modm)ka \equiv kb \pmod{m}이고 gcd(k,m)=1\gcd(k, m) = 1이면 ab(modm)a \equiv b \pmod{m}이다.

증명: mk(ab)m \mid k(a-b)이고 gcd(k,m)=1\gcd(k,m)=1이므로, GCD 성질에 의해 m(ab)m \mid (a-b).

축약 잉여계 (Reduced Residue System)

축약 잉여계 Zm\mathbb{Z}_m^*mm과 서로소인 원소들의 집합이다.

Zm={aZmgcd(a,m)=1}\mathbb{Z}_m^* = \{a \in \mathbb{Z}_m \mid \gcd(a, m) = 1\}

잉여계 시각화

이 집합에서 곱셈과 나눗셈은 잘 정의된다.

닫힘(Closure): a,bZma, b \in \mathbb{Z}_m^*이면 gcd(a,m)=1\gcd(a, m) = 1, gcd(b,m)=1\gcd(b, m) = 1이므로 GCD 서로소 성질에 의해 gcd(ab,m)=1\gcd(ab, m) = 1. 따라서 abZmab \in \mathbb{Z}_m^*.

역원 존재: gcd(a,m)=1\gcd(a, m) = 1이므로 베주 항등식에 의해 ax+my=1ax + my = 1인 정수 xx, yy가 존재한다. 이를 mod m\bmod\ m으로 취하면 ax1(modm)ax \equiv 1 \pmod{m}이므로 xxaa의 곱셈 역원이다.

쉽게 말하면

모듈러 역원이란 "나눗셈의 대체품"이다. 모듈러 세계에서는 직접 나눌 수 없지만, a의 역원 x를 곱하면 나눈 것과 같은 효과를 얻는다. 이 역원은 a와 m이 서로소일 때만 존재하며, 베주 항등식(확장 유클리드 알고리즘)으로 구할 수 있다. RSA에서 비밀키 d를 구하는 과정이 바로 이것이다.

반면 덧셈은 닫혀있지 않다. 예를 들어 m=3m = 3에서 gcd(4,3)=gcd(8,3)=1\gcd(4, 3) = \gcd(8, 3) = 1이지만, gcd(4+8,3)=gcd(12,3)=31\gcd(4+8, 3) = \gcd(12, 3) = 3 \neq 1.

mm이 소수(prime)일 때: 11부터 m1m-1까지 모든 수가 mm과 서로소이므로

Zm=Zm{0},Zm=Zm{0}\mathbb{Z}_m^* = \mathbb{Z}_m \setminus \{0\}, \quad \mathbb{Z}_m = \mathbb{Z}_m^* \cup \{0\}

이 경우 Zm\mathbb{Z}_m은 사칙연산이 모두 잘 정의된 체(Field) 가 된다.

오일러 정리

aZm    aϕ(m)1(modm)a \in \mathbb{Z}_m^* \implies a^{\phi(m)} \equiv 1 \pmod{m}

여기서 ϕ(m)=Zm\phi(m) = |\mathbb{Z}_m^*|오일러 피함수(Euler’s totient function) 이다.

예: m=10m = 10이면 Z10={1,3,7,9}\mathbb{Z}_{10}^* = \{1, 3, 7, 9\}이므로 ϕ(10)=4\phi(10) = 4.

34=811(mod10),74=24011(mod10)3^4 = 81 \equiv 1 \pmod{10}, \quad 7^4 = 2401 \equiv 1 \pmod{10}

오일러 정리 — b·Zm* = Zm* 전단사 대응 시각화

증명: Zm={a1,,aϕ(m)}\mathbb{Z}_m^* = \{a_1, \ldots, a_{\phi(m)}\}에서 임의의 bZmb \in \mathbb{Z}_m^*에 대해

bZm={ba1,,baϕ(m)}b\mathbb{Z}_m^* = \{ba_1, \ldots, ba_{\phi(m)}\}

Zm\mathbb{Z}_m^*는 곱셈에 대해 닫혀있으므로 baiZmba_i \in \mathbb{Z}_m^*. 또한 aiaja_i \neq a_j이면 baibajba_i \neq ba_j이므로 (bb가 역원을 가지므로 양변에 b1b^{-1} 곱 가능), 두 집합은 동일하다.

i=1ϕ(m)aii=1ϕ(m)bai=bϕ(m)i=1ϕ(m)ai(modm)\prod_{i=1}^{\phi(m)} a_i \equiv \prod_{i=1}^{\phi(m)} ba_i = b^{\phi(m)} \cdot \prod_{i=1}^{\phi(m)} a_i \pmod{m}

aiZm\prod a_i \in \mathbb{Z}_m^*는 역원을 가지므로 양변에 곱하면

bϕ(m)1(modm)b^{\phi(m)} \equiv 1 \pmod{m}

페르마의 소정리

오일러 정리에서 m=pm = p (소수)로 놓으면 ϕ(p)=p1\phi(p) = p - 1이므로,

aZp    ap11(modp)a \in \mathbb{Z}_p^* \implies a^{p-1} \equiv 1 \pmod{p}

이것이 페르마의 소정리(Fermat’s Little Theorem) 이다. RSA에서 복호화 정확성을 보장하는 핵심 정리이다.

참고

페르마의 소정리의 두 가지 증명, 모듈러 역원 공식(a^(p−2)), 페르마 소수 판별법, Carmichael 수의 한계까지 자세히 다룬다. → Fermat's Little Theorem — 페르마의 소정리

중국인의 나머지 정리 (CRT)

설정: m1,,mrm_1, \ldots, m_r이 서로 쌍으로 서로소(pairwise coprime)이고 m=m1mrm = m_1 \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}

CRT 구성 다이어그램 — 단계별 해 구성

구성(Construction)으로 증명: 다음과 같이 정의한다.

Mi=mmi,Ni=Mi1(modmi)M_i = \frac{m}{m_i}, \quad N_i = M_i^{-1} \pmod{m_i}

MiM_imim_i는 서로소이므로(정의에 의해) NiN_i가 존재한다. 그러면

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

검증: xmodmjx \bmod m_j를 계산하면, iji \neq j인 항에는 Mi=m/miM_i = m/m_imjm_j가 인수로 포함되어 Mi0(modmj)M_i \equiv 0 \pmod{m_j}. 따라서

xcjMjNjcj1=cj(modmj)x \equiv c_j M_j N_j \equiv c_j \cdot 1 = c_j \pmod{m_j}

연산 보존: xx(c1,,cr)(c_1, \ldots, c_r)에, yy(d1,,dr)(d_1, \ldots, d_r)에 대응할 때,

x+y(c1+d1,,cr+dr)x + y \leftrightarrow (c_1 + d_1, \ldots, c_r + d_r) xy(c1d1,,crdr)x \cdot y \leftrightarrow (c_1 d_1, \ldots, c_r d_r)

mm에 대한 연산을 각 mim_i에 대한 작은 연산들로 분해할 수 있다. 이것이 CRT를 대규모 모듈러 연산 최적화에 활용하는 이유이다.

참고

유일성 증명, 단계별 수치 계산 예시(x≡2(mod 3), x≡3(mod 5), x≡2(mod 7) → x=23), RSA-CRT 4배 속도 향상까지 자세히 다룬다. → Chinese Remainder Theorem — 중국인의 나머지 정리

핵심 정리
  • 모듈러 산술은 동치 관계를 형성한다. 덧셈·뺄셈·곱셈·지수 연산에 대해 닫혀있지만, 나눗셈은 일반적으로 성립하지 않는다.
  • Zm*는 gcd(a, m) = 1인 원소들로 이루어지며, 곱셈 역원이 모든 원소에 존재한다. m이 소수이면 Zm은 완전한 체(Field)가 된다.
  • 오일러 정리(a^φ(m) ≡ 1)와 페르마의 소정리(a^(p−1) ≡ 1, p 소수)는 RSA 복호화의 수학적 근거이다.
  • CRT는 큰 모듈러 연산을 작은 연산들로 분해해 병렬 처리를 가능하게 한다. RSA-CRT 최적화의 핵심이다.
다음 포스트

RSA — 공개키 암호의 수학적 구조 — 지금까지 쌓아온 모든 정수론 도구(GCD, 모듈러 산술, 오일러 정리, 페르마 정리, CRT)가 수렴하는 지점. RSA 키 생성, 복호화 정확성 증명, 소인수분해 보안 근거, Square-and-Multiply 고속 지수연산까지 다룬다.

© 2026 XsQuare01. Powered by GitHub Pages.