Криптографические приключения — страница 31 из 38

Катя сразу же нашлась:

— Но мы же раньше говорили, что для передачи любой информации можно пользоваться битами, то есть 0 и 1. Другими словами, нам нужно два разных значения характеристики фотона. Зачем же мы берём четыре?

— Вопрос резонный, именно его я и хотел услышать. Но в этом и состоит суть алгоритма. Дело в том, что поляризацию фотона можно измерять двумя способами: во-первых, в вертикально-горизонтальном направлении, а во-вторых — в диагонально-диагональном. Первый способ измерения обозначается прямым крестом, а второй — косым.

Папа нарисовал в пыли на земле две фигуры:



Он продолжил:

— И вот что интересно. Если фотон поляризован вертикально или горизонтально, то измеряя его в вертикально-горизонтальном направлении, прибор даст точную поляризацию. А если измерять в диагонально-диагональном направлении, то прибор с вероятностью 50 % покажет поляризацию слева направо или справа налево, независимо от того, какая она была у фотона. То же самое касается и измерения диагонально поляризованных фотонов при помощи вертикально-горизонтального прибора: в половине случаев прибор покажет вертикальную поляризацию, в половине — горизонтальную, причём опять независимо от того, какая поляризация была у фотона изначально. Понятно?

Мы с Катей одновременно помотали головами. Папа вздохнул и нарисовал на листке такую схему:



Да, так стало намного понятнее. Тем временем папа продолжил:

— Но эти мои слова не объясняют, зачем нам четыре разных варианта фотона, ведь так? Действительно, это была лишь присказка. Слушайте сказку…

И папа рассказал нам удивительные вещи. Оказалось, что четыре возможных состояния фотона всё равно кодируют два бита, просто используется некоторая избыточность. Бит 0 представляется двумя способами: вертикальная поляризация и поляризация слева направо. Соответственно, бит 1 представляется в виде горизонтальной поляризации и поляризации справа-налево.

Когда некто хочет передать своему товарищу секретный ключ, он создает случайную последовательность битов. Однако потом он создает вторую случайную последовательность, которая определяет, в какой поляризации передавать соответствующий бит. При этом «0» в этой второй последовательности обозначает вертикально-горизонтальную поляризацию, а «1» — диагонально-диагональную. Получается примерно так:



Соответственно, теперь эту последовательность фотонов нужно отправить второму участнику переписки: \/—||/—/\|. Но что же должен сделать он? Он же не знает, в какой именно поляризации отправлены фотоны, так что измерять он может любым из двух приборов: вертикально-горизонтальным или диагонально-диагональным. Для измерения можно выбрать один прибор, либо использовать для каждого прибора свой прибор, выбираемый случайным образом. Это абсолютно неважно, так как в среднем половина переданных фотонов будет измерена правильным прибором, а другая половина неправильным, и результат неправильного измерения случаен.

Например, пусть для указанной передачи получатель использовал вертикально-горизонтальный прибор. Тогда он мог получить такой результат: ||—||—|—|. Это соответствует последовательности битов 0010011010. А передана была 0110011100. Как же быть? Всё просто. Теперь отправитель связывается с получателем по открытому каналу — например, по телефону — и говорит, в какой поляризации были отправлены фотоны, а получатель сообщает, какие из них были измерены правильным образом. В нашем примере получается, что правильно были измерены только третий, четвёртый, пятый, седьмой и десятый фотоны, и именно их надо оставить, а неправильно измеренные фотоны выкинуть. И тогда получается двоичное число 10010, одинаковое и у отправителя, и у получателя. Это число и есть секретный ключ, который после передачи можно использовать для шифрования информации при помощи, например, одноразового блокнота.

Всё это было понятно. Папа попросил нас с Катей передать друг другу несколько последовательностей битов, записывая их на клочках бумаги, и мы немного потренировались. Проблем не возникало, мы получали одинаковые последовательности после вычёркивания неправильно измеренных битов. Тогда Катя спросила:

— Но всё равно непонятно, зачем четыре разных фотона? Ведь мы всё равно передаём биты.

Папа кивнул и сказал:

— Вот в этом-то суть метода. Это позволяет противостоять атаке «человек посередине». Вот смотрите. Некто перехватывает фотоны, посылаемые отправителем, и измеряет их. Но он же тоже не знает, в какой поляризации они посланы, а потому примерно половина фотонов будет измерена неправильно. А этот некто должен послать измеренный фотон дальше, чтобы у получателя не появилось подозрений, что их перехватывают. Если фотон измерен неверно и при этом злоумышленник даже не понимает, какие фотоны он измерил неверно, то он не сможет корректно передать данные. И отправитель с получателем смогут определить, что передача была скомпрометирована. Понятно?

Вроде бы интуитивно это было понятно, но всё равно надо проверить. Я попросил папу привести нам пример. Тогда он вновь нарисовал предыдущую таблицу, но добавил к ней три новые строки:



