소수는 ‘나누어지지 않는다’는 단순한 성질을 갖지만, 모듈러 산술 위에서는 일정한 주기성을 만들어낸다. 모든 정수 a에 대해 ap≡a(modp)가 성립한다는 말은, gcd(a,p)=1일 때 a로 나누어 ap−1≡1(modp)가 된다는 뜻이다. 이 성질이 RSA 암호를 가능하게 한다.
이 포스트에서 다루는 내용
페르마의 소정리: p가 소수이고 gcd(a,p)=1이면 ap−1≡1(modp)
동치 형태: 모든 정수 a에 대해 ap≡a(modp)
모듈러 역원: a−1≡ap−2(modp)
페르마 소수 판별법: an−1≡1(modn)이면 n은 합성수
한계: Carmichael 수 (합성수이지만 모든 a에 대해 테스트를 통과하는 예외)
정리의 두 형태
형태 1 (기본형): p가 소수이고 gcd(a,p)=1이면,
ap−1≡1(modp)
형태 2 (일반형): p가 소수이면 모든 정수 a에 대해,
ap≡a(modp)
두 형태는 동치이다. 형태 1에서 양변에 a를 곱하면 형태 2가 나오고, 형태 2에서 p∤a일 때 a로 나누면 형태 1이 복원된다. p∣a인 경우 형태 2는 0≡0(modp)으로 자명하다.
증명 1 — 오일러 정리의 특수화
소수 p에 대해 ϕ(p)=p−1이다 (1부터 p−1까지 모두 p와 서로소).
오일러 정리 aϕ(m)≡1(modm)에 m=p를 대입하면 즉시 얻어진다.
증명 2 — 곱셈군 이중 치환
gcd(a,p)=1일 때, 집합 S={1,2,…,p−1}을 고려한다.
S의 각 원소에 a를 곱한 집합 aS={a,2a,…,(p−1)a}를 modp로 환산하면:
각 iamodp는 0이 아니다 (gcd(a,p)=1이고 1≤i≤p−1이므로)
ia≡ja(modp) (i=j일 때). a가 역원을 가지므로 소거 가능하다
따라서 aSmodp의 원소들은 {1,2,…,p−1}의 재배열이다. 두 집합의 모든 원소를 곱하면,
소수 p와 서로소인 정수 a를 p−1제곱하면 mod p에서 곱셈의 항등원인 1이 된다는 것이 페르마의 소정리다. a가 p의 배수이면 성립하지 않으므로 서로소라는 조건이 필요하다. 오일러 정리는 이를 소수가 아닌 모듈러스로 넓힌 것이다. RSA는 지수가 p−1의 배수만큼 늘어나도 값이 그대로라는 이 성질을 써서 암호화한 메시지를 원래대로 복원한다.
예시
페르마의 소정리 — p=7에서 a^k mod 7 순환표
p=7에서 Z7∗={1,2,3,4,5,6}의 각 원소는 고유한 순환 주기를 갖지만, k=p−1=6에서 반드시 1로 수렴한다.