Дэвид Миллер (), ядро желісінің ішкі жүйесіне жауапты Linux, желі-келесі филиалға жобадан VPN интерфейсін іске асырумен Келесі жылдың басында net-next тармағында жинақталған өзгерістер негізгі шығарылымның негізін құрайды. Linux 5.6.
Кодты насихаттау әрекеттері WireGuard Негізгі ядрода соңғы бірнеше жылда күш-жігер жұмсалды, бірақ олар өнімділікті жақсарту үшін пайдаланылған криптографиялық функциялардың меншікті іске асыруларына тәуелділігіне байланысты сәтсіз аяқталды. Бастапқыда бұл функциялар болды ядро үшін стандартты Crypto API ауыстыра алатын қосымша төменгі деңгейлі Zinc API ретінде.
Kernel Recipes конференциясындағы баяндамалардан кейін, жасаушылар WireGuard қыркүйекте патчтарыңызды әзірлеушілер қол жеткізе алатын ядродағы бар Crypto API интерфейсін пайдалану үшін түрлендіріңіз WireGuard Өнімділік пен жалпы қауіпсіздікке қатысты шағымдар бар. Zinc API әзірлеуді жалғастыру туралы шешім қабылданды, бірақ бөлек жоба ретінде.
Қараша айында ядроны әзірлеушілер Олар ымыраға келіп, мырыш кодының бір бөлігін негізгі ядроға тасымалдауға келісті. Негізінде, кейбір Цинк құрамдастары ядроға бөлек API ретінде емес, Crypto API ішкі жүйесінің бөлігі ретінде тасымалданады. Мысалы, Crypto API қазірдің өзінде дайындалған WireGuard ChaCha20 және Poly1305 алгоритмдерін жылдам енгізу.
Алдағы жеткізуге байланысты WireGuard негізгі командада, жобаның негізін қалаушы Репозиторийді қайта құрылымдау туралы. Әзірлеуді жеңілдету үшін монолитті репозиторий ауыстырылдыWireGuardБөлек өмір сүруге арналған .git негізгі ядродағы кодпен жұмысты ұйымдастыруға жақсырақ сәйкес келетін үш бөлек репозиторий алады:
- — жобадағы өзгерістермен толық ядро ағашы Wireguard, оның патчтары негізгі бөлікке қосу үшін қарастырылады және үнемі net/net-next тармақтарына көшіріледі.
- — wg және wg-quick сияқты пайдаланушы-кеңістік утилиталары мен сценарийлеріне арналған репозиторий. Репозиторийді тарату үшін бумаларды жасау үшін пайдалануға болады.
- — модуль нұсқасы ядродан бөлек жеткізілетін және ескі ядролармен үйлесімділікті қамтамасыз ету үшін compat.h қабатын қамтитын репозиторий. Бастапқы әзірлеу репозиторийде жүзеге асырылады. wireguard-linux.git, бірақ пайдаланушылардан мүмкіндік пен сұраныс болғанша, патчтардың бөлек нұсқасы да жұмыс түрінде қолдау көрсетіледі.
VPN екенін еске саламыз WireGuard Заманауи шифрлау әдістерін қолдана отырып жүзеге асырылған бұл жоба өте жоғары өнімділікті қамтамасыз етеді, пайдалану оңай, қиындықтарсыз және үлкен көлемдегі трафикті өңдейтін бірқатар ірі көлемді орналастыруларда өзін дәлелдеді. Жоба 2015 жылдан бері әзірленуде және аудиттен өтті және шифрлау әдістері қолданылады. Қолдау WireGuard Ол NetworkManager және systemd жүйелеріне интеграцияланған, ал ядро патчтары базалық дистрибутивтерге қосылған. , Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, и .
В WireGuard Шифрлау кілтін бағыттау тұжырымдамасы қолданылады, ол әрбір желі интерфейсіне жеке кілтті байланыстыруды және оны ашық кілтті байланыстыру үшін пайдалануды қамтиды. Ашық кілттер SSH-ке ұқсас түрде байланыс орнату үшін алмасады. Кілттерді келіссөздер жүргізу және пайдаланушы кеңістігінде бөлек демонды іске қоспай байланыс орнату үшін Noise_IK механизмі қолданылады. , SSH жүйесінде авторизацияланған_кілттерді сақтауға ұқсас. Деректерді тасымалдау UDP пакеттерінде инкапсуляция арқылы жүзеге асырылады. VPN серверінің IP мекенжайын (роуминг) қосылымды ажыратпай өзгертуге және клиентті автоматты түрде қайта конфигурациялауға қолдау көрсетіледі.
Шифрлау үшін ағындық шифр және хабарламаның аутентификация алгоритмі (MAC) , Дэниел Бернштейн әзірлеген (), Таня Ланге
(Таня Ланге) және Питер Швабе. ChaCha20 және Poly1305 AES-256-CTR және HMAC жылдам және қауіпсіз аналогтары ретінде орналастырылған, бағдарламалық қамтамасыз етуді іске асыру арнайы аппараттық қолдауды қолданбай-ақ бекітілген орындау уақытына қол жеткізуге мүмкіндік береді. Ортақ құпия кілтті генерациялау үшін жүзеге асыруда эллиптикалық қисық Диффи-Хеллман протоколы қолданылады. , сонымен қатар Даниэль Бернштейн ұсынған. Хэштеу алгоритмі .
жанында өнімділігі WireGuard салыстырғанда 3.9 есе жоғары өткізу қабілетін және 3.8 есе жоғары жауап беру қабілетін көрсетті OpenVPN (HMAC-SHA2-256 бар 256-биттік AES). IPsec-пен (256-биттік ChaCha20+Poly1305 және AES-256-GCM-128) салыстырғанда WireGuard Өнімділіктің шамалы артықшылығы (13-18%) және кідірістің азаюы (21-23%) байқалады. Тесттер жобаның өзінің жылдам шифрлау алгоритмдерін енгізу арқылы жүргізілді; ядроның жергілікті Crypto API-іне ауысу өнімділіктің төмендеуіне әкелуі мүмкін.
Ақпарат көзі: opennet.ru
