Квантовая криптография
Перед тем как приступить к квантовой криптографии, давайте выясним, зачем она вообще нужна.
Сначала разберемся с понятием криптографической стойкости.
Шифры бывают:
Недостаточно стойкие - это шифры которые легко расшифровать
Достаточно стойкие (например RSA) - это шифры которые теоретически возможно расшифровать, но для этого потребуется огромное количество времени (например, 10, 50, 100 и более лет).
Абсолютно стойкие - это шифры которые вообще невозможно расшифровать. Для всех таких шифров должны соблюдаться некоторые правила:
1. Длина ключа должна быть больше или равна длине сообщения.
2. Каждый ключ используется только один раз.
3. Все символы в ключе должны быть выбраны абсолютно случайно.
Абсолютно стойкий шифр не может быть взломан, так как все символы в зашифрованном сообщении случайны. Между ними невозможно найти никакой закономерности, которая бы помогла расшифровать сообщение. Давайте для примера попробуем зашифровать какое-нибудь короткое сообщение.
Пусть это будет "простойтекст". А в качестве ключа мы используем любую случайную последовательность букв, например "члъфлгчэхпрт". В самом первом посте я писал, что шифр Виженера при соблюдении некоторых правил становится абсолютно стойким, поэтому давайте использовать его.
При шифровании у нас получается текст "зэйжятврыыгё", который абсолютно не возможно расшифровать. Злоумышленник конечно может попробовать это сделать, но при этом он найдет все существующие сообщения такой же длины (например "ЯубилКеннеди" или "СлаваУкраине") и не сможет узнать, какое же из этих сообщений правильное.
Ключ во всех подобных шифрах является самой уязвимой частью, так как его нужно безопасно передать, что невозможно сделать способами, описанными в прошлом посте.
Но квантовое шифрование в теории лишает шифр всех уязвимостей. В этом посте я приведу пример, как использовать квантовую запутанность для криптографии.
Очень хорошее объяснение квантовой запутанности было в этом посте (не мой). Коротко перескажу самое главное.
У фононов есть свойство, которое называется спин (с англ. Вращаться). Если два фотона будут находиться в запутанном состоянии, то зная спин первого, мы сможем легко узнать спин второго (он будет противоположен). Подробно я это объяснять не буду, так как для понимания квантового шифрования в общих чертах вам это не нужно. Вместо этого я приведу простой пример.
Представьте, что у вас и у вашего друга есть пульт, на котором есть только одна кнопка и одна лампочка. Если вы и ваш друг одновременно нажмете на кнопку, то лампочки либо загораются, либо гаснут. При этом, если у вас лампочка горит, то вы точно знаете, что у вашего друга она не горит, и наоборот. Вы с другом уезжаете в разные города/страны и по телефону договариваетесь, что каждую секунду вы нажимаете на кнопку и, если лампочка горит, то записываете в блокнот 1, а если не горит, то 0. Через некоторое время у вас и у вашего друга получается случайная последовательность 0 и 1, которую можно использовать в качестве ключа.
Если вы захотите передать сообщение, то вы должны заменить в своей последовательности все 0 на 1, а все 1 на 0, чтобы у вас и у вашего друга был один и тот же ключ. Дальше вы просто переводите эту последовательность из двоичной, в обычные символы, шифруете ими сообщение и передаете это сообщение по тому же телефону, например.
Это не единственный способ квантового шифрования, но он самый простой. (Если интересно можете сами почитать в интернете о способе, основанном на поляризации фотонов).