2020년 3월 17일 화요일

"양자비트와 양자암호" 요약 - 6장. 앨리스가 밥을 만나다

2004년 안톤 질링거(Anton Zeilinger)는 은행으로부터 보안 통신 채널을 통해 그의 연구에 대한 연구비를 받았다. 은행 본점에서 질링거의 연구소까지는 대략 1마일이었고, 연구비는 삼천 유로였지만 전달된 방법이 보안 통신 채널로 이루어졌기에 큰 관심을 받았다. 양자 암호(Quantum cryptography)는 첨단 장비를 갖춘 스파이 집단도 정보를 가로채거나 위조할 수 없는 기술이다. 바로 자연의 법칙을 이용하기 때문이다.

6.1. 비밀 편지의 역사

메시지 전달을 위한 암호 기법(cryptographic, 비밀의 글이라는 그리스 어원에서 유래)은 A.D. 100년 경 플루타크(Plutarch)에 의한 역사서에서 초창기의 여러 실례들이 기록되어 있다. 플루타크의 기록에는 당시보다 수세기 전부터 암호 편지들이 이미 사용되었다고 전해진다.

스키테일[1] 메시지는 대칭 암호(symmetric code)의 대표적인 형태이다. 암호 메시지를 보내는 사람과 받는 사람의 양쪽 모두가 같은 키(key)를 가져야만 하며, 이 키를 이용하여 메시지를 암호화하거나 해독한다. 이와 같은 암호기법의 취약점은 다른 사람들에게 그 기술이 쉽게 노출될 수 있다는 것이다. 키가 스키테일인 경우, 여러 다른 반경의 막대기를 가지고 맞는지 아닌지 계속 시도해보면 될 것이다.

대칭 암호화 다른 암호 기법으로 비대칭 암호(asymmetric code)가 있다. 보내는 사람과 받는 사람이 다른 키를 갖는 경우이며, 심지어 키의 일부가 대중에 공개되기도 한다. 현대의 많은 암호화 기법은 비대칭이다.

잘 알려진 대칭 암호는 율리우스 카이사르(Julius Caesar)의 이름을 딴 카이사르 또는 시저 암호이다. 그가 휘하의 장군들과 비밀 통신을 하기 위해서 사용된 암호이며, 메시지 평문의 각 글자를 알파벳 순서로 대치하면 암호문으로 바뀐다. 예를 들어, ATTACK(공격하라)를 4 숫자씩 내려간 글로 대치하면(Z 이후 알파벳은 처음으로 돌아간다), EXXEGO 가 된다. 암호문을 받은 장군들은 역으로 적용하여 해독한다.

6.2. 0과 1

간단한 메지시 "OK" 의 아스키 코드는 79, 75이다. 대부분의 디지털 장치들은 오로지 "0"과 "1"의 값만을 인식하는데 이것은 "전류가 흐르지 않음"과 "전류가 흐름"에 해당하며, 다른 예로는 "빛의 꺼짐"과 "빛의 켜짐"을 들 수 있다. 디지털 장치가 이 메시지를 인식하도록 하려면 십진법의 두 숫자를 이진법으로 전환해야 한다. 즉, 변환된 수는 01001111, 01001011 이다.

이진법을 사용한 암호화의 일반적인 방법으로 "덧셈 모듈러 2"가 있다. 두 수를 더한 다음에 그 결과를 2로 나누어 나머지를 쓰는 규칙으로, 기호 ⊕를 사용한다. 다루어야 할 연산은 4개만 존재한다.

0 ⊕ 0 = 0
0 ⊕ 1 = 1
1 ⊕ 0 = 1
1 ⊕ 1 = 0

논리 연산 XOR 이 같은 결과를 나타내며, XOR 은 "둘 중 하나가 1이면 1"이라는 연산이다.
선택한 키가 두 번째 자릿수를 전환시킨다면 다음과 같은 연산이 된다.

0 1 0 0 1 1 1 1 0 1 0 0 1 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
- - - - - - - - - - - - - - - -
0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 0

이것은 수학적으로도 증명이 가능하다. 만일 메시지가 "m", 키가 "k", 암호 메시지가 "e" 이면 암호화 과정은 아래와 같다.

m ⊕ k = e

