Недавно в новости, что группа яНемецкие исследователи, разработчики и криптографы опубликовали первую версию проекта Rosenpass., которая разрабатывает механизмы VPN и обмена ключами, устойчивые к атакам квантовых компьютеров.
Розенпасс использует WireGuard VPN под капотом вместе со стандартными алгоритмами шифрования и ключами который используется как транспорт и дополняется защищенными от взлома инструментами обмена ключами на квантовых компьютерах (т.е. Rosenpass дополнительно защищает обмен ключами без изменения алгоритмов работы и методов шифрования WireGuard).
Rosenpass также можно использовать отдельно от WireGuard в виде универсального инструмента обмена ключами, подходящего для защиты других протоколов от атак квантового компьютера.
О Розенпассе
Rosenpass написан на Rust и использует liboqs 1 и libsodium 2, инструмент устанавливает симметричный ключ и предоставляет его WireGuard. Поскольку вы предоставляете WireGuard ключ через функцию PSK, использование Rosenpass+WireGuard не менее криптографически безопасно, чем использование только WireGuard («гибридная безопасность»).
В настоящее время ведутся работы по официальной проверке протокола, криптографические алгоритмы и реализация для обеспечения математического доказательства надежности. На данный момент с помощью ProVerif уже проведен символьный анализ протокола и его базовой реализации на языке Rust.
протокол Rosenpass основан на механизме обмена ключами с постквантовой аутентификацией PQWG. (постквантовый WireGuard), встроенный с помощью криптосистемы МакЭлиса, который устойчив к грубой силе на квантовом компьютере. Ключ, сгенерированный Rosenpass, используется в форме симметричного ключа WireGuard Pre-Shared Key (PSK), реализуя дополнительный уровень защиты для гибридного VPN-подключения.
Rosenpass назначает два порта UDP; если для rosenpass указан порт N, он назначит порт N+1 для WireGuard.
Как и WireGuard, Rosenpass не требует разделения клиентов и серверов. Если вы не укажете параметр listen, Rosenpass и WireGuard будут выбирать случайные порты; это клиентский режим. Если вы не укажете конечную точку, Rosenpass не будет пытаться подключиться к одноранговому узлу, а вместо этого будет ждать одноранговых соединений. Это серверный режим. Вы можете указать оба. Пропускать оба варианта не запрещено, но и не очень полезно.
Rosenpass предоставляет отдельный фоновый процесс который используется для генерации предопределенных ключей WireGuard и безопасного обмена ключами во время процесса рукопожатия с использованием постквантовых криптографических методов.
Как и WireGuard, симметричные ключи в Rosenpass обновляются каждые две минуты. Для защиты соединения используются общие ключи (с каждой стороны генерируется пара открытого и закрытого ключей, после чего участники передают открытые ключи друг другу).
Как и в любом приложении, есть небольшой риск проблем критики безопасности (например, переполнение буфера, удаленное выполнение кода); приложение Rosenpass написано на языке программирования Rust, который гораздо менее подвержен такого рода проблемам. Rosenpass также может записывать ключи в файлы вместо предоставления их WireGuard. С небольшим количеством сценариев режим, независимый от развертывания, можно использовать для запуска вашего приложения в контейнере, виртуальной машине или другом хосте. Этот режим также можно использовать для интеграции инструментов, отличных от WireGuard, с Rosenpass.
Стоит отметить, что у Rosenpass есть некоторые недостатки; он запускается от имени пользователя root, что требует доступа к закрытым ключам WireGuard и Rosenpass, берет на себя управление интерфейсом и работает ровно с одним интерфейсом. Если вы не уверены, следует ли запускать Rosenpass от имени пользователя root, вам следует использовать автономный режим, чтобы создать более безопасную настройку с использованием контейнеров, тюрем или виртуальных машин.
Код инструментария написан на Rust и распространяется под лицензиями MIT и Apache 2.0. Криптографические алгоритмы и примитивы заимствованы из библиотек C liboqs и libsodium.
Опубликованная кодовая база позиционируется как эталонная реализация: на основе предоставленных спецификаций могут быть разработаны альтернативные варианты инструмента с использованием других языков программирования.
Наконец, если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями По следующей ссылке.