<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>쇼어 알고리즘 on kenji.blog</title><link>http://kenji.blog/ko/tags/%EC%87%BC%EC%96%B4-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/</link><description>Recent content in 쇼어 알고리즘 on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ko</language><copyright>kenjinote</copyright><atom:link href="http://kenji.blog/ko/tags/%EC%87%BC%EC%96%B4-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/index.xml" rel="self" type="application/rss+xml"/><item><title>[수학적 고찰] 왜 암호 해독 알고리즘 'GNFS'는 양자 컴퓨터 시대의 Shor 알고리즘에 패배하는가?</title><link>http://kenji.blog/ko/p/gnfs-to-shors-algorithm-math-deepdive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://kenji.blog/ko/p/gnfs-to-shors-algorithm-math-deepdive/</guid><description>&lt;img src="http://kenji.blog/p/gnfs-to-shors-algorithm-math-deepdive/quantum_vs_gnfs_eyecatch_1788616101508.jpg" alt="Featured image of post [수학적 고찰] 왜 암호 해독 알고리즘 'GNFS'는 양자 컴퓨터 시대의 Shor 알고리즘에 패배하는가?" />&lt;p>현대 인터넷 사회의 정보 보안은 RSA 암호를 비롯한 공개키 암호 방식에 의해 보호받고 있습니다. RSA 암호의 안전성 근거는, &lt;strong>&amp;lsquo;거대한 합성수의 소인수분해는 계산량적으로 극히 어렵다&amp;rsquo;&lt;/strong> 는 사실에 의존하고 있습니다.&lt;/p>
&lt;p>이 글에서는 고전 컴퓨터에서 최강의 소인수분해 알고리즘인 &lt;strong>&amp;lsquo;일반 수체 체(General Number Field Sieve, GNFS)&amp;rsquo;&lt;/strong> 의 수학적 메커니즘을 파헤치고, 그것이 왜 피터 쇼어(Peter Shor)가 발견한 &lt;strong>&amp;lsquo;쇼어 알고리즘(Shor&amp;rsquo;s Algorithm)&amp;rsquo;&lt;/strong> 에 의해 완전히 무너지는지, 그 패러다임 시프트를 수식과 개념도를 이용해 철저히 깊이 있게 다룹니다.&lt;/p>
&lt;hr>
&lt;h2 id="1-고전-계산에서의-소인수분해-접근법-페르마의-소인수분해법으로부터의-발전">1. 고전 계산에서의 소인수분해 접근법: 페르마의 소인수분해법으로부터의 발전
&lt;/h2>&lt;p>소인수분해 문제란, 주어진 합성수 $N$에 대하여 $N = p \times q$가 되는 소수 $p, q$를 찾는 문제입니다.&lt;/p>
&lt;p>기본적인 아이디어는 다음 합동식을 만족하는 자명하지 않은 $x, y$를 찾는 것으로 귀결됩니다.&lt;/p>
$$ x^2 \equiv y^2 \pmod N $$
&lt;p>이를 변형하면,&lt;/p>
$$ x^2 - y^2 \equiv 0 \pmod N $$
$$ (x - y)(x + y) \equiv 0 \pmod N $$
&lt;p>여기서 $x \not\equiv \pm y \pmod N$ 이라면, $\gcd(x-y, N)$ 또는 $\gcd(x+y, N)$을 계산함으로써 $N$의 자명하지 않은 인수를 얻을 수 있습니다. 이 사실이 GNFS 등 근대적인 소인수분해 알고리즘의 기초가 됩니다.&lt;/p>
&lt;hr>
&lt;h2 id="2-고전-최강의-알고리즘-일반-수체-체gnfs의-심연">2. 고전 최강의 알고리즘: &amp;lsquo;일반 수체 체(GNFS)&amp;lsquo;의 심연
&lt;/h2>&lt;p>&lt;strong>&amp;lsquo;GNFS&amp;rsquo;&lt;/strong> 는 오늘날 알려진 고전 컴퓨터용 소인수분해 알고리즘 중에서 가장 빠른 것입니다. 그 시간 복잡도는 준지수 함수적(Sub-exponential)인 시간을 필요로 합니다.&lt;/p>
&lt;h3 id="gnfs의-계산량">GNFS의 계산량
&lt;/h3>&lt;p>수 $N$의 자릿수를 $b = \log_2 N$이라고 할 때, GNFS의 계산량은 다음과 같이 표현됩니다.&lt;/p>
$$ O\left( \exp \left( \left(\frac{64}{9} b\right)^{1/3} (\log b)^{2/3} \right) \right) $$
&lt;p>이 식에서 알 수 있듯이, 계산량은 다항식 시간이 아니라 지수 함수보다는 약간 느린 &lt;strong>&amp;lsquo;준지수 시간&amp;rsquo;&lt;/strong> 이 됩니다. 그럼에도 자릿수가 늘어나면 계산 시간은 천문학적으로 증대합니다.&lt;/p>
&lt;h3 id="gnfs의-수학적-메커니즘">GNFS의 수학적 메커니즘
&lt;/h3>&lt;p>GNFS는 크게 4개의 단계로 구성됩니다.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>다항식 선택 (Polynomial Selection)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>체질 (Sieving)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>행렬의 간소화 (Matrix Reduction)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>제곱근 계산 (Square Root)&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h4 id="21-다항식-선택과-대수체">2.1. 다항식 선택과 대수체
&lt;/h4>&lt;p>먼저, 정수를 계수로 하는 기약 다항식 $f(x)$와 $g(x)$를 선택합니다. 이들은 공통의 근 $m$을 modulo $N$으로 가지도록 설정됩니다. 즉,&lt;/p>
$$ f(m) \equiv 0 \pmod N $$
$$ g(m) \equiv 0 \pmod N $$
&lt;p>일반적으로 $g(x)$는 일차 다항식 $g(x) = x - m$으로 선택됩니다. $f(x)$의 근을 $\alpha$라고 두면, $\mathbb{Q}(\alpha)$라는 &lt;strong>&amp;lsquo;대수체&amp;rsquo;&lt;/strong>(Number Field)가 구성됩니다. $\mathbb{Q}(\alpha)$의 환에서의 연산과 일반적인 정수환 $\mathbb{Z}$의 연산을 준동형 사상 $\phi: \alpha \mapsto m$을 통해 비교합니다.&lt;/p>
&lt;h4 id="22-체질-sieving">2.2. 체질 (Sieving)
&lt;/h4>&lt;p>다음으로 서로소인 정수 쌍 $(a, b)$를 대량으로 탐색합니다. 목적은 다음 두 값이 각각 &lt;strong>&amp;lsquo;B-smooth&amp;rsquo;&lt;/strong>(비교적 작은 소인수로만 구성됨)가 되는 쌍을 찾는 것입니다.&lt;/p>
&lt;ol>
&lt;li>$a - bm$ (정수환 위에서의 값)&lt;/li>
&lt;li>$b^d f(a/b)$ (대수체 위에서의 노름 $N(a - b\alpha)$에 대응)&lt;/li>
&lt;/ol>
&lt;p>여기서 &lt;strong>&amp;lsquo;체&amp;rsquo;&lt;/strong>(Sieve)라고 불리는 고속 탐색 기법이 사용됩니다. 이를 통해 방대한 후보 중에서 조건을 만족하는 $(a, b)$ 쌍을 효율적으로 추출합니다.&lt;/p>
&lt;h4 id="23-행렬의-간소화-linear-algebra-over-gf2">2.3. 행렬의 간소화 (Linear Algebra over GF(2))
&lt;/h4>&lt;p>수집한 쌍 $(a, b)$로부터 지수 벡터를 구성하고, 거대한 희소 행렬의 왼쪽 영공간(Left Null Space)을 $\mathbb{F}_2$(요소가 0과 1뿐인 체) 위에서 구합니다.&lt;/p>
&lt;p>관계식 $ \prod (a_i - b_i m) $ 와 $ \prod (a_i - b_i \alpha) $ 가 각각 제곱원이 되도록 벡터 $v$를 해로 찾습니다. 이는,&lt;/p>
$$ M \mathbf{x} \equiv \mathbf{0} \pmod 2 $$
&lt;p>라는 선형 방정식계를 푸는 것과 다름없습니다. 여기서 블록 란초스 알고리즘(Block Lanczos Algorithm)이나 블록 위데만 알고리즘(Block Wiedemann Algorithm) 등의 고도화된 수치 계산 알고리즘이 활용됩니다.&lt;/p>
&lt;h4 id="24-제곱근-계산">2.4. 제곱근 계산
&lt;/h4>&lt;p>마지막으로 대수체와 정수환 양쪽에서 제곱근을 취하고, $x^2 \equiv y^2 \pmod N$이라는 관계식을 도출해 냅니다. 그리고 $\gcd(x-y, N)$을 계산하여 인수를 얻습니다.&lt;/p>
&lt;hr>
&lt;h2 id="3-양자-계산에-의한-혁신-쇼어-알고리즘">3. 양자 계산에 의한 혁신: &amp;lsquo;쇼어 알고리즘&amp;rsquo;
&lt;/h2>&lt;p>GNFS가 준지수 함수적인 시간을 필요로 하는 반면, 1994년 피터 쇼어가 발표한 &lt;strong>&amp;lsquo;쇼어 알고리즘&amp;rsquo;&lt;/strong> 은 양자 컴퓨터를 사용하여 이 문제를 &lt;strong>&amp;lsquo;다항식 시간&amp;rsquo;&lt;/strong> 에 풀 수 있습니다.&lt;/p>
&lt;h3 id="쇼어-알고리즘의-계산량">쇼어 알고리즘의 계산량
&lt;/h3>&lt;p>양자 비트 수를 $O(\log N)$이라고 할 때, 시간 복잡도는 다음과 같습니다.&lt;/p>
$$ O((\log N)^3) $$
&lt;p>이는 비트 수에 대해 지수 함수적인 폭발을 일으키지 않음을 의미합니다. &lt;strong>&amp;lsquo;고전 계산&amp;rsquo;&lt;/strong> 의 계산량이 우주의 수명을 초과할 만한 거대한 합성수라도, &lt;strong>&amp;lsquo;양자 계산&amp;rsquo;&lt;/strong> 에서는 몇 시간～며칠 만에 해독 가능해진다는 경이로운 결과입니다.&lt;/p>
&lt;h3 id="쇼어-알고리즘의-전체상-주기-찾기-문제로의-귀결">쇼어 알고리즘의 전체상: 주기 찾기 문제로의 귀결
&lt;/h3>&lt;p>쇼어 알고리즘은 소인수분해 문제를 &lt;strong>&amp;lsquo;주기 찾기 문제&amp;rsquo;&lt;/strong> 로 교묘하게 귀결시킵니다.&lt;/p>
&lt;ol>
&lt;li>$N$과 서로소인 무작위 정수 $a$를 선택합니다 ($1 &lt; a &lt; N$).&lt;/li>
&lt;li>함수 $f(x) = a^x \bmod N$을 정의합니다.&lt;/li>
&lt;li>$f(x)$의 주기 $r$, 즉 $a^r \equiv 1 \pmod N$이 되는 최소의 양의 정수 $r$을 찾습니다.&lt;/li>
&lt;li>$r$이 짝수이면, $a^{r/2} \not\equiv -1 \pmod N$인지 확인하고, $\gcd(a^{r/2} \pm 1, N)$을 계산하여 소인수를 얻습니다.&lt;/li>
&lt;/ol>
&lt;p>이 3단계의 &lt;strong>&amp;lsquo;주기 $r$의 발견&amp;rsquo;&lt;/strong> 이야말로 고전 컴퓨터에서는 지수 함수적 시간을 필요로 하는 병목 현상이지만, 양자 컴퓨터는 &lt;strong>&amp;lsquo;양자 중첩&amp;rsquo;&lt;/strong> 과 &lt;strong>&amp;lsquo;양자 푸리에 변환&amp;rsquo;&lt;/strong>(QFT)을 사용하여 이를 순식간에 해결합니다.&lt;/p>
&lt;hr>
&lt;h2 id="4-양자-푸리에-변환qft과-주기의-추출">4. 양자 푸리에 변환(QFT)과 주기의 추출
&lt;/h2>&lt;p>쇼어 알고리즘의 핵심인 양자 상태의 조작에 대해 수식으로 자세히 살펴보겠습니다.&lt;/p>
&lt;h3 id="41-양자-중첩의-생성">4.1. 양자 중첩의 생성
&lt;/h3>&lt;p>먼저 2개의 양자 레지스터를 준비합니다. 레지스터 1은 입력 $x$의 중첩 상태를 유지하고, 레지스터 2는 함수의 계산 결과 $f(x)$를 유지합니다. 초기 상태 $|0\rangle |0\rangle$에 아다마르 변환(Hadamard Transform)을 적용하여 가능한 모든 $x$의 중첩을 만들어 냅니다.&lt;/p>
$$ |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |0\rangle $$
&lt;p>
(여기서 $Q$는 $N^2 \le Q &lt; 2N^2$을 만족하는 2의 거듭제곱)&lt;/p>
&lt;p>다음으로 양자 오라클 $U_f$를 사용하여 $f(x) = a^x \bmod N$을 계산하고 레지스터 2에 저장합니다.&lt;/p>
$$ |\psi_2\rangle = U_f |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |a^x \bmod N\rangle $$
&lt;p>여기서 레지스터 2를 측정했다고 가정해 봅시다 (실제로 측정하지 않아도 수학적 구조는 동일합니다). 어떤 값 $y = a^{x_0} \bmod N$이 관측되었다고 하면, 레지스터 1의 상태는 $f(x) = y$가 되는 모든 $x$의 중첩으로 수축합니다. 주기를 $r$이라고 하면, 그러한 $x$는 $x_0, x_0 + r, x_0 + 2r, \dots$가 됩니다.&lt;/p>
$$ |\psi_3\rangle = \frac{1}{\sqrt{M}} \sum_{k=0}^{M-1} |x_0 + kr\rangle $$
&lt;p>
(여기서 $M \approx Q/r$은 항의 수)&lt;/p>
&lt;p>이 상태는 주기 $r$의 정보를 내포하고 있지만, 직접 측정해도 무작위한 $x_0 + kr$이 얻어질 뿐, 주기 $r$은 알 수 없습니다. 여기서 QFT가 등장합니다.&lt;/p>
&lt;h3 id="42-양자-푸리에-변환-quantum-fourier-transform-의-적용">4.2. 양자 푸리에 변환 (Quantum Fourier Transform) 의 적용
&lt;/h3>&lt;p>QFT는 양자 상태의 진폭에 대해 이산 푸리에 변환을 수행하는 조작입니다. 상태 $|x\rangle$에 대한 QFT의 작용은 다음과 같이 정의됩니다.&lt;/p>
$$ \text{QFT} |x\rangle = \frac{1}{\sqrt{Q}} \sum_{y=0}^{Q-1} e^{2\pi i \frac{xy}{Q}} |y\rangle $$
&lt;p>이것을 $|\psi_3\rangle$에 적용하면, 위상의 간섭(양자 간섭)이 일어납니다.&lt;/p>
$$ |\psi_4\rangle = \text{QFT} |\psi_3\rangle = \frac{1}{\sqrt{MQ}} \sum_{y=0}^{Q-1} \sum_{k=0}^{M-1} e^{2\pi i \frac{(x_0 + kr)y}{Q}} |y\rangle $$
&lt;p>이 식의 합을 전개하면,&lt;/p>
$$ \sum_{k=0}^{M-1} e^{2\pi i \frac{kry}{Q}} $$
&lt;p>라는 부분이 나타납니다. 이 기하급수의 합은 $ry/Q$가 정수에 가까울 때에만 보강 간섭(Constructive Interference)이 일어나고, 그 외의 경우에는 상쇄 간섭(Destructive Interference)이 일어납니다.&lt;/p>
&lt;p>따라서 높은 확률로 측정되는 상태 $|y\rangle$는,&lt;/p>
$$ \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>이라는 조건을 만족하는 정수 $y$가 됩니다 ($c$는 어떤 정수).&lt;/p>
&lt;h3 id="43-연분수-전개에-의한-주기-특정">4.3. 연분수 전개에 의한 주기 특정
&lt;/h3>&lt;p>측정을 통해 $y$를 얻은 후, 고전 컴퓨터를 이용하여 $y/Q$를 &lt;strong>&amp;lsquo;연분수 전개&amp;rsquo;&lt;/strong>(Continued Fraction Expansion)합니다. 이를 통해 $y/Q$의 근사 분수 $c/r$을 계산하고, 분모로부터 주기 $r$의 후보를 고효율로 추출할 수 있습니다.&lt;/p>
&lt;hr>
&lt;h2 id="5-개념-모델의-비교와-패러다임-시프트">5. 개념 모델의 비교와 패러다임 시프트
&lt;/h2>&lt;p>GNFS와 쇼어 알고리즘의 차이를 직관적으로 이해하기 위해, Mermaid 기법을 사용한 개념도를 제시합니다.&lt;/p>
&lt;h3 id="양자-회로에-의한-쇼어-알고리즘의-개념도">양자 회로에 의한 쇼어 알고리즘의 개념도
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A[초기 상태: 0...0] --&amp;gt; B[아다마르 변환으로 모든 상태의 중첩]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C[모듈러 거듭제곱 연산 a^x mod N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|양자 얽힘| D[주기성을 가지는 상태로의 수축]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> D --&amp;gt; E[양자 푸리에 변환 QFT]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> E --&amp;gt;|간섭에 의한 확률 증폭| F[측정: y를 얻음]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F --&amp;gt; G[고전 처리: 연분수 전개]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt; H[주기 r 발견]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> H --&amp;gt; I[N의 소인수 산출]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style A fill:#f9f,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style E fill:#bbf,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style I fill:#bfb,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="패러다임-시프트의-본질">패러다임 시프트의 본질
&lt;/h3>&lt;p>GNFS는 &lt;strong>&amp;lsquo;수학적인 공간(대수체) 안에서 관계식을 탐색한다&amp;rsquo;&lt;/strong> 라는 접근 방식을 취합니다. 하지만 탐색 공간은 자릿수에 대해 지수 함수적으로 확대되기 때문에, 고전 컴퓨터의 계산 능력(병렬화를 포함하더라도)으로는 키 길이가 2048비트 등을 초과하면 사실상 해독이 불가능해집니다.&lt;/p>
&lt;p>반면, 쇼어 알고리즘은 &lt;strong>&amp;lsquo;양자 간섭에 의한 파동의 성질&amp;rsquo;&lt;/strong> 을 이용합니다. 중첩 상태에 있는 모든 계산 경로를 동시에 평가하고, QFT에 의해 불필요한 답을 상쇄(약화)시키고, 정답이 되는 주기의 확률 진폭만을 증폭(강화)시킵니다. 이를 통해 공간을 탐색하는 것이 아니라, &lt;strong>&amp;lsquo;정답 그 자체를 떠오르게 한다&amp;rsquo;&lt;/strong> 는 전혀 다른 차원의 접근 방식을 실현하고 있는 것입니다.&lt;/p>
&lt;h2 id="6-요약">6. 요약
&lt;/h2>&lt;p>이 글에서는 고전 한계의 끝판왕인 &lt;strong>&amp;lsquo;GNFS&amp;rsquo;&lt;/strong> 와 양자 계산의 힘을 보여주는 &lt;strong>&amp;lsquo;쇼어 알고리즘&amp;rsquo;&lt;/strong> 에 대해, 각각의 수학적 배경과 알고리즘의 구조를 깊이 비교했습니다.&lt;/p>
&lt;p>GNFS가 다항식의 선택이나 거대한 행렬의 계산 등 수학적 기교를 부려 준지수 시간으로 계산량을 끌어내린 반면, 쇼어 알고리즘은 양자 역학의 기본 원리인 중첩과 간섭을 수학적 도구(QFT)와 융합시켜 단숨에 다항식 시간으로의 혁신을 이루어냈습니다.&lt;/p>
&lt;p>현재 시점에서는 실용적인 규모(수천 양자 비트)로 쇼어 알고리즘을 실행할 수 있는 결함 허용 양자 컴퓨터(FTQC)는 존재하지 않습니다. 하지만 이 수학적·이론적인 패러다임 시프트의 존재야말로, 현재 전 세계적으로 양자 내성 암호(PQC: Post-Quantum Cryptography)로의 이행이 시급해진 가장 큰 이유입니다.&lt;/p></description></item></channel></rss>