복호화 과정은 암호화된 메시지에 키를 동일하게 연산하면 된다.

e ⊕ k = m

위 식의 증명은 아래와 같다.

(m ⊕ k) ⊕ k = m ⊕ (k ⊕ k) = m ⊕ 0 = m

상기 예제의 키는 사실상 안전하지 않다. 따라서 암호를 해독하기 어렵게 하려면 일반적이지 않고 규칙성이 없는 키를 사용할 필요가 있다. 현재는 AES(Advanced Encryption Standard, 고등 암호 표준)이 널리 사용되며, 메시지 평문에 모듈화 연산을 해서 얻은 128, 192 또는 256비트 키를 사용한다.

암호를 깨기 더욱 어렵게 만들려면 메시지에 단순히 덧셈을 하는 정도로 그치지 말고 더하기 전에 메시지를 여러 부분으로 나누어 이리저리 뒤섞어야 한다. AES는 안전하다고 알려져 있으나 짧은 시간에 수 많은 키들을 처리하는 매우 강력한 컴퓨터 앞에서는 맥을 못추게 된다.

6.3. 1회용 암호표

완벽한 암호화를 위해서는 "0"과 "1"만이 마구잡이로 발생된 키(completely random number)를 단 한번만 사용하도록 암호를 만들면 된다. 이는 길버트 버냄(Gilbert Vernam)이 1926년에 처음 제안한 것으로 OTP(One-time pad)[2]라고 부른다. 1940년, 1회용 암호표는 근본적으로 깨어지지 않는 다는 것이 이론적으로 증명되었다.

OTP는 키를 단 한번만 사용하는 한 확실히 안전하다고 할 수 있다. 만일 다른 메시지를 암호화하면서 같은 키를 여러 번 사용한다면 키에 대한 정보를 노출할 염려가 있다. OTP 는 안전성에서는 뛰어나지만 실제로 그리 실용적이지는 못하다.  단 한번 사용되는 키를 사전에 교환하기 위한 비용이 크며, 전화나 인터넷을 통한 암호 교환은 위험하기 이를데 없기 때문이다. 이러한 키 교환 문제는 광자와 양자역학의 힘을 활용하여 해결할 수 있다.

6.4. 비밀스런 광자

편광자, 편광분리기, 광자 검출기 등을 활용하여 다음의 규칙을 정한다. 수직 편광된 광자를 2진법의 "1"로, 수평 편광된 광자는 "0"으로 각각 나타낸다. 메시지를 보내려는 Alice 가 1회용 암호표 "1001101"을 다른 사람에게 전하려고 한다면, Alice 가 해야 할 일은 단일 광자들을 "수직-수평-수평-수직-수직-수평-수직"의 순서로 편광자를 보내는 것이다. 편광자를 받은 Bob 은 키를 받기 위해 편광분리기와 두 개의 검출기를 사용한다. 광자가 분리기를 직선으로 통과해서 검출기를 통과하면, Bob은 받은 광자가 수평으로 편광되었으므로 "0"을 기록한다. 만일 광자가 90도 각도로 나오면 수직 편광되었으므로 "1"을 기록한다.

위 방법은 안전하지 않다. Alice 와 Bob 사이에 메시지를 엿듣는 Eve 가 Alice 의 광자를 가로채고, 또 Eve 가 만든 광자를 Bob 에게 전송하면 Bob은 받은 양자가 Eve로 부터 온 "가짜"인지 Alice 로 부터 온 "진짜"인지 알 수 없다. 이 문제를 양자역학에서는 마구잡이(Randomness)의 요소를 통해 해결한다.

6.5. 마구잡이(Randomness)의 요소

양자역학에서 측정을 할 때는 특정한 기저(basis) 상태를 사용해야 한다. 그렇지 않으면, Alice 가 Bob 에게 보내려는 비밀키의 "1"을 나타내는 광자를 Bob 은 "0"으로 측정할 수 있기 때문이다. 이러한 키는 통신에서 쓸모가 없으므로, Alice 는 Bob 과 통신하기 전에 어떤 방향을 선택할지 Bob 에게 알려야한다. 이렇게 하면 Bob 은 모든 편광들을 불확실성이 포함되지 않게 측정할 수 있다. 하지만 이 경우에도 Eve 는 Alice 가 Bob 에게 보내는 기저 상태를 가로챌 수 있으므로 안전하지 않다.

