타원곡선 기반 정수인수분해 알고리즘의 혁신
초록
레인스트라의 타원곡선 인수분해법에 두 번째 단계를 도입해 기대되는 로그(p) 수준의 가속을 제시한다. 실험 결과와 이론적 가정 하에 속도 향상이 확인되었으며, p‑1 알고리즘과의 연관성도 논의한다.
상세 분석
레인스트라 알고리즘은 무작위 타원곡선을 이용해 작은 소인수 p를 찾는 과정에서, 곡선 위의 점들을 연산하면서 곱셈군 ⟨P⟩의 차수를 점차 늘려간다. 기존 방법은 “첫 번째 단계”에서 B‑smooth한 정수 B를 선택하고, 곱셈군의 차수가 B 이하인 소인수 p에 대해 곧바로 발견한다. 그러나 실제 실행에서는 차수가 B보다 약간 큰 경우도 빈번히 발생한다. 논문은 이러한 경우를 포착하기 위해 “두 번째 단계”—즉, 차수가 B를 초과한 구간을 탐색하는 절차—를 도입한다.
두 번째 단계는 크게 두 가지 전략으로 나뉜다. 첫 번째는 이미 계산된 점 Q = kP에 대해 추가적인 작은 소인수 q를 곱해 Q’ = qQ를 만든 뒤, GCD(N, x‑좌표(Q’)−x‑좌표(Q))을 검사하는 방식이다. 여기서 q는 B와 B’ 사이의 소수들로, B’≈B·log p 정도로 설정한다. 두 번째 전략은 “배수 탐색”이라 부르며, Q에 대해 연속적인 배수를 계산하면서 GCD 연산을 수행한다. 두 방법 모두 곡선 위에서의 연산량은 크게 증가하지 않으며, 추가적인 메모리 요구도 최소화된다.
이론적 분석에서는 “smoothness probability”를 이용해 두 단계의 성공 확률을 추정한다. 첫 번째 단계에서 p‑1이 B‑smooth일 확률을 ψ(p‑1,B)/p 로 표현하고, 두 번째 단계에서는 ψ(p‑1,B’)−ψ(p‑1,B) 를 고려한다. ψ는 Dickman‑de Bruijn 함수이며, B’≈B·log p 로 두면 두 단계의 성공 확률 곱이 기존 단일 단계 대비 약 log p 배 향상됨을 보인다. 또한, 병렬 구현 시 각 프로세스가 독립적으로 서로 다른 곡선을 탐색하므로 전체 기대 시간은 O(√p / log p) 로 감소한다.
실험에서는 100자리200자리 정수에 대해 다양한 B 값을 시험했으며, 두 번째 단계를 적용했을 때 평균 실행 시간이 1.8배2.3배 단축되었다. 특히 p가 30자리 이상일 때 로그(p) 수준의 가속이 뚜렷하게 나타났다. 또한, Pollard의 p‑1 알고리즘과 비교했을 때, 타원곡선 기반 방법이 p‑1이 B‑smooth하지 않은 경우에도 높은 성공률을 유지한다는 점을 강조한다.
마지막으로 논문은 두 번째 단계의 변형으로 “다중 단계” 접근법을 제안한다. 여기서는 B, B·log p, B·(log p)^2 순으로 단계적 탐색을 수행해, 매우 큰 소인수에 대해서도 효율적인 탐색이 가능하도록 설계했다. 이와 같은 확장은 기존 레인스트라 구현에 최소한의 코드 수정만으로 적용 가능하며, 실제 암호 해독 작업에서 실용적인 이점을 제공한다.