Skip to content

Latest commit

 

History

History
71 lines (58 loc) · 10.3 KB

intro.md

File metadata and controls

71 lines (58 loc) · 10.3 KB

Разработка и развитие отечественной версии протокола WireGuard

В настоящее время в области защищенных сетевых технологий активно исследуются, разрабатываются и применяются протоколы семейства Noise Protocol Framework. Основным протоколом здесь является WireGuard, с недавнего времени входящий в ядро Linux.

WireGuard - это свободно-распростряняемое программное обеспечение с открытым исходным кодом, предназначенное для замены устаревших IPsec и OpenVPN. Несомненными достоинствами WireGuard по сравнению со схожими по назначению программными средствами с открытым исходным кодом такими как OpenVPN, Strongswan, Libreswan, Linux XFRM и другими системами с закрытым исходным кодом, реализующими технологии VPN на базе IPsec, являются:

  • Небольшой размер исходного кода (примерно 3800 LoC на момент июня 2020)
  • Простота дизайна протокола и его конечно-автоматной модели (state machine) и, как следствие, достижимость простой программной реализации на практике
  • Наличие встроенных в протокол средств защиты от DoS-атак, сетевого сканирования и фаззинга
  • Относительная простота верификации как протокола, так и его программной реализации
  • Соответствие современным криптографическим требованиям
  • Высокая производительность
  • Формальная верификация свойств безопасности протокола: считается, что протокол WireGuard в текущей версии, использующей Curve25519, верифицирован

В настоящее время в зарубежной программной разработке связанной с сетевыми криптографическими протоколами повсеместно внедряются реализации и адаптация протоколов семейства Noise в целом и WireGuard в частности.

Драйверами этих процессов являются:

  • Разработка протоколов пост-квантовой криптографии
  • Развитие технологий SDN/SD-WAN, Service Mesh и MPC.

Кратко перечислим лишь самые основные из них:

  • Протокол nQUIC, созданный компанией Cloudflare и используемый вместо TLS для протокола QUIC, разрабатываемого в качестве замены TCP
  • Пост-квантовая версия протокола WireGuard, использующая пост-квантовые криптографические алгоритмы и не смотря на это показавшая большую производительность чем IPsec на базе Curve25519 или OpenVPN
  • VPN Flannel
  • Применение WireGuard для защиты транспорта в Kubernetes
  • Оверлейная сеть Nebula компании Slack
  • Фрэймворк libp2p

Нам видится крайне логичным разработать российскую версию протокола WireGuard, использующую отечественные криптографические алгоритмы.

В 2019 году в ТК26 было направлено предложение по началу работ для стандартизации Noise/WireGuard. На тот момент этот вопрос никого в Комитете не заинтересовал и поддержки не получил. Не смотря на это, исследовательским подразделением компании BI.ZONE был проведен ряд исследовательских работ по возможности применения криптографических протоколов семейства Noise в облачных и сетевых технологиях:

  • Исследована и обоснована возможность применения пост-квантовых алгоритмов в протоколе QUIC
  • Разработан прототип системы оркестрации WireGuard с использованием пороговой криптографии
  • Исследована возможность построения пороговой версии WireGuard

Поводом к исследованиям по пороговой версии WireGuard стали публикации в 2019 году множества исследований выявивших уязвимости в технологиях HSM, TPM и Intel SGX (например, plundervault). Это свидетельствует как минимум о том, что использование технологий HSM, TPM, TEE само по себе не говорит о защищенности системы. Данные системы сложны в управлении, а их пользователи не имеют полного контроля над ними. В настоящее время альтернативным методом получения подобных функциональных свойств считается применение технологий Multi-Party Computation и Threshold Cryptography в протоколах распределения ключей (key agreement in a threshold setting). Так как BI.ZONE активно исследует возможность применения протоколов Noise в своих сервисах, нас заинтересовала возможность построения пороговой версии протокола, что позволило бы решать задачу обеспечения главных ключей не стандартными способами с помощью HSM и TPM, а с использованием криптографических алгоритмов. С удивлением было обнаружено, что данным вопросом в мире не интересуются, не смотря на то, что уже разработано и активно исследуются пороговые схемы алгоритмов криптографической подписи ECDSA, построенные на том же математическом аппарате.

Причина этого в том, что основным источником таких задач выступают технологии криптовалюты и блокчейн, а не сетевые и облачные технологии.

Разработка пороговой схемы WireGuard позволяет обеспечить безопасность закрытого статического ключа WireGuard для клиента и/или сервера, но не с помощью аппаратных методов защиты, применяемых в HSM, TPM и TEE, а с помощью пороговой криптографии.

Таким образом, в рамках развития и применения WireGuard мы видим следующие актуальные задачи.

Основная задача - это разработка отечественной протокола WireGuard с российскими криптографическими алгоритмами - Ru-WireGuard. Наряду с этой задачей предлагается как минимум учесть при разработке возможность использования пост-квантовых алгоритмов, которые так или иначе будут повсеместно использоваться через несколько лет, а также возможности по использованию пороговых реализаций алгоритмов.

Предлагается следующий план:

  • Разработка варианта протокола WireGuard адаптированного под отечественные криптографические алгоритмы (Ru-WireGuard)
  • Реализация расширяемого прототипа Ru-WireGuard с использованием референсных программных реализаций отечественных криптографических алгоритмов на языках C, Rust, Golang
  • Разработка и исследование пороговой схемы согласования ключа VKO для использования в протоколе WireGuard
  • Реализация протокола Ru-WireGuard с использованием защищенных программных реализаций отечественных криптографических алгоритмов
  • Разработка рекомендаций по использованию российских криптографических алгоритмов в протоколе WireGuard