Второй участник переписки получает последовательность фотонов: |/\||/\ — \\. Он опять не знает, в какой поляризации их измерять, а потому измеряет случайным образом. На самом деле опять можно использовать только один прибор для измерения. Пусть, как и в прошлый раз, получатель измерил все фотоны вертикально-горизонтальным прибором. Он прочитает что-то типа такого: |—|||—|—. Это соответствует последовательности битов 0110001101. А передана была 0110011100. Как и в прошлый раз, получатель обращается к отправителю по открытому каналу и узнаёт, какие биты он измерил правильно. Как и в прошлый раз, правильно он измерил третий, четвёртый, пятый, седьмой и десятый фотоны, а потому остаются только эти биты. На стороне отправителя последовательность выглядит как 10010, а на стороне получателя 10011. Как видно, десятый бит пришёл с ошибкой — и злоумышленнику-перехватчику ещё повезло, что с ошибкой пришёл только один бит, поскольку в среднем ошибочными будет половина битов из оставшихся.

Чтобы проверить, не скомпрометирован ли канал и нет ли посередине зловредного человека, который его прослушивает, отправитель и получатель должны взять не менее половины битов из оставшихся одинаковых и сравнить их. Если хотя бы один бит не совпадает, то был перехват и фотонный канал скомпрометирован. Если все биты совпадают, то скорее всего канал был чистым. Эта вероятность не стопроцентная, однако чем больше битов проверяется, тем она выше, так что вероятность в любом случае можно довести до приемлемого уровня. Например, 99,999 %. Но поскольку биты сравниваются друг с другом по открытому каналу, после сравнения они должны быть отброшены. В итоге остаётся проверенная последовательность, которая и является секретным ключом.

Теперь всё стало понятно. Папа предложил нам проделать что-то вроде лабораторной работы, поскольку установленные нами лазерные пушки реализуют именно тот алгоритм передачи, о котором он нам только что рассказал.

Я взял свою рацию и пошёл в берёзки. Рация должна стать нашим открытым каналом. Папа выдал защитные очки Кате, а сам пошёл в штаб. Мы должны передать секретное послание, а потом рассказать ему про результаты, после чего мы обсудим то, как всё прошло.

Прибор был довольно прост. Как мне объяснил папа, это был прототип, над которым сотрудники его лаборатории трудились весь предыдущий год. Поэтому он обладал минимальным набором функций. На приборной панели была одна кнопка — «Отправить бит». После нажатия на дисплее появлялся один из символов: | — / \, в зависимости от того, какой фотон был отправлен. Прибор сам выбирал и случайный бит, и случайную поляризацию. Моим делом оставалось только тщательно записать все отправленные фотоны.

Проблема была в том, что этот прибор не мог проверить доставку фотона в другой прибор. Проверять надо было вручную, а потому мы с Катей переговаривались по рации. Я говорил «Отправил», а она отвечала «Получила». В этом случае передача фотона считалась совершённой, и мы записывали свои данные. Я — какой бит в какой поляризации был отправлен, а она — какая поляризация использовалась для измерения и какой бит был получен в результате измерения. К слову, в её приборе тоже была только одна кнопка, и она называлась «Сброс». Если её нажать, прибор переходил в режим ожидания входящего фотона. Когда фотон прилетал, на дисплее отображалась случайно выбранная поляризация для измерения и полученный результат.

Вот в таких условиях приходилось работать.

Так что мы с Катей целый час потратили на то, чтобы я передал ей последовательность из сотни бит. Все происходило очень медленно. Сначала мы много времени потратили, чтобы снова подстроить приборы, поскольку они из-за чего-то сбились и не видели друг друга. Потом мы научились синхронизироваться — я нажимал на кнопку и сообщал об этом Кате, а потом ждал от неё подтверждения. Первые несколько раз она не могла понять, что происходит, а потом оказалось, что она нажимала на свою кнопку только после моего сигнала. Конечно, ничего не работало. Поэтому мы стали поступать иначе — она говорила мне, что нажала на кнопку, переводя свой прибор в режим ожидания, и тогда уже я нажимал на свою кнопку. Теперь все стало проще, и мы повторили это ровно сто раз. Я тщательно записал показания своего прибора, а потом пошёл к Кате.

Мы решили, что вместо того, чтобы передавать информацию о том, какие фотоны были правильно измерены, проще подойти друг к другу и сравнить. Я переписал к себе в блокнот, как её прибор измерял фотоны, и получилось, что 53 фотона из 100 были измерены правильно. Так что у нас получилась одинаковая последовательность длиной 53 бита, которую можно было использовать как секретный ключ.

Папа ознакомился с результатами нашего эксперимента и остался доволен. Затем он посоветовал нам проверить вторую часть его рассказа о квантовом протоколе раздачи секретных ключей. Катя вздохнула, поскольку первая часть эксперимента её утомила, однако я сообразил: