Соответственно, теперь эту последовательность фотонов нужно отправить второму участнику переписки: \/—||/—/\|. Но что же должен сделать он? Он же не знает, в какой именно поляризации отправлены фотоны, так что измерять он может любым из двух приборов: вертикально-горизонтальным или диагонально-диагональным. Для измерения можно выбрать один прибор, либо использовать для каждого прибора свой прибор, выбираемый случайным образом. Это абсолютно неважно, так как в среднем половина переданных фотонов будет измерена правильным прибором, а другая половина неправильным, и результат неправильного измерения случаен.
Например, пусть для указанной передачи получатель использовал вертикально-горизонтальный прибор. Тогда он мог получить такой результат: ||—||—|—|. Это соответствует последовательности битов 0010011010. А передана была 0110011100. Как же быть? Всё просто. Теперь отправитель связывается с получателем по открытому каналу — например, по телефону — и говорит, в какой поляризации были отправлены фотоны, а получатель сообщает, какие из них были измерены правильным образом. В нашем примере получается, что правильно были измерены только третий, четвёртый, пятый, седьмой и десятый фотоны, и именно их надо оставить, а неправильно измеренные фотоны выкинуть. И тогда получается двоичное число 10010, одинаковое и у отправителя, и у получателя. Это число и есть секретный ключ, который после передачи можно использовать для шифрования информации при помощи, например, одноразового блокнота.
Всё это было понятно. Папа попросил нас с Катей передать друг другу несколько последовательностей битов, записывая их на клочках бумаги, и мы немного потренировались. Проблем не возникало, мы получали одинаковые последовательности после вычёркивания неправильно измеренных битов. Тогда Катя спросила:
— Но всё равно непонятно, зачем четыре разных фотона? Ведь мы всё равно передаём биты.
Папа кивнул и сказал:
— Вот в этом-то суть метода. Это позволяет противостоять атаке «человек посередине». Вот смотрите. Некто перехватывает фотоны, посылаемые отправителем, и измеряет их. Но он же тоже не знает, в какой поляризации они посланы, а потому примерно половина фотонов будет измерена неправильно. А этот некто должен послать измеренный фотон дальше, чтобы у получателя не появилось подозрений, что их перехватывают. Если фотон измерен неверно и при этом злоумышленник даже не понимает, какие фотоны он измерил неверно, то он не сможет корректно передать данные. И отправитель с получателем смогут определить, что передача была скомпрометирована. Понятно?
Вроде бы интуитивно это было понятно, но всё равно надо проверить. Я попросил папу привести нам пример. Тогда он вновь нарисовал предыдущую таблицу, но добавил к ней три новые строки:
Второй участник переписки получает последовательность фотонов: |/\||/\ — \\. Он опять не знает, в какой поляризации их измерять, а потому измеряет случайным образом. На самом деле опять можно использовать только один прибор для измерения. Пусть, как и в прошлый раз, получатель измерил все фотоны вертикально-горизонтальным прибором. Он прочитает что-то типа такого: |—|||—|—. Это соответствует последовательности битов 0110001101. А передана была 0110011100. Как и в прошлый раз, получатель обращается к отправителю по открытому каналу и узнаёт, какие биты он измерил правильно. Как и в прошлый раз, правильно он измерил третий, четвёртый, пятый, седьмой и десятый фотоны, а потому остаются только эти биты. На стороне отправителя последовательность выглядит как 10010, а на стороне получателя 10011. Как видно, десятый бит пришёл с ошибкой — и злоумышленнику-перехватчику ещё повезло, что с ошибкой пришёл только один бит, поскольку в среднем ошибочными будет половина битов из оставшихся.
Чтобы проверить, не скомпрометирован ли канал и нет ли посередине зловредного человека, который его прослушивает, отправитель и получатель должны взять не менее половины битов из оставшихся одинаковых и сравнить их. Если хотя бы один бит не совпадает, то был перехват и фотонный канал скомпрометирован. Если все биты совпадают, то скорее всего канал был чистым. Эта вероятность не стопроцентная, однако чем больше битов проверяется, тем она выше, так что вероятность в любом случае можно довести до приемлемого уровня. Например, 99,999 %. Но поскольку биты сравниваются друг с другом по открытому каналу, после сравнения они должны быть отброшены. В итоге остаётся проверенная последовательность, которая и является секретным ключом.
Теперь всё стало понятно. Папа предложил нам проделать что-то вроде лабораторной работы, поскольку установленные нами лазерные пушки реализуют именно тот алгоритм передачи, о котором он нам только что рассказал.
Я взял свою рацию и пошёл в берёзки. Рация должна стать нашим открытым каналом. Папа выдал защитные очки Кате, а сам пошёл в штаб. Мы должны передать секретное послание, а потом рассказать ему про результаты, после чего мы обсудим то, как всё прошло.
Прибор был довольно прост. Как мне объяснил папа, это был прототип, над которым сотрудники его лаборатории трудились весь предыдущий год. Поэтому он обладал минимальным набором функций. На приборной панели была одна кнопка — «Отправить бит». После нажатия на дисплее появлялся один из символов: | — / \, в зависимости от того, какой фотон был отправлен. Прибор сам выбирал и случайный бит, и случайную поляризацию. Моим делом оставалось только тщательно записать все отправленные фотоны.