WireGuard
![]() | |
Оригинальный автор(ы) | Джейсон А. Доненфельд |
---|---|
Разработчик(и) | Джейсон А. Доненфельд |
Первоначальный выпуск | 2015 [1] |
Стабильная версия | 1.0.20220627 [2] ![]() |
Репозиторий | |
Написано в | C ( Linux , модули ядра FreeBSD , NetBSD , драйверы ядра OpenBSD , Windows драйверы ядра ), Go (реализация пользовательского пространства) |
Операционная система | |
Тип | Виртуальная частная сеть |
Лицензия | различные бесплатные и с открытым исходным кодом |
Веб-сайт | www |
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]
- Curve25519 для обмена ключами
- ChaCha20 для симметричного шифрования
- Poly1305 для кодов аутентификации сообщений
- SipHash24 для ключей хеш-таблицы
- BLAKE2 для криптографической хэш-функции
- HKDF для функции получения ключей
- Только на основе UDP [7]
- Закрытые ключи в кодировке Base64 , открытые ключи и предварительные ключи.
В мае 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]
См. также
[ редактировать ]- Сравнение услуг виртуальных частных сетей
- Secure Shell (SSH) — криптографический сетевой протокол, используемый для защиты служб в незащищенной сети.
Примечания
[ редактировать ]- ^ Не на всех платформах может быть выпущена текущая версия, а некоторые могут находиться в стадии бета-тестирования. [ нужно обновить? ]
Ссылки
[ редактировать ]- ^ Грауэр, Яэль (16 января 2021 г.). «Как попытка одного хакера обеспечить безопасность Интернета стала важной частью операционных систем Mac, Linux и Windows» . Бизнес-инсайдер . Проверено 25 ноября 2022 г.
- ^ https://git.zx2c4.com/wireguard-linux-compat/tag/?h=v1.0.20220627 . Проверено 4 ноября 2022 г.
{{cite web}}
: Отсутствует или пусто|title=
( помощь ) - ^ «Установка» . WireGuard . Проверено 23 апреля 2020 г.
- ^ Перейти обратно: а б с Солтер, Джим (30 марта 2020 г.). «WireGuard VPN доходит до версии 1.0.0 и следующего ядра Linux» . Архивировано из оригинала 31 марта 2020 года . Проверено 23 апреля 2020 г.
- ^ Перейти обратно: а б с д «WireGuard: быстрый, современный и безопасный VPN-туннель» . WireGuard. Архивировано из оригинала 28 апреля 2018 года . Проверено 31 марта 2021 г.
- ^ Пренил, Барт; Веркаутерен, Фредерик, ред. (11 июня 2018 г.). Прикладная криптография и сетевая безопасность . Спрингер. ISBN 978-3-319-93387-0 . Архивировано из оригинала 18 февраля 2019 года . Проверено 25 июня 2018 г.
- ^ Перейти обратно: а б Доненфельд, Джейсон А. «Известные ограничения — WireGuard» . www.wireguard.com . Проверено 1 июня 2020 г.
- ^ Перейти обратно: а б Доненфельд, Джейсон А. «Протокол и криптография — WireGuard» . www.wireguard.com . Проверено 14 мая 2023 г.
- ^ Липп, Бенджамин; Бланше, Бруно; Бхаргаван, Картикеян (2019), Механизированное криптографическое доказательство протокола виртуальной частной сети WireGuard (отчет), Отчет об исследовании RR-9269, Париж: Inria, стр. 49, зал-02100345
- ^ Доненфельд, Джейсон (2 мая 2021 г.). «WireGuard: сетевой туннель ядра следующего поколения» (PDF) . Wireguard.com .
- ^ Перейти обратно: а б Доненфельд, Джейсон А. «Известные ограничения — WireGuard» . www.wireguard.com . Проверено 2 мая 2021 г.
- ^ Титц, Олаф (23 апреля 2001 г.). «Почему TCP поверх TCP — плохая идея» . Проверено 17 октября 2015 г.
- ^ Хонда, Осаму; Осаки, Хироюки; Имасе, Макото; Исидзука, Мика; Мураяма, Дзюнъити (октябрь 2005 г.). «Понимание TCP через TCP: влияние туннелирования TCP на сквозную пропускную способность и задержку». В Атикуззамане, Мохаммед; Баландин, Сергей I (ред.). Производительность, качество обслуживания и управление коммуникационными и сенсорными сетями следующего поколения III . Том. 6011. Бибкод : 2005SPIE.6011..138H . CiteSeerX 10.1.1.78.5815 . дои : 10.1117/12.630496 . S2CID 8945952 .
- ^ Доненфельд, Джейсон А. «Введение и мотивация» (PDF) . WireGuard: Сетевой туннель ядра следующего поколения (PDF) . Архивировано (PDF) из оригинала 4 марта 2018 г.
- ^ Перейти обратно: а б Доненфельд, Джейсон А. (11 декабря 2017 г.). «[WireGuard] Размеры заголовка / MTU для Wireguard» . Проверено 13 января 2024 г.
- ^ Инструмент динамической настройки IP Wireguard , WireGuard, 14 мая 2023 г. , получено 14 мая 2023 г.
- ^ Солтер, Джим (26 августа 2018 г.). «Обзор WireGuard VPN: новый тип VPN предлагает серьезные преимущества» . Арс Техника . Архивировано из оригинала 20 сентября 2018 года.
- ^ «Создание более безопасного, доступного и отказоустойчивого протокола WireGuard VPN» . www.opentech.fund . Проверено 20 июня 2022 г.
- ^ «Пожертвования» . WireGuard. Архивировано из оригинала 28 апреля 2018 года . Проверено 28 апреля 2018 г.
- ^ «OVPN делает пожертвования на поддержку WireGuard» . ОВПН . 23 марта 2020 г.
- ^ «Сенатор США рекомендует NIST WireGuard с открытым исходным кодом для правительственной VPN» . Фороникс . 30 июня 2018 года. Архивировано из оригинала 5 августа 2018 года . Проверено 5 августа 2018 г.
- ^ Доненфельд, Джейсон (7 июня 2019 г.). «WireGuard: быстрый, современный и безопасный VPN-туннель» . Проверено 16 июня 2019 г.
- ^ Краснов Влад (18 декабря 2018 г.). «BoringTun, реализация WireGuard в пользовательском пространстве в Rust» . Блог Cloudflare . Архивировано из оригинала 4 апреля 2019 года . Проверено 29 марта 2019 г.
- ^ «CloudFlare запускает «BoringTun» как написанную на Rust реализацию WireGuard в пользовательском пространстве» . phoronix.com . Проверено 29 марта 2019 г.
- ^ Йоханссон, Янне (21 июня 2020 г.). «WireGuard импортирован в OpenBSD» .
- ^ «wg(4) — Страницы руководства NetBSD» . 20 августа 2020 г.
- ^ Перейти обратно: а б «Импортировать поддержку WireGuard ядра» .
- ^ «WireGuardNT, высокопроизводительная реализация WireGuard для ядра Windows» . 2 августа 2021 г.
- ^ «WireGuard: VPN еще никогда не был таким простым» .
- ^ «Индекс /Монолитно-исторический/» .
- ^ Мейсон, Джон (13 февраля 2019 г.). «Муллвад Обзор» . thebestwpn . 2. Надежные протоколы туннелирования — OpenVPN и WireGuard. Архивировано из оригинала 24 июня 2019 года . Проверено 8 апреля 2019 г.
- ^ Мейсон, Джон (19 февраля 2019 г.). «Обзор AzireVPN» . thebestvpn . 2. Впечатляющие протоколы и шифрование. Архивировано из оригинала 8 мая 2019 года . Проверено 8 апреля 2019 г.
- ^ Пестель, Ник (11 декабря 2018 г.). «Представляем Wireguard» . Проверено 22 сентября 2019 г.
- ^ «Добавлена поддержка WireGuard!» . блог криптошторма . 5 апреля 2019 года. Архивировано из оригинала 9 декабря 2019 года . Проверено 9 декабря 2019 г.
- ^ «e7096c131e5161fa3b8e52a650d7719d2857adfd — pub/scm/linux/kernel/git/davem/net-next — Git в Google» . ядро.googlesource.com .
- ^ «LKML: Дэвид Миллер: Re: [PATCH net-next v2] net: безопасный сетевой туннель WireGuard» . lkml.org .
- ^ «[ОБЪЯВЛЕНИЕ] WireGuard объединен с net-next, на пути к Linux 5.6» . 9 января 2020 г. Архивировано из оригинала 9 января 2020 г.
- ^ Торвальдс, Линус. «индекс: ядро/git/torvalds/linux.git» . Дерево исходного кода ядра Linux . Кернел.орг . Проверено 2 февраля 2020 г.
- ^ «драйверы/сеть: включить WIREGUARD как модуль» . 21 марта 2020 г.
- ^ «ANDROID: GKI: включить CONFIG_WIREGUARD» .
- ^ «Объединить ветку 'bg/wireguard' (d321d0df) · Фиксировать · GNOME / network-manager-applet» . gitlab.gnome.org . 22 апреля 2020 г. Проверено 30 мая 2020 г.
- ^ «Опубликованы исправления ядра WireGuard для OpenBSD» . 12 мая 2020 г.
- ^ «Добавить wg(4), драйвер ядра для связи WireGuard VPN» .
- ^ «[АНОНС] WireGuard для Windows 0.3: поддержка ARM, корпоративные функции и многое другое» . 23 ноября 2020 г.
- ^ «WireGuard для программного обеспечения pfSense» .
- ^ Андерсон, Тим (23 марта 2021 г.). «FreeBSD 13.0 будет поставляться без поддержки WireGuard, поскольку разработчики вмешаются, чтобы исправить «серьезные проблемы» с первоначальной реализацией» . Регистр . Ситуация Публикация . Проверено 31 марта 2021 г.
- ^ Томпсон, Джим (18 марта 2021 г.). «WireGuard удален из программного обеспечения pfSense® CE и pfSense® Plus» . Блог Нетгейта . Рубикон Коммуникейшнс . Проверено 20 марта 2021 г.
- ^ Лонг, Скотт (5 мая 2021 г.). «pfSense: WireGuard возвращается в виде экспериментального пакета» . Netgate — безопасные сети начинаются здесь . Проверено 9 июня 2021 г.
- ^ Паксон, Аудиан (19 января 2021 г.). «WireGuard для программного обеспечения pfSense» . Netgate — безопасные сети начинаются здесь . Проверено 9 июня 2021 г.
- ^ «wireguard-freebsd — реализация WireGuard для ядра FreeBSD» . git.zx2c4.com . Проверено 9 июня 2021 г.
- ^ Пингл, Джим (2 июня 2021 г.). «pfSense Plus 21.05-РЕЛИЗ уже доступен» . Netgate — безопасные сети начинаются здесь . Проверено 9 июня 2021 г.
- ^ «ВайрГард» . Суверенный технологический фонд . Проверено 26 мая 2024 г.