WireGuard

WireGuard
ТипVirtual private network
АвториJason A. Donenfeld
РозробникJason A. Donenfeld
Перший випуск2015; 9 років тому (2015)[1]
Стабільний випускreference (P348; тому (P348))
Операційна система
Мова програмуванняC (Linux, FreeBSD kernel modules, NetBSD, OpenBSD kernel drivers), Go (userspace implementation)
Ліцензіяvarious free and open-source
Репозиторійgit.zx2c4.com/wireguard-linux
Вебсайтwww.wireguard.com

WireGuard — це протокол зв’язку та безкоштовне програмне забезпечення з відкритим вихідним кодом, яке реалізує зашифровану віртуальну приватну мережу (VPN) і було розроблено з метою простоти використання, високої швидкості та низької поверхні атаки.[4] Він націлений на кращу продуктивність і потужність, ніж IPsec і OpenVPN, два поширені протоколи тунелювання.[5] Протокол WireGuard передає трафік через UDP.[6]

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

Протокол

[ред. | ред. код]

WireGuard використовує наступне:[4]

У травні 2019 року дослідники з INRIA опублікували машинний аналіз протоколу WireGuard, створений за допомогою асистента CryptoVerif.[7]

Додатковий режим попереднього спільного симетричного ключа

[ред. | ред. код]

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

Мережа

[ред. | ред. код]

WireGuard використовує лише[9] UDP[4] через потенційні недоліки TCP-over-TCP.[9] [10]

WireGuard повністю підтримує IPv6 як всередині, так і поза тунелем. Він підтримує лише рівень 3 для IPv4 і IPv6 та може інкапсулювати v4-в-v6 і навпаки.[11]

Розширюваність

[ред. | ред. код]

WireGuard розроблено з можливістю розширення за допомогою сторонніх програм і скриптів. Це дозволило доповнити WireGuard різноманітними функціями, включаючи зручніші інтерфейси керування (в тому числі простіше налаштування ключів), ведення журналів, динамічне оновлення брандмауера та інтеграцію з LDAP.[джерело?]

Виключення таких складних функцій із мінімальної кодової бази ядра покращує його стабільність і безпеку. Для забезпечення безпеки WireGuard обмежує можливості реалізації криптографічного контролю, обмежує вибір процесів обміну ключами та відображає алгоритми [посилання на джерело] до невеликої підмножини сучасних криптографічних примітивів. Якщо в якомусь із примітивів знайдено вразливість, може бути випущена нова версія, яка вирішує проблему. Крім того, налаштування конфігурації, які впливають на безпеку програми в цілому, не можуть бути змінені непривілейованими користувачами.[12]

Згадки

[ред. | ред. код]

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

WireGuard отримав фінансування від Фонду відкритих технологій.[14] і пожертвування від Mullvad, Private Internet Access, IVPN, NLnet Foundation[15] і OVPN.[16]

Сенатор від штату Орегон Рон Вайден (Ron Wyden) рекомендував Національному інституту стандартів і технологій (NIST) розглянути WireGuard як заміну існуючим технологіям.[17]

Доступність

[ред. | ред. код]

Реалізації

[ред. | ред. код]

Реалізації протоколу WireGuard включають:

  • Початкова реалізація написана мовами C та Go.[18]
  • Реалізація простору користувача від Cloudflare написана мовою Rust.[19] [20]
  • Реалізація для OpenBSD, написана мовою C.[21]
  • Реалізація wg(4) для NetBSD написана на C.[22]
  • Реалізація FreeBSD написана на мові C і має багато спільного з реалізацією OpenBSD.[23]
  • Власна реалізація ядра Windows під назвою "wireguard-nt", з серпня 2021 року[24]
  • OPNsense через стандартний пакет os-WireGuard.[25]
  • pfSense через експериментальний додатковий пакет для pfSense Plus 21.05, pfSense CE 2.5.2 та пізніших версій.
  • Mikrotik має реалізацію на всіх сучасних роутерах

Історія

[ред. | ред. код]

Перші зразки базового коду існують з 30 червня 2016 року [26] Чотирма першими користувачами WireGuard стали провайдери VPN-послуг Mullvad[27], AzireVPN[28], IVPN[29] і cryptostorm[30].

9 грудня 2019 року Девід Міллер (David Miller), основний розробник мережевого стеку Linux, прийняв виправлення WireGuard до дерева підтримки "net-next" для включення в наступне ядро.[31] [32] [33]

28 січня 2020 року Лінус Торвальдс включив WireGuard до основного дерева ядра Linux.[34]

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

29 березня 2020 року WireGuard було включено до дерева релізу Linux 5.6. Версія ПЗ для Windows залишається бета-версією.

