Запускаем эмуляцию квантового шифрования в облаке на открытом ПО

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

Что такое квантовое шифрование на практике

Когда говорят о квантовом шифровании, чаще всего имеют в виду не шифрование данных, а квантовое распределение ключей. Это метод, при котором две стороны создают общий секретный ключ, используя фундаментальные законы квантовой физики. Любая попытка перехватить фотоны, несущие ключ, необратимо изменит их состояние, что будет сразу обнаружено. Это делает подслушивание теоретически невозможным.

Полноценный QKD требует специального оборудования: лазеров, детекторов одиночных фотонов, оптоволоконных линий. Однако протоколы, лежащие в его основе,, это математика и алгоритмы. Их можно эмулировать на обычных компьютерах. Такой подход не даёт физической безопасности, но позволяет глубоко изучить логику работы, этапы протокола и подготовить ПО для будущего развёртывания на реальном железе.

Выбор компонентов: open-source стек

Для эксперимента не требуется покупать лицензии. Весь стек строится на открытом ПО.

  • Протокол: BB84. Это классический протокол, на котором построены многие коммерческие системы. Его логика относительно проста для понимания и реализации.
  • Библиотека для эмуляции: Qiskit (Python). Хотя это фреймворк для квантовых вычислений, его компоненты для работы с кубитами идеально подходят для симуляции передачи квантовых состояний. Альтернатива — библиотека QuTiP.
  • Облачная платформа: Yandex Cloud или VK Cloud Solutions. У них есть бесплатные гранты для новых пользователей или инстансы с низкими тарифами, которых хватит для тестов. Важно: для соответствия 152-ФЗ данные должны оставаться в юрисдикции РФ, что эти платформы обеспечивают.
  • Инфраструктура как код: Terraform (от HashiCorp). Позволяет описать создание виртуальных машин, сетей и правил безопасности декларативно. Конфигурации, это код, который можно хранить в Git.

Этот набор даёт полный цикл: от описания инфраструктуры до запуска симуляции протокола.

Подготовка облачной инфраструктуры

Первым делом нужно создать изолированное окружение для двух узлов — условно «Алиса» и «Боб». Они будут общаться через защищённый канал, имитирующий квантовый и классический.

Создаём конфигурацию Terraform для облачного провайдера. Основные объекты:

  • Две виртуальные машины (например, на 2 vCPU, 4 ГБ RAM).
  • Виртуальная частная сеть (VPC) для их соединения.
  • Группы безопасности, разрешающие обмен только по определённым портам между этими машинами и блокирующие весь внешний трафик.

После применения конфигурации получаем два сервера с внутренними IP-адресами. Все настройки сохраняются в файлах, что соответствует принципам документирования и воспроизводимости, важным для аттестации по ФСТЭК.

Эмуляция протокола BB84 на Python

На каждой машине запускается Python-скрипт. Задача Алисы — сгенерировать последовательность случайных битов (ключ) и случайных баз (способов измерения). Для каждого бита она «готовит» квантовое состояние (кубит) в выбранной базе и «отправляет» его Бобу. В эмуляции «отправка», это передача описания состояния по сети.

Боб получает состояния и измеряет их в случайно выбранных им самим базах. Затем через классический канал (например, SSH-туннель) Алиса и Боб открыто сравнивают, в каких случаях базы совпали. Только биты, измеренные в одинаковых базисах, становятся частьом сырого ключа.

# Пример фрагмента кода на Qiskit для генерации кубита в базе X
from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_bloch_multivector
import numpy as np

# Алиса выбирает бит и базу
bit_alice = np.random.randint(0, 2)
base_alice = np.random.choice(['Z', 'X'])

qc = QuantumCircuit(1, 1)
if bit_alice == 1:
    qc.x(0)  # Применяем X-гейт для состояния |1>
if base_alice == 'X':
    qc.h(0)  # Применяем Адамара для перехода в базис X

# Состояние "отправляется" Бобу (в эмуляции, это объект qc)
print(f"Алиса: бит={bit_alice}, база={base_alice}")

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

Интеграция с классической криптографией

Полученный в результате протокола ключ, это просто строка битов. Сам по себе он бесполезен. Его ценность — в использовании с классическими алгоритмами симметричного шифрования, такими как AES-256 или ГОСТ 28147-89. Схема выглядит так:

  1. Алиса и Боб выполняют эмулированный QKD-протокол и получают общий секретный ключ K.
  2. Алиса шифрует сообщение M с помощью алгоритма AES-256 в режиме GCM, используя ключ K.
  3. Зашифрованный текст C отправляется Бобу по обычному каналу.
  4. Боб использует тот же ключ K для расшифровки C и получения M.

Безопасность всей цепочки теперь зависит от квантового канала, который создал K. Если эмуляцию заменить на реальные фотонные детекторы, получится гибридная система, соответствующая идеологии «квантово-устойчивой» защиты.

Вопросы регуляторики: ФСТЭК и 152-ФЗ

С точки зрения российских регуляторов, использование квантовых технологий для защиты информации пока находится в серой зоне. ФСТЭК сертифицирует средства криптографической защиты информации, и в перечне СКЗИ нет решений на основе QKD. Это означает, что сегодня нельзя заменить сертифицированный VPN или HTTPS на квантовый канал для защиты персональных данных в информационной системе.

Однако эксперимент имеет ценность для будущего. ФСТЭК выпускает методические рекомендации по защите от угроз, связанных с квантовыми компьютерами. Знание протоколов и возможность развернуть тестовый стенд, это подготовительный этап. даже с реальным QKD остаётся проблема «последней мили»: ключ генерируется между двумя устройствами, но для его использования в приложении нужна интеграция, которая сама может стать уязвимостью.

С точки зрения 152-ФЗ, оператор персональных данных обязан использовать СКЗИ, прошедшие процедуру соответствия. Пока QKD-системы её не прошли. Но сама по себе эмуляция на облачных инстансах, если не обрабатывает реальные ПДн, не подпадает под действие закона, это исследовательская деятельность.

Ограничения и подводные камни

Главный подводный камень — иллюзия безопасности. Эмуляция на классических компьютерах не обеспечивает тех свойств, за которые ценят QKD. Атака «человек посередине» на этапе установления классического канала остаётся возможной. Скрипты также уязвимы к типовым уязвимостям: инъекциям, разглашению ключей в логах, неправильной генерации случайных чисел.

Производительность — ещё один фактор. Генерация и симуляция тысяч кубитов для длинного ключа может загрузить CPU. На бесплатных инстансах с ограниченными ресурсами это быстро упрётся в лимиты.

Наконец, совместимость. Библиотеки вроде Qiskit активно развиваются, и код, написанный для одной версии, может сломаться в другой. Для промышленного использования это критично.

Что это даёт на самом деле

Этот эксперимент не решает проблему защиты завтрашнего дня. Он решает задачу понимания. Когда появляется новый термин, окружённый маркетингом, лучший способ разобраться — собрать его из доступных деталей.

Вы получаете:

  • Практическое понимание этапов BB84: подготовка, измерение, сверка баз, коррекция ошибок.
  • Навык работы с облачной инфраструктурой как код, что само по себе полезно для построения отказоустойчивых систем.
  • Основа для будущих проектов. Когда сертифицированные QKD-системы появятся на рынке, у вас уже будет прототип для интеграции.
  • Возможность критически оценивать заявления вендоров о «квантовой безопасности».

Технология пока не готова для массового внедрения в регулируемых отраслях. Но готовность инженера к её появлению, это уже преимущество.

Оставьте комментарий