
양자 컴퓨터 기초: 미로 찾기 생쥐
양자 컴퓨터가 나오면 암호가 다 뚫린다고? 도대체 '큐비트'가 뭐길래 기존 슈퍼컴퓨터를 장난감으로 만드는 걸까? 0과 1의 중첩을 '미로 찾기'에 비유합니다.

양자 컴퓨터가 나오면 암호가 다 뚫린다고? 도대체 '큐비트'가 뭐길래 기존 슈퍼컴퓨터를 장난감으로 만드는 걸까? 0과 1의 중첩을 '미로 찾기'에 비유합니다.
맥북 배터리는 왜 오래 갈까? 서버 비용을 줄이려면 AWS Graviton을 써야 할까? 복잡함(CISC)과 단순함(RISC)의 철학적 차이를 정리해봤습니다.

AI 시대의 금광, 엔비디아 GPU. 도대체 게임용 그래픽카드로 왜 AI를 돌리는 걸까? 단순 노동자(CUDA)와 행렬 계산 천재(Tensor)의 차이로 파헤쳐봤습니다.

빠른 SSD를 샀는데 왜 느릴까요? 1차선 시골길(SATA)과 16차선 고속도로(NVMe). 인터페이스가 성능의 병목이 되는 이유.

LP판과 USB. 물리적으로 회전하는 판(Disc)이 왜 느릴 수밖에 없는지, 그리고 SSD가 어떻게 서버의 처리량을 100배로 만들었는지 파헤쳐봤습니다.

