Ни для кого не секрет, что квантовая криптография будет играть важную роль в информационном обществе будущего. Это признаётся даже в самых высоких финансовых кругах. Протоколы квантового шифрования могут казаться чем-то очень сложным и далёким от обывателя. Но, как показала практика, даже блокчейн можно объяснить на пальцах. Поэтому я представляю вашему вниманию попытку описать простейший протокол квантового шифрования на примере карточной игры.
Прежде чем говорить о квантовой криптографии, стоит сказать пару слов о криптографии в целом. Это наука о том, как передать сообщение, которое могут прочесть только отправитель и получатель и никто больше. Традиционно шифрование осуществляется с помощью ключей – некоторой секретной информации, применение которой к шифрованному сообщению делает его читаемым, и наоборот. В этой статье я с помощью игральных карт покажу, как квантовая физика позволяет сделать так, чтобы, во-первых, секретный ключ смогли знать и отправитель, и получатель, а во-вторых, – и это главное – чтобы любая попытка воровства ключа вскрывалась.
Квантовый пасьянс.
Для этого нужно будет представить себе такую штуку, как квантовые игральные карты. Квантовые карты похожи на обычные игральные карты: они могут быть неизвестны (лежать рубашкой вверх), их можно пытаться измерить (перевернуть и прочитать карту). Обычные карты могут иметь масть и достоинство. Для простоты мы будем рассматривать подколоду, состоящую только из 4-х карт: шесть пик, туз пик, шесть червей и туз червей.
Квантовые же карты отличаются тем, что мы не можем одновременно знать и масть, и достоинство карты – только что-то одно. Квантовая подколода, соответствующая классической подколоде, описанной выше, также будет состоять из 4-х карт: 6, Т, пика, черва.
Неопределенность – фундаментальная особенность квантовых карт. В тот момент, когда мы переворачиваем неизвестную квантовую карту, мы должны сказать, по какому признаку мы читаем (измеряем) карту: по масти или по достоинству. Причём, если у карты была определенная масть, мы можем сколько угодно измерять её по масти, и всегда будем получать тот же самый результат, но стоит нам прочитать её по достоинству, её старая масть «слетает» и становится неопределенной. При этом достоинство карты может оказаться равным 6 или Т с вероятностями 50%. Таким образом, квантовые карты, в отличие от классических, могут менять свои признаки в течение игры.
Наконец, у квантовых карт есть ещё одно волшебное свойство – их можно раздать в состоянии запутанной пары. Это такое особенное состояние двух карт, при котором измерение одной карты автоматически и моментально измеряет другую (без переворота оной) с результатом, противоположным первой. Например, мы мерим по масти одну карту из запутанной пары и получаем пику. В этом случае мы, не переворачивая вторую карту по масти (но не по достоинству), со 100%-й уверенностью можем сказать, что там черва. И то же самое с достоинствами. Нечто похожее может происходить и с классическими картами в случае, например, если вы играете с крупье, который раздаёт вам пару карт, отбирая их по принципу разных мастей. Тогда, вскрыв одну карту, вы точно знаете, какая масть и другой.
Генерация ключа.
Теперь, определив волшебные свойства квантовых карт, перейдём непосредственно к игре. Один из участников игры, например Анна, получает из колоды пару запутанных карт. Одну карту она отправляет своему напарнику, например, Борису, а вторую оставляет себе. Анна может выбрать, измерить карту по масти, либо по достоинству, и переворачивает карту, никому не показывая результат.
В этот момент карта, идущая к Борису, переключается по дороге на значение, обратное измеренному Анной, и приходит к Борису рубашкой вверх. Теперь уже Борис выбирает, как измерить карту. Измерив, Борис вслух говорит способ измерения, но не говорит результат. Анна слышит это, и отвечает ему, угадал он или нет. Если Борис не угадал, кон заканчивается, и карты раздаются заново. Если же Борис мерил так же, как и Анна, то оба записывают себе значение Бориса, закодированное в двоичной системе. При этом 6 и пика кодируются как 0, а Т и червы – как 1. После записи начинается новый кон. Таким образом, после серии конов у Анны и Бориса получается идентичный набор нулей и единиц, но при этом не озвученный вслух. Этот набор можно использовать в качестве ключа для шифровки какого-нибудь сообщения.
Рисунок ниже иллюстрирует этот алгоритм на примере 9-ти конов игры. Каждый столбец из карт соответствует одному кону.
Прослушивание.
Теперь в игру вступает Елена. Она сидит в той же комнате и внимательно слушает, что говорят Анна и Борис. Её задача – выкрасть ключ таким образом, чтобы никто об этом не догадался. Единственный способ – тайно перехватывать карту Бориса, мерить её, и отправлять Борису, как ни в чём не бывало.
Поскольку Елена тоже человек, она может не угадать способ измерения Анны. Тогда с некоторой вероятностью карта, которую получит Борис, будет отличаться от того, что ожидает Анна. Если Борис при этом угадывает способ измерения, то оба пишут себе цифры, но эти цифры будут с некоторой вероятностью отличаться. Чтобы отследить это, Анна и Борис договариваются вслух сверять определённый процент цифр из ключа. Не слишком большой, чтобы ключ всё ещё сложно было подобрать, но и не слишком маленький, иначе есть шанс никогда не обнаружить прослушку. Если цифры в какой-то момент не совпадают, это означает, что канал связи скомпрометирован, и нужно срочно прекратить коммуникацию.
Заключение.
Данная игра носит название протокола BB84 по первым буквам фамилий и году опубликования. На сегодняшний день существует множество других протоколов квантового шифрования, а также попыток их взлома. Здесь же приведён самый простой. В нём у Елены есть шанс остаться не обнаруженной, но он сильно падает с увеличением длины ключа.
В реальности роль квантовых карт играют фотоны, а роль мастей и достоинств – характеристики их поляризации. Физики особым образом научились создавать запутанные пары фотонов: измерение поляризации одного из них повлияет на статистику измерения поляризации у второго мгновенно и независимо от расстояния. Этот процесс и носит название квантовой телепортации.
В игру, описанную в этой статье, при определенном желании можно поиграть даже дома с друзьями. Правда, для этого нужно будет сделать карточки отдельно мастей и отдельно достоинств, а кто-то из участников должен исполнять роль квантового крупье, чтобы обеспечивать случайность измерения карт. Кроме того, данный алгоритм легко программируется.