2. Kryptografia kwantowa
Sam pomysł zastosowania pojedynczych kwantów do kodowania i bezpiecznego przesyłania informacji jest tak prosty, że niemal „każdy student drugiego roku fizyki mógłby to wymyślić”[4]. Pomysł polega na wykorzystaniu następujących praw rządzących mechaniką kwantową, które początkowo dla większości studentów są nieintuicyjne i pozornie nierozsądne:
(1) każdy pomiar zaburza stan systemu,
(2) nie można jednocześnie zmierzyć polaryzacji kwantu w podstawie prostopadłej i +45 st. C,
(3) nie można skopiować pojedynczego kwantu o nieznanym stanie.
Po raz pierwszy propozycję jak wykorzystać te reguły do szyfrowania informacji pokazali Bennett i Brassard. W roku 1984 przeprowadzili oni pierwszą udaną komunikację z wykorzystaniem pojedynczych fotonów. Udało im się przesłać w bezpieczny sposób informację na odległość 30 cm, z wykorzystaniem zaproponowanego przez nich protokołu BB84 [1]. Od lat 80-tych zaproponowano również inne rozwiązania dla potrzeb kryptografii kwantowej – wśród nich zaproponowany przez Artura Ekerta algorytm wykorzystujący źródła EPR [2].
2.1. Protokół BB84 Zaproponowany protokół wykorzystuje do kodowania informacji bitowej pojedyncze fotony o określonej polaryzacji. Zakłada on istnienie czterech podstawowych polaryzacji fotonu : pionowej, poziomej, +45 st. C oraz -45 st. C, które kodują wartości pojedynczego bitu w sposób przedstawiony na rysunku 3.
Rys.3. Polaryzacje fotonów w protokole BB84 i kodowane przez nie wartości bitów.
Protokół zakłada więc nadmiarowość pozwalając zakodować ten sam bit na dwa różne sposoby (używając fotonów o różnej polaryzacji). Polaryzacje kodu-jące ten sam bit mogą być wybrane dowolnie, jednak w taki sposób aby nie były względem siebie prostopadłe. Fotony wysłane przez nadajnik mogą zostać odebrane (zmierzone) przez odbiornik tylko w jednej z dwóch dostępnych podstaw : prostopadłej i +45 st. C. Ta cecha oraz możliwość losowego kodowania informacji przez nadajnik jest podstawą bezpieczeństwa protokołu.
Rys.4. Podstawy w których odbiorca dokonuje pomiarów fotonów (prostopadła i +45 st. C)
Komunikacja w protokole BB84 polega na szeregowym wysyłaniu przez nadawcę fotonów kodujących kolejne bity informacji, przy czym wybór pomiędzy dwiema polaryzacjami kodującymi ten sam bit jest losowy. Odbierając informację, odbiorca musi dokonać wyboru w jakiej podstawie zmierzy foton. Wybór ten jest wykonywany losowo i niezależnie od wyborów dokonywanych przez nadawcę. Jeśli odbiorca wybierze poprawną podstawę (prostopadłą dla polaryzacji poziomej i prostopadłej albo +45 st. C dla pozostałych polaryzacji) to dokonany przez niego pomiar jest poprawny. Jeśli natomiast wybierze złą podstawę to ma równe szanse, że w wyniku pomiaru odczyta bit o wartości „0” jak i „1”.
Rys.5. Nadawanie i odbieranie informacji w protokole BB84
Ponieważ obie strony losowo wybierają polaryzacje i podstawy to na pewno niektóre, w ten sposób odebrane fotony (średnio około 50%) zostaną zmierzone niepoprawnie. Skutkiem tego będą różnice w ciągu nadanym i odebranym, które muszą zostać usunięte. W tym celu realizowana jest druga część protokołu, która może odbyć się dowolnym (również narażonym na podsłuch) kanałem komunikacyjnym. Odbiorca przekazuje nadawcy informację o tym, w jakich podstawach zmierzył fotony (nie podaje jednak wartości odebranych bitów). W odpowiedzi nadawca informuje odbiorcę czy wybrał poprawną podstawę czy nie. Za każdym razem, gdy odbiorca się pomylił obie strony odrzucają odpowiedni bit informacji, jeśli odbiór był poprawny to bit nie jest odrzucany.
W efekcie takiego protokołu obie strony powinny dysponować takim samym ciągiem bitów. W rzeczywistości ciągi te mogą się różnić skutkiem błędów wprowadzanych przez urządzenia nadawcy i odbiorcy [4] i konieczne jest wykonanie dodatkowych kroków – korekcji błędów i wzmocnienia prywatności (ang. privacy amplification). Korekcja błędów ma w rzeczywistości na celu usunięcie z przesyłanej informacji tych bitow, które są niepoprawne zapewniając jednocześnie, że hipotetycznemu atakującemu przekazana zostanie jedynie minimalna informacja o pozostałych, poprawnych bitach. Jednym z najprostszych sposobów realizacji takiej korekcji jest badanie sumy modulo 2 kolejnych par bitów wiadomości – jedna strona oblicza kolejne wartości i podaje drugiej. Jeśli wartości są rożne to oba bity, z których wyliczono sumę są odrzucane. Korekcja ta jest też metodą pozwalającą na wykrycie ingerencji atakującego – taka ingerencja powoduje znaczne zwiększenie współczynnika błędów [1]. W efekcie realizacji takiego algorytmu zarówno nadawca jak i odbiorca będą dysponowali poprawnymi informacjami. Niestety, pewna informacja może też zostać ujawniona atakującemu. Aby zmniejszyć proporcje pomiędzy wiedzą posiadaną przez legalne strony i atakującego, strony przeprowadzają protokół wzmacniania prywatności.

Rys.6. Ilość bitów w kolejnych etapach kwantowej dystrybucji kluczy
Po zakończeniu wzmacniania prywatności strony dysponują poprawną informacją i są pewne, że znana jest ona tylko im. Niestety cały protokół BB84 ma jedną podstawową wadę polegającą na tym, że aby przesłać informację długości n bitów, trzeba wysłać około 3n fotonów. Co więcej, przed transmisją żadna ze stron nie jest w stanie określić, które z tych bitów zostaną odebrane poprawnie, a które odrzucone w kolejnych krokach. Protokół ten jest całkowicie losowy i nie nadaje się do przesyłania konkretnych informacji (z tego względu kryptografia kwantowa nie jest najlepszym określeniem). Praktycznym zastosowaniem tego protokołu jest więc przesłanie losowego ciągu bitów, który następnie może być użyty jako klucz jednorazowy (ang. one-time-pad) do zapewnienia poufności doskonałej (i stąd nazwa – kwantowa dystrybucja kluczy).