VPN WireGuard прыняты ў галінку net-next і вызначаны для ўключэння ў ядро ​​Linux 5.6

Дэвід Мілер (David S. Miller), які адказвае за сеткавую падсістэму ядра Linux, прыняў у склад галінкі net-next патчы з рэалізацыяй VPN-інтэрфейсу ад праекта WireGuard. У пачатку наступнага года змены, якія назапашваюцца ў галінцы net-next, лягуць у аснову выпуску ядра Linux 5.6.

Спробы пасоўвання кода WireGuard у асноўны склад ядра прадпрымаліся апошнія некалькі гадоў, але заставаліся без выніку з-за прывязкі да ўласных рэалізацый крыптаграфічных функцый, якія ўжываліся для падвышэння прадукцыйнасці. Спачатку дадзеныя функцыі былі прапанаваны для ядра ў якасці дадатковага нізкаўзроўневага API Zinc, які з часам змог бы замяніць штатны Crypto API.

Пасля перамоваў на канферэнцыі Kernel Recipes, стваральнікі WireGuard у верасні прынялі кампраміснае рашэнне перавесці свае патчы на ​​выкарыстанне наяўнага ў ядры Crypto API, да якога ў распрацоўшчыкаў WireGuard маюцца прэтэнзіі ў вобласці прадукцыйнасці і агульнай бяспекі. API Zinc было вырашана працягваць разьвіваць, але як асобны праект.

У лістапада распрацоўшчыкі ядра пайшлі на кампраміс у адказ і пагадзіліся перанесці ў асноўнае ядро ​​частка кода з Zinc. Па сутнасці некаторыя кампаненты Zinc будуць перанесены ў ядро, але не як асобны API, а як частка падсістэмы Crypto API. Напрыклад, у Crypto API ужо ўключаны падрыхтаваныя ў WireGuard хуткія рэалізацыі алгарытмаў ChaCha20 і Poly1305.

У сувязі з маючай адбыцца пастаўкай WireGuard у асноўным складзе ядра, заснавальнік праекта абвясціў аб рэструктурызацыі рэпазітара. Для спрашчэння распрацоўкі на змену маналітнаму рэпазітару "WireGuard.git", які быў разлічаны на адасобленае існаванне, прыйдуць тры асобныя рэпазітары, лепш прыдатныя для арганізацыі працы з кодам у асноўным ядры:

  • Wireguard-linux.git - поўнае дрэва ядра са зменамі ад праекту Wireguard, патчы з якога будуць рэцэнзавацца для ўключэння ў ядро ​​і рэгулярна пераносіцца ў галінкі net/net-next.
  • Wireguard-tools.git - рэпазітар для якія запускаюцца ў прасторы карыстача ўтыліт і скрыптоў, такіх як wg і wg-quick. Рэпазітар можна выкарыстоўваць для стварэння пакетаў для дыстрыбутывамі.
  • Wireguard-linux-compat.git - Рэпазітар з варыянтам модуля, які пастаўляецца асобнай ад ядра і ўлучальным пласт compat.h для забеспячэння сумяшчальнасці са старымі ядрамі. Асноўная распрацоўка будзе весціся ў рэпазітары wireguard-linux.git, але пакуль ёсць магчымасць і запатрабаванне ў карыстачоў адасоблены варыянт патчаў таксама будзе падтрымлівацца ў працоўным выглядзе.

Нагадаем, што VPN WireGuard рэалізаваны на аснове сучасных метадаў шыфравання, забяспечвае вельмі высокую прадукцыйнасць, просты ў выкарыстанні, пазбаўлены ўскладненняў і добра зарэкамендаваў сябе ў шэрагу буйных укараненняў, якія апрацоўваюць вялікія аб'ёмы трафіку. Праект развіваецца з 2015 года, прайшоў аўдыт і фармальную верыфікацыю ужывальных метадаў шыфравання. Падтрымка WireGuard ужо інтэграваная ў NetworkManager і systemd, а патчы для ядра ўваходзяць у базавы склад дыстрыбутываў Debian няўстойлівы, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, подграф и ALT.

У WireGuard ужываецца канцэпцыя маршрутызацыі па ключах шыфравання, якая мае на ўвазе прывязку да кожнага сеткавага інтэрфейсу зачыненага ключа і ўжыванне для звязвання адчыненых ключоў. Абмен адчыненымі ключамі для ўсталёўкі злучэння вырабляецца па аналогіі з SSH. Для ўзгаднення ключоў і злучэнні без запуску асобнага дэмана ў прасторы карыстача ўжываецца механізм Noise_IK з Noise Protocol Framework, падобны на падтрыманне authorized_keys у SSH. Перадача даных ажыццяўляецца праз інкапсуляцыю ў пакеты UDP. Падтрымліваецца змена IP-адрасы VPN-сервера (роўмінг) без разрыву злучэння і аўтаматычнай пераналадкай кліента.

Для шыфравання выкарыстоўваецца струменевы шыфр ChaCha20 і алгарытм аўтэнтыфікацыі паведамленняў (MAC) Poly1305, распрацаваныя Дэніэлам Бернштэйнам (Даніэль Дж. Бернштэйн), Таняй Ланге
(Tanja Lange) і Пітэрам Швабэ (Peter Schwabe). ChaCha20 і Poly1305 пазіцыянуюцца як больш хуткія і бяспечныя аналагі AES-256-CTR і HMAC, праграмная рэалізацыя якіх дазваляе дабіцца фіксаванага часу выканання без задзейнічання спецыяльнай апаратнай падтрымкі. Для генерацыі сумеснага сакрэтнага ключа прымяняецца пратакол Дыфі-Хеллмана на эліптычных крывых у рэалізацыі Curve25519, таксама прапанаванай Дэніэлам Бернштэйнам. Для хэшавання выкарыстоўваюцца алгарытм BLAKE2s (RFC7693).

Пры тэставанні прадукцыйнасці WireGuard прадэманстраваў у 3.9/3.8 разы больш высокую прапускную здольнасць і ў 256/2 раз больш высокую спагадлівасць, у параўнанні з OpenVPN (256-bit AES c HMAC-SHA256-20). У параўнанні з IPsec (1305-bit ChaCha256+Poly128 і AES-13-GCM-18) у WireGuard назіраецца невялікае апярэджанне па прадукцыйнасці (21-23%) і зніжэнне затрымак (XNUMX-XNUMX%). Тэсты выкананы пры выкарыстанні развіваюцца праектам хуткіх рэалізацый алгарытмаў шыфравання - пераклад на штатны Crypto API ядра магчыма прывядзе да пагаршэння паказчыкаў.

VPN WireGuard прыняты ў галінку net-next і вызначаны для ўключэння ў ядро ​​Linux 5.6

Крыніца: opennet.ru

Дадаць каментар