logo

합동방정식의 거듭제곱근 📂정수론

합동방정식의 거듭제곱근

알고리즘 1

자연수 b,k,mb,k,mgcd(b,m)=gcd(k,ϕ(m))=1\gcd (b , m) = \gcd ( k , \phi (m) ) = 1 을 만족하면 합동방정식 xkb(modm)x^{k} \equiv b \pmod{ m } 의 해 xx 는 다음과 같이 계산할 수 있다.


Step 1.

ϕ(m)\phi (m) 을 계산한다.


Step 2.

kuϕ(m)v=1ku - \phi (m) v =1 을 만족하는 u,vu, v 을 찾고 양변에 uu 승을 취해 xkubu(modm)x^{ku} \equiv b^{u} \pmod{m} 를 얻는다.


Step 3.

bu(modm)b^{u} \pmod{ m }연속제곱법으로 계산한다.

설명

ϕ\phi토션트 함수로, 곱셈적 성질을 가져 mm 의 소인수분해가 핵심이다.

알려져있듯 소인수분해엔 딱히 왕도가 없어서 무척 어려운데, 무지막지하게 큰 소수 p,qp,q 가 존재해서 m=pqm=pq 이라고 한다면 x:=ϕ(m)x := \phi (m) 을 구하는 것부터가 힘들다. 언뜻 이것은 단점으로 보이지만, 오히려 이를 이용하면 xx 를 암호처럼 사용할 수 있게 된다. kkmm 이 공개되어 있어도 mm 의 소인수분해를 모르면 xx 를 계산 하는 것이 몹시 어렵다. 따라서 xx 를 알 자격이 있는 사람만 mm 의 소인수분해를 안다면 훌륭한 암호 체계가 된다. 이러한 암호 체계를 RSA 암호라고 한다.

이 알고리즘은 아주 큰 소수를 찾는 일이 실용적 가치를 가진다는 것을 말해준다.

증명

kuϕ(m)v=1ku - \phi (m) v =1 을 만족하는 정수해 u,vu,v 의 존재성은 보장되어있고, ku=ϕ(m)v+1ku = \phi (m) v + 1 이므로 xkuxϕ(m)v+1(modm) x^{ku} \equiv x^{ \phi (m) v + 1 } \pmod{m}

오일러의 토션트 정리: gcd(x,m)=1    xϕ(m)1(modm)\gcd(x,m) = 1 \implies x^{ \phi (m) } \equiv 1 \pmod{m}

xϕ(m)v+1x1=bu(modm)x^{ \phi (m) v + 1 } \equiv x^{ 1 } = b^{u} \pmod{m} 이므로, bub^{u} 만 계산하면 된다. 여기서 조건인 gcd(x,m)=1\gcd (x, m) = 1 을 만족하진 않았지만, 이렇게 구해진 xx 는 주어진 합동방정식의 해로써 전혀 문제가 없다.

xk=(bu)k=buk=b1+ϕ(m)v=bbϕ(m)v x^{k} = \left( b^{u} \right)^{k} = b^{uk} = b^{ 1+ \phi (m ) v} = b \cdot b^{ \phi (m ) v} 인데, gcd(b,m)=1\gcd (b , m) = 1 을 가정했으므로 다음이 성립한다. xkb(modm) x^{k} \equiv b \pmod{ m }


  1. Silverman. (2012). A Friendly Introduction to Number Theory (4th Edition): p119. ↩︎