Jump to content

WireGuard

WireGuard
Оригинальный автор(ы) Джейсон А. Доненфельд
Разработчик(и) Джейсон А. Доненфельд
Первоначальный выпуск 2015 ; 9 лет назад ( 2015 ) [1]
Стабильная версия
1.0.20220627 [2]  Отредактируйте это в Викиданных / 27 июня 2022 г .; 2 года назад ( 27 июня 2022 )
Репозиторий
Написано в C ( Linux , модули ядра FreeBSD , NetBSD , драйверы ядра OpenBSD , Windows драйверы ядра ), Go (реализация пользовательского пространства)
Операционная система
Тип Виртуальная частная сеть
Лицензия различные бесплатные и с открытым исходным кодом
Веб-сайт www .wireguard Отредактируйте это в Викиданных

WireGuard — это протокол связи и бесплатное программное обеспечение с открытым исходным кодом , которое реализует зашифрованные виртуальные частные сети (VPN). [5] Он призван быть легче и эффективнее, чем IPsec и OpenVPN , два распространенных протокола туннелирования . [6] Протокол WireGuard передает трафик через UDP . [7]

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

Название WireGuard является зарегистрированной торговой маркой Джейсона А. Доненфельда. [5]

Протокол

[ редактировать ]

WireGuard использует следующее: [8]

В мае 2019 года исследователи из INRIA опубликовали машинно проверенное доказательство протокола WireGuard, созданное с помощью CryptoVerif помощника по проверке доказательств . [9]

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

[ редактировать ]

WireGuard поддерживает режим симметричного ключа с предварительным общим ключом, который обеспечивает дополнительный уровень симметричного шифрования для смягчения будущих достижений в области квантовых вычислений. Это устраняет риск того, что трафик может храниться до тех пор, пока квантовые компьютеры не смогут взломать Curve25519 , после чего трафик можно будет расшифровать. Предварительно общие ключи «обычно проблематичны с точки зрения управления ключами и с большей вероятностью могут быть украдены», но в краткосрочной перспективе, если симметричный ключ будет скомпрометирован, ключи Curve25519 все равно обеспечат более чем достаточную защиту. [10]

WireGuard использует только [11] УДП , [5] из-за потенциальных недостатков TCP-over-TCP. [11] [12] [13] Туннелирование TCP через TCP-соединение известно как «TCP-over-TCP», и это может привести к резкому снижению производительности передачи (проблема, известная как «TCP-сбой»). Сбой TCP происходит, когда одно TCP-соединение накладывается поверх другого. Нижний уровень может обнаружить проблему и попытаться компенсировать ее, а уровень выше него затем из-за этого выполняет сверхкомпенсацию, и эта сверхкомпенсация вызывает указанные задержки и ухудшение производительности передачи.

Его порт сервера по умолчанию — UDP 51820.

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

MAN над головой

[ редактировать ]

Накладные расходы WireGuard распределяются следующим образом: [15]

  • 20-байтовый заголовок IPv4 или 40-байтовый заголовок IPv6.
  • 8-байтовый UDP-заголовок
  • 4-байтовый тип
  • 4-байтовый индекс ключа
  • 8-байтовый одноразовый номер
  • N-байтовые зашифрованные данные
  • 16-байтовый тег аутентификации

Эксплуатационные аспекты MTU

[ редактировать ]

Предполагая, что базовая сеть, транспортирующая пакеты WireGuard, поддерживает MTU размером 1500 байт, настройка интерфейса WireGuard на MTU 1420 байт для всех участвующих узлов идеально подходит для транспортировки трафика IPv6 + IPv4. Однако при передаче исключительно устаревшего трафика IPv4 достаточно более высокого MTU в 1440 байт для интерфейса WireGuard. [15]

С точки зрения эксплуатации и обеспечения единообразия конфигурации сети было бы выгодно настроить 1420 MTU для всей сети для интерфейсов WireGuard. Такой подход обеспечивает согласованность и способствует более плавному переходу к включению IPv6 для узлов и интерфейсов WireGuard в будущем.

Предостережение

[ редактировать ]