30 березня 2020 року розробники Android додали підтримку WireGuard у своєму ядрі.[36]

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

12 травня 2020 року Метт Данвуді запропонував виправлення для підтримки рідного ядра WireGuard в OpenBSD.[38]

22 червня 2020 року після роботи Мета Данвуді (Matt Dunwoodie) та Джейсона А. Доненфельда (Jason A. Donenfel) підтримку WireGuard була додана в OpenBSD.[39]

23 листопада 2020 року Джейсон А. Доненфельд випустив оновлення пакета Windows. Було покращено встановлення, стабільність, підтримку ARM і корпоративні можливості.[40]

29 листопада 2020 року підтримку WireGuard було імпортовано в ядро FreeBSD 13.[23]

19 січня 2021 року підтримку WireGuard було додано в pfSense Community Edition (CE) 2.5.0.[41]

У березні 2021 року підтримку WireGuard у режимі ядра було вилучено з FreeBSD 13.0, все ще перебуває у стадії тестування, після того, як термінове очищення коду у FreeBSD WireGuard не вдалося швидко завершити.[42] У pfSense Community Edition (CE) 2.5.0 і pfSense Plus 21.02, що базуються на FreeBSD також видалено WireGuard у ядрі.[43]

У травні 2021 року підтримка WireGuard була повернута до pfSense CE та pfSense Plus як експериментальний пакет, написаний членом спільноти pfSense Крістіаном Макдональдом (Christian McDonald). Пакет WireGuard для pfSense включає поточну роботу над розробкою WireGuard у режимі ядра Джейсона А. Доненфельда, яка спочатку спонсорувалася компанією Netgate.[44] [45] [46]

У червні 2021 року офіційні сховища пакетів для pfSense CE 2.5.2 і pfSense Plus 21.05 включали пакет WireGuard.[47]

Дивись також

[ред. | ред. код]
  • Порівняння послуг віртуальної приватної мережі
  • Secure Shell (SSH), криптографічний мережевий протокол, який використовується для захисту служб у незахищеній мережі.
  1. Not all platforms may have a currently released version and some may be at beta.[оновити?]

Посилання

