2026-07-27
(Ko) [Paper Review] A New Class of Unsafe Primes
Intro
본 글은 Qi Cheng의 논문 A New Class of Unsafe Primes 을 한글로 풀어 설명하는 글입니다. 글에 소개되지 않은 자세한 내용은 원본 논문을 참고해주세요.
RSA를 포함하여, 소인수분해가 풀기 어렵다는 사실은 암호학에서 자주 인용되는 일방향함수입니다. 계산이 단순하며 빠른 돌파구가 없는 문제는 매력적이기 마련입니다.
이런저런 이유로 이후 등장한 비대칭키 암호는 훨씬 복잡한 구조를 갖고 있기에, 개발자의 입장에서 이해하기 어려운 편입니다. 물론, 누구나 구조를 이해하기 쉽다는 것은 함부로 수정을 감행할 수 있다는 점에서 RSA의 큰 단점입니다.
일반적인 조건의 소인수분해를 해결하는 다항시간 알고리즘은 아직 존재하지 않습니다. 현재 가장 강력한 알고리즘은 General Number Field Sieve (GNFS) 로, L n [ 1 / 3 , ( 64 / 9 ) 1 / 3 ] L_n\left[1/3,(64/9)^{1/3}\right] L n [ 1/3 , ( 64/9 ) 1/3 ] , Big-O 표기법으로는 exp ( ( ( 64 / 9 ) 1 / 3 + o ( 1 ) ) ( lg n ) 1 / 3 ( lg lg n ) 2 / 3 ) \operatorname{exp}\left(\left((64/9)^{1/3}+o(1)\right)(\lg n)^{1/3}(\lg\lg n)^{2/3}\right) exp ( ( ( 64/9 ) 1/3 + o ( 1 ) ) ( lg n ) 1/3 ( lg lg n ) 2/3 ) 의 시간복잡도를 가지고 있습니다. 지수 시간복잡도보다는 빠르지만 다항 시간복잡도보다는 느리기 때문에, 충분히 큰 수의 소인수분해는 현실적으로 불가능합니다.
일반적인 조건에서 불가능하다면, 특정한 조건을 만족할 때 빠르게 소인수분해할 수 있는 알고리즘을 생각해볼 차례입니다. 암호 체계가 소인수분해를 쓴다면 정말로 무작위한 수를 뽑기보다는 특정한 구성 알고리즘을 사용하여 수를 선택할 것이고, 이는 생성된 수에 무작위에서 벗어난, 특수한 성질을 부여할 것입니다.
그러한 알고리즘은 종류가 매우 다양합니다.
Fermat factorization
Pollard’s p − 1 p-1 p − 1 method
Williams’s p + 1 p+1 p + 1 method
Factoring with cyclotomic polynomials
Lenstra Elliptic-Curve Method (Lenstra-ECM)
Return of Coppersmith Attack (ROCA)
…
이번 글은 Lenstra Elliptic-Curve Method 에서 시작하여, 4 p − 1 4p-1 4 p − 1 method라는 소인수분해 알고리즘에 대해 알아보겠습니다.
Lenstra Elliptic-Curve Method
RSA의 공개키 N N N 은 두 큰 소수 p , q p,q p , q 의 곱 N = p q N=pq N = pq 로 정의됩니다. 이때, 어떤 타원 곡선 E : y 2 = x 3 + A x + B E:y^2=x^3+Ax+B E : y 2 = x 3 + A x + B 가 F p \mathbb{F}_p F p 상에서 smooth한 위수 K : = # E ( F p ) K:=\#E(\mathbb{F}_p) K := # E ( F p ) 를 갖는다고 가정해 봅시다. 조금 더 엄밀하게, 어떤 자연수 U U U 에 대해 다음 조건을 만족한다고 생각해 봅시다.
∀ prime q ∣ K , q ≤ U \forall \text{prime }q\mid K,\quad q\le U ∀ prime q ∣ K , q ≤ U
q ⌊ lg q K ⌋ + 1 > K q^{\left\lfloor\lg_q{K}\right\rfloor+1}> K q ⌊ l g q K ⌋ + 1 > K 이므로, K K K 의 소인수분해에서 q q q 의 최대 지수 ν q ( K ) \nu_q(K) ν q ( K ) 는 다음을 만족합니다.
ν q ( K ) ≤ ⌊ lg q K ⌋ \nu_q(K)\le \left\lfloor\lg_q{K}\right\rfloor ν q ( K ) ≤ ⌊ lg q K ⌋
이를 이용해 다음 수식이 성립함을 알 수 있습니다. 이때 S S S 는 K K K 의 모든 소인수의 집합입니다.
K = ∏ q ∈ S q ν q ( K ) ∣ ∏ q ∈ S q ⌊ lg q K ⌋ K ∣ ∏ q ∈ S q ⌊ lg q K ⌋ K = \prod_{q\in S} q^{\nu_q(K)} \mid \prod_{q\in S} q^{\left\lfloor\lg_q{K}\right\rfloor}\\
K \mid \prod_{q\in S} q^{\left\lfloor\lg_q{K}\right\rfloor} K = q ∈ S ∏ q ν q ( K ) ∣ q ∈ S ∏ q ⌊ l g q K ⌋ K ∣ q ∈ S ∏ q ⌊ l g q K ⌋
(라그랑주의 정리) 타원 곡선 E E E 위의 임의의 점 P P P 에 대해, K P = ∣ E ( F p ) ∣ P = O KP=\left\vert E(\mathbb{F}_p)\right\vert P=\mathcal{O} K P = ∣ E ( F p ) ∣ P = O 가 성립합니다.
무한 원점은 임의의 정수를 곱하여도 무한 원점이므로, E E E 위의 임의의 점 P P P 에 대해 ( ∏ q ∈ S q ⌊ lg q K ⌋ ) P = O \left(\prod_{q\in S} q^{\left\lfloor\lg_q{K}\right\rfloor}\right)P=\mathcal{O} ( ∏ q ∈ S q ⌊ l g q K ⌋ ) P = O 임을 알 수 있습니다.
위 성질을 이용하여, Lenstra Elliptic-Curve Method는 다음과 같은 과정으로 n n n 의 소인수를 찾습니다.
Z / n Z \mathbb{Z}/n\mathbb{Z} Z / n Z 의 임의의 타원 곡선 E : y 2 = x 3 + A x + B E: y^2=x^3+Ax+B E : y 2 = x 3 + A x + B 와 그 위의 점 P = ( x 0 , y 0 ) P=(x_0,y_0) P = ( x 0 , y 0 ) 를 선택합니다.
( U ! ) P (U!)P ( U !) P 을 계산합니다. U ! U! U ! 을 직접 계산할 필요는 없으며, 다음과 같이 절차적으로 계산할 수 있습니다.
P 2 : = 2 P P_2 := 2P P 2 := 2 P 를 계산합니다.
P 3 : = 3 P 2 P_3 := 3P_2 P 3 := 3 P 2 를 계산합니다.
…
P U : = U P U − 1 P_U := UP_{U-1} P U := U P U − 1 을 계산합니다. P U = ( U ! ) P P_U=(U!)P P U = ( U !) P 입니다.
덧셈 계산 중 λ \lambda λ 의 분모가 n n n 과 서로소가 아닌 경우가 없다면, ∣ E ( F p ) ∣ \left\vert E(\mathbb{F}_p)\right\vert ∣ E ( F p ) ∣ 의 소인수 중 U U U 보다 큰 수가 존재한다는 의미입니다. 이 경우 1회의 시도가 실패한 것이므로, 1번으로 돌아가 다시 시도합니다.
덧셈 계산 중 λ \lambda λ 의 분모 v v v 가 n n n 과 서로소가 아닌 경우가 있었다면, gcd ( v , n ) \gcd(v,n) g cd( v , n ) 을 계산합니다. 이 값이 n n n 이 아니라면 p p p 또는 q q q 이므로 n n n 을 소인수분해할 수 있습니다.
이번 글에서 소개하는 소인수분해 알고리즘은 Lenstra Elliptic-Curve Method에 기반합니다. 차이점이라면,
Division Polynomial
타원 곡선 y 2 = x 3 + A x + B y^2=x^3+Ax+B y 2 = x 3 + A x + B 상의 점 P : = ( x P , y P ) P:=(x_P,y_P) P := ( x P , y P ) 에 대해, 2 P 2P 2 P 의 좌표는 다음과 같이 계산할 수 있습니다.
λ = 3 x P 2 + A 2 y P x 2 P = λ 2 − 2 x P = ( 3 x P 2 + A ) 2 − 8 x P y P 2 4 y P 2 y 2 P = λ ( x P − x 2 P ) − y P = ( 3 x P 2 + A ) ( x P − x 2 P ) − 2 y P 2 2 y P \begin{align*}
\lambda &= \frac{3{x_P}^2+A}{2{y_P}}\\
x_{2P} &= \lambda^2-2{x_P} = \frac{(3{x_P}^2+A)^2-8{x_P}{y_P}^2}{4{y_P}^2}\\
y_{2P} &= \lambda(x_{P}-x_{2P})-y_{P} = \frac{(3{x_P}^2+A)(x_P-x_{2P})-2{y_P}^2}{2{y_P}}
\end{align*} λ x 2 P y 2 P = 2 y P 3 x P 2 + A = λ 2 − 2 x P = 4 y P 2 ( 3 x P 2 + A ) 2 − 8 x P y P 2 = λ ( x P − x 2 P ) − y P = 2 y P ( 3 x P 2 + A ) ( x P − x 2 P ) − 2 y P 2
λ \lambda λ 의 정의 중 분모의 2 y P 2y_P 2 y P 가 만약 0이라면 2 P 2P 2 P 의 x좌표와 y좌표는 정의할 수 없을 것입니다. 타원 곡선에서 그러한 점은 오직 무한 원점 O \mathcal{O} O 뿐이므로, 2 y P = 0 2y_P=0 2 y P = 0 인 점 P P P 에 대해 2 P 2P 2 P 를 계산하면 O \mathcal{O} O 가 된다는 의미입니다.
이를 임의의 자연수 n n n 에 대해 확장시켜봅시다. n P nP n P 를 계산할 때 λ \lambda λ 의 분모를 ψ n \psi_n ψ n 이라고 하면, 처음 몇 개의 ψ n \psi_n ψ n 은 다음과 같습니다.
ψ 1 = 1 ψ 2 = 2 y ψ 3 = 3 x 4 + 6 A x 2 + 12 b x − A 2 ψ 4 = 4 y ( x 6 + 5 A x 4 + 20 B x 3 − 5 A 2 x 2 − 4 A B x − 8 B 2 − A 3 ) \begin{align*}
\psi_1 &= 1\\
\psi_2 &= 2y\\
\psi_3 &= 3x^4+6Ax^2+12bx-A^2\\
\psi_4 &= 4y(x^6+5Ax^4+20Bx^3-5A^2x^2-4ABx-8B^2-A^3)\\
\end{align*} ψ 1 ψ 2 ψ 3 ψ 4 = 1 = 2 y = 3 x 4 + 6 A x 2 + 12 b x − A 2 = 4 y ( x 6 + 5 A x 4 + 20 B x 3 − 5 A 2 x 2 − 4 A B x − 8 B 2 − A 3 )
이러한 다항식을 division polynomial 이라고 합니다. 이는 n P = O nP=\mathcal{O} n P = O 를 충족하는 점 P P P 들, 즉 n n n -torsion과 큰 관련이 있다고도 볼 수 있습니다.
다음은 division polynomial 사이에 성립하는 점화식입니다.
ψ 2 m + 1 = ψ m + 2 ψ m 3 − ψ m − 1 ψ m + 1 3 ψ 2 m = ( ψ m 2 y ) ⋅ ( ψ m + 2 ψ m − 1 3 − ψ m − 2 ψ m + 1 3 ) \begin{align*}
\psi_{2m+1} &= \psi_{m+2}{\psi_{m}}^3-\psi_{m-1}{\psi_{m+1}}^3\\
\psi_{2m} &= \left(\frac{\psi_m}{2y}\right)\cdot\left(\psi_{m+2}{\psi_{m-1}}^3-\psi_{m-2}{\psi_{m+1}}^3\right)
\end{align*} ψ 2 m + 1 ψ 2 m = ψ m + 2 ψ m 3 − ψ m − 1 ψ m + 1 3 = ( 2 y ψ m ) ⋅ ( ψ m + 2 ψ m − 1 3 − ψ m − 2 ψ m + 1 3 )
Some stuffs on Elliptic Curves…
타원 곡선에는 j-invariant 라는 개념이 있습니다. 등장한 배경은 다소 복잡하므로 생략하고, 대수적으로 닫힌 체 에서는 두 타원 곡선이 서로 isomorphic하다 는 두 타원 곡선의 j-invariant가 동일하다 와 동치입니다.
E : y 2 = x 3 + A x + B j ( E ) : = 1728 ⋅ 4 A 2 4 A 2 + 27 B 3 K : algebraically closed field E 1 / K ≃ E 2 / K ⇔ j ( E 1 / K ) = j ( E 2 / K ) E : y^2=x^3+Ax+B\\
j(E) := 1728\cdot\frac{4A^2}{4A^2+27B^3}\\[2em]
K : \text{algebraically closed field}\\[2em]
E_1/K \simeq E_2/K \Leftrightarrow j(E_1/K) = j(E_2/K) E : y 2 = x 3 + A x + B j ( E ) := 1728 ⋅ 4 A 2 + 27 B 3 4 A 2 K : algebraically closed field E 1 / K ≃ E 2 / K ⇔ j ( E 1 / K ) = j ( E 2 / K )
처 음 등장한 두 단어의 정의를 간단하게 짚고 넘어가겠습니다.
대수적으로 닫힌 체(algebraically closed field) 는 임의의 다항방정식이 근을 가지는 체를 말합니다. 복소수의 집합 C \mathbb{C} C 는 임의의 다항방정식이 근을 가지므로, 대수적으로 닫힌 체입니다.
∀ f ∈ C [ X ] ∃ r ∈ C f ( r ) = 0 \forall f\in\mathbb{C}[X] \quad \exists r\in\mathbb{C} \quad f(r)=0 ∀ f ∈ C [ X ] ∃ r ∈ C f ( r ) = 0
두 타원 곡선(혹은 일반적인 맥락에서 두 군)이 homomorphic 하다는 것은 다음을 조건하는 함수 ϕ \phi ϕ 가 존재한다는 뜻입니다. 이러한 ϕ \phi ϕ 를 homomorphism 이라고 부릅니다.
∀ P , Q ∈ E 1 ϕ ( P ) + ϕ ( Q ) = ϕ ( P + Q ) \forall P,Q\in E_1 \quad \phi(P)+\phi(Q)=\phi(P+Q) ∀ P , Q ∈ E 1 ϕ ( P ) + ϕ ( Q ) = ϕ ( P + Q )
만약 homomorphism ϕ \phi ϕ 가 일대일대응 함수라면 isomorphism 이라 부르고, 두 타원 곡선이 isomorphic 하다고 합니다.
Homomorphism의 정의역과 공역이 같은 타원 곡선이라면 그러한 ϕ \phi ϕ 는 endomorphism 이라고 부릅니다.
그런데 F p \mathbb{F}_p F p 는 대수적으로 닫힌 계가 아니므로 앞서 설명한 동치 관계가 성립하지 않습니다. 그중 다음과 같은 한 방향만 성립합니다.
E 1 / F p ≃ E 2 / F p ⇒ j ( E 1 / F p ) = j ( E 2 / F p ) E_1/\mathbb{F}_p \simeq E_2/\mathbb{F}_p \Rightarrow j(E_1/\mathbb{F}_p) = j(E_2/\mathbb{F}_p) E 1 / F p ≃ E 2 / F p ⇒ j ( E 1 / F p ) = j ( E 2 / F p )
따라서 동일한 j-invariant를 갖는 타원 곡선은 두 개 이상의 isomorphism class로 구성됩니다. j-invariant의 실제 값에 따라 경우의 수를 나누어 보면,
j = 0 j=0 j = 0 이면 최대 6개, (quadratic twist + cubic twist)
j = 1728 j=1728 j = 1728 이면 최대 4개, (quartic twist)
둘 모두 아니라면 정확히 2개 (quadratic twist)
의 isomorphism class가 존재합니다.
세 번째 경우가 일반적이며, 이 경우 해당 j-invariant 값을 갖는 타원 곡선의 isomorphism class는 다음과 같이 2개입니다. 이때 k = 27 j 4 ( 1728 − j ) k=\frac{27j}{4(1728-j)} k = 4 ( 1728 − j ) 27 j , c c c 는 p p p 의 이차 비잉여입니다.
조금 변형하면, E c E_c E c 가 곡선 y 2 = c 3 ( z 3 + k z + k ) y^2=c^3(z^3+kz+k) y 2 = c 3 ( z 3 + k z + k ) 와 일대일대응이라는 사실을 알 수 있습니다.
이 형태에 르장드르 기호를 취하면 # E 1 ( F p ) + # E c ( F p ) = 2 p + 2 \#E_1(\mathbb{F}_p)+\#E_c(\mathbb{F}_p)=2p+2 # E 1 ( F p ) + # E c ( F p ) = 2 p + 2 라는 사실을 관찰할 수 있습니다.
# E 1 ( F p ) = 1 + ∑ x ∈ F p ( 1 + χ ( x 3 + k x + k ) ) = ( p + 1 ) + ∑ x ∈ F p χ ( x 3 + k x + k ) # E c ( F p ) = 1 + ∑ x ∈ F p ( 1 + χ ( c 3 ( x 3 + k x + k ) ) ) = ( p + 1 ) + ∑ x ∈ F p χ ( c 3 ( x 3 + k x + k ) ) = ( p + 1 ) + ∑ x ∈ F p χ ( c 3 ) χ ( x 3 + k x + k ) = ( p + 1 ) − ∑ x ∈ F p χ ( x 3 + k x + k ) # E 1 ( F p ) + # E c ( F p ) = 2 ( p + 1 ) + ∑ x ∈ F p χ ( x 3 + k x + k ) − ∑ x ∈ F p χ ( x 3 + k x + k ) = 2 p + 2 \begin{align*}
\#E_1(\mathbb{F}_p)
&= 1 + \sum_{x\in\mathbb{F}_p} \left(1+\chi(x^3+kx+k)\right)\\
&= (p+1) + \sum_{x\in\mathbb{F}_p} \chi(x^3+kx+k)\\
\#E_c(\mathbb{F}_p)
&= 1 + \sum_{x\in\mathbb{F}_p} \left(1+\chi(c^3(x^3+kx+k))\right)\\
&= (p+1) + \sum_{x\in\mathbb{F}_p} \chi(c^3(x^3+kx+k))\\
&= (p+1) + \sum_{x\in\mathbb{F}_p} \chi(c^3)\chi(x^3+kx+k)\\
&= (p+1) - \sum_{x\in\mathbb{F}_p} \chi(x^3+kx+k)\\
\end{align*}\\[2em]
\begin{align*}
\#E_1(\mathbb{F}_p)+\#E_c(\mathbb{F}_p)
&= 2(p+1) + \sum_{x\in\mathbb{F}_p} \chi(x^3+kx+k) - \sum_{x\in\mathbb{F}_p} \chi(x^3+kx+k)\\
&= 2p+2
\end{align*} # E 1 ( F p ) # E c ( F p ) = 1 + x ∈ F p ∑ ( 1 + χ ( x 3 + k x + k ) ) = ( p + 1 ) + x ∈ F p ∑ χ ( x 3 + k x + k ) = 1 + x ∈ F p ∑ ( 1 + χ ( c 3 ( x 3 + k x + k )) ) = ( p + 1 ) + x ∈ F p ∑ χ ( c 3 ( x 3 + k x + k )) = ( p + 1 ) + x ∈ F p ∑ χ ( c 3 ) χ ( x 3 + k x + k ) = ( p + 1 ) − x ∈ F p ∑ χ ( x 3 + k x + k ) # E 1 ( F p ) + # E c ( F p ) = 2 ( p + 1 ) + x ∈ F p ∑ χ ( x 3 + k x + k ) − x ∈ F p ∑ χ ( x 3 + k x + k ) = 2 p + 2
Some stuffs on Elliptic Curves… (continued)
Hasse’s bound 는 타원 곡선 E ( F p ) E(\mathbb{F}_p) E ( F p ) 의 점 수 # E ( F p ) \#E(\mathbb{F}_p) # E ( F p ) 의 상한과 하한을 보여주는 정리입니다. 구체적인 범위는 다음과 같습니다.
# E ( F p ) ∈ [ p + 1 − 2 p , p + 1 + 2 p ] \#E(\mathbb{F}_p)\in[p+1-2\sqrt{p},p+1+2\sqrt{p}] # E ( F p ) ∈ [ p + 1 − 2 p , p + 1 + 2 p ]
즉, # E ( F p ) − ( p + 1 ) \#E(\mathbb{F}_p)-(p+1) # E ( F p ) − ( p + 1 ) 의 절댓값이 2 p 2\sqrt{p} 2 p 이하임을 나타내는 것이기도 합니다. 이 값을 타원 곡선의 trace 라고 부릅니다. 흔히 tr ( E ( F p ) ) \operatorname{tr}(E(\mathbb{F}_p)) tr ( E ( F p )) 처럼 작성하거나, 문자 t t t 로 표기하기도 합니다.
Frobenius endomorphism π \pi π 는 다음과 같이 정의되는 endomorphism입니다. 확장된 체에서의 성질을 분석하는 등 타원 곡선을 연구할 때 자주 다루어지는 도구이나, 이번 글에서는 다음과 같은 정의와 성질만 기억하셔도 좋습니다.
π : ( x , y ) ↦ ( x p , y p ) π 2 − t π + p = 0 \pi: (x,y)\mapsto(x^p,y^p)\\
\pi^2-t\pi+p=0 π : ( x , y ) ↦ ( x p , y p ) π 2 − t π + p = 0
유리수의 집합 Q \mathbb{Q} Q 에 대해, supersingular하지 않은 타원 곡선 E ( F p ) E(\mathbb{F}_p) E ( F p ) 은 다음을 만족합니다. supersingular라는 새로운 단어가 등장했지만, 여기서는 대부분의 타원 곡선이 supersingular하지 않다는 사실만 알고 넘어갑시다.
Q ( π ) : = { a 0 + a 1 π + a 2 π 2 + ⋯ ∣ a i ∈ Q } = { a + b π ∣ a , b ∈ Q } ( ∵ π 2 = t π − p ) ≃ Q [ X ] / ( X 2 − t X + p ) = Q ( t 2 − 4 p ) = Q ( − D ) ( D : = sqaure-free part of 4 p − t 2 ) \begin{align*}
\mathbb{Q}(\pi)
:=& \{a_0+a_1\pi+a_2\pi^2+\cdots \vert a_i\in\mathbb{Q}\}\\
=& \{a+b\pi\vert a,b\in\mathbb{Q}\} &&(\because \pi^2=t\pi-p)\\
\simeq& \mathbb{Q}[X]/(X^2-tX+p)\\
=& \mathbb{Q}\left(\sqrt{t^2-4p}\right)\\
=& \mathbb{Q}\left(\sqrt{-D}\right) &&(D:=\text{sqaure-free part of }4p-t^2)
\end{align*} Q ( π ) := = ≃ = = { a 0 + a 1 π + a 2 π 2 + ⋯ ∣ a i ∈ Q } { a + bπ ∣ a , b ∈ Q } Q [ X ] / ( X 2 − tX + p ) Q ( t 2 − 4 p ) Q ( − D ) ( ∵ π 2 = t π − p ) ( D := sqaure-free part of 4 p − t 2 )
Hasse’s bound에 의해 t 2 ≤ 4 p t^2\le4p t 2 ≤ 4 p 이고 p p p 는 소수이므로 t 2 = 4 p t^2=4p t 2 = 4 p 일 수는 없습니다. 따라서 t 2 < 4 p t^2<4p t 2 < 4 p 이고, t 2 − 4 p < 0 t^2-4p<0 t 2 − 4 p < 0 이므로 위 식의 마지막 줄은 타당한 변환이라고 볼 수 있습니다.
자세한 과정은 생략하나, 다음과 같은 결과를 얻을 수 있습니다.
# E ( F p ) = p + 1 − tr ( π ) \#E(\mathbb{F}_p) = p+1-\operatorname{tr}(\pi) # E ( F p ) = p + 1 − tr ( π )
자세한 과정 보기
Endomorphism의 덧셈, 뺄셈, 합성의 결과는 endomorphism이므로 Z [ π ] \mathbb{Z}[\pi] Z [ π ] 의 모든 원소는 endomorphism이며, 이는 Z [ π ] ⊂ End F ‾ p ( E ) \mathbb{Z}[\pi]\sub\operatorname{End}_{\overline{\mathbb{F}}_p}(E) Z [ π ] ⊂ End F p ( E ) 임을 의미합니다.
supersingular하지 않은 타원 곡선(즉 ordinary한 타원 곡선)은 정의 상 End 0 ( E ) : = End F ‾ p ( E ) ⊗ Z Q \operatorname{End}^0(E):=\operatorname{End}_{\overline{\mathbb{F}}_p}(E)\otimes_{\mathbb{Z}}\mathbb{Q} End 0 ( E ) := End F p ( E ) ⊗ Z Q 가 imaginary quadratic field(Q ( − D ) \mathbb{Q}\left(\sqrt{-D}\right) Q ( − D ) 꼴의 체)와 isomorphic합니다.
이는 즉 K K K (또는 Q ( π ) \mathbb{Q}(\pi) Q ( π ) )와 동일하므로, ring of integers O K \mathcal{O}_K O K 에 대해 Z [ π ] ⊂ End ( E ) ⊂ O K \mathbb{Z}[\pi]\sub\operatorname{End}(E)\sub\mathcal{O}_K Z [ π ] ⊂ End ( E ) ⊂ O K 가 성립하므로 End ( E ) \operatorname{End}(E) End ( E ) 는 ring of integers O K \mathcal{O}_K O K 의 유한한 index를 갖는 subring입니다. 따라서 order입니다.
즉, 다음이 성립하는 conductor f f f 가 존재합니다.
End ( E ) = O f = Z + f O K \operatorname{End}(E) = \mathcal{O}_f = \mathbb{Z}+f\mathcal{O}_K End ( E ) = O f = Z + f O K
이는 E E E 가 Complex Multiplication을 갖는다는 것을 의미합니다.
Frobenius endomorphism π \pi π 는 임의의 P ∈ E ( F p ) P\in E(\mathbb{F}_p) P ∈ E ( F p ) 에 대해 π ( P ) = P \pi(P)=P π ( P ) = P 를 만족하므로 다음 두 식이 성립합니다. 두 번째 줄은 1 − π 1-\pi 1 − π 가 separable isogeny이기 때문에 성립합니다.
E ( F p ) = ker ( 1 − π ) # E ( F p ) = deg ( 1 − π ) E(\mathbb{F}_p)=\operatorname{ker}(1-\pi)\\
\#E(\mathbb{F}_p)=\operatorname{deg}(1-\pi) E ( F p ) = ker ( 1 − π ) # E ( F p ) = deg ( 1 − π )
E E E 가 CM을 갖기 때문에, 다음과 같은 성질이 성립합니다.
# E ( F p ) = deg ( 1 − π ) = N ( 1 − π ) = ( 1 − π ) ( 1 − π ) ‾ = ( 1 − π ) ( 1 − π ‾ ) = 1 − ( π + π ‾ ) + π π ‾ = 1 − ( π + π ‾ ) + N ( π ) = 1 − ( π + π ‾ ) + p = 1 − tr ( π ) + p = p + 1 − tr ( π ) \begin{align*}
\#E(\mathbb{F}_p)
&=\operatorname{deg}(1-\pi)\\
&=N(1-\pi)\\
&=(1-\pi)\overline{(1-\pi)}\\
&=(1-\pi)(1-\overline{\pi})\\
&=1-(\pi+\overline{\pi})+\pi\overline{\pi}\\
&=1-(\pi+\overline{\pi})+N(\pi)\\
&=1-(\pi+\overline{\pi})+p\\
&=1-\operatorname{tr}(\pi)+p\\
&=p+1-\operatorname{tr}(\pi)\\
\end{align*} # E ( F p ) = deg ( 1 − π ) = N ( 1 − π ) = ( 1 − π ) ( 1 − π ) = ( 1 − π ) ( 1 − π ) = 1 − ( π + π ) + π π = 1 − ( π + π ) + N ( π ) = 1 − ( π + π ) + p = 1 − tr ( π ) + p = p + 1 − tr ( π )
이는 증명하려던 명제이므로, 증명이 마무리되었습니다.
4p-1 method
직전에 언급한 식을 다시 살펴보겠습니다. 아래 식에서 ∣ tr ( π ) ∣ = 1 \left\vert\operatorname{tr}(\pi)\right\vert=1 ∣ tr ( π ) ∣ = 1 이라면 E 1 E_1 E 1 또는 E c E_c E c 의 점이 정확히 p p p 가 될 것입니다. RSA에서 공격자는 공개키이자 p p p 의 배수인 N = p q N=pq N = pq 을 알고 있으므로, 위수가 p p p 인 타원 곡선에서 N N N 을 곱하면 그 결과는 무한 원점 O \mathcal{O} O 가 될 것입니다.
이는 타원 곡선의 임의의 점 ( x , y ) (x,y) ( x , y ) 를 골라도 division polynomial ψ N ( x ) mod p \psi_N(x)\text{ mod }p ψ N ( x ) mod p 가 0이 됨을 의미합니다. 즉, ψ N ( x ) mod N \psi_N(x)\text{ mod }N ψ N ( x ) mod N 은 p p p 의 배수입니다. 이를 계산할 수만 있다면 gcd ( ψ N ( x ) , N ) \gcd(\psi_N(x),N) g cd( ψ N ( x ) , N ) 을 계산하여 p p p 를 찾을 수 있을 것입니다.
논문의 Table 1에서는 공격에 사용할 수 있는 D D D 와 대응되는 j D j_D j D , 그리고 p p p 의 꼴을 소개합니다.
D D D
j D j_D j D
The form of p p p
3 3 3
0 0 0
4 p − 1 = 3 b 2 4p-1=3b^2 4 p − 1 = 3 b 2
11 11 11
( − 2 5 ) 3 \left(-2^5\right)^3 ( − 2 5 ) 3
4 p − 1 = 11 b 2 4p-1=11b^2 4 p − 1 = 11 b 2
19 19 19
( − 2 5 ⋅ 3 ) 3 \left(-2^5\cdot 3\right)^3 ( − 2 5 ⋅ 3 ) 3
4 p − 1 = 19 b 2 4p-1=19b^2 4 p − 1 = 19 b 2
43 43 43
( − 2 5 ⋅ 3 ⋅ 5 ) 3 \left(-2^5\cdot 3\cdot 5\right)^3 ( − 2 5 ⋅ 3 ⋅ 5 ) 3
4 p − 1 = 43 b 2 4p-1=43b^2 4 p − 1 = 43 b 2
67 67 67
( − 2 5 ⋅ 3 ⋅ 5 ⋅ 11 ) 3 \left(-2^5\cdot 3\cdot 5\cdot 11\right)^3 ( − 2 5 ⋅ 3 ⋅ 5 ⋅ 11 ) 3
4 p − 1 = 67 b 2 4p-1=67b^2 4 p − 1 = 67 b 2
163 163 163
( − 2 6 ⋅ 3 ⋅ 5 ⋅ 23 ⋅ 29 ) 3 \left(-2^6\cdot 3\cdot 5\cdot 23\cdot 29\right)^3 ( − 2 6 ⋅ 3 ⋅ 5 ⋅ 23 ⋅ 29 ) 3
4 p − 1 = 163 b 2 4p-1=163b^2 4 p − 1 = 163 b 2
Division polynomial의 값을 계산할 때, 단순히 앞서 소개한 점화식을 사용한다면 계산해야 하는 항의 수가 지수적으로 증가한다면 이를 계산할 수 없을 것입니다. 저자는 연속한 인덱스의 division polynomial의 값을 계산할 때 필요한 항의 수가 O ( lg N ) O(\lg N) O ( lg N ) 개임을 보입니다.
Division polynomial에 대해 다음의 점화식이 성립합니다.
ψ 4 n + 1 = 16 ( x 3 + A x + B ) ψ 2 n + 2 ψ 2 n 3 − ψ 2 n − 1 ψ 2 n + 1 3 , ψ 4 n + 2 = ψ 2 n + 1 ( ψ 2 n + 3 ψ 2 n 2 − ψ 2 n − 1 ψ 2 n + 2 2 ) , ψ 4 n + 3 = ψ 2 n + 3 ψ 2 n + 1 3 − 16 ( x 3 + A x + B ) ψ 2 n ψ 2 n + 2 3 , ψ 4 n + 4 = ψ 2 n + 2 ( ψ 2 n + 4 ψ 2 n + 1 2 − ψ 2 n ψ 2 n + 3 2 ) . \begin{align*}
\psi_{4n+1}
&= 16(x^3 + Ax + B)\psi_{2n+2}\psi{2n}^3
- \psi_{2n-1}\psi_{2n+1}^3, \\
\psi_{4n+2}
&= \psi_{2n+1}
\left(
\psi_{2n+3}\psi_{2n}^2
- \psi_{2n-1}\psi_{2n+2}^2
\right), \\
\psi_{4n+3}
&= \psi_{2n+3}\psi_{2n+1}^3
- 16(x^3 + Ax + B)\psi_{2n}\psi_{2n+2}^3, \\
\psi_{4n+4}
&= \psi_{2n+2}
\left(
\psi_{2n+4}\psi_{2n+1}^2
- \psi_{2n}\psi_{2n+3}^2
\right).
\end{align*} ψ 4 n + 1 ψ 4 n + 2 ψ 4 n + 3 ψ 4 n + 4 = 16 ( x 3 + A x + B ) ψ 2 n + 2 ψ 2 n 3 − ψ 2 n − 1 ψ 2 n + 1 3 , = ψ 2 n + 1 ( ψ 2 n + 3 ψ 2 n 2 − ψ 2 n − 1 ψ 2 n + 2 2 ) , = ψ 2 n + 3 ψ 2 n + 1 3 − 16 ( x 3 + A x + B ) ψ 2 n ψ 2 n + 2 3 , = ψ 2 n + 2 ( ψ 2 n + 4 ψ 2 n + 1 2 − ψ 2 n ψ 2 n + 3 2 ) .
이를 조금 일반화하면 다음과 같이 연속한 j + 1 j+1 j + 1 개의 division polynomial을 계산하는데 필요한 division polynomial의 값을 찾을 수 있습니다.
ψ i ( x ) , ψ i + 1 ( x ) , ⋯ , ψ i + j ( x ) depend on ψ ⌈ i / 2 ⌉ − 2 , ψ ⌈ i / 2 ⌉ − 1 , ⋯ , ψ ⌊ ( i + j ) / 2 ⌋ + 1 , ψ ⌊ ( i + j ) / 2 ⌋ + 2 \psi_i(x),\ \psi_{i+1}(x),\ \cdots,\ \psi_{i+j}(x)\\
\text{depend on}\\
\psi_{\lceil i/2\rceil-2},\
\psi_{\lceil i/2\rceil-1},\
\cdots,\
\psi_{\lfloor(i+j)/2\rfloor+1},\
\psi_{\lfloor(i+j)/2\rfloor+2} ψ i ( x ) , ψ i + 1 ( x ) , ⋯ , ψ i + j ( x ) depend on ψ ⌈ i /2 ⌉ − 2 , ψ ⌈ i /2 ⌉ − 1 , ⋯ , ψ ⌊( i + j ) /2 ⌋ + 1 , ψ ⌊( i + j ) /2 ⌋ + 2
전자의 항 개수는 j + 1 j+1 j + 1 개, 후자의 항 개수는 5 + ⌊ ( i + j ) / 2 ⌋ − ⌈ i / 2 ⌉ 5+\lfloor(i+j)/2\rfloor-\lceil i/2\rceil 5 + ⌊( i + j ) /2 ⌋ − ⌈ i /2 ⌉ 개입니다. 이 변환은 j ≥ 10 j\ge 10 j ≥ 10 이라면 항 개수가 줄어들고, 그렇지 않은 경우 항의 수가 10개 이하로 상한이 정해져 있습니다. 실제로 그래프를 그려서 성립함을 확인할 수 있습니다.
인덱스는 대략 절반씩 줄어들고 있고, 각 스텝에서 필요한 연속한 division polynomial의 개수 역시 상한이 존재하므로, 대략 O ( lg n ) O(\lg n) O ( lg n ) 개의 division polynomial을 계산하게 됩니다.
Division polynomial의 값 역시 특정 x좌표에서 계산한 값을 N N N 으로 나눈 나머지만 계산한다면 무한정 발산하지 않으므로, 구하려는 division polynomial의 값을 O ( lg N ) O(\lg N) O ( lg N ) 번의 ring operation으로 계산할 수 있습니다.
정리한 알고리즘의 의사코드입니다.
For each j in {j_D values in Table 1}:
compute a:=j/(1728-j) mod N
randomly choose B1 integers c_1,...,c_B1
randomly choose B2 integers x_1,...,x_B2
For each c in {c_1,...,c_B1}:
For each x in {x_1,...,x_B2}:
compute z:= Ψ_N(x) mod N
of the elliptic curve y^2=x^3+3ac^2x+2ac^3
compute gcd(z,n)
If the gcd is non-trivial, output the result and exit
End For
End For
End For