Могут возникнуть ситуации, когда, например, одноранговый узел находится за сетью с MTU 1500 байт, а второй одноранговый узел находится за беспроводной сетью, такой как сеть LTE , где часто оператор связи предпочитает использовать MTU, который намного меньше. более 1420 байт — в таких случаях базовый сетевой стек IP хоста будет фрагментировать инкапсулированный пакет UDP и отправлять пакеты через него, однако пакеты внутри туннеля останутся согласованными и не будут нуждаться в фрагментации, поскольку PMTUD обнаружит MTU. между узлами (в данном примере это будет 1420 байт) и отправлять пакеты фиксированного размера между узлами.

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

[ редактировать ]

WireGuard предназначен для расширения с помощью сторонних программ и скриптов. Это было использовано для расширения WireGuard различными функциями, включая более удобные интерфейсы управления (включая более простую настройку ключей), ведение журнала, динамические обновления брандмауэра, динамическое назначение IP-адресов, [16] и интеграция с LDAP . [ нужна ссылка ]

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

Обзор, проведенный Ars Technica, показал, что WireGuard прост в настройке и использовании, использует надежные шифры и имеет минимальную кодовую базу, обеспечивающую небольшую поверхность атаки. [17]

WireGuard получил финансирование от Фонда открытых технологий . [18] и пожертвования от Mullvad , Private Internet Access , IVPN , NLnet Foundation. [19] и ОВПН. [20]

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

Доступность

[ редактировать ]

Реализации

[ редактировать ]

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

  • Первоначальная реализация Доненфельда, написанная на C и Go. [22]
  • Cloudflare BoringTun от — реализация пользовательского пространства , написанная на Rust . [23] [24]
  • Реализация Мэтта Данвуди для OpenBSD, написанная на C. [25]
  • Реализация wg(4) Рёты Одзаки для NetBSD, написанная на C. [26]
  • Реализация FreeBSD написана на C и использует большую часть пути к данным совместно с реализацией OpenBSD. [27]
  • Собственная реализация ядра Windows под названием «wireguard-nt» с августа 2021 года. [28]
  • Модемы-маршрутизаторы AVM Fritz!Box, поддерживающие Fritz!OS версии 7.39 и выше. Разрешает межсайтовые соединения WireGuard, начиная с версии 7.50. [29]

Ранние снимки базы кода существуют с 30 июня 2016 года. [30] Четырьмя ранними пользователями WireGuard были поставщики услуг VPN Mullvad . [31] АзиреVPN, [32] VPN [33] и криптошторм. [34]

9 декабря 2019 года Дэвид Миллер, основной специалист по сопровождению сетевого стека Linux, принял исправления WireGuard в дерево сопровождающих «net-next» для включения в будущее ядро. [35] [36] [37]

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

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

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

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

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

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

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

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

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

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

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

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

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