[ред. | ред. код]
  1. Grauer, Yael (16 січня 2021). How one hacker's push to secure the internet became a crucial part of Mac, Linux, and Windows operating systems. Business Insider. Процитовано 25 листопада 2022.
  2. Installation. WireGuard. Процитовано 23 квітня 2020. {{cite web}}: Проігноровано невідомий параметр |df= (довідка)
  3. Salter, Jim (30 березня 2020). WireGuard VPN makes it to 1.0.0—and into the next Linux kernel. Архів оригіналу за 31 березня 2020. Процитовано 23 квітня 2020.
  4. а б в г WireGuard: fast, modern, secure VPN tunnel. WireGuard. Архів оригіналу за 28 квітня 2018. Процитовано 31 березня 2021.
  5. Preneel, ред. (11 червня 2018). Applied Cryptography and Network Security. Springer. ISBN 978-3-319-93387-0. Архів оригіналу за 18 лютого 2019. Процитовано 25 червня 2018.
  6. а б Donenfeld, Jason A. Known Limitations - WireGuard. www.wireguard.com (англ.). Процитовано 1 червня 2020.
  7. Lipp, Benjamin; Blanchet, Bruno; Bhargavan, Karthikeyan (2019), A Mechanised Cryptographic Proof of the WireGuard Virtual Private Network Protocol, Research Report RR-9269, Paris: Inria, с. 49, hal-02100345
  8. Donenfeld, Jason (2 травня 2021). WireGuard: Next Generation Kernel Network Tunnel (PDF). Wireguard.com.
  9. а б Donenfeld, Jason A. Known Limitations - WireGuard. www.wireguard.com (англ.). Процитовано 2 травня 2021.
  10. Why TCP Over TCP Is A Bad Idea. sites.inka.de. Процитовано 2 травня 2021.
  11. {{cite conference}}: Порожнє посилання на джерело (довідка)Обслуговування CS1: Сторінки з параметром url-status, але без параметра archive-url (посилання)
  12. Wireguard VPN Protocol - Privacy HQ. privacyhq.com. Процитовано 6 травня 2021.
  13. Salter, Jim (26 серпня 2018). WireGuard VPN review: A new type of VPN offers serious advantages. Ars Technica. Архів оригіналу за 20 вересня 2018.
  14. Building a more secure, accessible and resilient WireGuard VPN protocol. www.opentech.fund. Процитовано 20 червня 2022.
  15. Donations. WireGuard. Архів оригіналу за 28 квітня 2018. Процитовано 28 квітня 2018.
  16. OVPN donates to support WireGuard. OVPN. 23 березня 2020.
  17. US Senator Recommends Open-Source WireGuard To NIST For Government VPN. Phoronix. 30 червня 2018. Архів оригіналу за 5 серпня 2018. Процитовано 5 серпня 2018.
  18. Donenfeld, Jason (7 червня 2019). WireGuard: fast, modern, secure VPN tunnel. Процитовано 16 червня 2019.
  19. Krasnov, Vlad (18 грудня 2018). BoringTun, a userspace WireGuard implementation in Rust. Cloudflare Blog (амер.). Архів оригіналу за 4 квітня 2019. Процитовано 29 березня 2019.
  20. CloudFlare Launches "BoringTun" As Rust-Written WireGuard User-Space Implementation. phoronix.com. Процитовано 29 березня 2019.
  21. Johansson, Janne (21 червня 2020). WireGuard imported into OpenBSD.
  22. wg(4) - NetBSD Manual Pages. 20 серпня 2020.
  23. а б Import kernel WireGuard support.
  24. WireGuardNT, a high-performance WireGuard implementation for the Windows kernel. 2 серпня 2021.
  25. OPNsense search results for wireguard | OPNsense documentation. OPNsense. Процитовано 28 квітня 2021.
  26. Index of /Monolithic-historical/.
  27. Mason, John (13 лютого 2019). Mullvad Review. thebestwpn. 2. Strong Tunneling Protocols – OpenVPN & WireGuard. Архів оригіналу за 24 червня 2019. Процитовано 8 квітня 2019. {{cite web}}: Проігноровано невідомий параметр |df= (довідка)
  28. Mason, John (19 лютого 2019). AzireVPN Review. thebestvpn. 2. Impressive Protocols and Encryption. Архів оригіналу за 8 травня 2019. Процитовано 8 квітня 2019. {{cite web}}: Проігноровано невідомий параметр |df= (довідка)
  29. Pestell, Nick (11 грудня 2018). Introducing Wireguard. Процитовано 22 вересня 2019.
  30. WireGuard support added!. cryptostorm blog. 5 квітня 2019. Архів оригіналу за 9 грудня 2019. Процитовано 9 грудня 2019.
  31. e7096c131e5161fa3b8e52a650d7719d2857adfd - pub/scm/linux/kernel/git/davem/net-next - Git at Google. kernel.googlesource.com.
  32. LKML: David Miller: Re: [PATCH net-next v2] net: WireGuard secure network tunnel. lkml.org. Архів оригіналу за 9 грудня 2019. Процитовано 8 травня 2023.
  33. [ANNOUNCE] WireGuard merged to net-next, on its way to Linux 5.6. 9 січня 2020. Архів оригіналу за 9 січня 2020.
  34. Torvalds, Linus. index : kernel/git/torvalds/linux.git. Linux kernel source tree. Kernel.org. Процитовано 2 лютого 2020.
  35. drivers/net: Enable WIREGUARD as module.
  36. ANDROID: GKI: enable CONFIG_WIREGUARD.
  37. merge branch 'bg/wireguard' (d321d0df) · Commits · GNOME / network-manager-applet. gitlab.gnome.org (англ.). Процитовано 30 травня 2020.
  38. WireGuard for OpenBSD Kernel Patches Posted.
  39. add wg(4), an in kernel driver for WireGuard vpn communication.
  40. [ANNOUNCE] WireGuard for Windows 0.3: ARM support, enterprise features, & more.
  41. WireGuard for pfSense Software.
  42. Anderson, Tim (23 березня 2021). FreeBSD 13.0 to ship without WireGuard support as dev steps in to fix 'grave issues' with initial implementation. The Register. Situation Publishing. Процитовано 31 березня 2021.
  43. Thompson, Jim (18 березня 2021). WireGuard Removed from pfSense® CE and pfSense® Plus Software. Netgate blog (англ.). Rubicon Communications. Процитовано 20 березня 2021.
  44. Long, Scott (5 травня 2021). pfSense: WireGuard returns as an Experimental Package. Netgate - Secure networks start here. (англ.). Процитовано 9 червня 2021.
  45. Paxson, Audian (19 січня 2021). WireGuard for pfSense Software. Netgate - Secure networks start here. (англ.). Процитовано 9 червня 2021.
  46. wireguard-freebsd - WireGuard implementation for the FreeBSD kernel. git.zx2c4.com. Процитовано 9 червня 2021.
  47. Pingle, Jim (2 червня 2021). pfSense Plus 21.05-RELEASE Now Available. Netgate - Secure networks start here. (англ.). Процитовано 9 червня 2021.