Русская Википедия:WireGuard

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Программа WireGuardкоммуникационный протокол и бесплатное программное обеспечение с открытым исходным кодом, который реализует зашифрованные виртуальные частные сети (VPN). Он был разработан для простого использования технологии VPN, высокой производительности и низкой поверхности атаки[1]. WireGuard нацелен на лучшую производительность и большую мощность, чем IPsec и OpenVPN, два других распространенных протокола туннелирования[2]. Протокол WireGuard передаёт трафик по протоколу UDP[3].

В марте 2020 года версия программного обеспечения для Linux достигла стабильного производственного выпуска и была включена в ядро Linux 5.6, а также была перенесена на более ранние ядра Linux в некоторых дистрибутивах Linux[4]. Компоненты ядра Linux распространяются под лицензией GNU General Public License 2-й версии (GPLv2). Другие реализации также находятся под GPLv2 или другими бесплатными лицензиями с открытым исходным кодом[1].

Протокол

WireGuard использует[5]:

В мае 2019 года исследователи из INRIA опубликовали проверенное машиной доказательство протокола WireGuard, созданное с помощью помощника по проверке Шаблон:Не переведено 5[7].

Дополнительный режим общего симметричного ключа

WireGuard поддерживает режим Шаблон:Не переведено 5, который обеспечивает дополнительный уровень симметричного шифрования для предотвращения уязвимостей перед будущими достижениями в области квантовых вычислений. Это устраняет риск того, что трафик может храниться до тех пор, пока квантовые компьютеры не смогут взломать Curve25519. Как это произойдёт, трафик может быть расшифрован. Заранее установленные ключи совместного использования «обычно хлопотные с точки зрения управления ключами и могут быть украдены», но в краткосрочной перспективе, если симметричный ключ скомпрометирован, ключи Curve25519 по-прежнему обеспечивают более чем достаточную защиту[8].

Нетворкинг

WireGuard использует только UDP[9][5] из-за чего он не работает в сетях, которые блокируют UDP-трафик. Это отличает WireGuard от его альтернатив, таких как OpenVPN, из-за множества недостатков маршрутизации TCP-over-TCP[9][10].

WireGuard полностью поддерживает IPv6 как внутри, так и снаружи туннеля. Он поддерживает только третий уровень как для IPv4, так и для IPv6 и может инкапсулировать v4-in-v6 и наоборот[11].

WireGuard поддерживает несколько топологий:

  • Точка-точка (сеть)
  • Звезда (сервер/клиент)
    • Конечную точку клиента не нужно определять до того, как клиент начнет отправлять данные
    • Конечные точки клиента могут быть статически предопределены
  • Mesh (сеть)

Поскольку WireGuard поддерживает сеть точка-точка, можно делать и другие топологии, но не в том же туннеле.

Расширяемость

WireGuard предназначен для расширения сторонними программами и скриптами. Расширенные функции WireGuard включают в себя: более удобные интерфейсы управления (включая более простую настройку ключей), ведение журнала, динамические обновления брандмауэра и интеграцию с LDAP.

Исключение таких сложных функций из минимальной кодовой базы повышает её стабильность и безопасность. Для обеспечения безопасности WireGuard ограничивает варианты реализации криптографических элементов управления, выбор процессов обмена ключами, а также сопоставляет алгоритмы с небольшим подмножеством современных криптографических примитивов. Если в каком-либо из примитивов обнаружена ошибка, может быть выпущена новая версия, которая устраняет проблему. Кроме того, непривилегированные пользователи не могут изменять параметры конфигурации, влияющие на безопасность всего приложения[12].

Доступность

Реализации

Реализации протокола WireGuard включают:

  • Первоначальная реализация Доненфельда, написанная на C и Go[13].
  • BoringTun от Cloudflare — реализация пользовательского пространства, написанная на Rust[14][15].
  • Реализация Мэтта Данвуди для OpenBSD, написанная на C[16].
  • Реализация wg(4) Рёты Одзаки для NetBSD, написаная на C[17].
  • Реализация FreeBSD, написанная на C. Имеет тот же путь данных, что и реализация OpenBSD[18].
  • Собственная реализация ядра Windows под названием wireguard-nt с августа 2021 года[19].
  • OPNsense через стандартный пакет os-WireGuard[20].
  • pfSense через экспериментальный дополнительный пакет для pfSense Plus 21.05, pfSense CE 2.5.2 и более поздних версий.