6.6. 선별키

위의 문제를 해결하기 위해 선별키(sifting key)를 사용한다. Alice 는 Bob 에게 편광 기저 상태를 미리 말하지 않고, 편광자들을 전송한 후에 Bob 에게 선택한 기저 상태를 알려준다. Bob 은 이 정보에 의해 비트를 보관하거나 삭제할 수 있다. Bob 도 Alice 에게 측정한 기저 상태를 알려주고, Alice 는 Bob 선택한 기저 상태의 정보를 듣고 기저 상태가 일치하지 않는 비트를 삭제한다. 결과적으로 Alice 와 Bob 은 같은 선별키를 공유한다.

위 선별키 교환에서 Eve 는 Alice 가 어떤 기저 상태를 선택할지 모르기 때문에 비밀키에 대해 어떤 정보도 받지 못한다. 예를 들어 Alice 가 "1"을 보내려고 수평 수직 기저 상태를 선택하고 Bob 에게 수직 광자를 보냈다고 하자. Eve 는 이것을 가로챘으나 Alice 가 선택한 기저 상태를 모르기 때문에 Eve 는 단지 추측만 할 수 있다. 만일 이브가 올바르지 않는 기저 상태를 선택하여 ±45도 방향을 따라 측정했다고 해보자. 이 측정 결과는 "0" 또는 "1"로 받게 될 확률이 같다. Eve 가 "0"을 측정하게 된다면 -45도의 편광된 광자를 Bob 에게 보낼 것이다. 이 후 두 가지 경우가 발생할 수 있다. Bob 이 Alice 와 같은 기저 상태를 선택하든지, 아니면 이브와 같이 ±45도 방향을 선택하는 경우이다. 후자의 경우라면 Bob 은 Eve 와 같은 광자를 측정할 것이나, Alice 에게는 틀린 기저 상태가 되므로 무시해버리면 된다. 전자의 경우는 Bob 이 Alice 와 같이 수평 수직 기저를 선택한 경우인데, 이 경우 Eve 가 선택한 ±45도 방향의 기저 상태는 Bob 에게 마구잡이 상태의 결과를 주게 된다.

Alice 와 Bob 은 각자 선택한 기저 정보가 서로 일치하는 지를 공개적으로 비교한다. 이 후  Alice 와 Bob 은 기저 정보가 일치하는 비트를 모아서 키를 생성하고, 키의 1 ~ 100 비트 정도를 공개적으로 비교하여 Bob 이 올바르게 받은 경우의 비율을 계산한다. Alice 가 Bob 에게 광자를 보낼 때 아무 일도 없었다면 이 비율은 100%가 되고, 선별키는 오로지 Bob 이 올바른 기저 상태를 사용하였던 비트들로만 이루어진다. 그러나 Eve 가 광자를 가로채고, 그 광자를 Bob 에게 보냈다면 Bob 이 받은 광자가 올바르게 측정될 확률은 50%가 된다. 그러면 Alice 와 Bob 은 그들의 통신을 다른 사람이 엿들었다고 결론을 내리고 키 전부를 무시하게 될 것이다.

6.7. BB84 프로토콜

위와 같이 광자를 사용하여 안전하게 OTP 를 전송하는 방식이 BB84 프로토콜이며, 1984년 찰스 베네트(Charles Benett)와 질 브라사드(Giles Brassard)가 공동 개발하였다. BB84 프로토콜의 각 단계를 요약하면 다음과 같다.

  1. Alice 가 자신의 비밀키인 "0"과 "1"을 광자의 수직, 수평 상태 또는 ±45도 편광 기저 상태로 전환시킨다.
  2. Bob 이 Alice 의 광자를 받아서 기저 상태를 마구잡이로 선택하여 수직, 수평 상태 또는 ±45도 편광 기저로 광자를 측정한다.
  3. Alice 와 Bob 은 광자가 각각 어떤 기저 상태로 측정되었는지 공개적으로 논의한다.
  4. Alice 와 Bob 은 그들의 기저 상태가 일치한다고 동의한 비트들만 보관하여 선별키를 생성한다.
  5. 마지막으로 그들은 자신들의 선별키 일부를 공개적으로 확인하며, 만일 선별키가 완전히 일치하지 않으면 제 3자인 Eve 가 엿들었다고 판단하고 모든 키를 버린다.

