ZDNet Korea에 올라온
이 기사에 따르면
디웨이브(D-Wave)라는 기업에서 이달 12일에 최초의 실용화된 양자 컴퓨터(Quantum Computer)의 동작을 시연한다고(했다고^^) 한다. 디웨이브의 사이트에 들어가 보면 13일에 시연했다고 나온다.
우와~~! 상용 양자 컴퓨터라니! 내 전공인 암호학은 이제 끝장이란 말인가? ㅠ.ㅠ
근데 ZDNet의 기사를 좀 더 읽어내려가면 이 회사의 양자 컴퓨터가 과연 믿을 수 있는 물건인지 의심이 부쩍 생긴다. 이 회사는 16-qubit 짜리 양자 컴퓨터를 만들었다고 하는데 기사에 나오는 인터뷰 중에 보면 이게 16-qubit이 아니라 그냥 16-bit 컴퓨터였을 거라고 의심하는 말도 나온다. 나야 직접 보질 못했으니 알 수가 없지만.
학회를 이리저리 다니다 보면 양자 컴퓨터를 연구하는 사람들이 몇몇 눈에 띈다. 그리고 양자 컴퓨터가 나오면 암호학은 걍 끝장이기 때문에, 양자 컴퓨터가 나와도 쓸 수 있는 양자 암호(Quantum Cryptography)를 연구하는 사람들도 눈에 띈다. 디렉의 이름과 양자역학의 무시무시한 할아버지들 이름이 자주 언급되고 생소한 기호와 수식들이 난무하는 이 분야가 꽤 재미 있게는 보이지만, 과연 현실적으로도 의미를 갖는가는 의문이다. 평행우주를 구현하다니.
내가 그 분야를 공부하지 않았으니 나의 다음 의문이 영 쓸데없는 것일지도 모르겠지만 어쨌거나 가장 근본적인 부분에 의문이 든다:
양자 컴퓨터에서 사용하는 정보의 단위는 bit(0또는 1의 값을 가짐)이 아닌 qubit(이론적으로는 무한개의 값을 가짐)이다. 이 qubit이 저장하는 정보의 단위가 거의 무한대이기 때문에 이 qubit을 처리할 수 있는 quantum gate(현대 논리회로에서의 logic gate에 해당)만 있으면 무한대의 정보를 한꺼번에 처리할 수 있다는 것이 양자 컴퓨팅의 근거이다. 그래... 처리라. 실제로 저런 quantum gate는 만들 수 있을 것이다. 그리고 "실제로" 무한대의 정보를 처리하는 것은 가능할 것이다. 우리는 이미 평행우주라는 SF적인 개념에 친숙하지 않은가. (영화에도 자주 등장한다. ^^)
지금 내 눈 앞에 있는 컵을 바닥에 던지면 아주 높은 확률(99.999999999% 정도?^^)로 깨질 것이다. 컵이 이미 깨진 것을 기정사실이라고 하면, 그 후에 0.000000000000000000000000000001%(실제로는 이것보다 더 낮을 테지만 0만 잔뜩 쓰면 보기 흉하니까^^)의 확률로 이 컵은 다시 원상 복구가 될 것이다. 그런데 이 확률이 너무 낮으니 우리는 컵이 깨진 것을 돌이킬 수 없고 결국은 뽄드를 찾거나 새 컵을 구해야 한다는 것을 알게 된다. 우리는 실제로 양자역학이 지배하는 세상에 살고 있는 것이다. 우와!
이것을 좀더 관찰하기 쉬운 것에 적용하는 것이 결국은 양자 컴퓨팅의 핵심이다.
그러면 이제 아주 단순한 형태의 qubit(dubit이라 부르자. 두가지 값을 동시에 갖는 bit.)을 생각하자. 이 dubit은 확률 50%로 0이고 확률 50%로 1의 값을 가진다. dubit 두 개를 논리 합(OR)한다. 그러면 우리는 각각 확률 25%로 0 or 0, 0 or 1, 1 or 0, 1 or 1의 계산을 "동시에" 수행할 수 있다. 그러면 확률 25%로 0이고 확률 75%로 1의 값을 갖는 dubit이 출력될 것이다. 어라? 이게 뭐야. 계산은 수행했지만 우리가 얻는 것은 무엇인가. 고작 확률 25%로 0이고 확률 75%로 1의 값을 갖는 dubit일 뿐이다.
양자 컴퓨터를 이용해서 인수분해문제(Integer Factorization Problem, 많은 암호 시스템들이 이 문제가 어려울 것이라는 가정을 한다.)를 풀 때는 대충 이런 식이다. 인수의 후보가 되는 여러 가지 값들을 동시에 갖는 qubit의 array를 만든다. 32-bit integer를 인수분해한다면 16 개의 dubit으로 array를 만들면 될 것이다. 이 16-dubit integer는 0부터 32767까지의 값을 각각 1/32768의 확률로 갖을 것이다. 그러니 우리는 32768개의 숫자를 한꺼번에 처리할 수 있다. 입력으로 들어온 32-bit integer를 이 16-budit integer로 나눠본다. 그 중에 나눠 떨어지는 수가 있으면 그게 입력 32-bit integer의 인수가 된다. 자... 문제가 풀렸나? 풀긴 풀었다. 대충 1/32768의 확률로 문제를 풀었다. 엥?
그럼 이게 위에서 0.00000000000000000001%의 확률로 원상복구되는 컵과 뭐가 다른 거지?
결국은 답을 얻었다고 해도 그것들이 수많은 garbage들 사이에 묻혀 있어서, 원하는 답을 "정말로" 찾으려면 또 다시 그 garbage들을 뒤져야 할 것이라는 거다.
문제는 언제나 그렇듯이 의미 있는 정보를 가려내는 일이다. 요즘 인터넷도 그러하지 않던가.
정보는 넘쳐나고 지금도 수없이 많은 정보들이 처리되고 배달되고 있지만, 그 중에서 정작 나에게 필요한, 또는 쓸모 있는 정보를 찾는 데에는 그 만큼 더 많은 노력(일)이 필요할 것이라는 것 말이다. 양자 컴퓨터를 연구하는 사람들은 바로 이런 기초적인 질문에 먼저 대답을 해야 할 것이다.
"양자 컴퓨터가 뭐에요?" 하고 물으면 수식부터 내 놓을 생각을 할 것이 아니라 말이지.