Поддержка Linux

Программы пользовательского пространства, поддерживающие WireGuard, включают:

История

Ранние срезы кодовой базы существуют с 30 июня 2016 года[42]. Четырьмя первыми пользователями WireGuard были VPN-сервисы Mullvad[43], AzireVPN[44], Шаблон:Не переведено 5[45] и cryptostorm[46]. WireGuard получил пожертвования от Mullvad, Private Internet Access, IVPN, Шаблон:Не переведено 5[47] и OVPN[48].

По состоянию на июнь 2018 года разработчики WireGuard советуют рассматривать код и протокол как экспериментальные и предупреждают, что они еще не достигли стабильного выпуска, совместимого с отслеживанием CVE любых уязвимостей безопасности, которые могут быть обнаружены[49][50].

9 декабря 2019 года Дэвид Миллер, основной сопровождающий сетевого стека Linux, принял патчи WireGuard в дерево, сопровождающее net-next, для включения в грядущее ядро[51][52][53].

28 января 2020 года Линус Торвальдс объединил дерево net-next Дэвида Миллера, и WireGuard вошёл в основное дерево ядра Linux[54].

20 марта 2020 года разработчики Debian включили параметры сборки модуля для WireGuard в своей конфигурации ядра для версии Debian 11 (тестирование)[55].

29 марта 2020 года WireGuard был включён в дерево выпусков Linux 5.6. Версия программного обеспечения для Windows остается бета-версией[4].

30 марта 2020 года разработчики Android добавили встроенную поддержку ядра WireGuard в свой общий образ ядра[56].

22 апреля 2020 года разработчик NetworkManager Бениамино Гальвани объединил поддержку графического интерфейса для WireGuard[57].

12 мая 2020 года Мэтт Данвуди предложил исправления для встроенной поддержки ядра WireGuard в OpenBSD[58].

22 июня 2020 года, после работы Мэтта Данвуди и Джейсона Доненфельда, поддержка WireGuard была импортирована в OpenBSD[59].

23 ноября 2020 г. Джейсон Доненфельд выпустил обновление пакета Windows, улучшающее установку, стабильность, поддержку ARM и корпоративные функции[60].

29 ноября 2020 года поддержка WireGuard была импортирована в ядро FreeBSD 13[18].

19 января 2021 года поддержка WireGuard была добавлена для предварительной версии в моментальные снимки разработки pfSense Community Edition (CE) 2.5.0[61].

В марте 2021 года поддержка WireGuard в режиме ядра была удалена из FreeBSD 13.0, которая все ещё находилась в стадии тестирования, после того, как срочная очистка кода в FreeBSD WireGuard не могла быть быстро завершена[62]. PfSense Community Edition (CE) 2.5.0 и pfSense Plus 21.02 на основе FreeBSD также удалили WireGuard на основе ядра[63].

В мае 2021 года поддержка WireGuard была вновь введена в моментальные снимки разработки pfSense CE и pfSense Plus в виде экспериментального пакета, написанного членом сообщества pfSense Кристианом Макдональдом. Пакет WireGuard для pfSense включает текущую работу Джейсона Доненфельда по разработке WireGuard в режиме ядра, которая первоначально спонсировалась Netgate[64][61][65].

В июне 2021 года официальные репозитории пакетов для pfSense CE 2.5.2 и pfSense Plus 21.05 включали пакет WireGuard[66].

Приём