그림6.1. BB84 프로토콜

앞의 논의에서는 항상 Eve 가 Alice 의 광자를 가로채서 편광을 측정하고 Bob 에게 보내는 것만을 가정했다. Eve 가 틀린 기저 상태를 받았을 때는 흔적을 남기게 되고 Alice 와 Bob 은 Eve 의 존재를 알아냈다. 그러나, Eve가 Alice 의 광자를 측정하기 전에 그 광자를 복제하여, 두 벌의 동등한 광자들을 가지고 그들 중 하나는 Bob 에게 직접 전달하고 다른 하나는 측정에 사용한다면 어떻게 될까? Eve 는 Alice 와 Bob 이 공개적으로 기저 상태를 비교하는 것을 도청한 후 선별키 또는 키의 일부를 가지고 암호를 깰 수 있다.

6.8. 복제 불가의 원리

위 계획은 그럴듯하지만 간단한 이유로 실행이 불가능하다. 양자역학에서는 복제가 원리적으로 허용되지 않는다. 완전히 똑같이 복제된 상태로 존재할 수가 없다. 물론 누군가 보낸 광자가 수평 수직의 기저 상태에서 편광된 광자라고 말해준다면 분리기와 검출기 장치를 통해 편광 상태를 판별한 다음에 같은 광자를 만들어내면 된다. 그러나, Alice 가 선택한 기저 상태가 무엇인지 알리지 않고 전달한 광자 상태는 다음의 이유로 복제가 불가능하다.

확인되지 않은 상태를 '비어 있는 상태'라고 하고, '비어 있는' 양자 상태를 원하는 양자 상태로 점유하게 한다고 해보자. 예를 들면, 초기화된 디스크에 특정 파일을 복사하는 것과 같다. 만일 우리가 수직(V) 광자 상태의 복제를 원한다면 이러한 복합 상태는 다음과 같다.

|V>₁|비어 있는 상태>₂

다음으로 가상의 양자 복사기를 U복제 라는 연산자로 하고, 비어 있는 상태에 수직 편광된 광자를 복제한다면 아래와 같다.

U복제(|V>₁|비어 있는 상태>₂) = |V>₁|V>₂

가상의 복사기는 원래의 상태를 변화시키거나 붕괴시키는 것이 아니므로, 광자1은 처음 상태로 유지된다. 마지막 단계로 복사기가 어떤 미지의 편광 상태를 복제할 수 있도록 하려면 아래와 같다.

U복제(|미지의 상태>₁|비어 있는 상태>₂) = |미지의 상태>₁|미지의 상태>₂

일반적인 편광 상태의 각각의 성분 H> 와 V> 의 상태로 나타낼 수 있다. 따라서 미지의 상태는

|미지의 상태> = a * |H> + b * |V>

위 식의 a 와 b 는 상태가 규격화될 때 정해지는 상수 값이다. 위의 일반적인 편광 상태를 앞서 복제 연산자 식의 좌편에 대입하면,

U복제(a * |H>₁|비어 있는 상태>₂ + b * |V>₁|비어 있는 상태>₂)

가 되고, 복제 연산자가 작용되면 좌편은 비어 있는 연산자가 아래와 같이 정리할 수 있다.

a * |H>₁|H>₂ + b * |V>₁|V>₂

이제 우편에 일반적인 편광 상태를 대입하면

|미지의 상태>₁|미지의 상태>₂ = (a * |H>₁ + b * |V>₁)(a * |H>₂ + b * |V>₂)
= a² * |H>₁|H>₂ + a * b * |H>₁|V>₂ + a * b * |V>₁|H>₂ + b² * |V>₁|V>₂

좌편과 우편을 정리하면 다음과 같다.

a * |H>₁|H>₂ + b * |V>₁|V>₂ 
a² * |H>₁|H>₂ + a * b * |H>₁|V>₂ + a * b * |V>₁|H>₂ + b² * |V>₁|V>

