<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Quantum Computing on kenji.blog</title><link>http://kenji.blog/ko/tags/quantum-computing/</link><description>Recent content in Quantum Computing on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ko</language><copyright>kenjinote</copyright><lastBuildDate>Fri, 11 Sep 2026 20:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/ko/tags/quantum-computing/index.xml" rel="self" type="application/rss+xml"/><item><title>Qiskit을 사용한 양자 프로그래밍 초입문</title><link>http://kenji.blog/ko/p/qiskit-quantum-programming-intro/</link><pubDate>Fri, 11 Sep 2026 20:00:00 +0900</pubDate><guid>http://kenji.blog/ko/p/qiskit-quantum-programming-intro/</guid><description>&lt;img src="http://kenji.blog/p/qiskit-quantum-programming-intro/img/eyecatch.jpg" alt="Featured image of post Qiskit을 사용한 양자 프로그래밍 초입문" />&lt;h2 id="1-시작하며">1. 시작하며
&lt;/h2>&lt;p>현대의 컴퓨터(고전 컴퓨터)는 우리의 삶을 극적으로 변화시켰고, 고도의 계산 능력으로 사회의 모든 측면을 지탱하고 있습니다. 그러나 일부 특정 문제(예를 들어, 거대한 수의 소인수분해, 복잡한 분자 구조의 시뮬레이션, 최적화 문제 등)에 있어서는 현재 최첨단 슈퍼컴퓨터라 하더라도 우주의 나이보다 더 긴 시간이 필요할 수 있음이 알려져 있습니다.&lt;/p>
&lt;p>이러한 &amp;lsquo;고전 컴퓨터의 한계&amp;rsquo;를 뛰어넘을 가능성을 비장하고 있는 것이 **양자 컴퓨터(Quantum Computer)**입니다. 양자역학의 신비한 성질(중첩이나 양자 얽힘)을 계산 자원으로 활용함으로써 특정 문제를 극적으로 고속화할 수 있을 것으로 생각됩니다.&lt;/p>
&lt;p>본 기사에서는 IBM이 오픈소스로 제공하는 양자 컴퓨팅 프레임워크인 **Qiskit(키스킷)**을 사용하여 양자 프로그래밍의 세계로 첫걸음을 내딛습니다. 물리나 수학의 기초부터 친절하게 해설하고, 실제로 Python으로 코드를 작성하여 시뮬레이터 상에서 양자 회로를 구동하기까지의 프로세스를 망라한 매우 상세한 입문 가이드입니다.&lt;/p>
&lt;hr>
&lt;h2 id="2-양자-계산을-지탱하는-물리와-수학의-기초">2. 양자 계산을 지탱하는 물리와 수학의 기초
&lt;/h2>&lt;p>양자 프로그래밍을 이해하기 위해서는 먼저 양자역학의 기본적인 개념을 이해할 필요가 있습니다. 여기서는 양자 비트, 중첩, 양자 얽힘이라는 3가지 중요한 기둥에 대해 해설합니다.&lt;/p>
&lt;h3 id="21-고전-비트와-양자-비트qubit">2.1 고전 비트와 양자 비트(Qubit)
&lt;/h3>&lt;p>고전 컴퓨터의 정보 단위는 &amp;lsquo;비트(Bit)&amp;lsquo;입니다. 비트는 항상 &lt;code>0&lt;/code> 또는 &lt;code>1&lt;/code> 중 하나의 상태를 취합니다.&lt;/p>
&lt;p>반면, 양자 컴퓨터 정보의 최소 단위는 **양자 비트(Qubit: Quantum bit)**라고 불립니다. 양자 비트는 &lt;code>0&lt;/code>과 &lt;code>1&lt;/code>의 상태를 취할 수 있을 뿐만 아니라, &lt;strong>그 두 가지 상태를 동시에 유지하는&lt;/strong> 것이 가능합니다.&lt;/p>
&lt;p>수학적으로 양자 비트의 상태 $|\psi\rangle$는 기저 상태 $|0\rangle$과 $|1\rangle$의 선형 결합(중첩)으로 표현됩니다.&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>여기서 $\alpha$와 $\beta$는 복소수이며, 각각 상태 $|0\rangle$과 $|1\rangle$이 관측될 확률 진폭을 나타냅니다. 양자역학의 기본 원리에 따라 확률의 합은 1이 되어야 하므로 다음의 규격화 조건을 만족합니다.&lt;/p>
$$
|\alpha|^2 + |\beta|^2 = 1
$$
&lt;p>즉, 이 양자 비트를 &amp;lsquo;측정(관측)&amp;lsquo;했을 때 $|0\rangle$을 얻을 확률은 $|\alpha|^2$, $|1\rangle$을 얻을 확률은 $|\beta|^2$가 됩니다. 측정 전에는 상태가 확률적으로만 결정되어 있다는 점이 고전 비트와의 결정적인 차이입니다.&lt;/p>
&lt;div class="mermaid">graph LR
A["고전 비트 (Classical Bit)"] --> B["확정된 상태: 0 또는 1"]
C["양자 비트 (Qubit)"] --> D["중첩: 0과 1 양쪽 모두"]
D --> E["측정에 의해 확률적으로 상태가 확정"]&lt;/div>
&lt;h3 id="22-중첩superposition">2.2 중첩(Superposition)
&lt;/h3>&lt;p>앞서 언급했듯이, $|0\rangle$과 $|1\rangle$의 상태가 섞여 있는 상태를 **중첩(Superposition)**이라고 부릅니다.&lt;/p>
&lt;p>예를 들어, 1개의 양자 비트가 완전히 균등한 중첩 상태에 있을 경우 $\alpha = \frac{1}{\sqrt{2}}$, $\beta = \frac{1}{\sqrt{2}}$가 됩니다.&lt;/p>
$$
|\psi\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle
$$
&lt;p>이 상태를 측정하면 $|0\rangle$과 $|1\rangle$이 각각 50%의 확률로 관측됩니다.
만약 2개의 양자 비트가 있다면, $|00\rangle, |01\rangle, |10\rangle, |11\rangle$의 4가지 상태의 중첩을 만들 수 있습니다. $n$개의 양자 비트가 있다면 $2^n$개의 상태를 동시에 표현할 수 있게 되며, 이것이 양자 컴퓨터의 병렬 처리 능력의 원천 중 하나가 됩니다.&lt;/p>
&lt;h3 id="23-양자-얽힘entanglement">2.3 양자 얽힘(Entanglement)
&lt;/h3>&lt;p>양자 계산에서 가장 강력하고도 신비한 성질이 **양자 얽힘(Entanglement)**입니다. 아인슈타인이 &amp;lsquo;기분 나쁜 원격 작용&amp;rsquo;이라고 불렀던 이 현상은, 2개 이상의 양자 비트가 서로 강하게 결합되어 한쪽 양자 비트의 상태가 결정되면 물리적으로 아무리 떨어져 있더라도 다른 쪽 양자 비트의 상태가 순식간에 결정된다는 성질입니다.&lt;/p>
&lt;p>가장 유명한 양자 얽힘 상태인 &amp;lsquo;벨 상태(Bell State)&amp;rsquo; 중 하나인 $\Phi^+$ 상태는 다음과 같이 표현됩니다.&lt;/p>
$$
|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}
$$
&lt;p>이 상태에서는 $|01\rangle$이나 $|10\rangle$이라는 상태가 존재하지 않습니다. 따라서 1번째 양자 비트를 측정하여 $|0\rangle$이 나왔을 경우, 2번째 양자 비트를 측정할 것도 없이 확실하게 $|0\rangle$임이 확정됩니다. 반대로 1번째가 $|1\rangle$이라면 2번째도 반드시 $|1\rangle$이 됩니다.&lt;/p>
&lt;hr>
&lt;h2 id="3-양자-논리-게이트quantum-logic-gates">3. 양자 논리 게이트(Quantum Logic Gates)
&lt;/h2>&lt;p>고전 컴퓨터가 AND, OR, NOT 등의 논리 게이트를 사용하여 계산을 수행하는 것처럼, 양자 컴퓨터도 &lt;strong>양자 게이트&lt;/strong>를 사용하여 양자 비트의 상태를 조작합니다. 양자 상태는 벡터이므로 양자 게이트는 그 벡터에 작용하는 &amp;lsquo;유니터리 행렬&amp;rsquo;로 표현됩니다.&lt;/p>
&lt;h3 id="31-파울리-게이트pauli-x-y-z">3.1 파울리 게이트(Pauli-X, Y, Z)
&lt;/h3>&lt;p>파울리 게이트는 1 양자 비트에 대한 기본적인 조작입니다.&lt;/p>
&lt;p>&lt;strong>· Pauli-X 게이트 (NOT 게이트)&lt;/strong>
고전 컴퓨터의 NOT 게이트에 해당합니다. $|0\rangle$을 $|1\rangle$로, $|1\rangle$을 $|0\rangle$로 반전시킵니다. (블로흐 구에서 X축을 기준으로 180도 회전)&lt;/p>
$$
X = \begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>· Pauli-Y 게이트&lt;/strong>
Y축을 기준으로 180도 회전합니다. 위상과 비트 모두를 반전시키는 효과가 있습니다.&lt;/p>
$$
Y = \begin{pmatrix} 0 &amp; -i \\ i &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>· Pauli-Z 게이트 (위상 반전 게이트)&lt;/strong>
$|0\rangle$의 상태는 그대로 두고, $|1\rangle$ 상태의 위상을 반전($-1$을 곱함)시킵니다. (Z축을 기준으로 180도 회전)&lt;/p>
$$
Z = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1 \end{pmatrix}
$$
&lt;h3 id="32-아다마르-게이트hadamard-gate">3.2 아다마르 게이트(Hadamard Gate)
&lt;/h3>&lt;p>아다마르 게이트(H 게이트)는 확정된 상태($|0\rangle$나 $|1\rangle$)를 중첩 상태로 변환하는 매우 중요한 게이트입니다.&lt;/p>
$$
H = \frac{1}{\sqrt{2}}
\begin{pmatrix}
1 &amp; 1 \\
1 &amp; -1
\end{pmatrix}
$$
&lt;p>$|0\rangle$에 H 게이트를 적용하면 균등한 중첩 상태인 $|+\rangle$이 됩니다.&lt;/p>
$$
H|0\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle = |+\rangle
$$
&lt;h3 id="33-위상-게이트phase-gates">3.3 위상 게이트(Phase Gates)
&lt;/h3>&lt;p>위상 게이트는 Z 게이트를 일반화한 것으로, $|1\rangle$ 상태의 위상을 지정된 각도 $\theta$만큼 회전시킵니다.&lt;/p>
$$
P(\theta) = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; e^{i\theta} \end{pmatrix}
$$
&lt;p>대표적인 것으로 S 게이트($\theta = \pi/2$)나 T 게이트($\theta = \pi/4$)가 있습니다.&lt;/p>
&lt;h3 id="34-cnot-게이트controlled-not-gate">3.4 CNOT 게이트(Controlled-NOT Gate)
&lt;/h3>&lt;p>CNOT 게이트(CX 게이트)는 2개의 양자 비트 간에 조작을 수행하는 게이트로, 양자 얽힘을 생성하기 위해 필수 불가결합니다. &amp;lsquo;제어(Control) 비트&amp;rsquo;와 &amp;lsquo;표적(Target) 비트&amp;rsquo;로 구성됩니다.&lt;/p>
&lt;p>제어 비트가 $|1\rangle$일 경우에만 표적 비트에 X 게이트(NOT 조작)를 적용하고, 제어 비트가 $|0\rangle$일 경우에는 아무것도 하지 않습니다.&lt;/p>
$$
CNOT = \begin{pmatrix}
1 &amp; 0 &amp; 0 &amp; 0 \\
0 &amp; 1 &amp; 0 &amp; 0 \\
0 &amp; 0 &amp; 0 &amp; 1 \\
0 &amp; 0 &amp; 1 &amp; 0
\end{pmatrix}
$$
&lt;hr>
&lt;h2 id="4-qiskit의-기본과-환경-구축">4. Qiskit의 기본과 환경 구축
&lt;/h2>&lt;p>여기부터는 실제로 Python과 Qiskit을 사용하여 양자 프로그램을 작성해 보겠습니다.&lt;/p>
&lt;h3 id="41-qiskit이란">4.1 Qiskit이란?
&lt;/h3>&lt;p>&lt;strong>Qiskit&lt;/strong>은 IBM Quantum이 개발한 오픈소스 양자 컴퓨팅용 소프트웨어 개발 키트(SDK)입니다. Python을 사용하여 직관적으로 양자 회로를 구축하고 로컬 시뮬레이터나 클라우드를 통해 실제 IBM의 양자 컴퓨터 실기에서 실행할 수 있습니다.&lt;/p>
&lt;h3 id="42-설치-방법">4.2 설치 방법
&lt;/h3>&lt;p>Qiskit을 이용하기 위해서는 Python 환경이 필요합니다. 다음 명령어로 Qiskit과 관련 패키지(시뮬레이터 및 그리기용 라이브러리)를 설치합니다.&lt;/p>
&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install qiskit qiskit-aer qiskit-ibm-runtime matplotlib pylatexenc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="43-프로그래밍의-기본-흐름">4.3 프로그래밍의 기본 흐름
&lt;/h3>&lt;p>Qiskit을 사용한 양자 프로그래밍은 주로 다음 단계로 진행됩니다.&lt;/p>
&lt;div class="mermaid">graph TD
A["1. 회로 구축 (Build)"] --> B["2. 컴파일/트랜스파일 (Compile)"]
B --> C["3. 실행 (Execute)"]
C --> D["4. 결과 분석 및 시각화 (Analyze)"]&lt;/div>
&lt;ol>
&lt;li>&lt;strong>회로 구축&lt;/strong>: &lt;code>QuantumCircuit&lt;/code> 객체를 생성하고 게이트를 추가해 나간다.&lt;/li>
&lt;li>&lt;strong>컴파일&lt;/strong>: 실행할 백엔드(실기나 시뮬레이터)에 맞춰 회로를 최적화.&lt;/li>
&lt;li>&lt;strong>실행&lt;/strong>: 백엔드에 작업을 전송하고 결과를 획득.&lt;/li>
&lt;li>&lt;strong>분석&lt;/strong>: 측정 결과의 히스토그램 등을 플롯.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="5-실전-벨-상태양자-얽힘를-만드는-회로-구축">5. 실전: 벨 상태(양자 얽힘)를 만드는 회로 구축
&lt;/h2>&lt;p>이론에서 배운 &amp;lsquo;양자 얽힘(벨 상태)&amp;lsquo;을 실제로 Qiskit으로 만들어 봅시다. 목표로 하는 상태는 $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$입니다.&lt;/p>
&lt;h3 id="51-회로-설계">5.1 회로 설계
&lt;/h3>&lt;p>벨 상태를 만들려면 다음 절차를 거칩니다.&lt;/p>
&lt;ol>
&lt;li>2개의 양자 비트를 준비한다(초기 상태는 둘 다 $|0\rangle$).&lt;/li>
&lt;li>1번째 양자 비트에 아다마르 게이트(H)를 적용하여 중첩 상태로 만든다.&lt;/li>
&lt;li>1번째 양자 비트를 &amp;lsquo;제어 비트&amp;rsquo;, 2번째 양자 비트를 &amp;lsquo;표적 비트&amp;rsquo;로 하여 CNOT 게이트를 적용한다.&lt;/li>
&lt;li>결과를 읽어내기 위해 측정(Measure)을 수행한다.&lt;/li>
&lt;/ol>
&lt;h3 id="52-pythonqiskit-코드-구현">5.2 Python/Qiskit 코드 구현
&lt;/h3>&lt;p>그러면 실제 코드를 살펴봅시다.&lt;/p>
&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;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">transpile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit_aer&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Aer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit.visualization&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">plot_histogram&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">matplotlib.pyplot&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">plt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 1. 회로 초기화&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 2개의 양자 비트와 2개의 고전 비트를 가지는 양자 회로 생성&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 2. H 게이트 적용&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 양자 비트 0 (q0)에 아다마르 게이트 적용&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 3. CNOT 게이트 적용&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># q0을 제어 비트로, q1을 표적 비트로 CNOT 적용&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cx&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 4. 측정&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 양자 비트 0과 1을 측정하여 각각 고전 비트 0과 1에 쓰기&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">measure&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 회로도 그리기 (matplotlib 사용)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># qc.draw(&amp;#39;mpl&amp;#39;)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">draw&lt;/span>&lt;span class="p">())&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>이 코드를 실행하면 콘솔 상에 아스키 아트로 다음과 같은 양자 회로도가 표시됩니다.&lt;/p>
&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl"> ┌───┐ ┌─┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">q_0: ┤ H ├──■──┤M├───
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └───┘┌─┴─┐└╥┘┌─┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">q_1: ─────┤ X ├─╫─┤M├
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └───┘ ║ └╥┘
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">c: 2/═══════════╩══╩═
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 0 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>H&lt;/code>가 아다마르 게이트, &lt;code>■&lt;/code>와 &lt;code>X&lt;/code>의 조합이 CNOT 게이트, &lt;code>M&lt;/code>이 측정을 나타냅니다.&lt;/p>
&lt;h3 id="53-시뮬레이터에서의-실행-및-결과-해석">5.3 시뮬레이터에서의 실행 및 결과 해석
&lt;/h3>&lt;p>다음으로 이 회로를 IBM의 고성능 시뮬레이터 &lt;code>Aer&lt;/code>에서 실행하여 결과를 확인합니다.&lt;/p>
&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;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Aer 시뮬레이터 백엔드 가져오기&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">simulator&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Aer&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_backend&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;qasm_simulator&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 시뮬레이터용으로 회로 트랜스파일(최적화)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">compiled_circuit&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">transpile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qc&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">simulator&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 회로 실행(여기서는 1000 샷 실행)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">job&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">simulator&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">run&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">compiled_circuit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">shots&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">1000&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 결과 가져오기&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">job&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 상태 관측 횟수(카운트) 가져오기&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">counts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_counts&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">compiled_circuit&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">측정 결과:&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">counts&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 히스토그램 플롯&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># plot_histogram(counts)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># plt.show()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>결과 해석&lt;/strong>&lt;/p>
&lt;p>콘솔의 출력은 다음과 같이 나타날 것입니다.
&lt;code>측정 결과: {'00': 495, '11': 505}&lt;/code>
(※확률은 무작위이므로 실행할 때마다 수치는 약간 변동합니다)&lt;/p>
&lt;p>이상적인 시뮬레이션 환경에서는 측정 결과 &lt;code>00&lt;/code>과 &lt;code>11&lt;/code>이 대략 50%씩 관측되며, &lt;code>01&lt;/code>이나 &lt;code>10&lt;/code>은 전혀 관측되지 않습니다.
이것은 바로 우리가 작성한 벨 상태 $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$의 이론적 예측과 완전히 일치합니다. 1번째 양자 비트가 0이면 2번째도 반드시 0, 1이면 반드시 1이 된다는 &amp;lsquo;양자 얽힘&amp;rsquo;이 정확하게 시뮬레이트된 것입니다.&lt;/p>
&lt;p>참고로 실기 양자 컴퓨터(IBM Quantum Hardware)에서 실행할 경우, 노이즈(양자 결어긋남이나 게이트 오류)의 영향으로 인해 드물게 &lt;code>01&lt;/code>이나 &lt;code>10&lt;/code>이 관측될 수도 있습니다. 이 노이즈를 어떻게 줄일 것인가(양자 오류 정정)가 현재 양자 컴퓨터 개발의 가장 큰 과제 중 하나입니다.&lt;/p>
&lt;hr>
&lt;h2 id="6-더-고도화된-알고리즘으로의-스케일업">6. 더 고도화된 알고리즘으로의 스케일업
&lt;/h2>&lt;p>벨 상태의 생성은 양자 프로그래밍의 &amp;lsquo;Hello World&amp;rsquo;라고도 할 수 있습니다. 이를 바탕으로 더욱 발전시킴으로써 고전 컴퓨터를 능가하는 강력한 알고리즘을 구축할 수 있습니다.&lt;/p>
&lt;h3 id="61-도이치-조사-알고리즘deutsch-jozsa-algorithm">6.1 도이치-조사 알고리즘(Deutsch-Jozsa Algorithm)
&lt;/h3>&lt;p>주어진 함수 $f(x)$가 &amp;lsquo;상수 함수(입력에 상관없이 항상 0 또는 항상 1을 출력)&amp;lsquo;인지 &amp;lsquo;균형 함수(입력의 절반에 대해 0, 나머지 절반에 대해 1을 출력)&amp;lsquo;인지 판정하는 문제입니다.
고전 컴퓨터에서는 최악의 경우 $2^{n-1} + 1$번의 함수 평가가 필요하지만, 도이치-조사 알고리즘을 사용하면 양자의 병렬성을 이용하여 &lt;strong>단 1번의 평가&lt;/strong>만으로 판정할 수 있습니다. 이는 중첩 상태를 입력하고 간섭(Interference)을 이용해 불필요한 상태를 상쇄하여 원하는 답을 증폭시키는 양자 알고리즘의 기본 패턴을 보여줍니다.&lt;/p>
&lt;h3 id="62-그로버의-알고리즘grovers-algorithm">6.2 그로버의 알고리즘(Grover&amp;rsquo;s Algorithm)
&lt;/h3>&lt;p>정렬되지 않은 $N$개의 데이터베이스에서 특정 데이터를 찾는 검색 문제에 있어, 고전 알고리즘이 평균 $N/2$번의 계산을 요구하는 반면 그로버의 알고리즘은 $\sqrt{N}$번 만에 원하는 데이터를 찾아낼 수 있습니다.
이 알고리즘은 &amp;lsquo;오라클(Oracle)&amp;lsquo;이라 불리는 블랙박스를 사용하여 목적 해의 위상을 반전시키고, 나아가 &amp;lsquo;진폭 증폭(Amplitude Amplification)&amp;lsquo;을 수행함으로써 목적 해가 관측될 확률을 극적으로 높입니다.&lt;/p>
&lt;div class="mermaid">graph TD
A["초기화 (모든 상태의 중첩)"] --> B["오라클 (정답의 위상을 반전)"]
B --> C["확산 연산자 (평균값 기준 반전에 의한 진폭 증폭)"]
C --> D{"충분한 확률에 도달했는가?"}
D -- "No" --> B
D -- "Yes" --> E["측정"]&lt;/div>
&lt;hr>
&lt;h2 id="7-마무리-및-향후-학습">7. 마무리 및 향후 학습
&lt;/h2>&lt;p>이 기사에서는 양자 컴퓨팅의 근본적인 개념인 중첩과 양자 얽힘에서 시작하여, Qiskit을 이용한 양자 논리 게이트의 조작, 그리고 실제로 벨 상태를 구축하고 시뮬레이션하여 결과를 해석하기까지 자세히 해설했습니다.&lt;/p>
&lt;p>Qiskit은 Python이라는 친숙한 언어로 작성할 수 있어 수학적, 물리적인 장벽을 넘어 알고리즘 구축에 집중할 수 있게 해주는 강력한 도구입니다. 양자 컴퓨터는 현재 노이즈를 동반하는 중간 규모 양자 장치(NISQ: Noisy Intermediate-Scale Quantum) 시대에 접어들었지만, 기계 학습(Quantum Machine Learning), 화학 시뮬레이션(Quantum Chemistry), 암호 해독 등 수많은 분야에서의 응용 연구가 전 세계적으로 빠르게 진행되고 있습니다.&lt;/p>
&lt;p>부디 이번 기회에 Qiskit을 사용하여 다양한 양자 회로를 직접 만들고, 실제 IBM Quantum 프로세서에서 구동해 보시길 바랍니다. 미래의 컴퓨팅 패러다임을 직접 체험할 수 있을 것입니다.&lt;/p>
&lt;h3 id="참고-자료">참고 자료
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://qiskit.org/documentation/" target="_blank" rel="noopener"
>Qiskit 공식 문서&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://qiskit.org/textbook/ja/preface.html" target="_blank" rel="noopener"
>Qiskit Textbook&lt;/a> - 수학적 배경이나 알고리즘을 더 깊이 배우고 싶은 분들에게 추천하는 공식 텍스트&lt;/li>
&lt;li>IBM Quantum Learning&lt;/li>
&lt;/ul>
&lt;p>양자의 세계로 오신 것을 환영합니다!&lt;/p></description></item><item><title>양자 우월성이란 무엇인가? Google과 IBM의 최신 동향</title><link>http://kenji.blog/ko/p/what-is-quantum-supremacy-google-ibm/</link><pubDate>Fri, 11 Sep 2026 18:00:00 +0900</pubDate><guid>http://kenji.blog/ko/p/what-is-quantum-supremacy-google-ibm/</guid><description>&lt;img src="http://kenji.blog/p/what-is-quantum-supremacy-google-ibm/img/eyecatch.jpg" alt="Featured image of post 양자 우월성이란 무엇인가? Google과 IBM의 최신 동향" />&lt;h2 id="1-머리말-양자-컴퓨팅의-여명과-양자-우월성">1. 머리말: 양자 컴퓨팅의 여명과 &amp;lsquo;양자 우월성&amp;rsquo;
&lt;/h2>&lt;p>양자 컴퓨팅은 물리학의 근본 원리인 양자역학을 정보 처리에 응용함으로써, 고전 컴퓨터(현재 우리가 일상적으로 사용하는 PC나 슈퍼컴퓨터)로는 현실적인 시간 내에 풀 수 없는 복잡한 문제를 해결할 가능성을 품고 있습니다. 이 분야는 오랫동안 이론적인 연구가 주를 이루었으나, 최근 하드웨어의 급속한 진보로 실용화를 향한 경쟁이 격화되고 있습니다.&lt;/p>
&lt;p>그 중에서도 가장 큰 주목을 받은 키워드 중 하나가 &amp;lsquo;양자 우월성(Quantum Supremacy)&amp;lsquo;입니다. 이는 특정 계산 작업에서 양자 컴퓨터가 고전 컴퓨터를 압도하는 계산 능력을 보여주는 순간을 의미합니다. 본 기사에서는 양자 우월성의 엄밀한 정의를 시작으로, 2019년 세계 최초로 이 마일스톤에 도달했다고 발표한 Google의 &amp;lsquo;Sycamore(시카모어)&amp;rsquo; 프로세서의 실험 세부 내용, 이에 대한 IBM의 반론과 독자적인 접근법, 그리고 진정한 실용화를 위한 가장 큰 장벽인 &amp;lsquo;양자 오류 정정(Quantum Error Correction: QEC)&amp;lsquo;과 &amp;lsquo;결함 허용 양자 컴퓨팅(Fault-Tolerant Quantum Computing: FTQC)&amp;lsquo;을 향한 최신 로드맵에 대해 기술적이고 수학적으로 깊이 있게 해설합니다.&lt;/p>
&lt;hr>
&lt;h2 id="2-이론적-배경-양자-계산의-기초와-복잡도-클래스">2. 이론적 배경: 양자 계산의 기초와 복잡도 클래스
&lt;/h2>&lt;p>양자 우월성을 이해하기 위해서는 먼저 양자 계산의 수학적 기초와 계산 복잡도 이론에서의 위치를 이해해야 합니다.&lt;/p>
&lt;h3 id="양자-비트와-중첩">양자 비트와 중첩
&lt;/h3>&lt;p>고전 컴퓨터에서 정보의 최소 단위는 비트(0 또는 1)이지만, 양자 컴퓨터에서는 양자 비트(Qubit, 큐비트)를 사용합니다. 1개의 양자 비트 상태 $|\psi\rangle$ 는 기저 상태 $|0\rangle$ 와 $|1\rangle$ 의 복소 선형 결합으로 표현됩니다.&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>여기서 $\alpha, \beta \in \mathbb{C}$ 이며, 규격화 조건 $|\alpha|^2 + |\beta|^2 = 1$ 을 만족합니다. 이 성질을 &amp;lsquo;중첩(Superposition)&amp;lsquo;이라고 부릅니다.&lt;/p>
&lt;h3 id="얽힘entanglement과-텐서곱">얽힘(Entanglement)과 텐서곱
&lt;/h3>&lt;p>여러 양자 비트가 존재할 경우, 시스템 전체의 상태는 개별 양자 비트 상태 공간의 텐서곱으로 표현됩니다. $n$ 양자 비트 시스템은 $2^n$ 차원의 힐베르트 공간 $\mathcal{H}^{\otimes n}$ 상의 벡터가 됩니다.&lt;/p>
$$
|\Psi\rangle = \sum_{x \in \{0, 1\}^n} c_x |x\rangle
$$
&lt;p>여기서 $\sum |c_x|^2 = 1$ 입니다. 양자 비트들이 독립적이지 않고 한쪽의 상태가 다른 쪽에 의존하는 상태를 &amp;lsquo;양자 얽힘(Quantum Entanglement)&amp;lsquo;이라고 부릅니다. 이를 통해 양자 컴퓨터는 지수함수적으로 방대한 상태 공간을 동시에 처리할 수 있는 잠재력을 갖게 됩니다.&lt;/p>
&lt;h3 id="양자-우월성의-계산-복잡도-이론적-정의">양자 우월성의 계산 복잡도 이론적 정의
&lt;/h3>&lt;p>계산 복잡도 이론에서 고전 컴퓨터가 효율적으로(다항 시간 내에) 풀 수 있는 문제의 클래스를 &lt;strong>BPP&lt;/strong>(Bounded-error Probabilistic Polynomial time)라고 부릅니다. 반면, 양자 컴퓨터가 효율적으로 풀 수 있는 문제의 클래스는 &lt;strong>BQP&lt;/strong>(Bounded-error Quantum Polynomial time)입니다.&lt;/p>
&lt;p>양자 우월성의 실증이란, &amp;ldquo;BQP에는 포함되지만 BPP에는 포함되지 않는(혹은 그럴 가능성이 매우 높은) 특정 작업을 실제 양자 하드웨어에서 실행하여, 고전 슈퍼컴퓨터에 의한 시뮬레이션을 시간적·자원적으로 능가하는 것&amp;quot;을 의미합니다. 확장된 처치-튜링 명제(&amp;ldquo;모든 물리적으로 실현 가능한 계산 모델은 확률적 튜링 기계에 의해 다항 시간 내에 시뮬레이션할 수 있다&amp;rdquo;)를 물리적인 실험을 통해 반증하는 역사적인 시도라고 할 수 있습니다.&lt;/p>
&lt;hr>
&lt;h2 id="3-2019년-google에-의한-양자-우월성-실증">3. 2019년: Google에 의한 양자 우월성 실증
&lt;/h2>&lt;p>2019년 10월, Google Quantum AI 팀은 과학 저널 『Nature』를 통해 53 양자 비트의 초전도 프로세서 &amp;lsquo;Sycamore(시카모어)&amp;lsquo;를 사용하여 양자 우월성을 달성했다고 발표했습니다.&lt;/p>
&lt;h3 id="sycamore-프로세서의-아키텍처">Sycamore 프로세서의 아키텍처
&lt;/h3>&lt;p>Sycamore 프로세서는 2차원 격자 형태로 배치된 54개의 트랜스몬(Transmon)형 초전도 양자 비트로 구성되어 있습니다(실험에서는 1개가 오작동하여 53개를 사용). 인접한 양자 비트 사이에는 가변 결합기(Tunable Coupler)가 배치되어 고속이며 고정밀도인 2 양자 비트 게이트(iSWAP 게이트와 제어 Z 게이트의 하이브리드)를 구현했습니다.&lt;/p>
&lt;div class="mermaid">graph TD
A["양자 알고리즘 입력"] --> B["Sycamore 프로세서 (53 Qubits)"]
B --> C["무작위 양자 게이트 적용"]
C --> D["양자 상태 측정 (비트열)"]
D --> E["교차 엔트로피 벤치마킹 (XEB)"]
E --> F["양자 우월성 검증"]&lt;/div>
&lt;h3 id="무작위-양자-회로-샘플링random-circuit-sampling-rcs">무작위 양자 회로 샘플링(Random Circuit Sampling: RCS)
&lt;/h3>&lt;p>Google이 선택한 작업은 &amp;lsquo;무작위 양자 회로 샘플링&amp;rsquo;입니다. 이는 무작위로 선택된 단일 양자 비트 게이트와 2 양자 비트 게이트를 여러 사이클(깊이 $m$)에 걸쳐 적용하고, 최종 상태를 측정하여 얻어지는 비트열의 확률 분포에서 샘플링을 수행하는 것입니다.&lt;/p>
&lt;p>이상적인(노이즈가 없는) 무작위 양자 회로에서 출력되는 비트열 $x$ 의 확률은 균일 분포가 아니라 포터-토마스 분포(Porter-Thomas distribution)라고 불리는 간섭무늬와 같은 패턴을 보여줍니다. 고전 컴퓨터로 이 분포에서 샘플링을 하려면 상태 벡터 전체의 시뮬레이션이 필요하며, 계산량은 양자 비트 수 $n$ 과 회로의 깊이 $m$ 에 대해 지수함수적으로 증가합니다.&lt;/p>
&lt;h3 id="충실도fidelity-평가-선형-교차-엔트로피-벤치마크xeb">충실도(Fidelity) 평가: 선형 교차 엔트로피 벤치마크(XEB)
&lt;/h3>&lt;p>실험 결과가 단순한 노이즈가 아니라 실제로 양자 계산이 이루어진 결과임을 증명하기 위해, Google은 선형 교차 엔트로피 벤치마크(Linear Cross-Entropy Benchmarking: XEB)를 사용했습니다. 실험에서 얻은 비트열 $x_i$ 에 대한 회로의 이상적인 확률 $P(x_i)$ 를 고전 컴퓨터로 계산하고, 다음 식을 통해 충실도 $\mathcal{F}_{\text{XEB}}$ 를 구합니다.&lt;/p>
$$
\mathcal{F}_{\text{XEB}} = 2^n \langle P(x_i) \rangle_{i} - 1
$$
&lt;p>$\mathcal{F}_{\text{XEB}}$ 가 0이면 완전한 노이즈, 1이면 노이즈가 없는 이상적인 양자 프로세서를 의미합니다. Sycamore 프로세서는 깊이 20의 회로에서 $\mathcal{F}_{\text{XEB}} \approx 0.002$ (0.2%)를 달성했습니다. 언뜻 낮아 보이지만 통계적으로 유의미한 0 이상의 값이며, $2^{53} \approx 9 \times 10^{15}$ 의 상태 공간을 제어한 경이적인 성과였습니다.&lt;/p>
&lt;p>전체 오류율은 개별 게이트 오류, 측정 오류 등의 곱으로 근사적으로 모델링되었습니다.&lt;/p>
$$
\mathcal{F} \approx (1 - e_1)^{N_1}(1 - e_2)^{N_2} \cdots \approx \prod_{g \in 1Q} (1 - e_g) \prod_{g \in 2Q} (1 - e_g) \prod_{q} (1 - e_{RO})
$$
&lt;p>(※ $e_g$ 는 게이트 오류, $e_{RO}$ 는 측정 오류)&lt;/p>
&lt;p>Google은 이 회로를 고전 슈퍼컴퓨터(Summit)로 시뮬레이션하려면 약 1만 년이 걸릴 것이라고 주장했습니다. 반면, Sycamore는 불과 200초 만에 샘플링을 완료했습니다.&lt;/p>
&lt;hr>
&lt;h2 id="4-ibm의-반론-우월성에서-유용성utility으로">4. IBM의 반론: &amp;lsquo;우월성&amp;rsquo;에서 &amp;lsquo;유용성(Utility)&amp;lsquo;으로
&lt;/h2>&lt;p>Google의 발표는 전 세계에 충격을 주었지만, 세계 최대의 슈퍼컴퓨터 &amp;lsquo;Summit&amp;rsquo;을 개발하고 스스로도 양자 컴퓨터 개발을 선도하는 IBM은 즉각적으로 이 주장에 반론을 제기하는 논문을 공개했습니다.&lt;/p>
&lt;h3 id="텐서-네트워크-축약을-통한-고전-시뮬레이션의-개선">텐서 네트워크 축약을 통한 고전 시뮬레이션의 개선
&lt;/h3>&lt;p>IBM 반론의 핵심은 &amp;lsquo;고전 컴퓨터 측의 알고리즘과 자원 최적화가 불충분하다&amp;rsquo;는 점에 있었습니다. Google은 슈뢰딩거 방정식의 시간 발전을 그대로 계산하는 상태 벡터 시뮬레이터를 전제로 1만 년이라는 추정치를 제시했지만, IBM은 &amp;lsquo;텐서 네트워크(Tensor Network)&amp;lsquo;라는 기법을 사용하면 시뮬레이션 시간을 획기적으로 단축할 수 있다고 지적했습니다.&lt;/p>
&lt;p>텐서 네트워크에서는 양자 회로의 게이트 조작을 다차원 배열(텐서) 연산으로 표현하고 네트워크의 &amp;lsquo;축약(Contraction)&amp;rsquo; 순서를 최적화합니다. 게다가 Summit이 가진 250 PB라는 거대한 스토리지(디스크와 메모리의 계층화)를 최대한 활용하면 상태 벡터 전체를 유지하면서 단 &amp;lsquo;2.5일&amp;rsquo; 만에 더 높은 정밀도의 시뮬레이션이 가능하다고 주장했습니다.&lt;/p>
&lt;h3 id="quantum-advantage와-quantum-utility">Quantum Advantage와 Quantum Utility
&lt;/h3>&lt;p>이 논쟁을 계기로 업계 전체의 트렌드는 단순히 &amp;lsquo;고전적으로는 불가능한 인공적 작업을 실행하는 것(Supremacy)&amp;lsquo;에 대한 집착에서, &amp;lsquo;실제 사회의 유용한 문제에 대해 고전적인 접근법보다 실질적인 우위성을 보여주는 것(Quantum Advantage)&amp;rsquo;, 나아가 &amp;lsquo;양자 컴퓨터가 과학적 발견의 새로운 도구로서 기능하는 것(Quantum Utility)&amp;lsquo;이라는 단계로 이행해 갔습니다.&lt;/p>
&lt;p>IBM 자체는 &amp;lsquo;우월성&amp;rsquo;이라는 단어를 피하고, 양자 프로세서의 종합적인 성능 지표로서 &amp;lsquo;양자 볼륨(Quantum Volume)&amp;lsquo;이나 &amp;lsquo;CLOPS (Circuit Layer Operations Per Second)&amp;lsquo;를 제창하며 하드웨어의 규모와 품질의 균형을 중시하는 개발을 진행하고 있습니다.&lt;/p>
&lt;div class="mermaid">timeline
title "양자 마일스톤의 진화"
2019 : "Google Sycamore (53Q)" : "양자 우월성 발표"
2019 : "IBM의 반론" : "2.5일 만의 Summit 슈퍼컴퓨터 시뮬레이션"
2021 : "IBM Eagle (127Q)" : "100 큐비트 장벽 돌파"
2022 : "IBM Osprey (433Q)" : "프로세서 규모의 확장"
2023 : "Google 표면 부호" : "오류 정정 스케일링 (d=3에서 d=5로)"
2023 : "IBM Quantum Utility" : "127Q를 이용한 복잡한 스핀 모델 시뮬레이션"
2024 : "그 이후" : "논리 양자 비트 및 오류 완화의 시대"&lt;/div>
&lt;hr>
&lt;h2 id="5-다음-프론티어-오류-완화error-mitigation와-양자-오류-정정qec">5. 다음 프론티어: 오류 완화(Error Mitigation)와 양자 오류 정정(QEC)
&lt;/h2>&lt;p>현재의 양자 컴퓨터는 &amp;lsquo;NISQ(Noisy Intermediate-Scale Quantum)&amp;lsquo;라고 불리며, 노이즈(외부 환경과의 상호작용이나 제어의 불완전성으로 인한 오류)의 영향을 받기 쉬워 긴 계산을 수행하면 결과가 노이즈에 묻혀버립니다. 이 문제를 극복하기 위한 접근법에는 크게 &amp;lsquo;오류 완화(Error Mitigation)&amp;lsquo;와 &amp;lsquo;양자 오류 정정(Quantum Error Correction)&amp;rsquo; 두 가지가 있습니다.&lt;/p>
&lt;h3 id="오류-완화error-mitigation">오류 완화(Error Mitigation)
&lt;/h3>&lt;p>오류 완화는 양자 하드웨어를 변경하지 않고 고전적인 후처리를 통해 계산 결과의 기댓값에서 노이즈의 영향을 제거하는 기법입니다. IBM은 2023년 127 양자 비트의 &amp;lsquo;Eagle&amp;rsquo; 프로세서와 &amp;lsquo;영점 노이즈 외삽(Zero-Noise Extrapolation: ZNE)&amp;rsquo; 등의 오류 완화 기술을 결합하여, 복잡한 이징 모델의 시간 발전 시뮬레이션에서 최첨단 근사 텐서 네트워크 방법을 뛰어넘는 정확도를 달성하며 &amp;lsquo;Quantum Utility(양자 유용성)&amp;lsquo;를 실증했습니다.&lt;/p>
&lt;h3 id="양자-오류-정정qec과-논리-양자-비트">양자 오류 정정(QEC)과 논리 양자 비트
&lt;/h3>&lt;p>그러나 궁극적으로 임의의 복잡한 알고리즘(예를 들어 Shor의 소인수분해 알고리즘이나 복잡한 양자 화학 계산)을 실행하기 위해서는 오류 완화만으로는 불충분하며, 오류를 동적으로 감지하고 정정하는 &amp;lsquo;양자 오류 정정(QEC)&amp;lsquo;이 필수적입니다.&lt;/p>
&lt;p>QEC의 주류 접근법이 &amp;lsquo;표면 부호(Surface Code)&amp;lsquo;입니다. 이는 여러 물리 양자 비트(데이터 양자 비트)를 2차원 격자 형태로 배치하고, 그 사이에 측정용 양자 비트(앤실라 양자 비트)를 배치하여 &amp;lsquo;안정자(Stabilizer)&amp;lsquo;라고 불리는 패리티 검사를 연속적으로 수행하는 기법입니다.&lt;/p>
&lt;div class="mermaid">graph LR
Q1["데이터 큐비트 (Data)"] --- M1["X 안정자 측정 (Ancilla)"]
Q2["데이터 큐비트 (Data)"] --- M1
Q3["데이터 큐비트 (Data)"] --- M2["Z 안정자 측정 (Ancilla)"]
Q4["데이터 큐비트 (Data)"] --- M2
M1 --> EC["오류 신드롬 디코딩 (Classical)"]
M2 --> EC
EC --> LQ["논리 양자 상태 업데이트"]&lt;/div>
&lt;h4 id="임계값-정리threshold-theorem와-거리-d">임계값 정리(Threshold Theorem)와 거리 $d$
&lt;/h4>&lt;p>양자 오류 정정에는 &amp;lsquo;임계값 정리&amp;rsquo;가 존재합니다. 물리 양자 비트의 오류율 $p$ 가 특정 임계값 $p_{th}$ (표면 부호의 경우 약 1% 내외)를 밑도는 경우, 부호 거리(Distance) $d$ 를 늘림으로써(더 많은 물리 양자 비트를 1개의 논리 양자 비트에 할당함으로써) 논리 오류율 $p_L$ 을 지수함수적으로 낮출 수 있습니다.&lt;/p>
&lt;p>논리 오류율의 근사식은 다음과 같이 표현됩니다.&lt;/p>
$$
p_L \approx \Lambda \left( \frac{p}{p_{th}} \right)^{\frac{d+1}{2}}
$$
&lt;p>여기서 $\Lambda$ 는 상수입니다. $p &lt; p_{th}$ 라면 $d$ 를 키울수록 $p_L$ 은 작아집니다. 그러나 $p > p_{th}$ 인 경우, 물리 양자 비트를 늘릴수록 오히려 노이즈가 축적되어 논리 오류율이 악화되고 맙니다.&lt;/p>
&lt;h4 id="google의-2023년-마일스톤-거리-확장을-통한-오류-감소-실증">Google의 2023년 마일스톤: 거리 확장을 통한 오류 감소 실증
&lt;/h4>&lt;p>2023년 2월, Google은 『Nature』에 기념비적인 논문을 발표했습니다. 그들은 3세대 Sycamore 프로세서를 사용하여 표면 부호의 거리를 $d=3$(17 물리 양자 비트 사용)에서 $d=5$(49 물리 양자 비트 사용)로 확장했을 때, 논리 오류율이 3.028%에서 2.914%로 미세하게 감소하는 것을 세계 최초로 실증한 것입니다.&lt;/p>
&lt;p>이는 $p &lt; p_{th}$ 영역에 발을 들여놓았음을 의미하며, 물리 양자 비트를 늘리면 늘릴수록 성능이 향상된다는, FTQC를 향한 가장 중요한 원리 증명(Proof of Concept)이 완료되었음을 보여줍니다.&lt;/p>
&lt;hr>
&lt;h2 id="6-ftqc결함-허용-양자-컴퓨팅를-향한-로드맵과-전망">6. FTQC(결함 허용 양자 컴퓨팅)를 향한 로드맵과 전망
&lt;/h2>&lt;p>Google과 IBM은 각각 다른 아키텍처와 접근법을 채택하면서도, 최종 목표인 FTQC(Fault-Tolerant Quantum Computing)를 향해 치열한 개발 경쟁을 벌이고 있습니다.&lt;/p>
&lt;h3 id="ibm의-접근법-모듈화와-헤비-헥스-격자">IBM의 접근법: 모듈화와 헤비 헥스 격자
&lt;/h3>&lt;p>IBM은 오류율을 철저히 낮추는 것과 병행하여 프로세서의 스케일업에 주력하고 있습니다. &amp;lsquo;Eagle(127Q)&amp;rsquo;, &amp;lsquo;Osprey(433Q)&amp;rsquo;, &amp;lsquo;Condor(1121Q)&amp;lsquo;로 단일 칩의 한계에 도전하는 한편, &amp;lsquo;Quantum System Two&amp;rsquo;라는 모듈형 아키텍처를 발표했습니다. 또한 양자 비트의 결합 토폴로지에는 불필요한 크로스토크를 줄이고 안정성을 높이는 &amp;lsquo;헤비 헥스(Heavy-Hex) 격자&amp;rsquo;를 채택하고 있습니다. IBM의 전략은 단기적으로는 고도화된 오류 완화로 유용성을 추구하면서 단계적으로 QEC를 도입해 나가는 하이브리드 접근법입니다.&lt;/p>
&lt;h3 id="google의-접근법-논리-양자-비트의-품질-향상">Google의 접근법: 논리 양자 비트의 품질 향상
&lt;/h3>&lt;p>Google의 전략은 물리 양자 비트의 수를 급격히 늘리기보다는 1개의 논리 양자 비트 오류율을 극한까지 낮추는(예를 들어 $10^{-6}$ 까지 낮추는) 데 중점을 두고 있습니다. 그 바탕 위에 모듈 간 양자 상태를 전송하는 기술(Quantum Interconnects)을 확립하여, 수천~수만 개의 물리 양자 비트를 병렬로 동작시키는 대규모 시스템을 목표로 하고 있습니다.&lt;/p>
&lt;p>매직 상태 증류(Magic State Distillation) 등 비클리포드 게이트를 결함 허용적으로 실행하기 위한 프로토콜 구현도 앞으로의 큰 기술적 장애물이 됩니다. 실용적인 Shor의 알고리즘을 실행하여 2048비트의 RSA 암호를 해독하려면 오류율 $10^{-8}$ 이하의 논리 양자 비트가 수천 개, 물리 양자 비트로 환산하면 수백만~수천만 개가 필요하다고 알려져 있어 아직 갈 길이 멉니다.&lt;/p>
&lt;hr>
&lt;h2 id="7-맺음말">7. 맺음말
&lt;/h2>&lt;p>&amp;lsquo;양자 우월성&amp;rsquo;은 양자 컴퓨터 역사상 계산기의 이론적 잠재력을 물리적으로 증명한 중요한 마일스톤이었습니다. Google이 2019년에 보여준 실증과 IBM의 건설적인 반론은 업계 전체를 단순한 이론적 증명에서 벗어나, 실제 유용성(Utility)의 추구, 그리고 최종적인 결함 허용 양자 컴퓨팅(FTQC)을 향한 본격적인 엔지니어링 시대로 밀어 올렸습니다.&lt;/p>
&lt;p>현재 우리는 노이즈투성이인 NISQ 장치에서 오류 정정 기능을 갖춘 논리 양자 비트 장치로 넘어가는 과도기에 서 있습니다. 앞으로 몇 년에서 십 년 사이에 새로운 재료 과학의 발견, 신약 개발 프로세스의 혁명, 그리고 최적화 문제의 돌파구가 이러한 양자 하드웨어의 진화와 함께 현실이 될 것입니다.&lt;/p>
&lt;p>미래의 컴퓨터 과학을 형성해 나갈 Google과 IBM, 그리고 전 세계 연구자들의 동향에서 앞으로도 눈을 뗄 수 없습니다.&lt;/p></description></item><item><title>포스트 양자 시대의 블록체인·가상화폐는 어떻게 변할까?</title><link>http://kenji.blog/ko/p/post-quantum-blockchain-and-crypto/</link><pubDate>Fri, 11 Sep 2026 17:00:00 +0900</pubDate><guid>http://kenji.blog/ko/p/post-quantum-blockchain-and-crypto/</guid><description>&lt;img src="http://kenji.blog/p/post-quantum-blockchain-and-crypto/img/eyecatch.jpg" alt="Featured image of post 포스트 양자 시대의 블록체인·가상화폐는 어떻게 변할까?" />&lt;h2 id="1-인트로덕션-포스트-양자-시대의-발소리와-블록체인의-위기">1. 인트로덕션: 포스트 양자 시대의 발소리와 블록체인의 위기
&lt;/h2>&lt;p>2009년 사토시 나카모트에 의해 비트코인(Bitcoin)이 탄생한 이래, 블록체인 기술은 &amp;lsquo;탈중앙화되고 위변조가 불가능한 원장&amp;rsquo;으로서 전 세계 금융 시스템과 애플리케이션의 기반으로 성장했습니다. 이러한 견고한 보안을 지탱하고 있는 것이 **공개키 암호(Public Key Cryptography)**와 **암호학적 해시 함수(Cryptographic Hash Functions)**라는 현대 암호 기술입니다.&lt;/p>
&lt;p>이러한 암호 기술은 고전적인 컴퓨터(현재 우리가 사용하고 있는 PC나 슈퍼컴퓨터)로는 우주의 수명만큼의 시간을 들여도 해독할 수 없다는 수학적인 &amp;lsquo;계산 곤란성(Computational Hardness)&amp;lsquo;을 근거로 안전성을 보장하고 있습니다.&lt;/p>
&lt;p>하지만 이 전제는 물리학과 정보과학의 프론티어인 **양자 컴퓨터(Quantum Computers)**의 급속한 발전과 실용화로 인해 근본부터 뒤집히려 하고 있습니다. 양자역학 특유의 &amp;lsquo;중첩(Superposition)&amp;lsquo;이나 &amp;lsquo;양자 얽힘(Entanglement)&amp;lsquo;을 이용하는 양자 컴퓨터는 특정 수학적 문제에 있어 기존의 고전 컴퓨터를 압도하는 계산 능력, 이른바 &amp;lsquo;양자 초월성(Quantum Supremacy)&amp;lsquo;을 발휘합니다.&lt;/p>
&lt;p>본 기사에서는 블록체인 기술이 양자 컴퓨터에 의해 구체적으로 어떤 위협에 직면해 있는지, 그리고 그 해결책이 될 **내양자 암호(PQC: Post-Quantum Cryptography)**의 최신 동향과 암호자산 네트워크의 전환 시나리오에 대해 기술적이고 수리적인 관점에서 철저하게 깊이 파고들어 해설합니다.&lt;/p>
&lt;hr>
&lt;h2 id="2-양자-컴퓨터의-기초와-블록체인에-미치는-2가지-큰-위협">2. 양자 컴퓨터의 기초와 블록체인에 미치는 2가지 큰 위협
&lt;/h2>&lt;p>현재의 블록체인 시스템은 주로 다음 2가지 암호 요소로 구성되어 있으며, 이들은 각각 양자 알고리즘에 의한 서로 다른 위협에 노출되어 있습니다.&lt;/p>
&lt;div class="mermaid">graph TD
A["양자 컴퓨터의 경이적인 계산 능력"] --> B["쇼어의 알고리즘 (Shor's Algorithm)"]
A --> C["그로버의 알고리즘 (Grover's Algorithm)"]
B --> D["공개키 암호 (ECDSA/RSA/DSA) 의 붕괴"]
C --> E["암호학적 해시 함수 (SHA-256) 에 미치는 영향"]
D --> F["타인의 비밀키 특정 및 트랜잭션 위조"]
E --> G["PoW 마이닝의 우위성 및 일부 주소에 대한 공격"]
F --> H["블록체인에 있어 치명적이고 직접적인 위협"]
G --> I["알고리즘 조정 (키 길이 확장 등) 으로 대응 가능한 위협"]
style H fill:#ff9999,stroke:#cc0000,stroke-width:2px;
style I fill:#ffff99,stroke:#cccc00,stroke-width:2px;&lt;/div>
&lt;h3 id="21-타원곡선-암호ecdsa의-기초와-계산-곤란성">2.1. 타원곡선 암호(ECDSA)의 기초와 계산 곤란성
&lt;/h3>&lt;p>비트코인이나 이더리움(Ethereum)을 비롯한 많은 블록체인은 디지털 서명 알고리즘으로 **타원곡선 디지털 서명 알고리즘(ECDSA: Elliptic Curve Digital Signature Algorithm)**을 채택하고 있습니다. 구체적으로 비트코인은 &lt;code>secp256k1&lt;/code>이라는 매개변수의 타원곡선을 사용합니다.&lt;/p>
&lt;p>타원곡선 암호의 안전성은 **타원곡선 이산대수 문제(ECDLP: Elliptic Curve Discrete Logarithm Problem)**의 계산 곤란성에 의존하고 있습니다.
타원곡선은 아래의 바이어슈트라스(Weierstrass) 표준형으로 표현되는 방정식으로 정의됩니다.&lt;/p>
$$
y^2 \equiv x^3 + ax + b \pmod{p}
$$
&lt;p>비트코인의 &lt;code>secp256k1&lt;/code>에서는 $a = 0, b = 7$이며, $p$는 매우 큰 소수입니다.
이 곡선 상에 있는 베이스 포인트(기준점)를 $G$라 하고, 무작위로 선택된 256비트의 거대한 정수인 비밀키를 $k$라고 합니다. 이때, 공개키 $K$는 베이스 포인트의 $k$번 덧셈(스칼라 곱셈)을 통해 구해집니다.&lt;/p>
$$
K = k \times G = \underbrace{G + G + \dots + G}_{k \text{ times}}
$$
&lt;p>고전 컴퓨터를 사용하여 공개된 공개키 $K$와 베이스 포인트 $G$로부터 비밀키 $k$를 역산(이산대수를 구함)하는 것은, 폴라드 로(Pollard&amp;rsquo;s rho) 알고리즘과 같은 최선의 고전적 알고리즘을 사용하더라도 $\mathcal{O}(\sqrt{p})$의 지수함수적인 계산 시간이 걸립니다. 256비트 키의 경우 약 $2^{128}$번의 연산이 필요하며, 이는 현재의 슈퍼컴퓨터를 수십억 년 가동해도 풀 수 없는 수준입니다.&lt;/p>
&lt;h3 id="22-쇼어의-알고리즘shors-algorithm에-의한-붕괴">2.2. 쇼어의 알고리즘(Shor&amp;rsquo;s Algorithm)에 의한 붕괴
&lt;/h3>&lt;p>하지만 1994년에 피터 쇼어가 발표한 &lt;strong>쇼어의 알고리즘&lt;/strong>은 이 전제를 완전히 파괴했습니다. 쇼어의 알고리즘은 원래 소인수분해 문제(RSA 암호의 기반)를 다항식 시간에 풀기 위해 제안되었지만, 이산대수 문제나 타원곡선 이산대수 문제에도 적용 가능합니다.&lt;/p>
&lt;p>쇼어 알고리즘의 핵심은 **양자 푸리에 변환(QFT: Quantum Fourier Transform)**을 사용하여 함수의 &amp;lsquo;주기(Period)&amp;lsquo;를 고속으로 찾아내는 데 있습니다.&lt;/p>
$$
\text{고전적인 계산량} = \mathcal{O}(2^{n/2}) \quad (n\text{은 비트 길이})
$$
$$
\text{양자 알고리즘의 계산량} = \mathcal{O}(n^3)
$$
&lt;p>이처럼 쇼어의 알고리즘은 지수함수적인 시간을 **다항식 시간(Polynomial Time)**으로 극적으로 단축시킵니다. 충분한 논리적 양자 비트를 가진 양자 컴퓨터가 완성되면 네트워크 상에 공개된 공개키 $K$로부터 단 몇 분 또는 몇 초 만에 비밀키 $k$를 특정할 수 있게 됩니다. 이로 인해 공격자는 타인 지갑의 비밀키를 쉽게 입수하여 자금을 완전히 장악할 수 있게 됩니다.&lt;/p>
&lt;h4 id="221-쇼어의-알고리즘에-의한-ecdlp-해독의-단계별-과정">2.2.1 쇼어의 알고리즘에 의한 ECDLP 해독의 단계별 과정
&lt;/h4>&lt;p>양자 컴퓨터가 어떻게 타원곡선 이산대수 문제(ECDLP)를 푸는지, 그 내부 프로세스를 순서대로 살펴보겠습니다.&lt;/p>
&lt;p>문제 설정: $K = k \times G$에서 $G$와 $K$를 알고 있으며, 미지의 정수 $k$(비밀키)를 구하고자 합니다. 타원곡선의 위수(order)를 $N$이라고 합니다.&lt;/p>
&lt;p>&lt;strong>Step 1: 중첩 상태 생성&lt;/strong>
먼저 2개의 양자 레지스터를 준비하고 각각에 아다마르 게이트(Hadamard Gate)를 적용하여 가능한 모든 정수 조합의 중첩 상태를 생성합니다.
&lt;/p>
$$
|\psi_1\rangle = \frac{1}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} |x\rangle |y\rangle |0\rangle
$$
&lt;p>&lt;strong>Step 2: 양자 오라클 적용 (함수 평가)&lt;/strong>
다음으로 타원곡선 상의 점 덧셈을 수행하는 양자 회로(오라클)를 사용하여 함수 $f(x, y) = x \times G + y \times K$를 제3 레지스터에 계산합니다.
&lt;/p>
$$
|\psi_2\rangle = \frac{1}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} |x\rangle |y\rangle |x \times G + y \times K\rangle
$$
&lt;p>
여기서 중요한 것은 $K = k \times G$이므로 $f(x, y) = (x + y \cdot k) \times G$로 다시 쓸 수 있다는 점입니다.&lt;/p>
&lt;p>&lt;strong>Step 3: 제3 레지스터 측정&lt;/strong>
제3 레지스터를 측정하면 어떤 타원곡선 상의 점 $R$로 수축(collapse)합니다. 이로 인해 제1, 제2 레지스터는 $x + y \cdot k \equiv c \pmod{N}$ ($c$는 상수)를 만족하는 $(x, y)$ 쌍의 중첩 상태로 수축합니다.
&lt;/p>
$$
|\psi_3\rangle = \frac{1}{\sqrt{N}} \sum_{y=0}^{N-1} |c - y \cdot k \pmod{N}\rangle |y\rangle
$$
&lt;p>&lt;strong>Step 4: 양자 푸리에 변환(QFT) 적용&lt;/strong>
이 상태는 주기 $k$와 관련된 주기성을 가지고 있습니다. 여기에 역 양자 푸리에 변환(Inverse QFT)을 적용함으로써 위상의 간섭을 일으켜 주기 정보를 진폭으로 변환합니다.&lt;/p>
&lt;p>&lt;strong>Step 5: 측정과 고전적 후처리&lt;/strong>
제1, 제2 레지스터를 측정하면 높은 확률로 $k$에 관한 정보를 포함하는 값을 얻을 수 있습니다. 측정된 값에 대해 연분수 전개(Continued Fractions)와 같은 고전적인 정수론 알고리즘을 적용함으로써 미지의 비밀키 $k$를 완전히 특정할 수 있습니다.&lt;/p>
&lt;p>이 전체 프로세스에서 필요로 하는 양자 게이트의 수는 $\mathcal{O}(\log^3 N)$이며, 고전 컴퓨터를 통한 $\mathcal{O}(\sqrt{N})$의 탐색과는 비교할 수 없을 정도의 초고속으로 비밀키를 파헤칩니다.&lt;/p>
&lt;h3 id="23-그로버의-알고리즘grovers-algorithm과-해시-함수에-미치는-영향">2.3. 그로버의 알고리즘(Grover&amp;rsquo;s Algorithm)과 해시 함수에 미치는 영향
&lt;/h3>&lt;p>또 다른 위협은 1996년 로브 그로버(Lov Grover)가 제안한 &lt;strong>그로버의 알고리즘&lt;/strong>입니다. 이는 해시 함수(예: SHA-256)에 큰 영향을 미칩니다.&lt;/p>
&lt;p>블록체인에서 해시 함수는 데이터 무결성 보장, 주소 생성, 그리고 비트코인의 &lt;strong>PoW(Proof of Work) 마이닝&lt;/strong> 기반으로 사용되고 있습니다. 해시 함수의 역산(원상 계산)은 특정 출력값 $y$에 대해 $H(x) = y$가 되는 입력값 $x$를 찾는 &amp;lsquo;비구조화 데이터베이스 탐색 문제&amp;rsquo;로 간주할 수 있습니다.&lt;/p>
&lt;p>고전 컴퓨터에서는 $N$개의 가능성 중에서 정답을 찾기 위해 평균적으로 $\frac{N}{2}$번, 최악의 경우 $N$번의 시도가 필요합니다. 즉, 계산량은 $\mathcal{O}(N)$입니다.
하지만 그로버의 알고리즘은 &amp;lsquo;진폭 증폭(Amplitude Amplification)&amp;lsquo;이라 불리는 양자 기술을 사용합니다. 중첩 상태에 있는 모든 가능성 중에서 정답이 되는 상태의 확률 진폭을 반복적으로 증폭시킴으로써 탐색 시간을 제곱근으로 단축시킵니다.&lt;/p>
$$
\text{그로버의 알고리즘의 계산량} = \mathcal{O}(\sqrt{N})
$$
&lt;p>SHA-256의 경우 $N = 2^{256}$이므로 고전적인 무차별 대입(Brute-force) 탐색으로는 약 $2^{256}$번의 시도가 필요합니다. 하지만 그로버의 알고리즘을 사용하면 $\sqrt{2^{256}} = 2^{128}$번의 시도만으로 충분하게 됩니다. 이는 256비트의 해시 함수가 양자 컴퓨터에 대해서는 &lt;strong>실질적으로 128비트의 보안 강도로 반감된다&lt;/strong>는 것을 의미합니다.&lt;/p>
&lt;h4 id="231-sha-256은-살아남을-것인가-quantum-supremacy-in-hashing">2.3.1. SHA-256은 살아남을 것인가? (Quantum Supremacy in Hashing)
&lt;/h4>&lt;p>보안이 절반으로 줄어든다고는 해도 &amp;lsquo;128비트의 보안&amp;rsquo;은 여전히 극도로 견고합니다. $2^{128}$번의 연산은 현재의 기술 수준에서 보아도 천문학적인 수치이며, 우주의 수명 스케일의 시간이 필요합니다.
따라서 **&amp;ldquo;SHA-256은 양자 컴퓨터에 대해서도 실용적인 안전성을 유지한다&amp;rdquo;**고 널리 여겨지고 있습니다. 향후 보안 여유도를 높일 필요가 있는 경우에는 단순히 해시의 출력 길이를 2배(예: SHA-256에서 SHA-512로의 전환)로 늘리는 것만으로 고전적인 256비트 보안을 양자 세계에서도 유지할 수 있습니다.&lt;/p>
&lt;p>결론적으로 해시 함수에 대한 양자의 위협은 &amp;lsquo;경미하고 대응 가능&amp;rsquo;한 반면, 공개키 암호(ECDSA)에 대한 위협은 &amp;lsquo;치명적&amp;rsquo;이라고 할 수 있습니다.&lt;/p>
&lt;hr>
&lt;h2 id="3-현재의-암호자산bitcoin-ethereum에-미치는-구체적인-영향-분석">3. 현재의 암호자산(Bitcoin, Ethereum)에 미치는 구체적인 영향 분석
&lt;/h2>&lt;p>양자 컴퓨터에 의한 ECDSA 해독이 가능해진 세계에서 암호자산 네트워크는 구체적으로 어떤 취약성에 직면하게 될까요? 여기서는 비트코인의 구조를 예로 들어 **&amp;lsquo;공개키의 노출 타이밍&amp;rsquo;**이라는 관점에서 상세한 분석을 진행합니다.&lt;/p>
&lt;h3 id="31-주소-생성과-공개키의-비공개성">3.1. 주소 생성과 공개키의 &amp;lsquo;비공개성&amp;rsquo;
&lt;/h3>&lt;p>비트코인의 주소(P2PKH: Pay-to-Public-Key-Hash나 P2WPKH: Pay-to-Witness-Public-Key-Hash)는 공개키 그 자체가 아니라 공개키를 여러 번 해시화한 것을 사용합니다.&lt;/p>
$$
\text{Bitcoin Address} = \text{Base58Check}(\text{RIPEMD160}(\text{SHA256}(\text{Public Key})))
$$
&lt;p>앞서 언급했듯이 해시 함수는 양자 공격(그로버의 알고리즘)에 대해 내성을 가지므로, 해시값인 &amp;lsquo;주소&amp;rsquo;로부터 원래의 &amp;lsquo;공개키&amp;rsquo;를 역산하는 것은 양자 컴퓨터로도 불가능합니다.
즉, **&amp;lsquo;미사용(한 번도 자금을 송금하지 않은) 주소&amp;rsquo;**에 대해서는 블록체인 상에 공개키가 일절 노출되어 있지 않고 해시값만이 기록되어 있는 상태입니다. 따라서 공개키를 모르는 이상 쇼어의 알고리즘을 실행할 표적이 존재하지 않아 비밀키를 특정할 수 없습니다. 이 상태의 지갑은 양자적으로 안전(Quantum-safe)하다고 할 수 있습니다.&lt;/p>
&lt;h3 id="32-트랜잭션-송신-시의-치명적인-취약성프론트-러닝-공격">3.2. 트랜잭션 송신 시의 치명적인 취약성(프론트 러닝 공격)
&lt;/h3>&lt;p>문제가 발생하는 것은 사용자가 자금을 송금하는 타이밍입니다.
트랜잭션을 네트워크에 브로드캐스트(송신)할 때, 사용자는 디지털 서명과 함께 검증을 위해 &lt;strong>자신의 공개키를 트랜잭션 데이터 내에 포함시켜 네트워크 전체에 공개&lt;/strong>해야 합니다.&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant User as "사용자 (앨리스)"
participant Mempool as "Mempool (미승인 거래 풀)"
participant QuantumAttacker as "양자 공격자"
participant Miner as "마이너 (블록 생성)"
User->>Mempool: 트랜잭션 송신 (공개키 + 서명 포함)
Mempool-->>QuantumAttacker: 네트워크 상의 공개키를 감청
note right of QuantumAttacker: 쇼어의 알고리즘을 수 분 내로 실행&lt;br/>(공개키로부터 비밀키 산출)
QuantumAttacker->>QuantumAttacker: 앨리스의 비밀키를 사용해 새로운 서명 생성
QuantumAttacker->>Mempool: 더 높은 마이너 수수료로 부정 송금을 브로드캐스트
Miner->>Miner: 수수료(Gas)가 높은 부정 트랜잭션을 우선하여 블록에 포함
Miner-->>User: 블록체인에 기록 (앨리스의 자금 상실)&lt;/div>
&lt;p>일단 공개키가 Mempool(미승인 트랜잭션의 대기 장소)에 송신되면, 그 데이터는 전 세계의 노드에 공유됩니다. 만약 공격자가 초고속 양자 컴퓨터를 보유하고 있다면, 다음의 프로세스로 자금을 빼앗을 수 있습니다.&lt;/p>
&lt;ol>
&lt;li>Mempool에서 정당한 사용자(앨리스)의 트랜잭션을 감청하여 &lt;strong>공개키를 추출&lt;/strong>한다.&lt;/li>
&lt;li>쇼어의 알고리즘을 실행하여 공개키로부터 &lt;strong>비밀키를 수 분 이내(블록이 승인되기 전)에 계산&lt;/strong>한다.&lt;/li>
&lt;li>획득한 비밀키를 사용하여 앨리스의 자금을 공격자의 주소로 송금하는 &lt;strong>가짜 트랜잭션을 생성&lt;/strong>한다.&lt;/li>
&lt;li>이 가짜 트랜잭션에 앨리스의 원래 트랜잭션보다 &lt;strong>훨씬 높은 마이너 수수료(Fee)를 설정&lt;/strong>하여 네트워크에 송신한다.&lt;/li>
&lt;/ol>
&lt;p>마이너는 경제적 인센티브에 따라 수수료가 높은 트랜잭션을 우선적으로 블록에 포함시킵니다. 결과적으로 공격자의 부정 송금이 먼저 승인(Confirm)되고, 앨리스의 정당한 송금은 &amp;lsquo;잔고 부족(Double Spend)&amp;lsquo;으로 파기됩니다.
이 일련의 흐름은 **프론트 러닝 공격(Front-running Attack)**이라 불리며, 양자 컴퓨터가 실용화된 세계에서는 누군가가 송금 버튼을 누른 순간에 자금을 해커에게 빼앗기는 끔찍한 사태를 야기합니다.&lt;/p>
&lt;h3 id="33-재사용-주소와-오래된-주소p2pk의-위기">3.3. 재사용 주소와 오래된 주소(P2PK)의 위기
&lt;/h3>&lt;p>더욱 심각한 문제로, 과거에 한 번이라도 송금을 한 적이 있는 주소(잔돈 주소 등으로 재사용하고 있는 경우)는 이미 블록체인 상에 공개키가 영구적으로 기록되어 있습니다. 이들은 트랜잭션 송신을 기다릴 것도 없이 언제든지 비밀키가 계산되어 잔고를 빼앗길 위험에 노출되어 있습니다.&lt;/p>
&lt;p>또한, 사토시 나카모토의 초기 마이닝 보상(약 100만 BTC 이상)을 포함하여 2009년~2010년경에 주류였던 &lt;strong>P2PK(Pay-to-Public-Key)&lt;/strong> 포맷에서는 주소로 해시가 아닌 공개키 자체가 직접 블록체인에 기록되었습니다. 이러한 대량의 휴면 비트코인은 양자 컴퓨터에게 가장 쉬운 표적이 되어 일제히 도난당하고 시장에 덤핑됨으로써 가격 대폭락을 일으킬 가능성이 있습니다.&lt;/p>
&lt;hr>
&lt;h2 id="4-내양자-암호pqc-post-quantum-cryptography로의-전환-시나리오">4. 내양자 암호(PQC: Post-Quantum Cryptography)로의 전환 시나리오
&lt;/h2>&lt;p>이러한 &amp;lsquo;Q-Day(양자 컴퓨터에 의한 암호 돌파의 날)&amp;lsquo;의 파국을 피하기 위해, 암호학계와 블록체인 커뮤니티는 양자 알고리즘으로도 해독이 어려운 **내양자 암호(PQC)**로의 전환을 계획하고 있습니다.
미국 국립표준기술연구소(NIST)는 수년간 PQC의 표준화 프로세스를 진행해 왔으며, 수차례에 걸친 엄격한 평가를 거쳐 유망한 몇 가지 암호 방식이 최종 표준으로 선정되었습니다.&lt;/p>
&lt;p>블록체인의 디지털 서명 대체재로 주목받고 있는 주요 PQC 알고리즘을 그 수리적 메커니즘과 함께 상세히 해설합니다.&lt;/p>
&lt;h3 id="41-해시-기반-서명hash-based-signatures">4.1. 해시 기반 서명(Hash-Based Signatures)
&lt;/h3>&lt;p>해시 기반 서명은 그 안전성이 &amp;lsquo;해시 함수의 충돌 내성&amp;rsquo;이라는 매우 단순하고 견고한 기반에만 의존하는 암호 방식입니다. 양자 컴퓨터에 대한 해시 함수의 안전성은 이미 증명되었기 때문에(앞서 언급했듯이 128비트의 보안 여유도만 있으면 충분함) 매우 신뢰성이 높은 접근 방식입니다.
대표적인 것으로 **램포트 서명(Lamport Signatures)**이나 이를 확장한 WOTS(Winternitz One-Time Signature), 그리고 NIST 표준화 후보인 &lt;strong>SPHINCS+&lt;/strong>(현재는 FIPS 205로서 SLH-DSA라 불림)가 있습니다.&lt;/p>
&lt;h4 id="411-램포트-서명의-수리적-상세-one-time-signature">4.1.1. 램포트 서명의 수리적 상세 (One-Time Signature)
&lt;/h4>&lt;p>램포트 서명의 구조를 더욱 수학적으로 상세히 살펴보겠습니다.
해시 함수를 $H: \{0, 1\}^* \to \{0, 1\}^{256}$이라고 합시다.&lt;/p>
&lt;p>&lt;strong>【키 생성】&lt;/strong>
앨리스(송신자)는 진난수 생성기(TRNG)를 사용하여 256쌍의 비밀키 쌍을 생성합니다.
&lt;/p>
$$
\text{sk}_{i,0} \in \{0, 1\}^{256}, \quad \text{sk}_{i,1} \in \{0, 1\}^{256} \quad (1 \le i \le 256)
$$
&lt;p>
이로 인해 비밀키 $\text{sk}$는 총 512개의 256비트 문자열로 구성됩니다(크기: $512 \times 32 = 16,384$ 바이트).&lt;/p>
&lt;p>다음으로 공개키 $\text{pk}$를 계산합니다. 각 비밀키 컴포넌트를 각각 해시화합니다.
&lt;/p>
$$
\text{pk}_{i,0} = H(\text{sk}_{i,0}), \quad \text{pk}_{i,1} = H(\text{sk}_{i,1})
$$
&lt;p>
공개키 역시 동일하게 $16,384$ 바이트가 됩니다. 이를 블록체인 네트워크에 공개합니다.&lt;/p>
&lt;p>&lt;strong>【서명 생성】&lt;/strong>
앨리스는 트랜잭션 데이터 $M$에 서명하기 위해 먼저 그 해시값을 계산합니다.
&lt;/p>
$$
h = H(M) \in \{0, 1\}^{256}
$$
&lt;p>
해시값 $h$의 $i$번째 비트를 $h_i \in \{0, 1\}$이라고 합니다.
앨리스의 서명 $\sigma$는 각 비트 $h_i$에 대응하는 비밀키 컴포넌트의 집합이 됩니다.
&lt;/p>
$$
\sigma = (\text{sk}_{1, h_1}, \text{sk}_{2, h_2}, \dots, \text{sk}_{256, h_{256}})
$$
&lt;p>
즉, 메시지 해시의 비트가 &lt;code>0&lt;/code>이라면 $\text{sk}_{i,0}$을 공개하고, &lt;code>1&lt;/code>이라면 $\text{sk}_{i,1}$을 공개합니다. 서명 크기는 $256 \times 32 = 8,192$ 바이트가 됩니다.&lt;/p>
&lt;p>&lt;strong>【서명 검증】&lt;/strong>
마이너(검증자)는 수신한 트랜잭션 $M$과 서명 $\sigma = (s_1, s_2, \dots, s_{256})$, 그리고 공개키 $\text{pk}$를 사용하여 검증을 수행합니다.
트랜잭션의 해시 $h = H(M)$을 재계산하여, 각 $s_i$를 해시화한 것이 공개키의 대응하는 요소 $\text{pk}_{i, h_i}$와 일치하는지 확인합니다.
&lt;/p>
$$
H(s_i) \overset{?}{=} \text{pk}_{i, h_i} \quad (\text{for all } 1 \le i \le 256)
$$
&lt;p>이 프로세스는 수학적으로 지극히 단순하며, 양자 컴퓨터가 $H$의 역산을 할 수 없는 한 서명을 위조하는 것은 불가능합니다. 하지만 한 번 서명을 하면 비밀키의 절반이 네트워크에 노출되기 때문에 같은 키 쌍으로 다른 메시지에 서명하게 되면 노출된 비밀키들이 조합되어 공격자에게 위조의 여지를 주게 되므로, &amp;lsquo;단 한 번(One-Time)&amp;lsquo;밖에 쓸 수 없다는 강한 제약이 생깁니다.
이를 실용화하기 위해 머클 트리(Merkle Tree)를 사용하여 다수의 원타임 키를 하나의 루트 공개키로 묶는 &lt;strong>XMSS&lt;/strong>나 상태 비저장(Stateless) 방식인 &lt;strong>SPHINCS+&lt;/strong> 등의 기술이 개발되었으나, 서명 크기가 수십 킬로바이트에 달한다는 단점이 있습니다.&lt;/p>
&lt;h3 id="42-격자-기반-암호lattice-based-cryptography">4.2. 격자 기반 암호(Lattice-Based Cryptography)
&lt;/h3>&lt;p>현재 PQC의 주류로서 가장 기대받고 있으며, NIST의 메인 표준 규격(FIPS 204: ML-DSA / 구 CRYSTALS-Dilithium이나 Falcon 등)으로 채택된 것이 &lt;strong>격자 기반 암호&lt;/strong>입니다.&lt;/p>
&lt;p>격자 기반 암호의 안전성은 &amp;lsquo;다차원 격자에서의 최단 벡터 문제(SVP: Shortest Vector Problem)&amp;lsquo;나 &amp;lsquo;오차가 있는 학습 문제(LWE: Learning With Errors)&amp;lsquo;와 같이 수학적으로 증명된 어려운 문제에 의존하고 있습니다. 격자 문제는 양자 컴퓨터를 사용하더라도 효율적으로 푸는 알고리즘이 발견되지 않았습니다.&lt;/p>
&lt;p>&lt;strong>LWE(Learning With Errors)의 수리 모델:&lt;/strong>
LWE 문제의 기본적인 아이디어는 연립일차방정식에 의도적으로 &amp;lsquo;작은 노이즈(오차)&amp;lsquo;를 더함으로써 문제를 극적으로 어렵게 만든다는 것입니다.
비밀 벡터를 $\mathbf{s} \in \mathbb{Z}_q^n$이라고 합시다.
무작위로 선택된 거대한 공개 행렬 $\mathbf{A} \in \mathbb{Z}_q^{m \times n}$과 의도적으로 부가되는 작은 노이즈 벡터 $\mathbf{e} \in \mathbb{Z}_q^m$이 있습니다.
공개키 $\mathbf{b}$는 다음과 같이 계산됩니다.&lt;/p>
$$
\mathbf{b} = \mathbf{A}\mathbf{s} + \mathbf{e} \pmod{q}
$$
&lt;p>행렬 $\mathbf{A}$와 벡터 $\mathbf{b}$(공개키)가 공개되어 있더라도 그로부터 비밀키 $\mathbf{s}$를 역산하는 것은 노이즈 $\mathbf{e}$의 존재로 인해 매우 어려워집니다. 노이즈가 없다면 단순한 가우스 소거법으로 풀 수 있지만, 노이즈가 있음으로써 모든 차원에서의 탐색 공간이 폭발적으로 증가하여 고전 컴퓨터와 양자 컴퓨터 모두에 대해 견고한 보안을 제공합니다.
블록체인 등에서 사용되는 실제 알고리즘(Dilithium 등)에서는 이를 다항식 환(Polynomial Ring) 위에서 전개한 **Ring-LWE(또는 Module-LWE)**가 사용되어, 키 크기 축소 및 계산의 고속화가 이루어지고 있습니다.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>장점&lt;/strong>: 해시 기반 서명에 비해 공개키나 서명의 크기가 비교적 작고(수 킬로바이트 정도), 서명 생성 및 검증의 계산 속도가 매우 빠릅니다(ECDSA와 동등 이상).&lt;/li>
&lt;li>&lt;strong>단점&lt;/strong>: 수학적인 구조가 복잡하고 역사적인 검증 기간이 짧기 때문에, 향후 새로운 해독 알고리즘이 발견될 위험이 제로는 아닙니다.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="5-블록체인의-pqc-전환에-있어서의-기술적-과제">5. 블록체인의 PQC 전환에 있어서의 기술적 과제
&lt;/h2>&lt;p>PQC 알고리즘(Dilithium이나 SPHINCS+ 등)이 존재한다고 해서 이를 내일 당장 비트코인이나 이더리움에 도입할 수 있는 것은 아닙니다. 분산형 시스템 특유의 무거운 과제들이 여러 가지 존재합니다.&lt;/p>
&lt;h3 id="51-서명-크기의-비대화와-확장성의-붕괴">5.1. 서명 크기의 비대화와 확장성의 붕괴
&lt;/h3>&lt;p>PQC 도입에 있어서 가장 큰 장벽은 데이터 크기의 대폭적인 비대화입니다.
현재 ECDSA의 서명 크기가 약 70바이트인 것에 반해, 격자 기반 암호인 Dilithium(ML-DSA)에서는 서명 크기가 약 2,420바이트~4,595바이트(보안 레벨에 따라 다름)이며 공개키 크기도 1,300바이트를 넘습니다. 해시 기반인 SPHINCS+에 이르러서는 서명만으로 수만 바이트에 달합니다.&lt;/p>
&lt;p>만약 비트코인이 현재와 동일한 블록 크기 상한(SegWit 포함 약 4MB의 가중치) 그대로 PQC를 도입할 경우, 1개의 블록에 저장할 수 있는 트랜잭션의 수는 격감합니다. 네트워크의 처리량(TPS: Transactions Per Second)은 파멸적으로 저하되고 송금 지연이 상태화될 것입니다.
이를 해결하기 위해서는 블록 크기를 대폭 늘려야 하지만, 이는 풀 노드의 스토리지 요구 사항이나 네트워크 대역폭 요구 사항을 증대시켜 개인의 노드 운영을 어렵게 만들고, 결과적으로 &lt;strong>네트워크의 중앙집권화&lt;/strong>를 초래한다는 딜레마에 빠지게 됩니다.&lt;/p>
&lt;div class="mermaid">pie title "블록체인에서의 서명 데이터 크기 비교 (개념도)"
"ECDSA (약 70 Bytes)" : 2
"Dilithium ML-DSA (약 2,500 Bytes)" : 58
"SPHINCS+ (약 17,000 Bytes)" : 40&lt;/div>
&lt;p>&lt;em>(※ PQC 도입에 따른 트랜잭션 데이터의 비대화는 확장성에 대한 치명적인 병목이 됩니다)&lt;/em>&lt;/p>
&lt;h3 id="52-ethereum-virtual-machine-evm에-미치는-영향과-사전-컴파일된-컨트랙트">5.2. Ethereum Virtual Machine (EVM)에 미치는 영향과 사전 컴파일된 컨트랙트
&lt;/h3>&lt;p>이더리움(Ethereum)과 같은 튜링 완전한 스마트 컨트랙트 플랫폼에서 PQC의 도입은 EVM(Ethereum Virtual Machine)의 근본적인 업그레이드를 요구합니다.
현재의 EVM에서는 ECDSA 서명 검증을 위해 &lt;code>ecrecover&lt;/code> (주소: &lt;code>0x01&lt;/code>)라는 사전 컴파일된 컨트랙트(Precompiled Contract)가 마련되어 있어, 매우 낮은 가스비(3000 Gas)로 서명 검증을 수행할 수 있도록 최적화되어 있습니다.&lt;/p>
&lt;p>하지만 Dilithium이나 Falcon과 같은 새로운 격자 기반 암호 알고리즘의 검증 처리는 복잡한 다항식 연산이나 행렬 연산을 수반하기 때문에, 기존의 EVM 연산 코드(Opcode)만으로 구현하면 단 1회의 서명 검증만으로 수백만에서 수천만 가스를 소비할 가능성이 있습니다. 이는 현재의 블록 가스 한도(약 3000만 Gas)를 1개의 트랜잭션으로 고갈시키는 수준입니다.&lt;/p>
&lt;p>이를 회피하기 위해서는 네트워크의 하드포크를 통해 새롭게 PQC 검증용 사전 컴파일된 컨트랙트(예: &lt;code>0x10&lt;/code>에 DilithiumVerify를 할당하는 등)를 EVM 자체에 내장해야 합니다. 여기에는 각 이더리움 클라이언트(Geth, Nethermind, Erigon 등)의 코어 개발자가 협력하여 C++, Go, Rust 등의 언어 레벨에서 격자 기반 암호 검증 로직을 최적화하여 구현하고, 보안 감사를 실시하는 장기간에 걸친 프로세스가 필요합니다.&lt;/p>
&lt;h3 id="53-하드포크를-통한-합의-형성의-어려움">5.3. 하드포크를 통한 합의 형성의 어려움
&lt;/h3>&lt;p>기반이 되는 서명 알고리즘을 변경하려면 네트워크 전체의 프로토콜을 갱신하는 **하드포크(Hard Fork)**가 불가피합니다. 하지만 비트코인처럼 &amp;lsquo;규칙을 바꾸지 않는 것, 탈중앙화되어 있을 것&amp;rsquo;에 무게를 두는 커뮤니티에서 합의를 이끌어내는 프로세스는 정치적으로도 매우 어렵습니다. PQC로의 전환에 관한 BIP(Bitcoin Improvement Proposal)가 제안된 후 구현에 이르기까지는 수년에 걸친 논의와 테스트가 필요할 것입니다.&lt;/p>
&lt;hr>
&lt;h2 id="6-언제-q-day는-오는가-전환을-향한-로드맵">6. 언제 &amp;lsquo;Q-Day&amp;rsquo;는 오는가? 전환을 향한 로드맵
&lt;/h2>&lt;p>&amp;lsquo;양자 컴퓨터가 256비트의 타원곡선 암호를 완전히 해독하는 날(Q-Day)&amp;lsquo;은 언제 올까요?
연구자들 사이에서도 의견이 분분하지만, 많은 전문가들은 &lt;strong>&amp;lsquo;2030년대 중반에서 2040년대에 걸쳐&amp;rsquo;&lt;/strong>, 적어도 수천에서 수만 개의 안정적인 논리적 양자 비트(노이즈 내성을 가진 오류가 정정된 양자 비트)를 가진 대규모 양자 컴퓨터가 등장할 것으로 예측하고 있습니다. 하지만 하드웨어 아키텍처의 돌파구나 보다 효율적인 양자 알고리즘의 발견에 따라 그 시기가 앞당겨질 가능성(2030년 전후)도 부정할 수 없습니다.&lt;/p>
&lt;p>암호자산 생태계가 늦기 전에 취해야 할 로드맵은 다음과 같습니다.&lt;/p>
&lt;h3 id="1단계-하이브리드-서명과-계정-추상화-현재2028년경">1단계: 하이브리드 서명과 계정 추상화 (현재~2028년경)
&lt;/h3>&lt;p>현재의 블록체인 업계, 특히 Ethereum의 개발진(Vitalik Buterin 등)은 ECDSA와 PQC(해시 기반 서명이나 격자 기반 암호)를 결합한 **&amp;lsquo;하이브리드 서명&amp;rsquo;**을 검토하고 있습니다. 이는 기존의 안전한 ECDSA에 의한 서명과 PQC에 의한 서명을 모두 트랜잭션에 부여하여, 어느 한쪽이 뚫리더라도 안전성을 유지한다는 접근 방식입니다.
또한, 계정 추상화(Account Abstraction, ERC-4337)를 활용함으로써 프로토콜 레벨의 하드포크를 기다리지 않고 스마트 컨트랙트 지갑 상에서 옵트인(희망하는 사용자만) 방식으로 PQC 서명을 구현 및 지원하는 노력도 진행되고 있습니다.&lt;/p>
&lt;h3 id="2단계-영지식-증명zk-rollups의-활용-2025년">2단계: 영지식 증명(ZK-Rollups)의 활용 (2025년~)
&lt;/h3>&lt;p>PQC의 가장 큰 약점인 &amp;lsquo;서명 데이터의 비대화&amp;rsquo;를 해결할 비장의 카드로 기대되고 있는 것이 레이어 2 기술인 **ZK-Rollups(영지식 증명)**의 활용입니다.
거대한 PQC 서명 데이터를 Layer 1(메인 체인)에 직접 기록하는 것이 아니라, Layer 2 상에서 다수의 PQC 트랜잭션을 검증 및 집약합니다. 그리고 ZK-SNARKs나 ZK-STARKs를 사용하여 이들을 하나의 극히 작은 &amp;lsquo;증명 데이터(Proof)&amp;lsquo;로 압축하여 Layer 1에 기록하는 것입니다.
참고로 SNARKs의 일부 구성(Groth16 등)은 그 자체가 양자 컴퓨터에 취약하기 때문에 내양자성을 가진 해시 함수에만 의존하는 &lt;strong>ZK-STARKs&lt;/strong>의 채택이 핵심이 됩니다.&lt;/p>
&lt;h3 id="3단계-프로토콜-레벨의-하드포크-2030년경">3단계: 프로토콜 레벨의 하드포크 (2030년경)
&lt;/h3>&lt;p>NIST에 의한 PQC 표준화가 완전히 정착되고 업계 표준 라이브러리가 갖추어져 충분히 테스트된 단계에서, Bitcoin이나 Ethereum 등 주요 체인의 기본 서명 방식을 완전히 PQC로 전환하는 하드포크가 실시될 것으로 예상됩니다. 이 전환기에는 사용자에게 &amp;lsquo;오래된 지갑에서 PQC를 지원하는 새로운 지갑으로 자금을 이동하도록 촉구하는&amp;rsquo; 대규모 공지가 이루어지게 될 것입니다.&lt;/p>
&lt;h3 id="선구적인-프로젝트-사례">선구적인 프로젝트 사례
&lt;/h3>&lt;p>일부 블록체인 프로젝트는 이러한 양자 위협을 선제적으로 인지하고 초기 단계부터 내양자성을 표방하며 개발되고 있습니다.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>QRL (Quantum Resistant Ledger)&lt;/strong>: XMSS(확장 머클 서명 방식)라는 해시 기반의 PQC를 프로토콜 레벨에서 네이티브하게 구현한 초기 블록체인입니다.&lt;/li>
&lt;li>&lt;strong>Algorand / Cellframe&lt;/strong>: 미래의 PQC 업데이트를 염두에 둔 유연한 암호 계층의 모듈형 아키텍처를 가지고 있으며, 격자 기반 암호의 통합을 적극적으로 모색하고 있는 프로젝트들입니다.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="7-결론-암호자산의-미래와-우리의-자산을-지키기-위해">7. 결론: 암호자산의 미래와 우리의 자산을 지키기 위해
&lt;/h2>&lt;p>&amp;lsquo;포스트 양자 시대&amp;rsquo;의 도래는 단순한 SF(공상과학)의 상상 영역을 넘어 이미 현실의 암호 시스템에 대한 구체적인 기술적 과제로서 우리 눈앞에 다가와 있습니다.&lt;/p>
&lt;p>쇼어의 알고리즘과 그로버의 알고리즘이라는 양자 컴퓨터의 두 자루의 검은 현재 블록체인의 기반인 공개키 암호와 해시 함수를 각각 위협합니다. 특히 ECDSA의 취약성은 치명적이며, 프론트 러닝 공격에 의한 자금 도난 위험을 피하기 위해서는 내양자 암호(PQC)로의 전환이 절대적으로 피할 수 없는 길입니다.&lt;/p>
&lt;p>하지만 기술계와 블록체인 커뮤니티는 그저 손을 놓고 파멸을 기다리고 있는 것만은 아닙니다. 격자 기반 암호나 해시 기반 서명과 같은 PQC 알고리즘의 선정과 표준화가 착실히 진행되고 있으며, 영지식 증명(ZK-STARKs)이나 Layer 2의 스케일링 기술을 활용함으로써 PQC 도입의 가장 큰 장벽인 &amp;lsquo;데이터 크기의 비대화&amp;rsquo;를 극복할 길도 보이기 시작했습니다.&lt;/p>
&lt;p>우리 일반 암호자산 사용자나 투자자가 지금 당장 패닉에 빠져 자금을 모두 매각할 필요는 없습니다. 하지만 다음과 같은 기본적인 리터러시와 자기방어 의식을 가지는 것이 중요합니다.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>주소 재사용을 피한다&lt;/strong>: &amp;lsquo;사용된 주소(한 번이라도 자금을 송금하여 공개키가 블록체인 상에 노출된 주소)&amp;lsquo;에는 자금을 장기간 보관하지 않도록, 프라이버시 관점뿐만 아니라 보안 관점에서도 철저히 한다.&lt;/li>
&lt;li>&lt;strong>기술 동향에 주목한다&lt;/strong>: Bitcoin의 BIP나 Ethereum의 EIP 등 주요 네트워크의 PQC 전환에 관한 논의나 하드포크 뉴스에 촉각을 곤두세우고, 필요해진 타이밍에 적절히 지갑 전환 작업을 수행할 수 있도록 한다.&lt;/li>
&lt;/ul>
&lt;p>블록체인의 역사는 항상 새로운 기술적 위협에 대한 업그레이드와 레질리언스(회복력)의 역사이기도 합니다. 확장성 문제나 환경 문제(PoW에서 PoS로의 전환 등)를 극복해 온 것처럼, 이 전대미문의 양자 위협에 대해서도 생태계 전체가 해결책을 모색하고 적응해 나갈 것입니다.
양자 컴퓨터라는 인류의 새로운 지혜와 탈중앙화된 분산 원장이라는 신뢰의 기술이 충돌로 인해 붕괴하는 것이 아니라, 더 높은 차원에서 융합된 견고한 시스템으로 승화되어 가는 미래를 기대해 봅니다.&lt;/p>
&lt;hr>
&lt;p>&lt;em>참고 문헌 및 관련 링크:&lt;/em>&lt;/p>
&lt;ul>
&lt;li>National Institute of Standards and Technology (NIST) - Post-Quantum Cryptography Standardization Project&lt;/li>
&lt;li>Shor, P. W. (1994). Algorithms for quantum computation: discrete logarithms and factoring.&lt;/li>
&lt;li>Grover, L. K. (1996). A fast quantum mechanical algorithm for database search.&lt;/li>
&lt;li>Buterin, V. (2024). How to hard-fork to save most users&amp;rsquo; funds in a quantum emergency.&lt;/li>
&lt;/ul></description></item></channel></rss>