뉴스에서 "양자 컴퓨터가 상용화되면 현재 암호체계가 다 붕괴된다"고 겁을 줍니다. 저는 단순히 "아, CPU 클럭이 1000GHz 쯤 되는 엄청 빠른 컴퓨터인가 보다"라고 생각했습니다. 하지만 공부해보니 완전 틀린 생각이었습니다. 양자 컴퓨터는 '더 빠른' 기계가 아니라, 아예 '차원이 다른' 계산기였습니다.
처음 양자컴퓨팅 논문을 봤을 때, "슈뢰딩거 고양이(Schrödinger's Cat)"니 "얽힘(Entanglement)"이니 하는 물리학 용어들 때문에 머리가 지끈거렸습니다. 이게 도대체 컴퓨터랑 무슨 상관인가 싶었죠. 하지만 몇 가지 비유를 접하고 나서 왜 구글과 IBM이 수십억 달러를 이 분야에 쏟아붓는지 이해하게 됐습니다.
가장 와닿았던 비유는 '미로 찾기'였습니다.
고전 컴퓨터 (현재): 미로에 생쥐 한 마리(1)를 풉니다.
양자 컴퓨터: 미로에 물(0과 1의 중첩)을 들이붓습니다.
양자 컴퓨터가 무서운 건 이 '동시성(Superposition)' 때문입니다. 100개의 갈림길이 있을 때, 고전 컴퓨터는 $2^$번 확인해야 하지만, 양자 컴퓨터는 단 한 번에 모든 길을 훑어버립니다.
이 비유를 이해하고 나니 왜 양자컴퓨터가 암호 해독에 위협적인지 명확해졌습니다. RSA 암호는 큰 수의 소인수분해 문제인데, 고전 컴퓨터로는 모든 조합을 일일이 시도해야 합니다. 하지만 양자컴퓨터는 "물을 붓듯" 모든 가능성을 동시에 탐색하는 겁니다.
기존 비트(Bit)는 전구 스위치와 같습니다. 켜지거나(1), 꺼지거나(0). 하지만 양자 비트, 큐비트(Qubit)는 "돌아가고 있는 동전"과 같습니다. 앞면인지 뒷면인지 결정되지 않았고, 앞면이면서 동시에 뒷면인 상태로 존재합니다.
처음엔 이해가 안 갔습니다. "0이면서 1이라니, 그게 무슨 소리야?" 하지만 슈뢰딩거의 고양이 사고실험을 읽고 나서 받아들였습니다. 상자 안의 고양이는 상자를 열기 전까지 "살아있으면서 죽어있는" 상태입니다. 관측하는 순간, 둘 중 하나로 확정되는 거죠.
큐비트도 마찬가지입니다. 측정하기 전까지는 0과 1이 중첩된(Superposition) 상태로 존재합니다. 그리고 측정하는 순간, 0 아니면 1로 붕괴(Collapse)됩니다.
이 기묘한 성질 때문에 큐비트가 늘어날수록 성능이 덧셈(+)이 아니라 지수(x2)로 폭발합니다.
구글이 2019년에 발표한 Sycamore 칩은 53큐비트였습니다. 이론상으로는 $2^$개의 상태, 즉 9,000조 가지 경우의 수를 동시에 다룰 수 있다는 뜻입니다. 고전 슈퍼컴퓨터가 1만 년 걸릴 계산을 200초 만에 끝냈다는 게 과장이 아니었습니다.
양자컴퓨터의 두 번째 핵심 개념은 얽힘(Entanglement)입니다.
두 개의 큐비트가 얽히면, 한쪽을 측정하는 순간 다른 쪽의 상태가 즉시 결정됩니다. 거리가 아무리 멀어도 상관없습니다. 아인슈타인은 이걸 "으스스한 원격작용(Spooky Action at a Distance)"이라고 불렀습니다. 받아들이기 싫어서요.
저도 처음엔 "그냥 미리 정해진 거 아냐?"라고 생각했습니다. 동전 두 개를 각각 봉투에 넣어서 나눠 가지면, 한쪽이 앞면이면 다른 쪽은 뒷면인 게 당연하잖아요. 하지만 양자 얽힘은 다릅니다.
핵심은 "측정 전까지 둘 다 정해지지 않았다"는 점입니다. A 큐비트를 측정해서 0이 나오면, B 큐비트는 그 순간 1로 확정됩니다. 미리 정해진 게 아니라, 관측하는 순간 동시에 결정되는 겁니다.
이걸 이해하고 나니, 양자암호통신이 해킹 불가능한 이유가 와닿았습니다. 중간에서 누군가가 큐비트를 측정하는 순간, 그 상태가 붕괴되기 때문에 도청 시도 자체가 드러납니다.
고전 컴퓨터에는 AND, OR, NOT 같은 논리 게이트가 있습니다. 양자컴퓨터에도 게이트가 있는데, 이름이 좀 특이합니다.
처음엔 "왜 이렇게 복잡한 거야?"라고 생각했습니다. 하지만 이 게이트들을 조합하면 확률 분포를 정교하게 조작할 수 있다는 걸 깨달았습니다. 미로 찾기 비유로 돌아가면, 물이 흐르는 방향과 속도를 조절하는 밸브 같은 겁니다.
아래는 Qiskit으로 작성한 간단한 양자 회로입니다. 동전을 던지는 걸 양자적으로 시뮬레이션하는 코드입니다.
from qiskit import QuantumCircuit, execute, Aer
# 1큐비트 회로 생성
qc = QuantumCircuit(1, 1)
# Hadamard 게이트 적용 (0을 중첩 상태로)
qc.h(0)
# 측정
qc.measure(0, 0)
# 시뮬레이터 실행
backend = Aer.get_backend('qasm_simulator')
job = execute(qc, backend, shots=1000)
result = job.result()
counts = result.get_counts()
print(counts) # {'0': 약500, '1': 약500}
실행하면 0과 1이 거의 반반으로 나옵니다. 고전 컴퓨터에서는 random.randint(0, 1)로 난수를 생성하지만, 양자컴퓨터는 물리적으로 확률 상태를 만들어냅니다.
양자컴퓨터가 암호학계에 충격을 준 건 1994년 피터 쇼어(Peter Shor)가 발표한 알고리즘 때문입니다.
RSA 암호는 "큰 숫자를 소인수분해하는 게 어렵다"는 가정에 기반합니다. 예를 들어, 15는 3×5로 분해되지만, 2,048비트 RSA는 617자리 숫자를 두 소수로 분해해야 합니다. 고전 컴퓨터로는 우주의 나이보다 긴 시간이 걸립니다.
하지만 쇼어 알고리즘은 양자컴퓨터를 사용하면 다항 시간(Polynomial Time)에 풀 수 있다는 걸 증명했습니다. 100개 갈림길 문제를 "물 붓기"로 해결하는 거죠.
구글의 Willow 칩이나 IBM Quantum System이 상용화되면, 현재 인터넷 뱅킹, HTTPS, 이메일 암호화가 전부 뚫립니다. 그래서 요즘 NIST(미국 표준기술연구소)에서는 양자내성암호(Post-Quantum Cryptography)를 표준화하고 있습니다.
제가 서비스를 개발할 때도 이 부분이 신경 쓰였습니다. 지금 암호화한 데이터가 10년 후에도 안전할까? "수확 후 해독(Harvest Now, Decrypt Later)" 공격이라고, 누군가 지금 암호화된 데이터를 저장해두고 양자컴퓨터가 나오면 해독할 수도 있으니까요.
이론상으로는 완벽해 보이는데, 왜 아직 양자컴퓨터가 제 맥북을 대체하지 못했을까요? 답은 오류율(Error Rate)입니다.
큐비트는 너무 민감합니다. 주변 온도, 전자기파, 진동 등 모든 환경 요인이 큐비트 상태를 망가뜨립니다. 이걸 디코히어런스(Decoherence)라고 합니다. 돌아가는 동전을 탁자에 올려놓으면 즉시 앞면이나 뒷면으로 떨어지는 것처럼요.
그래서 양자컴퓨터는 절대영도(-273°C)에 가까운 환경에서 작동합니다. IBM Quantum System을 보면 거대한 냉동고 같은 게 있는데, 그게 바로 희석 냉동기(Dilution Refrigerator)입니다. 우주보다 차가운 환경을 만들어야 큐비트가 안정적으로 유지됩니다.
하지만 그래도 오류는 발생합니다. 현재 큐비트의 오류율은 0.1~1% 수준입니다. 별로 안 높아 보이지만, 100번 연산하면 최소 1번은 틀린다는 뜻입니다. 고전 컴퓨터 오류율이 $10^$ 수준인 걸 생각하면 엄청나게 높습니다.
그래서 양자 오류 정정(Quantum Error Correction) 기술이 필요합니다. 한 개의 논리 큐비트를 여러 개의 물리 큐비트로 인코딩해서 오류를 찾아내고 수정하는 겁니다. 문제는, 이렇게 하면 큐비트가 수십 배 더 필요하다는 점입니다.
구글은 2024년 Willow 칩에서 "큐비트를 늘릴수록 오류율이 낮아진다"는걸 실험적으로 증명했습니다. 하지만 실용적인 양자컴퓨터를 만들려면 아직 수백만 개의 물리 큐비트가 필요합니다. 지금은 100~1,000개 수준이니까요.
양자컴퓨터가 이론에만 머무는 건 아닙니다. 실제로 클라우드에서 사용할 수 있습니다.
IBM Quantum Experience: 웹 브라우저에서 실제 양자컴퓨터에 접속해 회로를 실행할 수 있습니다. 저도 가입해서 간단한 회로를 돌려봤는데, 신기하게도 실제 하드웨어 큐비트에서 측정 결과가 시뮬레이터와 약간 달랐습니다. 노이즈 때문이죠.
Google Sycamore: 2019년 "양자 우위(Quantum Supremacy)"를 달성했다고 발표한 칩입니다. 53큐비트로 무작위 양자 회로 샘플링 문제를 200초 만에 풀었습니다. IBM은 "고전 슈퍼컴으로도 2.5일이면 된다"고 반박했지만, 어쨌든 양자컴퓨터가 특정 문제에서는 우위를 보인 건 사실입니다.
아래는 IBM Quantum 플랫폼에서 두 큐비트를 얽히게(Entangle) 만드는 "Hello World" 회로입니다.
from qiskit import QuantumCircuit, execute, Aer
# 2큐비트 회로 생성 (벨 상태)
qc = QuantumCircuit(2, 2)
# 첫 번째 큐비트를 중첩 상태로
qc.h(0)
# 두 번째 큐비트를 첫 번째와 얽히게 함
qc.cx(0, 1)
# 측정
qc.measure([0, 1], [0, 1])
# 실행
backend = Aer.get_backend('qasm_simulator')
job = execute(qc, backend, shots=1000)
result = job.result()
counts = result.get_counts()
print(counts) # {'00': 약500, '11': 약500}
결과를 보면 00과 11만 나오고, 01이나 10은 거의 안 나옵니다. 두 큐비트가 완벽하게 얽혀있다는 증거입니다. 첫 번째가 0이면 두 번째도 0, 첫 번째가 1이면 두 번째도 1.
"그럼 롤(League of Legends)도 양자 컴퓨터로 돌리면 100만 프레임 나오나?" 정답은 NO입니다.
양자 컴퓨터는 '모든 경우의 수를 뒤져야 하는 문제'(암호 해독, 신약 개발, 최적 경로 찾기)에만 신처럼 강력합니다. 반면, 엑셀 켜고 유튜브 보고 게임 하는 일반적인 작업은 지금의 CPU가 훨씬 잘합니다. 마치 "핵융합로(양자컴)로 라면 끓여 먹는 격"이라, 오히려 비효율적입니다.
양자컴퓨터가 잘하는 일:
양자컴퓨터가 못하는 일:
제가 서비스를 개발할 때도 "이 문제는 양자컴퓨터가 필요한가?"를 먼저 물어봅니다. 대부분의 경우 답은 "아니오"입니다. 하지만 추천 알고리즘이나 암호화 부분에서는 5년 후를 대비해야 할 것 같습니다.
실제적으로 양자컴퓨터가 당장 영향을 미칠 분야를 정리해봤습니다:
하지만 제 스타트업에서는 아직 양자컴퓨터를 직접 쓸 일은 없습니다. 다만 암호화 라이브러리를 선택할 때 "양자내성(Post-Quantum)" 옵션이 있는지는 확인합니다. 10년 후를 대비한 보험이죠.
| 구분 | 고전 컴퓨터 (Classical) | 양자 컴퓨터 (Quantum) |
|---|---|---|
| 기본 단위 | 비트 (Bit: 0 or 1) | 큐비트 (Qubit: 0 and 1) |
| 미로 찾기 | 빠른 생쥐 (순차적) | 물 붓기 (동시적) |
| 잘하는 것 | 일반 연산, 게임, 문서 작업 | 암호 해독, 분자 시뮬레이션 |
양자 컴퓨터를 이해하고 나니, 왜 구글과 IBM이 저온 냉동고(절대영도 유지 장치) 앞에서 씨름하고 있는지 알 것 같습니다. 단순히 "더 빠른 컴퓨터"를 만드는 게 아니라, "신의 주사위 놀이"를 통제하려는 인류의 도전이었으니까요.
양자컴퓨터를 공부하면서 가장 흥미로웠던 건, 이게 단순한 기술 발전이 아니라 철학적 질문을 던진다는 점이었습니다. "관측하기 전까지 상태가 정해지지 않는다"는 개념은 현실의 본질에 대한 물음입니다. 제가 측정하기 전까지 큐비트는 정말로 0과 1 동시에 존재하는 걸까요? 아니면 단지 우리가 모를 뿐인 걸까요?
아인슈타인은 죽을 때까지 이걸 받아들이지 못했습니다. "신은 주사위 놀이를 하지 않는다"는 유명한 말을 남겼죠. 하지만 닐스 보어(Niels Bohr)는 "아인슈타인, 신에게 이래라저래라 하지 마세요"라고 받아쳤습니다.
결국 양자컴퓨터는 기술적 성과이기도 하지만, 인간이 우주의 불확정성을 도구로 삼는다는 점에서 획기적입니다. 불확정성이 약점이 아니라 무기가 되는 겁니다.
제가 이 글을 쓰면서 정리한 핵심은 이겁니다:
앞으로 제 서비스에서 "양자내성 암호화"를 기본 옵션으로 검토해야겠다는 생각이 들었습니다. 지금 당장은 과한 것 같지만, 2030년이 되면 "왜 그때 안 했지?"라고 후회할 수도 있으니까요. 기술 부채는 암호화 부채보다 덜 무섭습니다.