위 결과를 만족하려면 a 가 1 이고 b 가 0 이거나, a 가 0 이고 b 가 1 이어야 한다. 다시 말해 미지의 상태를 복제할 수 있는 유일한 경우는 광자가 수평이든지 아니면 수직이든지 둘 중의 하나인데, 두 상태가 연산자에 의해 복제된다고 가정했기 때문에 아무것도 얻을 수 없다는 것을 의미한다. 미지의 양자 상태를 정확하게 복제할 수 없다는 것을 양자 복제 불가의 원리(quantum no-cloning theorem)[3] 라고 한다.

6.9. 섞이는 잡음

복제 불가 원리에 의하면 도청자가 중간에 가로채어 전송하는 전략을 사용하여 비밀키에 대한 정보를 빼가는 것은 근본적으로 불가능하다. 따라서 Eve 는 Alice 로부터 받은 광자를 측정한 다음 Bob 에게 다른 광자를 보내게 된다. Eve 는 Alice 이 광자를 복제할 수 없으므로 키의 50%만 알게 되고, 광자를 Bob 에게 보내면 Bob 의 선별키에 25%의 오류를 만든다. 따라서 Eve 의 존재가 드러나게 된다. 이것을 비트 오류율 이라고 부른다.

Eve 가 광자들의 일부분만을 가로채는 경우를 생각해보면 비트 오류율을 낮출 수 있다. 예를 들어 광자 10개 중 하나만을 가로채는 경우라면 Eve 는 키의 5% 만 얻을 수 있으며, 오류가 포함되는 비율을 감안하면 2.5%로 떨어진다. 원리적으로는 Eve 의 존재를 검출해 낼 수 있다.

지금까지는 Eve 만이 광자를 가로채서 교란시킨다고 생각했다. 그러나 실제는 어느 누구도 도청하지 않는데도 불구하고 잡음이나 불완전한 광검출기 등에 의해 교란이 일어날 수 있다. 만일 오류 비율이 5%에 달한다면 Eve 의 2.5% 는 검출하기가 어려워진다. 만일 Eve 가 계속 윤곽을 드러내지 않고, 키의 2% 또는 3%만의 정보를 확보하는 것으로 암호를 해독할 수 있다면, 양자 암호 통신은 안전하지 않을 수 있다.

6.10. 점점 증가되는 비밀

도청자 검출이 어렵다는 것 외에도 잡음은 Alice 와 Bob 의 선별키가 완전하게 일치하지 않게 만든다. 이 문제를 해결하기 위해서는 고전적인 오류 보정 방법을 사용할 수 있다. 오류 보정 방법은 키에서 두 개의 특정한 비트를 일치시키는 것인데 예를 들어 5번째 비트와 15번째 비트를 일치시키고 모듈러 2 덧셈을 해준다. Alice 와 Bob 각각의 모듈러 연산의 결과가 0이라면 5번 비트와 15번 비트는 "0"과 "0" 또는 "1"과 "1"이 된다. Eve 는 둘 중 어느 것인지 알 수 없지만, Alice 와 Bob 은 5번 비트와 15번 비트가 같다고 믿을 수 있다. 물론 비교적 오류비율이 낮아 5번 비트와 15번 비트가 모두 오류에 영향을 받지 않는다는 것을 가정한다.

비슷한 방법으로 Alice 와 Bob 은 Eve 가 가지게될 비밀키 정보들을 더 적게 만들 수도 있다. 앞서 Eve 는 낮은 비율의 광자를 가로채어 잡음의 오류 비율만큼만 부분적으로 키의 정보를 얻어 존재를 드러내지 않는다. Alice 와 Bob 이 만약 Eve 가 키에 대해 거의 알지 못한다고 확신한다면 그들은 모듈러 2의 연산을 통해 각 비트 쌍을 대체할 수가 있다. 예를 들어 오류 보정 후 Alice 와 Bob 은 둘 다 아래의 키를 가지고 있다고 하자.

00 11 01 00 10

위 키에서 이웃하는 비트를 모듈러 연산으로 한 쌍씩 더하게 되면 아래 값이 된다.

0 0 1 0 1

한편 Eve 는 키를 다음의 세 개 오류(밑줄이 그어진 부분)를 가진 키를 가지고 있다면,