WireGuard стремится обеспечить простую и эффективную реализацию виртуальной частной сети. Обзор, проведенный Ars Technica в 2018 году, показал , что популярные технологии VPN, такие как OpenVPN и IPsec, часто сложны в настройке, легко отключаются (при отсутствии дальнейшей настройки), требуют значительного времени для согласования повторных подключений, могут использовать устаревшие шифры и имеют относительно большие кодовые базы более 400 000 и 600 000 строк кода соответственно, что затрудняет отладку[67]. Дизайн WireGuard направлен на уменьшение этих проблем, чтобы сделать туннель более безопасным и простым в управлении по умолчанию. Используя версии криптографических пакетов, он фокусируется на шифрах, которые считаются одними из самых безопасных текущих методов шифрования, и на момент обзора Ars Technica его кодовая база насчитывала около 4000 строк кода ядра, что составляет около 1% OpenVPN или IPsec, тем самым, упрощая аудит информационной безопасности.

WireGuard получил высокую оценку создателя ядра Linux Линуса Торвальдса, который заявил, что это «произведение искусства» в отличие от OpenVPN и IPsec[68].

Ars Technica сообщила, что при тестировании стабильные туннели были легко созданы с помощью WireGuard по сравнению с альтернативами, и отметила, что после использования WireGuard будет «трудно вернуться» к длительным задержкам повторного подключения по сравнению с мгновенным повторным подключением WireGuard[67].

Сенатор от штата Орегон Рон Уайден рекомендовал Национальному институту стандартов и технологий (NIST) оценить WireGuard как замену существующим технологиям, таким как IPsec и OpenVPN[69].

Примечания

Шаблон:Примечания

Шаблон:VPN

  1. 1,0 1,1 Шаблон:Cite web
  2. Шаблон:Книга
  3. Шаблон:Cite web
  4. 4,0 4,1 Шаблон:Cite web
  5. 5,0 5,1 Шаблон:Cite web
  6. Шаблон:Cite web
  7. Шаблон:Статья
  8. Шаблон:Cite web
  9. 9,0 9,1 Шаблон:Cite web
  10. Шаблон:Cite web
  11. Шаблон:Cite web
  12. Шаблон:Cite web
  13. Шаблон:Cite web
  14. Шаблон:Cite web
  15. Шаблон:Cite web
  16. Шаблон:Cite web
  17. Шаблон:Cite web
  18. 18,0 18,1 Шаблон:Cite web
  19. Шаблон:Cite web
  20. Шаблон:Cite web
  21. Шаблон:Cite web
  22. Шаблон:Cite web
  23. Шаблон:Cite web
  24. Шаблон:Cite web
  25. Шаблон:Cite web
  26. Шаблон:Cite web
  27. Шаблон:Cite web
  28. Шаблон:Cite web
  29. Шаблон:Cite web
  30. Шаблон:Cite web
  31. Шаблон:Cite web
  32. Шаблон:Cite web
  33. Шаблон:Cite web
  34. Шаблон:Cite web
  35. Шаблон:Cite web
  36. Шаблон:Cite web
  37. Шаблон:Cite web
  38. Шаблон:Cite web
  39. Шаблон:Cite web
  40. Шаблон:Cite web
  41. Шаблон:Cite web
  42. Шаблон:Cite web
  43. Шаблон:Cite web
  44. Шаблон:Cite web
  45. Шаблон:Cite web
  46. Шаблон:Cite web
  47. Шаблон:Cite web
  48. Шаблон:Cite web
  49. Шаблон:Cite web
  50. Шаблон:Cite web
  51. Шаблон:Cite web
  52. Шаблон:Cite web
  53. Шаблон:Cite web
  54. Шаблон:Cite web
  55. Шаблон:Cite web
  56. Шаблон:Cite web
  57. Шаблон:Cite web
  58. Шаблон:Cite web
  59. Шаблон:Cite web
  60. Шаблон:Cite web
  61. 61,0 61,1 Шаблон:Cite web
  62. Шаблон:Cite web
  63. Шаблон:Cite web
  64. Шаблон:Cite web
  65. Шаблон:Cite web
  66. Шаблон:Cite web
  67. 67,0 67,1 Шаблон:Cite web
  68. Шаблон:Cite web
  69. Шаблон:Cite web