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

BB84 프로토콜

위키원
7095sj (토론 | 기여)님의 2020년 8월 7일 (금) 10:44 판
이동: 둘러보기, 검색

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

개요

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

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

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 중에서 각각 하나씩 무작위로 선택한다. 선택한 기저의 무작위로 선택한 값을 부호화해서 네 개의 양자 상태 중 하나를 준비하고, 이를 양자 채널을 통해서 수신자에게 전달한다. 네 개의 양자 상태는 서로 직교하지 않는 관계인 를 이용하여 나타낼 수 있고, 각 기저 내의 두 상태는 서로 직교한 상태이다. 예를 들어 편광 부호화 방법을 이용하는 경우에는 네 가지 양자 상태는 에 대해 각각 관계이다. 위상 부호화 방식을 사용하는 경우에는 네 가지 양자 상태는 각 기저에 대해 의 상태가 된다. 그리고 수신자는 송신자가 전송한 양자 상태에 대해 측정 기저 중 아무거나 하나를 선택하고 측정한다. 마지막으로 송신자는 생성한 양자 상태를, 수신자는 양자 상태의 결과를 각자의 초기 키로 저장한다.

걸러진 키 생성

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

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

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

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

비밀키 생성

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

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

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

용어

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

각주

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

참고자료

같이 보기


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