01 10 01 00 11

처음에는 10개 비트 중 3개인 30%의 비트가 잘못되어 있으나, 모듈러 연산 후 5개의 비트 중 3개의 비트를 잘못 가지고 있게 되므로 60%의 오류 비율이 된다.

1 1 1 0 0

Eve 의 오류는 두 배로 커졌고, 비밀이 더 안전해지면서 비트를 모을 수 있다. 이 과정을 비밀 증폭(privacy amplification)이라고 한다.

한 가지 더 고려해야 할 문제는 부인 방지이다. 다시 말해, Bob 은 받은 광자가 Alice 로 온 것인지 아닌지를 확인할 수 있어야 한다. Eve 는 자신을 Alice 로 가장하고 Bob 에게 광자를 보낼 수도 있다. 그리고 Bob 이 암호화한 메시지를 Alice 에게 보내면 Eve 는 이를 해독할 수 있을지도 모른다. 이것을 막으려면 Alice 와 Bob 은 서로의 대상을 확인해야 할 필요가 있다. 즉, 통신을 시작하기 전에 통신할 대상자를 확인하기 위해 사전에 1회용 암호표를 미리 교환하는 것이다. 이 암호표는 일종의 "씨앗(seed)"의 역할을 하므로 양자키 증식(quantum key growing)으로 불리기도 하며, 실제로 일어나는 일은 키 교환이므로 양자키 교환(quantum key exchange)로 불리기도 한다[4].

6.11. 에케르트의 아이디어

1991년 옥스퍼드 대학의 아르투르 에케르트(Artur Ekert)는 얽힘 광자들을 사용하여 키를 교환하는 방법을 발견하였다. Alice와 Bob 이 각각 얽힘 광자쌍(entangled pair)의 하나씩을 갖는 것이다. 이 광자쌍은 Alice 나 Bob 의 위치에서 만들어졌거나 그 외의 다른 곳에서 만들어진 광자들이다. Alice 와 Bob 은 각각의 광자들의 기저를 선택해서 측정하고, 서로 기저 상태를 비교하여 선택키를 복원시키는 방식이다. 이 후 측정 결과가 벨의 부등식의 값을 깨는 지에 대해서 계산해보고, 부등식이 깨지지 않으면 Alice 와 Bob 은 Eve 가 광자들을 가로채서 얽힘 관계를 소멸시켰다고 가정할 수 있다. 이 방법은 1회용 암호표를 통신 전에 교환할 필요가 없으며, 얽힘의 핵심인 양자 보정을 통해 1회용 암호표가 각각 동시에 Alice 와 Bob 의 위치에서 만들어진다.

6.12. 실제의 양자암호 통신

1989년 찰스 베네트는 존 스몰린(John Smolin)과 함께 처음으로 양자암호 통신을 실험적으로 증명했다. 초창기 양자암호 통신 기계는 비밀키를 전송하는 거리가 겨우 30cm 정도였으나, 1995년 23km의 거리에 걸쳐 광섬유를 사용한 양자키 변환이 시험되었고, 오늘날 광섬유 양자암호 통신은 표준 통신용 광섬유들을 사용하여 101km 이상 가능하다. 광섬유를 대체할 수 있는 다른 대안으로 자유 공간의 양자키 교환이 있다. 이 방법은 광섬유에서의 편광 상태가 잡음이 있더라도 공기 중에 전파되는 경우에는 잡음이 없다는 것을 이용하였으며, 광섬유로 연결될 수 없는 위치 사이에서 키 교환을 가능하게 만든다. 따라서 지구 위의 정거장과 인공위성 사이에서도 범우주적인 양자암호 연결을 만들 수 있다. 2007년에 원리적으로나마 거리가 144km 떨어진 라팔마 섬과 테네리페 섬 사이에서 양자키 교환이 가능하다는 것이 증명되었다.

[1] https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%82%A4%ED%85%8C%EC%9D%BC
[2] One Time Password 로 쓰일 때도 있으나 같은 의미이다.
[3] W.K.Wootters 와 W.H.Zurek (1982)
[4] 최근에는 QKD(Quantum Key Distribution, 양자 키 분배)으로 더 많이 불린다.

댓글 없음:

댓글 쓰기