Германии В 2023 году WireGuard получила поддержку в размере более 200 000 евро от Суверенного технического фонда . [52]

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Не на всех платформах может быть выпущена текущая версия, а некоторые могут находиться в стадии бета-тестирования. [ нужно обновить? ]
  1. ^ Грауэр, Яэль (16 января 2021 г.). «Как попытка одного хакера обеспечить безопасность Интернета стала важной частью операционных систем Mac, Linux и Windows» . Бизнес-инсайдер . Проверено 25 ноября 2022 г.
  2. ^ https://git.zx2c4.com/wireguard-linux-compat/tag/?h=v1.0.20220627 . Проверено 4 ноября 2022 г. {{cite web}}: Отсутствует или пусто |title= ( помощь )
  3. ^ «Установка» . WireGuard . Проверено 23 апреля 2020 г.
  4. ^ Перейти обратно: а б с Солтер, Джим (30 марта 2020 г.). «WireGuard VPN доходит до версии 1.0.0 и следующего ядра Linux» . Архивировано из оригинала 31 марта 2020 года . Проверено 23 апреля 2020 г.
  5. ^ Перейти обратно: а б с д «WireGuard: быстрый, современный и безопасный VPN-туннель» . WireGuard. Архивировано из оригинала 28 апреля 2018 года . Проверено 31 марта 2021 г.
  6. ^ Пренил, Барт; Веркаутерен, Фредерик, ред. (11 июня 2018 г.). Прикладная криптография и сетевая безопасность . Спрингер. ISBN  978-3-319-93387-0 . Архивировано из оригинала 18 февраля 2019 года . Проверено 25 июня 2018 г.
  7. ^ Перейти обратно: а б Доненфельд, Джейсон А. «Известные ограничения — WireGuard» . www.wireguard.com . Проверено 1 июня 2020 г.
  8. ^ Перейти обратно: а б Доненфельд, Джейсон А. «Протокол и криптография — WireGuard» . www.wireguard.com . Проверено 14 мая 2023 г.
  9. ^ Липп, Бенджамин; Бланше, Бруно; Бхаргаван, Картикеян (2019), Механизированное криптографическое доказательство протокола виртуальной частной сети WireGuard (отчет), Отчет об исследовании RR-9269, Париж: Inria, стр. 49, зал-02100345
  10. ^ Доненфельд, Джейсон (2 мая 2021 г.). «WireGuard: сетевой туннель ядра следующего поколения» (PDF) . Wireguard.com .
  11. ^ Перейти обратно: а б Доненфельд, Джейсон А. «Известные ограничения — WireGuard» . www.wireguard.com . Проверено 2 мая 2021 г.
  12. ^ Титц, Олаф (23 апреля 2001 г.). «Почему TCP поверх TCP — плохая идея» . Проверено 17 октября 2015 г.
  13. ^ Хонда, Осаму; Осаки, Хироюки; Имасе, Макото; Исидзука, Мика; Мураяма, Дзюнъити (октябрь 2005 г.). «Понимание TCP через TCP: влияние туннелирования TCP на сквозную пропускную способность и задержку». В Атикуззамане, Мохаммед; Баландин, Сергей I (ред.). Производительность, качество обслуживания и управление коммуникационными и сенсорными сетями следующего поколения III . Том. 6011. Бибкод : 2005SPIE.6011..138H . CiteSeerX   10.1.1.78.5815 . дои : 10.1117/12.630496 . S2CID   8945952 .
  14. ^ Доненфельд, Джейсон А. «Введение и мотивация» (PDF) . WireGuard: Сетевой туннель ядра следующего поколения (PDF) . Архивировано (PDF) из оригинала 4 марта 2018 г.
  15. ^ Перейти обратно: а б Доненфельд, Джейсон А. (11 декабря 2017 г.). «[WireGuard] Размеры заголовка / MTU для Wireguard» . Проверено 13 января 2024 г.
  16. ^ Инструмент динамической настройки IP Wireguard , WireGuard, 14 мая 2023 г. , получено 14 мая 2023 г.
  17. ^ Солтер, Джим (26 августа 2018 г.). «Обзор WireGuard VPN: новый тип VPN предлагает серьезные преимущества» . Арс Техника . Архивировано из оригинала 20 сентября 2018 года.
  18. ^ «Создание более безопасного, доступного и отказоустойчивого протокола WireGuard VPN» . www.opentech.fund . Проверено 20 июня 2022 г.
  19. ^ «Пожертвования» . WireGuard. Архивировано из оригинала 28 апреля 2018 года . Проверено 28 апреля 2018 г.
  20. ^ «OVPN делает пожертвования на поддержку WireGuard» . ОВПН . 23 марта 2020 г.
  21. ^ «Сенатор США рекомендует NIST WireGuard с открытым исходным кодом для правительственной VPN» . Фороникс . 30 июня 2018 года. Архивировано из оригинала 5 августа 2018 года . Проверено 5 августа 2018 г.
  22. ^ Доненфельд, Джейсон (7 июня 2019 г.). «WireGuard: быстрый, современный и безопасный VPN-туннель» . Проверено 16 июня 2019 г.
  23. ^ Краснов Влад (18 декабря 2018 г.). «BoringTun, реализация WireGuard в пользовательском пространстве в Rust» . Блог Cloudflare . Архивировано из оригинала 4 апреля 2019 года . Проверено 29 марта 2019 г.
  24. ^ «CloudFlare запускает «BoringTun» как написанную на Rust реализацию WireGuard в пользовательском пространстве» . phoronix.com . Проверено 29 марта 2019 г.
  25. ^ Йоханссон, Янне (21 июня 2020 г.). «WireGuard импортирован в OpenBSD» .
  26. ^ «wg(4) — Страницы руководства NetBSD» . 20 августа 2020 г.
  27. ^ Перейти обратно: а б «Импортировать поддержку WireGuard ядра» .
  28. ^ «WireGuardNT, высокопроизводительная реализация WireGuard для ядра Windows» . 2 августа 2021 г.
  29. ^ «WireGuard: VPN еще никогда не был таким простым» .
  30. ^ «Индекс /Монолитно-исторический/» .
  31. ^ Мейсон, Джон (13 февраля 2019 г.). «Муллвад Обзор» . thebestwpn . 2. Надежные протоколы туннелирования — OpenVPN и WireGuard. Архивировано из оригинала 24 июня 2019 года . Проверено 8 апреля 2019 г.
  32. ^ Мейсон, Джон (19 февраля 2019 г.). «Обзор AzireVPN» . thebestvpn . 2. Впечатляющие протоколы и шифрование. Архивировано из оригинала 8 мая 2019 года . Проверено 8 апреля 2019 г.
  33. ^ Пестель, Ник (11 декабря 2018 г.). «Представляем Wireguard» . Проверено 22 сентября 2019 г.
  34. ^ «Добавлена ​​поддержка WireGuard!» . блог криптошторма . 5 апреля 2019 года. Архивировано из оригинала 9 декабря 2019 года . Проверено 9 декабря 2019 г.
  35. ^ «e7096c131e5161fa3b8e52a650d7719d2857adfd — pub/scm/linux/kernel/git/davem/net-next — Git в Google» . ядро.googlesource.com .
  36. ^ «LKML: Дэвид Миллер: Re: [PATCH net-next v2] net: безопасный сетевой туннель WireGuard» . lkml.org .
  37. ^ «[ОБЪЯВЛЕНИЕ] WireGuard объединен с net-next, на пути к Linux 5.6» . 9 января 2020 г. Архивировано из оригинала 9 января 2020 г.
  38. ^ Торвальдс, Линус. «индекс: ядро/git/torvalds/linux.git» . Дерево исходного кода ядра Linux . Кернел.орг . Проверено 2 февраля 2020 г.
  39. ^ «драйверы/сеть: включить WIREGUARD как модуль» . 21 марта 2020 г.
  40. ^ «ANDROID: GKI: включить CONFIG_WIREGUARD» .
  41. ^ «Объединить ветку 'bg/wireguard' (d321d0df) · Фиксировать · GNOME / network-manager-applet» . gitlab.gnome.org . 22 апреля 2020 г. Проверено 30 мая 2020 г.
  42. ^ «Опубликованы исправления ядра WireGuard для OpenBSD» . 12 мая 2020 г.
  43. ^ «Добавить wg(4), драйвер ядра для связи WireGuard VPN» .
  44. ^ «[АНОНС] WireGuard для Windows 0.3: поддержка ARM, корпоративные функции и многое другое» . 23 ноября 2020 г.
  45. ^ «WireGuard для программного обеспечения pfSense» .
  46. ^ Андерсон, Тим (23 марта 2021 г.). «FreeBSD 13.0 будет поставляться без поддержки WireGuard, поскольку разработчики вмешаются, чтобы исправить «серьезные проблемы» с первоначальной реализацией» . Регистр . Ситуация Публикация . Проверено 31 марта 2021 г.
  47. ^ Томпсон, Джим (18 марта 2021 г.). «WireGuard удален из программного обеспечения pfSense® CE и pfSense® Plus» . Блог Нетгейта . Рубикон Коммуникейшнс . Проверено 20 марта 2021 г.
  48. ^ Лонг, Скотт (5 мая 2021 г.). «pfSense: WireGuard возвращается в виде экспериментального пакета» . Netgate — безопасные сети начинаются здесь . Проверено 9 июня 2021 г.
  49. ^ Паксон, Аудиан (19 января 2021 г.). «WireGuard для программного обеспечения pfSense» . Netgate — безопасные сети начинаются здесь . Проверено 9 июня 2021 г.
  50. ^ «wireguard-freebsd — реализация WireGuard для ядра FreeBSD» . git.zx2c4.com . Проверено 9 июня 2021 г.
  51. ^ Пингл, Джим (2 июня 2021 г.). «pfSense Plus 21.05-РЕЛИЗ уже доступен» . Netgate — безопасные сети начинаются здесь . Проверено 9 июня 2021 г.
  52. ^ «ВайрГард» . Суверенный технологический фонд . Проверено 26 мая 2024 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b2d61ab1ca01c2a4091912802c09524e__1720620180
URL1:https://arc.ask3.ru/arc/aa/b2/4e/b2d61ab1ca01c2a4091912802c09524e.html
Заголовок, (Title) документа по адресу, URL1:
WireGuard - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)