검수요청.png검수요청.png

"BB84 프로토콜"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(적용 과정)
 
(사용자 3명의 중간 판 20개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''BB84 프로토콜'''<!--BB84프로토콜-->(BB84 protocol)[[찰스 베넷]](Charles Bennett)과 [[길레스 브래서드]](Gilles Brassard)가 1984년에 개발한 [[양자키분배]] 체계이다. 최초의 [[양자암호]] 프로토콜이기도 하다.
+
'''BB84 프로토콜'''<!--BB84프로토콜-->(BB84 protocol)[[찰스 베넷]](Charles Bennett)과 [[길레스 브래서드]](Gilles Brassard)가 1984년에 개발한 [[양자키분배]] 체계이다. 최초의 [[양자암호]] 프로토콜이기도 하다.
  
 
== 개요 ==
 
== 개요 ==
BB84 프로토콜은 양자키분배에 사용되는 프로토콜로, BB84 프로토콜 외에도 [[B92 프로토콜]], [[6-state 프로토콜]], [[Ekert91 프로토콜]], [[BBM92 프로토콜]] 등이 양자키분해에 사용된다. BB84 프로토콜과 다른 몇몇 기법들만 이론상 무조건부 안전성이 증명되었는데, BB84 프로토콜은 다양한 양자키분해 프로토콜 중 단일광자를 사용하는 구현 모델에서 이론적인 안정성이 잘 증명되어 있어, 현재 가장 많이 사용되는 프로토콜이다. 하지만 물리적으로 단일광자 구현이 불가능해서 디코이 기법과 함께 사용되며, 이 또한 안전성이 잘 증명되어 있다. 따라서 [[한국정보통신기술협회]]의 [[정보통신단체표준]]에는 디코이 기법을 적용한 BB84 프로토콜을 대상으로 어떻게 양자비분배를 해야할지에 대해 서술되어 있다.<ref name='BB84 프로토콜 표준'>김나영 외 7인, 〈[http://www.tta.or.kr/data/ttas_view.jsp?rn=1&by=asc&order=kor_standard&totalSu=17417&pk_num=TTAK.KO-12.0329-Part2&nowSu=17411 양자 키 분배 - 제2부: BB84 프로토콜]〉, 《한국정보통신기술협회》, 2018-12-19</ref>
+
[[한국정보통신기술협회]]에서 작성한 BB84 프로토콜 표준은 BB84 프로토콜을 정당한 두 사용자가 양자를 이용해서 비밀키를 안전하게 공유하는 것이라고 정의한다. 양자키분배 기술 중 이론적으로 안전성이 잘 증명되어 있는 프로토콜이자, 가장 많이 사용되고 있는 프로토콜이다. BB84 프로토콜 외에도 [[B92 프로토콜]], [[6-state 프로토콜]], [[Ekert91 프로토콜]], [[BBM92 프로토콜]] 등이 양자키분배에 사용된다. 여기서 BB84 프로토콜과 다른 몇몇 기법들만 이론상 무 조건부 안전성이 증명되었다. 현재는 물리적으로는 단일광자 구현이 불가능하지만, 디코이 기법과 함께 사용되며 이 또한 안전성이 잘 증명되어 있기 때문에, 한국정보통신기술협회의 [[정보통신단체표준]]에는 디코이 기법을 적용한 BB84 프로토콜을 대상으로 어떻게 양자키분배를 해야 할지에 대해 서술되어 있다.<ref name='BB84 프로토콜 표준'>김나영 외 7인, 〈[http://www.tta.or.kr/data/ttas_view.jsp?rn=1&by=asc&order=kor_standard&totalSu=17417&pk_num=TTAK.KO-12.0329-Part2&nowSu=17411 양자 키 분배 - 제2부: BB84 프로토콜]〉, 《한국정보통신기술협회》, 2018-12-19</ref>  
  
BB84 프로토콜은 찰스 베넷과 길레스 브래서드가 양자 양자암호에 대한 논문을 발표하면서 같이 제안했다.<ref>BB84 위키피디아 - https://en.wikipedia.org/wiki/BB84</ref> BB84 프로토콜이라는 명칭은 최초의 고안자의 이름에서 유래된 이름이다. 특히, 양자암호기술의 창시자인 IBM의 찰스 베넷 박사는 2007년에 고등과학원의 초청으로 서울과학고 학생들을 대상으로 특강을 진행했다. 2011년에는 부산 부경대에서 열린 아시아양자정보국제학술대회(AQIS)에도 참가했다.  
+
BB84 프로토콜은 찰스 베넷과 길레스 브래서드가 양자암호에 대한 논문을 발표하면서 같이 제안된 개념이다.<ref>BB84 위키피디아 - https://en.wikipedia.org/wiki/BB84</ref> BB84 프로토콜이라는 명칭은 최초 고안자의 이름에서 유래된 이름이다. 특히, 양자암호기술의 창시자인 IBM의 찰스 베넷 박사는 2007년에 고등과학원의 초청으로 서울과학고 학생들을 대상으로 특강을 진행했다. 2011년에는 부산 부경대에서 열린 아시아 양자 정보 국제학술대회(AQIS)에도 참가했다.
  
 
== 원리 ==
 
== 원리 ==
암호학에서 앨리스는 사람A, 밥은 사람B와 같은 역할을 맡는다. 송수신 자 간의 통신에서 송신자를 앨리스, 수신자를 밥이라고 가정하자. 앨리스와 밥 사이에 [[OTP]]를 생성할 때, 송신자인 앨리스는 무작위로 0bit와 1bit를 생성하여 광자의 편광이나 스핀같은 양자 상태를 통해서 나타낸다. 광자의 편광을 예로 들자면, 빛을 +방향 또는 ×방향으로 편광 필터로 편광 시킨다. 이때, +방향의 편광 필터의 수직 방향 편광은 0, 수평 방향 편광은 1이라고 가정한다. 그리고 ×방향의 편광 필터의 오른쪽 위 방향 편광은 0, 오른쪽 아래 방향 편광은 1이라고 가정한다. 앨리스는 0bit나 1bit를 아무렇게 생성한 다음, 무작위로 +방향이나 ×방향으로 편광 시킨 광자를 전송한다. 그러면 수신자인 밥은 무작위로 선택된 편광 필터를 통하여 앨리스가 보낸 광자의 편광을 측정한다. 밥이 측정을 마친 후에는 앨리스와 밥은 공개 채널을 통하여 같은 편광 필터를 사용했는가의 유무를 파악하고, 같은 편광 필터를 사용한 절반 정도의 정보만 사용한다. 이 중 일부는 앨리스가 보낸 신호가 밥이 측정한 정보와 일치하는지 파악 및 비교한다. 만약 여기서 앨리스와 밥 사이에 도청자가 존재하지 않는다면 신호를 보낸 필터와 측정하는 데 사용된 필터가 같기 때문에 송신한 정보와 측정한 정보가 동일해야 한다.
+
암호학에서 앨리스는 사람 A, 밥은 사람 B와 같은 역할을 맡는다. 송수신 자 간의 통신에서 송신자를 앨리스, 수신자를 밥이라고 가정하자.  
 +
앨리스와 밥이 교환을 하면서 얻는 키를 시프트키라고 부른다. 이브가 존재할 때 시프트 키 중 일부를 이브가 알아낼 가능성이 있어서 양자키분배의 마지막 과정에서는 현대 암호 기술을 이용하여 키를 파악할 가능성을 제거한다. 이렇게 얻은 키를 비밀키라고 부른다. 양자키분배로 비밀키를 공유하게 된 앨리스와 밥은 최종적으로 [[일회용 비밀번호]]나 EDS, AES 등 현대 비밀키 암호를 사용해서 암호화된 메시지를 주고받는다. 여기서 참고로 일회용 비밀번호는 OTP 혹은 원 타임 패드라고도 불리는데, 비밀키를 중복해서 사용하지 않는 이상 보안을 완전하게 보장하는 특성이 있어 지속해서 새로운 비밀키를 공유해야 하는 양자키분배에 잘 어울린다.<ref>나랑 놀자, 〈[https://blog.naver.com/cyj5595/220871341079 양자암호:BB84 protocol]〉, 《네이버블로그》, 2016-11-26</ref>
 +
 
 +
앨리스와 밥 사이에 일회용 비밀번호를 생성할 때, 송신자인 앨리스는 무작위로 0bit와 1bit를 생성하여 광자의 편광이나 스핀 같은 양자 상태를 통해서 나타낸다. 광자의 편광을 예로 들자면, 빛을 +방향 또는 ×방향으로 편광 필터로 편광 시킨다. 이때, +방향의 편광 필터의 수직 방향 편광은 0, 수평 방향 편광은 1이라고 가정한다. 그리고 ×방향의 편광 필터의 오른쪽 위 방향 편광은 0, 오른쪽 아래 방향 편광은 1이라고 가정한다. 앨리스는 0bit나 1bit를 아무렇게 생성한 다음, 무작위로 +방향이나 ×방향으로 편광 시킨 광자를 전송한다. 그러면 수신자인 밥은 무작위로 선택된 편광 필터를 통하여 앨리스가 보낸 광자의 편광을 측정한다. 밥이 측정을 마친 후에는 앨리스와 밥은 공개 채널을 통하여 같은 편광 필터를 사용했는가의 유무를 파악하고, 같은 편광 필터를 사용한 절반 정도의 정보만 사용한다. 이 중 일부는 앨리스가 보낸 신호가 밥이 측정한 정보와 일치하는지 파악 및 비교한다. 만약 여기서 앨리스와 밥 사이에 도청자가 존재하지 않는다면 신호를 보낸 필터와 측정하는 데 사용된 필터가 같기 때문에 송신한 정보와 측정한 정보가 동일해야 한다.
  
 
:{|class=wikitable width=600 style="background-color:#ffffee"
 
:{|class=wikitable width=600 style="background-color:#ffffee"
|+<big>'''동아시아의 기업'''</big>
 
 
!align=center style="background-color:#ffddcc"|송신자가 생성한 비트
 
!align=center style="background-color:#ffddcc"|송신자가 생성한 비트
 
!align=center style="background-color:#ffffee"|1
 
!align=center style="background-color:#ffffee"|1
72번째 줄: 74번째 줄:
 
|}
 
|}
  
만약 앨리스와 밥의 송수신 과정에 외부 위협인 이브가 도청을 시도한다면, 양자 역학적인 정보는 측정하는 순간 정보가 뒤바낄 수 있다. 앨리스가 + 방향 편광 필터를 통하여 수직 방향으로 편광된 빛을 보낸다고 가정할 때, 이브가 그 사실을 모른 채로 ×방향 편광 필터를 사용해서 측정하면 광자가 사선 방향의 편광으로 바뀐다. 밥이 다시 여기서 +방향 편광 필터를 통해 측정하면 50% 확률로 빛을 수평 방향으로 측정하게 된다. 앨리스와 밥이 서로 공개 채널을 통해서 서로 같은 편광 필터를 사용한 정보 중에서 서로 같은게 어느 것인지 물어볼 때, 앨리스가 보냈던 신호와 밥이 측정한 정보가 같지 않다면 중간에 도청자가 있었음을 알게된다. 도청자를 감지한 후에는 처음부터 다시 송수신을 시작하면 되고, 이 과정에서 앨리스와 밥이 72개의 결괏값만 비교해도 도청자를 알아챌 확률이 0.999999999에 육박한다.<ref>김선우, 〈[https://www.ksakosmos.com/post/%EB%8F%84%EC%B2%AD%EC%9E%90%EB%A5%BC-%EC%9E%A1%EC%95%84%EB%82%BC-%EC%88%98-%EC%9E%88%EB%8A%94-%EC%95%94%ED%98%B8 도청자를 잡아낼 수 있는 암호]〉, 《한국과학영재학교온라인과학매거진》, 2019-10-30</ref>
+
만약 앨리스와 밥의 송수신 과정에 외부 위협인 이브가 도청을 시도한다면, 양자 역학적인 정보는 측정하는 순간 정보가 뒤바뀔 수 있다. 앨리스가 + 방향 편광 필터를 통하여 수직 방향으로 편광된 빛을 보낸다고 가정할 때, 이브가 그 사실을 모른 채로 ×방향 편광 필터를 사용해서 측정하면 광자가 사선 방향의 편광으로 바뀐다. 밥이 다시 여기서 +방향 편광 필터를 통해 측정하면 50% 확률로 빛을 수평 방향으로 측정하게 된다. 앨리스와 밥이 서로 공개 채널을 통해서 서로 같은 편광 필터를 사용한 정보 중에서 서로 같은 게 어느 것인지 물어볼 때, 앨리스가 보냈던 신호와 밥이 측정한 정보가 같지 않다면 중간에 도청자가 있었음을 알게 된다. 도청자를 감지한 후에는 처음부터 다시 송수신을 시작하면 되고, 이 과정에서 앨리스와 밥이 72개의 결괏값만 비교해도 도청자를 알아챌 확률이 0.999999999에 육박한다.<ref>김선우, 〈[https://www.ksakosmos.com/post/%EB%8F%84%EC%B2%AD%EC%9E%90%EB%A5%BC-%EC%9E%A1%EC%95%84%EB%82%BC-%EC%88%98-%EC%9E%88%EB%8A%94-%EC%95%94%ED%98%B8 도청자를 잡아낼 수 있는 암호]〉, 《한국과학영재학교온라인과학매거진》, 2019-10-30</ref>
 +
 
 +
== 적용 과정 ==
 +
한국정보통신기술협회에서 작성한 BB84 프로토콜 표준은 BB84 프로토콜을 정당한 두 사용자가 양자를 이용해서 비밀키를 안전하게 공유하는 것이라고 정의한다. 양자키분배 기술 중 이론적으로 안전성이 잘 증명되어 있는 프로토콜이자, 가장 많이 사용되고 있는 프로토콜이다. 현재는 물리적으로는 단일광자 구현이 불가능하지만, 디코이 기법과 함께 사용되며 이 또한 안전성이 잘 증명되어 있기 때문에 BB84 프로토콜 표준에는 디코이 기법을 적용한 BB84 프로토콜에 대한 내용을 제시한다.
 +
BB84 프로토콜은 양자키분배 절차 중 초기 키 생성 단계 및 걸러진 키 생성 단계와 직접 연관되어 있으며, 비밀키를 생성하는 과정과 함께 안전성이 증명되었다.
 +
 
 +
=== 초기 키 생성 ===
 +
시그널과 디코이를 생성하여 각각에 대응되는 양자 상태를 생성하고 전송하고 수신하고 측정하는 단계이다. 생성단계는 다음과 같다.
 +
# 송수신 자는 시그널과 디코이 선택, 기저 선택과 부호화 등에 사용할 난수를 생성한다.
 +
# 송신자가 키 추출에 관여하는 시그널과 외부 공격에 대비하는 디코이를 무작위로 선택한다.
 +
# 선택한 시그널과 디코이에 대해 생성 기저와 부호화할 값을 각각 무작위로 선택하고 네 가지 양자 상태 중 하나를 생성해서 양자 채널을 통해 수신자에게 전송한다.
 +
# 수신자는 두 측정 기저 중 하나를 무작위로 선택하여 신호를 측정한다.
 +
# 송신자는 생성한 양자 상태를, 수신자는 측정한 양자 상태의 결과를 각각의 초기 키로 저장한다.
 +
 
 +
우선 송수신 자는 시그널과 디코이 선택, 기저와 전송 값 선택 등에 사용할 난수를 생성해야 한다. 특히 시그널과 디코이는 송신자를 제외한 그 누구도 구별할 수 없어야 하므로 난수를 사용하여 무작위로 선택한다. 송신자의 생성 기저와 전송 값, 수신자의 측정 기저 또한 모두 난수를 적용하여 무작위로 선택한다. 난수 생성기는 의사 난수 생성기보다 양자난수생성기를 사용할 것을 권고하고 있다. 그러나 양자난수생성기의 물리적 결함 등 완벽한 난수를 생성하기가 어려운 경우에는 의사 난수 생성기를 사용해도 된다. 난수를 생성한 후에는 인증된 송신자가 키 추출에 관여하는 시그널과 외부 공격에 대비하는 디코이를 무작위로 선택한다. 이때 시그널과 디코이는 송신자를 제외해야 하며, 그 누구도 구별할 수 없어야 한다. 만약 구별할 수 있다면 다 광자 환경에서 광자 수 분리 공격을 진행한다. 그다음 선택한 시그널이나 디코이에 대해 두 기저 <math>B_{z}</math>와 <math>B_{x}</math>와 값 0, 1 중에서 각각 하나씩 무작위로 선택한다. 선택한 기저의 무작위로 선택한 값을 부호화해서 네 개의 양자 상태 중 하나를 준비하고, 이를 양자 채널을 통해서 수신자에게 전달한다. 네 개의 양자 상태는 서로 직교하지 않는 관계인 <math>B_{z}</math>와 <math>B_{x}</math>를 이용하여 나타낼 수 있고, 각 기저 내의 두 상태는 서로 직교한 상태이다. 예를 들어 편광 부호화 방법을 이용하는 경우에는 네 가지 양자 상태는 <math>B_{z}</math>와 <math>B_{x}</math>에 대해 각각 <math>\left\{|0>-|1>\right\}</math> 관계이다. 위상 부호화 방식을 사용하는 경우에는 네 가지 양자 상태는 각 기저에 대해 <math>\left\{0, \pi\right\}</math>와 <math>\left\{\frac{1}{2}\pi , \frac{3}{2}\pi\right\}</math>의 상태가 된다. 그리고 수신자는 송신자가 전송한 양자 상태에 대해 측정 기저 <math>\left\{B_{z}, B_{x}\right\}</math> 중 아무거나 하나를 선택하고 측정한다. 마지막으로 송신자는 생성한 양자 상태를, 수신자는 양자 상태의 결과를 각자의 초기 키로 저장한다.
 +
 
 +
* '''주의할 점''' : 초기 키 생성 단계에서 사용되는 정보의 무작위성이 보장되기 위해서 송신자는 시그널과 디코이의 구분, 양자 상태의 기저와 부호화를 각각 무작위로 선택해야만 한다. 만일 이러한 무작위성이 보장되지 못한다면 도청자에게 키에 대한 정보가 유출될 가능성이 있다. 무작위로 선택된 정보는 걸러진 키 생성 단계 전까지 공개하지 않고 안전하게 보관한다. 초기 키를 생성할 때 송신자의 양자 상태 정보와 송수신 간의 기저 정보가 누출된다면, 도청자가 이를 활용하여 키 정보를 알아낼 수 있다. 또, BB84 프로토콜에서는 디코이와 시그널의 평균 광자 수가 서로 다르게 구성되어야 한다. 그러나 송신자를 제외한 시그널과 디코이는 그 누구도 구별할 수 없어야 한다. 만약 평균광자 수를 다르게 구성하지 않았다면, 디코이 기법의 목적을 상실하게 된다. 그리고 초기 키 생성을 완료하기 전에 송신자를 제외한 누군가가 시그널과 디코이를 구별할 수있다면 시그널 정보에 대한 PNS 공격을 할 수 있다.<ref name='BB84 프로토콜 표준'></ref>
 +
 
 +
=== 걸러진 키 생성 ===
 +
송수신 자가 각자 저장한 초기 키를 공개 채널을 통하여 가공하고 걸러진 키로 만드는 단계이다. 걸러진 키를 생성하는데 필요한 핵심요소는 초기 키, 난수, 기저 정보, 디코이 정보이다. 생성단계는 다음과 같다.
 +
# 수신자는 공개 채널을 통해서 양자 상태를 측정하는 데 사용한 기저를 공개한다.
 +
# 송신자는 공개 채널을 통해서 양자 상태 생성에 사용한 기저를 공개한다.
 +
# 송수신 자는 서로 교환한 기저 정보를 비교하고 기저가 동일한 결과만 저장한다.
 +
# 송신자는 사용한 디코이 정보를 수신자에게 전송한다.
 +
# 송수신 자는 기저가 동일한 결과 중에서 일부를 무작위로 선택한 다음, 그 위치와 값을 교환한다.
 +
# 도청 여부를 파악하기 위해서 양자비트 오류율을 확인한다.
 +
# 송수신 자는 기저가 동일한 결과 등 주에서 교환한 부분을 제외한 나머지를 각각 걸러진 키로 저장한다.
 +
송수신 자는 공개 채널을 통해 각자 양자 상태 생성 및 측정에 사용했던 기저를 공개하고 비교한 다음 기저가 동일한 결과만을 저장한다. 이때 송신자가 생성한 양자 상태와 수신자가 측정한 결과는 공개되지 않는다. 송신자와 수신자의 기저가 완전히 무작위로 선택되었다면, 수신자가 측정한 양자 상태 중 확률적으로 절반 정도가 송신자가 사용한 기저와 동일하다. 동일한 기저를 사용한 결과 중에서 송신자는 사용한 디코이 정보를 수신자에게 전송하는데, 이 정보를 활용해서 수신자는 동일한 기저 중 시그널과 디코이를 구별할 수 있다.
 +
 
 +
양자 채널의 안전성을 확인하기 위해 수신자는 기저가 동일한 결과 중에서 일부를 무작위로 선택하고 그 위치를 송신자에게 알려주며, 송신자는 해당 부분들에 대해 준비한 양자 상태들을 수신자에게 알려준다. 송수신 자는 동일한 기저를 사용했기 때문에 송신자가 공개한 양자 상태는 수신자의 측정 결과와 동일해야 하는데, 실제로 구현할 때는 중간 공격자의 개입, 구성 장치들의 불완전함, 환경상의 오류 등으로 결과가 불일치하기도 한다. 모든 불일치한 결과는 도청자의 공격으로 간주한다. 수신자는 이 단계에서 디코이를 활용해서 양자 채널의 안전성을 판단하는 동시에 양자비트 오류율을 추정한다. BB84 프로토콜을 이용하여 양자키분배를 할 때, 구현 환경이나 광학적 구현 모델에 따라 안전성이 보장 가능한 양자비트 오류율의 상한이 정해진다. 또, 양자비트 오류율이 정의된 상한 이하고 측정되어 양자 채널이 안전하다고 생각되면 다음 단계로 진행하고, 그게 아니라면 저장된 초기 키를 모두 버리고 다시 초기 키 생성 단계로 돌아간다.
 +
 
 +
송신자와 수신자는 기저가 동일한 결과 양자 채널의 안전성을 검증하기 위해 쓰인 부분들은 제외하고 나머지는 걸러진 키로 저장한다.
 +
 
 +
* '''주의할 점''' : 부호화 정보와 같은 기저 정보 외의 다른 정보가 기저 교환 과정에서 공개된다면 도청자가 키 정보를 알아낼 수 있기 때문에, 송수신 간의 기저를 교환할 때는 기저 정보만 공개한다. 하지만 양자비트 오류율 확인 과정이나 양자비트 오류율 실측 과정에서는 부호화 정보의 일부가 공개된다. 걸러진 키를 생성할 때 공개되는 정보는 변조할 수 없어야 하기 때문에, 다양한 무결성 보장 기법을 이용하여 정보를 변조할 가능성을 확인한다. 공개 채널로 송수신되는 기저와 디코이 정보의 무결성을 보장하기 위해서 [[전자 서명]](digital signature), 암호 검사합(checksum), 오류 감지 코드(error detection code), 메시지 인증 코드(MAC) 기법 등이 사용될 수도 있다. 또, 걸러진 키를 생성할 때는 누군가 도청을 하지는 않는지 파악해야 한다. 따라서 송수신 자는 양자비트 오류율을 확인할 때 동일한 기저를 가지는 결과 중에서 일부 부호화 정보를 무작위로 공개하여 양자비트 오류율을 실측한다. 그리고 양자 채널에서 실측된 양자비트 오류율이 이론적으로 안전성이 보장되는 상한 이하인 경우에만 다음 절차를 진행한다. 그렇지 않은 경우 도청자의 공격으로 간주하고 초기 키 생성 단계로 돌아가서 양자 채널을 다시 설정한다.<ref name='BB84 프로토콜 표준'></ref>
 +
 
 +
=== 비밀키 생성 ===
 +
걸러진 키에 후처리 과정인 오류 정정과 비밀증폭 절차를 적용해서 최종 비밀키를 생성하는 단계이다. 비밀키 생성에 필요한 핵심요소는 걸러진 키, 오류 정정 기법, 비밀증폭 기법, 인증키이다. 비밀키 생성 단계는 다음과 같이 이뤄진다.
 +
# 송수신 자는 걸러진 키를 일치시키기 위해 비트 오류정정 기법을 사용하여 오류를 정정한다.
 +
# 송수신 자는 오류정보 및 오류정정 과정에서 유출된 정보를 비밀증폭 과정으로 제거한다.
 +
# 송수신 자는 위의 모든 과정 수행 결과를 비밀키로 저장한다.
 +
송수신 자는 공개 채널을 통해 공유된 걸러진 키를 일치시키기 위해 다양한 비트 오류 정정 기법을 사용한다. 여기는 CASCADE 프로토콜, WINNOW 프로토콜, LDPC 등을 예로 들 수 있는데, 이러한 정정 기법을 사용하여 이전 단계에서 확인된 양자비트 오류율만큼 오류를 정정한다. 이때 수행되는 송수신 간의 통신으로 걸러진 키에 대한 일부 정보가 유출되는데, 유출된 걸러진 키 정보로 유추할 수 있는 비밀키 정보를 제거하기 위해서 비밀증폭 단계를 수행한다. 비밀증폭의 가장 일반적인 방법은 한 방향 특성을 가진 유니버설 해시함수를 이용하는 것이다. 이때 사용자가 미리 공유한 인증키로 유니버설 해시 함수를 구성한다면, 서로의 신원을 확인하는 인증 과정을 진행할 수 있다. 송수신 간의 오류 정정과 비밀 증폭이 끝난 후에는 생성된 비밀키를 저장한다.
 +
 
 +
* '''주의할 점''' : 오류정정 기법에 필요한 정보들은 변조할 수 없어야 하므로 다양한 무결성 보장 기법을 적용해서 변조 가능성을 검사한다. 공개 채널로 송수신되는 오류 정정 정보의 무결성을 보장하기 위해서 전자 서명, 암호 검사합, 오류 감지 코드, 메시지 인증 코드 기법 등이 사용될 수 있다. 오류정정 과정에서 공개되는 정보는 반드시 완전히 제거해야 하며,  공개된 내용을 통해 혹시라도 비밀키 정보가 유출될 가능성이 있기 때문에 이를 보완하기 위한 비밀 증폭을 과정을 진행한다. 이때 양자키분배 안전성을 보장할 수 있는 비밀증폭 기법을 사용한다.<ref name='BB84 프로토콜 표준'></ref>
 +
 
 +
== 적용 ==
 +
=== 양자키분배 ===
 +
양자키분배 기술은 양자를 이용하여 통신상의 비밀키를 나누는 방식으로, 양자암호통신 기술이라고도 불린다. 양자키분배에서는 기존 채널을 통해 암호화 데이터를 전송하고 양자 채널을 통해서 비밀키를 공유한다. 데이터 암호화 자체는 기존의 AES 같은 암호화 알고리즘을 사용하지만, 양자 채널을 통해서 비밀키를 공유한다. 통신 도중에 도청자가 난입하면 송수신하던 정보가 왜곡되기 때문에 송수신 자가 바로 감지할 수 있다는 특징이자 장점을 갖고 있다. 따라서 도청자는 송수신 간에서 절대 원하는 정보를 얻을 수 없기 때문에 절대적으로 안전하게 보안을 지킬 수 있는 대표적인 암호체계이다. 양자키분배를 구현하기 위해서는 단일광자광원, 광자 검출기, 난수 발생기, 양자 중계기, 프로토콜 등이 필요한데, BB84 프로토콜은 그 중에서도 양자 암호 프로토콜에 속한다. 안정성과 구현 가능성 면에서 현재까지 나온 프로토콜 중 가장 강력한 프로토콜로 인정받고 있다.<ref> 엘지씨엔에스 보안컨설팅팀, 〈[https://blog.lgcns.com/2020 양자 컴퓨팅 시대, 양자 암호 기술과 보안]〉, 《엘지씨엔에스》, 2019-06-12</ref> 국내의 대표적인 양자키분배 기술 보유 기업은 에스케이텔레콤㈜와 ㈜케이티가 있다. 특히 에스케이텔레콤㈜은 2011년에 양자기술연구소를 설립하여 양자암호통신 기술을 개발하다가, 2016년, 스위스 암호통신 기업 아이디퀀티크를 인수하여 양자난수생성기 기술을 보유하게 되었다.
 +
양자키분배의 후처리 과정으로는 정보보정(information reconciliation), 비밀성 증폭(privacy amplification), 인증(authentication)이 있다. 도청자의 공격이나 양자 채널과 양자 검출 장치의 불완전성으로 인하여 송수신 자 사이의 암호키 불일치 문제가 일어나는 것을 제거하는 과정이다. 송수신 간의 동일한 키 정보를 보장하는 동시에 도청자가 노출된 정보에서 키에 대한 정보를 절대 유추하지 못하도록 노출된 정보와 키 정보 간의 상관관계를 최대로 낮춘다.
 +
취약점은 광자 분리 공격(PNS Attack), 맨 인 더-미들-어택(MITM Attack), 서비스 거부 공격(DoS)가 대표적이다. 광자 분리 공격은 단일광자생성기의 불완전성을 이용해서 파훼하는 방법을 의미한다. 일반적으로 신호를 생성하면 광자가 하나만 생성되지 않고 하나이상의 광자를 동시에 생성하여 전송한다. 통신회선 중간에 반투명 거울을 설치해서 광신호의 일부를 분리하고 측정하여, 어떤 신호가 전송되는지 알아내는 공격 방법이다. 맨 인 더-미들-어택은 송수신 중간에 공격자가 중계소처럼 행세해서 송수신 자를 교란하는 방법이다. 송신자와 공격자 사이에 다른 키를 공유하고, 공격자와 수신자 간의 다른 키를 공유하여 중간에서 오가는 신호를 도청한다. 서비스 거부 공격은 통신 선상에 과부하를 줘서 정상적으로 통신하지 못하거나 하기 힘들게 만드는 방법이다. 제일 대표적인 예시로는 케이블을 물리적으로 절단하는 행위이다. 이 외에도 퍼블릭 채널을 대상으로 하는 고전적인 서비스 거부 공격 등을 할 수 있다.
  
 
== 용어 ==
 
== 용어 ==
 
* '''양자키분배 프로토콜''' : 양자키분배를 하기 위한 통신 규약들이다.  
 
* '''양자키분배 프로토콜''' : 양자키분배를 하기 위한 통신 규약들이다.  
* '''raw키''' : 양자 채널을 통한 양자상태의 송수신 결과인 키 수열이다.
+
* '''초기 키''' : 양자 채널을 통한 양자 상태의 송수신 결과인 키 수열이다.
 
* '''걸러진 키''' : 송수신 자 간에서 동일한 기저를 사용한 키 수열이다.
 
* '''걸러진 키''' : 송수신 자 간에서 동일한 기저를 사용한 키 수열이다.
 
* '''광자''' : 빛의 입자인 양자로 빛 에너지의 최소 단위를 의미한다.
 
* '''광자''' : 빛의 입자인 양자로 빛 에너지의 최소 단위를 의미한다.
* '''광자수 분리 공격''' : 단일 광자 상태를 가정한 양자키분배 장비를 실제로 구현할 때는 기술상의 한계로 인하여 높은 확률로 다중 광자가 전송된다. 따라서 공격자가 다중 광자 중 일부 광자를 가로채어 키 정보를 알아내는데, 이 공격을 광자수 분리 공격이라고 부른다.
+
* '''광자 수 분리 공격''' : 단일 광자 상태를 가정한 양자키분배 장비를 실제로 구현할 때는 기술상의 한계로 인하여 높은 확률로 다중 광자가 전송된다. 따라서 공격자가 다중 광자 중 일부 광자를 가로채어 키 정보를 알아내는데, 이 공격을 광자 수 분리 공격이라고 부른다.
* '''공개채널''' : 도청자를 포함하여 외부에 완전히 공개된 채널로, 양자 정보가 전송되는 채널이다. 공개채널로 전송되는 정보는 누구나 확인할 수 있지만, 변조되지 않았다고 가정하여 일반적으로는 양자키분배에서 사용되는 공개채너은 고전채널이라고 칭하기도 한다.
+
* '''공개 채널''' : 도청자를 포함하여 외부에 완전히 공개된 채널로, 양자 정보가 전송되는 채널이다. 공개 채널로 전송되는 정보는 누구나 확인할 수 있지만, 변조되지 않았다고 가정하여 일반적으로는 양자키분배에서 사용되는 공개 채널은 고전 채널이라고 칭하기도 한다.
* '''기저''' : 양자상태를 구분짓는 기준 좌표이다.
+
* '''기저''' : 양자 상태를 구분 짓는 기준 좌표이다.
* '''디코이''' : PNS 공격 감지를 위하여 시그널과 다른 평균 광자 수를 가지도록 조작되서 섞인 양자의 상태를 의미한다.
+
* '''디코이''' : PNS 공격 감지를 위하여 시그널과 다른 평균 광자 수를 가지도록 조작돼서 섞인 양자의 상태를 의미한다.
 
* '''비밀증폭''' : 오류를 정정할 때 공개된 정보와 이로 인해 비밀키의 유추할 수 있는 정보를 제거하는 과정이다.  
 
* '''비밀증폭''' : 오류를 정정할 때 공개된 정보와 이로 인해 비밀키의 유추할 수 있는 정보를 제거하는 과정이다.  
 
* '''비밀키''' : 양자키분배를 통해서 생성된 최종 키이자 최종 결과물이다.
 
* '''비밀키''' : 양자키분배를 통해서 생성된 최종 키이자 최종 결과물이다.
 
* '''시그널''' : 일반적으로 신호를 뜻하는 말이지만, 양자키분배에서는 키 정보를 전달하는 데 직접적으로 관여한다.  
 
* '''시그널''' : 일반적으로 신호를 뜻하는 말이지만, 양자키분배에서는 키 정보를 전달하는 데 직접적으로 관여한다.  
* '''양자비트오류율''' : 걸러진 키에서의 오류의 정도를 의미한다.
+
* '''양자비트 오류율''' : 걸러진 키에서의 오류의 정도를 의미한다.
 
* '''양자채널''' : 양자의 물리적 상태를 전송하는 채널
 
* '''양자채널''' : 양자의 물리적 상태를 전송하는 채널
 
* '''오류정정''' : 걸러진 키의 오류를 수정하는 과정
 
* '''오류정정''' : 걸러진 키의 오류를 수정하는 과정
 
* '''위상 부호화''' : 광자의 위상차를 이용하여 부호화한다.
 
* '''위상 부호화''' : 광자의 위상차를 이용하여 부호화한다.
* '''유니버셜 해시함수''' : 한방향 함수의 일종으로 볼 수 있다. 충돌이 일어날 가능성이 최대 <math>1/2^M</math>이 되는 함수를 의미한다. 여기서 M은 입력 메시지의 전체 길이이다.
+
* '''유니버설 해시함수''' : 한 방향 함수의 일종으로 볼 수 있다. 충돌이 일어날 가능성이 최대 <math>1/2^M</math>이 되는 함수를 의미한다. 여기서 M은 입력 메시지의 전체 길이이다.
 
* '''인증키''' : 사용자나 장비 인증에 사용되는 키로, 사전에 나누어 공유되거나 비밀키 중에서 일부를 인증키로 사용한다.  
 
* '''인증키''' : 사용자나 장비 인증에 사용되는 키로, 사전에 나누어 공유되거나 비밀키 중에서 일부를 인증키로 사용한다.  
 
* '''편광 부호화''' : 광자의 방향성을 이용해서 부호화한다.
 
* '''편광 부호화''' : 광자의 방향성을 이용해서 부호화한다.
101번째 줄: 151번째 줄:
 
* 김나영 외 7인, 〈[http://www.tta.or.kr/data/ttas_view.jsp?rn=1&by=asc&order=kor_standard&totalSu=17417&pk_num=TTAK.KO-12.0329-Part2&nowSu=17411 양자 키 분배 - 제2부: BB84 프로토콜]〉, 《한국정보통신기술협회》, 2018-12-19
 
* 김나영 외 7인, 〈[http://www.tta.or.kr/data/ttas_view.jsp?rn=1&by=asc&order=kor_standard&totalSu=17417&pk_num=TTAK.KO-12.0329-Part2&nowSu=17411 양자 키 분배 - 제2부: BB84 프로토콜]〉, 《한국정보통신기술협회》, 2018-12-19
 
* 나랑 놀자, 〈[https://blog.naver.com/cyj5595/220871341079 양자암호:BB84 protocol]〉, 《네이버블로그》, 2016-11-26
 
* 나랑 놀자, 〈[https://blog.naver.com/cyj5595/220871341079 양자암호:BB84 protocol]〉, 《네이버블로그》, 2016-11-26
 +
* 엘지씨엔에스 보안컨설팅팀, 〈[https://blog.lgcns.com/2020 양자 컴퓨팅 시대, 양자 암호 기술과 보안]〉, 《엘지씨엔에스》, 2019-06-12
 
* 김선우, 〈[https://www.ksakosmos.com/post/%EB%8F%84%EC%B2%AD%EC%9E%90%EB%A5%BC-%EC%9E%A1%EC%95%84%EB%82%BC-%EC%88%98-%EC%9E%88%EB%8A%94-%EC%95%94%ED%98%B8 도청자를 잡아낼 수 있는 암호]〉, 《한국과학영재학교온라인과학매거진》, 2019-10-30
 
* 김선우, 〈[https://www.ksakosmos.com/post/%EB%8F%84%EC%B2%AD%EC%9E%90%EB%A5%BC-%EC%9E%A1%EC%95%84%EB%82%BC-%EC%88%98-%EC%9E%88%EB%8A%94-%EC%95%94%ED%98%B8 도청자를 잡아낼 수 있는 암호]〉, 《한국과학영재학교온라인과학매거진》, 2019-10-30
 
* 나영인 기자, 〈[http://www.snunews.com/news/articleView.html?idxno=10804 이봐, 우린 도청 당하고 있어!]〉, 《서울대학교대학신문》, 2011-09-04  
 
* 나영인 기자, 〈[http://www.snunews.com/news/articleView.html?idxno=10804 이봐, 우린 도청 당하고 있어!]〉, 《서울대학교대학신문》, 2011-09-04  
109번째 줄: 160번째 줄:
 
* [[양자암호통신]]
 
* [[양자암호통신]]
 
* [[양자키분배]]
 
* [[양자키분배]]
 +
* [[E91 프로토콜]]
 +
* [[B92 프로토콜]]
 
* [[양자]]
 
* [[양자]]
  
{{암호 알고리즘|토막글}}
+
{{암호 알고리즘|검토 필요}}

2023년 11월 5일 (일) 18:01 기준 최신판

BB84 프로토콜(BB84 protocol)은 찰스 베넷(Charles Bennett)과 길레스 브래서드(Gilles Brassard)가 1984년에 개발한 양자키분배 체계이다. 최초의 양자암호 프로토콜이기도 하다.

개요[편집]

한국정보통신기술협회에서 작성한 BB84 프로토콜 표준은 BB84 프로토콜을 정당한 두 사용자가 양자를 이용해서 비밀키를 안전하게 공유하는 것이라고 정의한다. 양자키분배 기술 중 이론적으로 안전성이 잘 증명되어 있는 프로토콜이자, 가장 많이 사용되고 있는 프로토콜이다. BB84 프로토콜 외에도 B92 프로토콜, 6-state 프로토콜, Ekert91 프로토콜, BBM92 프로토콜 등이 양자키분배에 사용된다. 여기서 BB84 프로토콜과 다른 몇몇 기법들만 이론상 무 조건부 안전성이 증명되었다. 현재는 물리적으로는 단일광자 구현이 불가능하지만, 디코이 기법과 함께 사용되며 이 또한 안전성이 잘 증명되어 있기 때문에, 한국정보통신기술협회의 정보통신단체표준에는 디코이 기법을 적용한 BB84 프로토콜을 대상으로 어떻게 양자키분배를 해야 할지에 대해 서술되어 있다.[1]

BB84 프로토콜은 찰스 베넷과 길레스 브래서드가 양자암호에 대한 논문을 발표하면서 같이 제안된 개념이다.[2] BB84 프로토콜이라는 명칭은 최초 고안자의 이름에서 유래된 이름이다. 특히, 양자암호기술의 창시자인 IBM의 찰스 베넷 박사는 2007년에 고등과학원의 초청으로 서울과학고 학생들을 대상으로 특강을 진행했다. 2011년에는 부산 부경대에서 열린 아시아 양자 정보 국제학술대회(AQIS)에도 참가했다.

원리[편집]

암호학에서 앨리스는 사람 A, 밥은 사람 B와 같은 역할을 맡는다. 송수신 자 간의 통신에서 송신자를 앨리스, 수신자를 밥이라고 가정하자. 앨리스와 밥이 교환을 하면서 얻는 키를 시프트키라고 부른다. 이브가 존재할 때 시프트 키 중 일부를 이브가 알아낼 가능성이 있어서 양자키분배의 마지막 과정에서는 현대 암호 기술을 이용하여 키를 파악할 가능성을 제거한다. 이렇게 얻은 키를 비밀키라고 부른다. 양자키분배로 비밀키를 공유하게 된 앨리스와 밥은 최종적으로 일회용 비밀번호나 EDS, AES 등 현대 비밀키 암호를 사용해서 암호화된 메시지를 주고받는다. 여기서 참고로 일회용 비밀번호는 OTP 혹은 원 타임 패드라고도 불리는데, 비밀키를 중복해서 사용하지 않는 이상 보안을 완전하게 보장하는 특성이 있어 지속해서 새로운 비밀키를 공유해야 하는 양자키분배에 잘 어울린다.[3]

앨리스와 밥 사이에 일회용 비밀번호를 생성할 때, 송신자인 앨리스는 무작위로 0bit와 1bit를 생성하여 광자의 편광이나 스핀 같은 양자 상태를 통해서 나타낸다. 광자의 편광을 예로 들자면, 빛을 +방향 또는 ×방향으로 편광 필터로 편광 시킨다. 이때, +방향의 편광 필터의 수직 방향 편광은 0, 수평 방향 편광은 1이라고 가정한다. 그리고 ×방향의 편광 필터의 오른쪽 위 방향 편광은 0, 오른쪽 아래 방향 편광은 1이라고 가정한다. 앨리스는 0bit나 1bit를 아무렇게 생성한 다음, 무작위로 +방향이나 ×방향으로 편광 시킨 광자를 전송한다. 그러면 수신자인 밥은 무작위로 선택된 편광 필터를 통하여 앨리스가 보낸 광자의 편광을 측정한다. 밥이 측정을 마친 후에는 앨리스와 밥은 공개 채널을 통하여 같은 편광 필터를 사용했는가의 유무를 파악하고, 같은 편광 필터를 사용한 절반 정도의 정보만 사용한다. 이 중 일부는 앨리스가 보낸 신호가 밥이 측정한 정보와 일치하는지 파악 및 비교한다. 만약 여기서 앨리스와 밥 사이에 도청자가 존재하지 않는다면 신호를 보낸 필터와 측정하는 데 사용된 필터가 같기 때문에 송신한 정보와 측정한 정보가 동일해야 한다.

송신자가 생성한 비트 1 1 0 0 0 1 0 1
송신자가 전송하는 편광 필터 × + + + × + × +
송신자가 선택한 전송 편광 신호
수신자가 선택한 필터 × × × + × × × +
수신자가 측정한 편광 상태
최종적으로 생성되는 비밀키 1 0 0 0 1

만약 앨리스와 밥의 송수신 과정에 외부 위협인 이브가 도청을 시도한다면, 양자 역학적인 정보는 측정하는 순간 정보가 뒤바뀔 수 있다. 앨리스가 + 방향 편광 필터를 통하여 수직 방향으로 편광된 빛을 보낸다고 가정할 때, 이브가 그 사실을 모른 채로 ×방향 편광 필터를 사용해서 측정하면 광자가 사선 방향의 편광으로 바뀐다. 밥이 다시 여기서 +방향 편광 필터를 통해 측정하면 50% 확률로 빛을 수평 방향으로 측정하게 된다. 앨리스와 밥이 서로 공개 채널을 통해서 서로 같은 편광 필터를 사용한 정보 중에서 서로 같은 게 어느 것인지 물어볼 때, 앨리스가 보냈던 신호와 밥이 측정한 정보가 같지 않다면 중간에 도청자가 있었음을 알게 된다. 도청자를 감지한 후에는 처음부터 다시 송수신을 시작하면 되고, 이 과정에서 앨리스와 밥이 72개의 결괏값만 비교해도 도청자를 알아챌 확률이 0.999999999에 육박한다.[4]

적용 과정[편집]

한국정보통신기술협회에서 작성한 BB84 프로토콜 표준은 BB84 프로토콜을 정당한 두 사용자가 양자를 이용해서 비밀키를 안전하게 공유하는 것이라고 정의한다. 양자키분배 기술 중 이론적으로 안전성이 잘 증명되어 있는 프로토콜이자, 가장 많이 사용되고 있는 프로토콜이다. 현재는 물리적으로는 단일광자 구현이 불가능하지만, 디코이 기법과 함께 사용되며 이 또한 안전성이 잘 증명되어 있기 때문에 BB84 프로토콜 표준에는 디코이 기법을 적용한 BB84 프로토콜에 대한 내용을 제시한다. BB84 프로토콜은 양자키분배 절차 중 초기 키 생성 단계 및 걸러진 키 생성 단계와 직접 연관되어 있으며, 비밀키를 생성하는 과정과 함께 안전성이 증명되었다.

초기 키 생성[편집]

시그널과 디코이를 생성하여 각각에 대응되는 양자 상태를 생성하고 전송하고 수신하고 측정하는 단계이다. 생성단계는 다음과 같다.

  1. 송수신 자는 시그널과 디코이 선택, 기저 선택과 부호화 등에 사용할 난수를 생성한다.
  2. 송신자가 키 추출에 관여하는 시그널과 외부 공격에 대비하는 디코이를 무작위로 선택한다.
  3. 선택한 시그널과 디코이에 대해 생성 기저와 부호화할 값을 각각 무작위로 선택하고 네 가지 양자 상태 중 하나를 생성해서 양자 채널을 통해 수신자에게 전송한다.
  4. 수신자는 두 측정 기저 중 하나를 무작위로 선택하여 신호를 측정한다.
  5. 송신자는 생성한 양자 상태를, 수신자는 측정한 양자 상태의 결과를 각각의 초기 키로 저장한다.

우선 송수신 자는 시그널과 디코이 선택, 기저와 전송 값 선택 등에 사용할 난수를 생성해야 한다. 특히 시그널과 디코이는 송신자를 제외한 그 누구도 구별할 수 없어야 하므로 난수를 사용하여 무작위로 선택한다. 송신자의 생성 기저와 전송 값, 수신자의 측정 기저 또한 모두 난수를 적용하여 무작위로 선택한다. 난수 생성기는 의사 난수 생성기보다 양자난수생성기를 사용할 것을 권고하고 있다. 그러나 양자난수생성기의 물리적 결함 등 완벽한 난수를 생성하기가 어려운 경우에는 의사 난수 생성기를 사용해도 된다. 난수를 생성한 후에는 인증된 송신자가 키 추출에 관여하는 시그널과 외부 공격에 대비하는 디코이를 무작위로 선택한다. 이때 시그널과 디코이는 송신자를 제외해야 하며, 그 누구도 구별할 수 없어야 한다. 만약 구별할 수 있다면 다 광자 환경에서 광자 수 분리 공격을 진행한다. 그다음 선택한 시그널이나 디코이에 대해 두 기저 와 값 0, 1 중에서 각각 하나씩 무작위로 선택한다. 선택한 기저의 무작위로 선택한 값을 부호화해서 네 개의 양자 상태 중 하나를 준비하고, 이를 양자 채널을 통해서 수신자에게 전달한다. 네 개의 양자 상태는 서로 직교하지 않는 관계인 를 이용하여 나타낼 수 있고, 각 기저 내의 두 상태는 서로 직교한 상태이다. 예를 들어 편광 부호화 방법을 이용하는 경우에는 네 가지 양자 상태는 에 대해 각각 관계이다. 위상 부호화 방식을 사용하는 경우에는 네 가지 양자 상태는 각 기저에 대해 의 상태가 된다. 그리고 수신자는 송신자가 전송한 양자 상태에 대해 측정 기저 중 아무거나 하나를 선택하고 측정한다. 마지막으로 송신자는 생성한 양자 상태를, 수신자는 양자 상태의 결과를 각자의 초기 키로 저장한다.

  • 주의할 점 : 초기 키 생성 단계에서 사용되는 정보의 무작위성이 보장되기 위해서 송신자는 시그널과 디코이의 구분, 양자 상태의 기저와 부호화를 각각 무작위로 선택해야만 한다. 만일 이러한 무작위성이 보장되지 못한다면 도청자에게 키에 대한 정보가 유출될 가능성이 있다. 무작위로 선택된 정보는 걸러진 키 생성 단계 전까지 공개하지 않고 안전하게 보관한다. 초기 키를 생성할 때 송신자의 양자 상태 정보와 송수신 간의 기저 정보가 누출된다면, 도청자가 이를 활용하여 키 정보를 알아낼 수 있다. 또, BB84 프로토콜에서는 디코이와 시그널의 평균 광자 수가 서로 다르게 구성되어야 한다. 그러나 송신자를 제외한 시그널과 디코이는 그 누구도 구별할 수 없어야 한다. 만약 평균광자 수를 다르게 구성하지 않았다면, 디코이 기법의 목적을 상실하게 된다. 그리고 초기 키 생성을 완료하기 전에 송신자를 제외한 누군가가 시그널과 디코이를 구별할 수있다면 시그널 정보에 대한 PNS 공격을 할 수 있다.[1]

걸러진 키 생성[편집]

송수신 자가 각자 저장한 초기 키를 공개 채널을 통하여 가공하고 걸러진 키로 만드는 단계이다. 걸러진 키를 생성하는데 필요한 핵심요소는 초기 키, 난수, 기저 정보, 디코이 정보이다. 생성단계는 다음과 같다.

  1. 수신자는 공개 채널을 통해서 양자 상태를 측정하는 데 사용한 기저를 공개한다.
  2. 송신자는 공개 채널을 통해서 양자 상태 생성에 사용한 기저를 공개한다.
  3. 송수신 자는 서로 교환한 기저 정보를 비교하고 기저가 동일한 결과만 저장한다.
  4. 송신자는 사용한 디코이 정보를 수신자에게 전송한다.
  5. 송수신 자는 기저가 동일한 결과 중에서 일부를 무작위로 선택한 다음, 그 위치와 값을 교환한다.
  6. 도청 여부를 파악하기 위해서 양자비트 오류율을 확인한다.
  7. 송수신 자는 기저가 동일한 결과 등 주에서 교환한 부분을 제외한 나머지를 각각 걸러진 키로 저장한다.

송수신 자는 공개 채널을 통해 각자 양자 상태 생성 및 측정에 사용했던 기저를 공개하고 비교한 다음 기저가 동일한 결과만을 저장한다. 이때 송신자가 생성한 양자 상태와 수신자가 측정한 결과는 공개되지 않는다. 송신자와 수신자의 기저가 완전히 무작위로 선택되었다면, 수신자가 측정한 양자 상태 중 확률적으로 절반 정도가 송신자가 사용한 기저와 동일하다. 동일한 기저를 사용한 결과 중에서 송신자는 사용한 디코이 정보를 수신자에게 전송하는데, 이 정보를 활용해서 수신자는 동일한 기저 중 시그널과 디코이를 구별할 수 있다.

양자 채널의 안전성을 확인하기 위해 수신자는 기저가 동일한 결과 중에서 일부를 무작위로 선택하고 그 위치를 송신자에게 알려주며, 송신자는 해당 부분들에 대해 준비한 양자 상태들을 수신자에게 알려준다. 송수신 자는 동일한 기저를 사용했기 때문에 송신자가 공개한 양자 상태는 수신자의 측정 결과와 동일해야 하는데, 실제로 구현할 때는 중간 공격자의 개입, 구성 장치들의 불완전함, 환경상의 오류 등으로 결과가 불일치하기도 한다. 모든 불일치한 결과는 도청자의 공격으로 간주한다. 수신자는 이 단계에서 디코이를 활용해서 양자 채널의 안전성을 판단하는 동시에 양자비트 오류율을 추정한다. BB84 프로토콜을 이용하여 양자키분배를 할 때, 구현 환경이나 광학적 구현 모델에 따라 안전성이 보장 가능한 양자비트 오류율의 상한이 정해진다. 또, 양자비트 오류율이 정의된 상한 이하고 측정되어 양자 채널이 안전하다고 생각되면 다음 단계로 진행하고, 그게 아니라면 저장된 초기 키를 모두 버리고 다시 초기 키 생성 단계로 돌아간다.

송신자와 수신자는 기저가 동일한 결과 양자 채널의 안전성을 검증하기 위해 쓰인 부분들은 제외하고 나머지는 걸러진 키로 저장한다.

  • 주의할 점 : 부호화 정보와 같은 기저 정보 외의 다른 정보가 기저 교환 과정에서 공개된다면 도청자가 키 정보를 알아낼 수 있기 때문에, 송수신 간의 기저를 교환할 때는 기저 정보만 공개한다. 하지만 양자비트 오류율 확인 과정이나 양자비트 오류율 실측 과정에서는 부호화 정보의 일부가 공개된다. 걸러진 키를 생성할 때 공개되는 정보는 변조할 수 없어야 하기 때문에, 다양한 무결성 보장 기법을 이용하여 정보를 변조할 가능성을 확인한다. 공개 채널로 송수신되는 기저와 디코이 정보의 무결성을 보장하기 위해서 전자 서명(digital signature), 암호 검사합(checksum), 오류 감지 코드(error detection code), 메시지 인증 코드(MAC) 기법 등이 사용될 수도 있다. 또, 걸러진 키를 생성할 때는 누군가 도청을 하지는 않는지 파악해야 한다. 따라서 송수신 자는 양자비트 오류율을 확인할 때 동일한 기저를 가지는 결과 중에서 일부 부호화 정보를 무작위로 공개하여 양자비트 오류율을 실측한다. 그리고 양자 채널에서 실측된 양자비트 오류율이 이론적으로 안전성이 보장되는 상한 이하인 경우에만 다음 절차를 진행한다. 그렇지 않은 경우 도청자의 공격으로 간주하고 초기 키 생성 단계로 돌아가서 양자 채널을 다시 설정한다.[1]

비밀키 생성[편집]

걸러진 키에 후처리 과정인 오류 정정과 비밀증폭 절차를 적용해서 최종 비밀키를 생성하는 단계이다. 비밀키 생성에 필요한 핵심요소는 걸러진 키, 오류 정정 기법, 비밀증폭 기법, 인증키이다. 비밀키 생성 단계는 다음과 같이 이뤄진다.

  1. 송수신 자는 걸러진 키를 일치시키기 위해 비트 오류정정 기법을 사용하여 오류를 정정한다.
  2. 송수신 자는 오류정보 및 오류정정 과정에서 유출된 정보를 비밀증폭 과정으로 제거한다.
  3. 송수신 자는 위의 모든 과정 수행 결과를 비밀키로 저장한다.

송수신 자는 공개 채널을 통해 공유된 걸러진 키를 일치시키기 위해 다양한 비트 오류 정정 기법을 사용한다. 여기는 CASCADE 프로토콜, WINNOW 프로토콜, LDPC 등을 예로 들 수 있는데, 이러한 정정 기법을 사용하여 이전 단계에서 확인된 양자비트 오류율만큼 오류를 정정한다. 이때 수행되는 송수신 간의 통신으로 걸러진 키에 대한 일부 정보가 유출되는데, 유출된 걸러진 키 정보로 유추할 수 있는 비밀키 정보를 제거하기 위해서 비밀증폭 단계를 수행한다. 비밀증폭의 가장 일반적인 방법은 한 방향 특성을 가진 유니버설 해시함수를 이용하는 것이다. 이때 사용자가 미리 공유한 인증키로 유니버설 해시 함수를 구성한다면, 서로의 신원을 확인하는 인증 과정을 진행할 수 있다. 송수신 간의 오류 정정과 비밀 증폭이 끝난 후에는 생성된 비밀키를 저장한다.

  • 주의할 점 : 오류정정 기법에 필요한 정보들은 변조할 수 없어야 하므로 다양한 무결성 보장 기법을 적용해서 변조 가능성을 검사한다. 공개 채널로 송수신되는 오류 정정 정보의 무결성을 보장하기 위해서 전자 서명, 암호 검사합, 오류 감지 코드, 메시지 인증 코드 기법 등이 사용될 수 있다. 오류정정 과정에서 공개되는 정보는 반드시 완전히 제거해야 하며, 공개된 내용을 통해 혹시라도 비밀키 정보가 유출될 가능성이 있기 때문에 이를 보완하기 위한 비밀 증폭을 과정을 진행한다. 이때 양자키분배 안전성을 보장할 수 있는 비밀증폭 기법을 사용한다.[1]

적용[편집]

양자키분배[편집]

양자키분배 기술은 양자를 이용하여 통신상의 비밀키를 나누는 방식으로, 양자암호통신 기술이라고도 불린다. 양자키분배에서는 기존 채널을 통해 암호화 데이터를 전송하고 양자 채널을 통해서 비밀키를 공유한다. 데이터 암호화 자체는 기존의 AES 같은 암호화 알고리즘을 사용하지만, 양자 채널을 통해서 비밀키를 공유한다. 통신 도중에 도청자가 난입하면 송수신하던 정보가 왜곡되기 때문에 송수신 자가 바로 감지할 수 있다는 특징이자 장점을 갖고 있다. 따라서 도청자는 송수신 간에서 절대 원하는 정보를 얻을 수 없기 때문에 절대적으로 안전하게 보안을 지킬 수 있는 대표적인 암호체계이다. 양자키분배를 구현하기 위해서는 단일광자광원, 광자 검출기, 난수 발생기, 양자 중계기, 프로토콜 등이 필요한데, BB84 프로토콜은 그 중에서도 양자 암호 프로토콜에 속한다. 안정성과 구현 가능성 면에서 현재까지 나온 프로토콜 중 가장 강력한 프로토콜로 인정받고 있다.[5] 국내의 대표적인 양자키분배 기술 보유 기업은 에스케이텔레콤㈜와 ㈜케이티가 있다. 특히 에스케이텔레콤㈜은 2011년에 양자기술연구소를 설립하여 양자암호통신 기술을 개발하다가, 2016년, 스위스 암호통신 기업 아이디퀀티크를 인수하여 양자난수생성기 기술을 보유하게 되었다. 양자키분배의 후처리 과정으로는 정보보정(information reconciliation), 비밀성 증폭(privacy amplification), 인증(authentication)이 있다. 도청자의 공격이나 양자 채널과 양자 검출 장치의 불완전성으로 인하여 송수신 자 사이의 암호키 불일치 문제가 일어나는 것을 제거하는 과정이다. 송수신 간의 동일한 키 정보를 보장하는 동시에 도청자가 노출된 정보에서 키에 대한 정보를 절대 유추하지 못하도록 노출된 정보와 키 정보 간의 상관관계를 최대로 낮춘다. 취약점은 광자 분리 공격(PNS Attack), 맨 인 더-미들-어택(MITM Attack), 서비스 거부 공격(DoS)가 대표적이다. 광자 분리 공격은 단일광자생성기의 불완전성을 이용해서 파훼하는 방법을 의미한다. 일반적으로 신호를 생성하면 광자가 하나만 생성되지 않고 하나이상의 광자를 동시에 생성하여 전송한다. 통신회선 중간에 반투명 거울을 설치해서 광신호의 일부를 분리하고 측정하여, 어떤 신호가 전송되는지 알아내는 공격 방법이다. 맨 인 더-미들-어택은 송수신 중간에 공격자가 중계소처럼 행세해서 송수신 자를 교란하는 방법이다. 송신자와 공격자 사이에 다른 키를 공유하고, 공격자와 수신자 간의 다른 키를 공유하여 중간에서 오가는 신호를 도청한다. 서비스 거부 공격은 통신 선상에 과부하를 줘서 정상적으로 통신하지 못하거나 하기 힘들게 만드는 방법이다. 제일 대표적인 예시로는 케이블을 물리적으로 절단하는 행위이다. 이 외에도 퍼블릭 채널을 대상으로 하는 고전적인 서비스 거부 공격 등을 할 수 있다.

용어[편집]

  • 양자키분배 프로토콜 : 양자키분배를 하기 위한 통신 규약들이다.
  • 초기 키 : 양자 채널을 통한 양자 상태의 송수신 결과인 키 수열이다.
  • 걸러진 키 : 송수신 자 간에서 동일한 기저를 사용한 키 수열이다.
  • 광자 : 빛의 입자인 양자로 빛 에너지의 최소 단위를 의미한다.
  • 광자 수 분리 공격 : 단일 광자 상태를 가정한 양자키분배 장비를 실제로 구현할 때는 기술상의 한계로 인하여 높은 확률로 다중 광자가 전송된다. 따라서 공격자가 다중 광자 중 일부 광자를 가로채어 키 정보를 알아내는데, 이 공격을 광자 수 분리 공격이라고 부른다.
  • 공개 채널 : 도청자를 포함하여 외부에 완전히 공개된 채널로, 양자 정보가 전송되는 채널이다. 공개 채널로 전송되는 정보는 누구나 확인할 수 있지만, 변조되지 않았다고 가정하여 일반적으로는 양자키분배에서 사용되는 공개 채널은 고전 채널이라고 칭하기도 한다.
  • 기저 : 양자 상태를 구분 짓는 기준 좌표이다.
  • 디코이 : PNS 공격 감지를 위하여 시그널과 다른 평균 광자 수를 가지도록 조작돼서 섞인 양자의 상태를 의미한다.
  • 비밀증폭 : 오류를 정정할 때 공개된 정보와 이로 인해 비밀키의 유추할 수 있는 정보를 제거하는 과정이다.
  • 비밀키 : 양자키분배를 통해서 생성된 최종 키이자 최종 결과물이다.
  • 시그널 : 일반적으로 신호를 뜻하는 말이지만, 양자키분배에서는 키 정보를 전달하는 데 직접적으로 관여한다.
  • 양자비트 오류율 : 걸러진 키에서의 오류의 정도를 의미한다.
  • 양자채널 : 양자의 물리적 상태를 전송하는 채널
  • 오류정정 : 걸러진 키의 오류를 수정하는 과정
  • 위상 부호화 : 광자의 위상차를 이용하여 부호화한다.
  • 유니버설 해시함수 : 한 방향 함수의 일종으로 볼 수 있다. 충돌이 일어날 가능성이 최대 이 되는 함수를 의미한다. 여기서 M은 입력 메시지의 전체 길이이다.
  • 인증키 : 사용자나 장비 인증에 사용되는 키로, 사전에 나누어 공유되거나 비밀키 중에서 일부를 인증키로 사용한다.
  • 편광 부호화 : 광자의 방향성을 이용해서 부호화한다.
  • 후처리 과정 : 오류 정정 단계와 비밀 증폭 단계를 합쳐서 일컫는 과정이다.[1]

각주[편집]

  1. 1.0 1.1 1.2 1.3 1.4 김나영 외 7인, 〈양자 키 분배 - 제2부: BB84 프로토콜〉, 《한국정보통신기술협회》, 2018-12-19
  2. BB84 위키피디아 - https://en.wikipedia.org/wiki/BB84
  3. 나랑 놀자, 〈양자암호:BB84 protocol〉, 《네이버블로그》, 2016-11-26
  4. 김선우, 〈도청자를 잡아낼 수 있는 암호〉, 《한국과학영재학교온라인과학매거진》, 2019-10-30
  5. 엘지씨엔에스 보안컨설팅팀, 〈양자 컴퓨팅 시대, 양자 암호 기술과 보안〉, 《엘지씨엔에스》, 2019-06-12

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 BB84 프로토콜 문서는 암호 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.