WireGuard VPN автору Джейсон А. Доненфельд Windows 1.0 үчүн WireGuard кардар программасынын биринчи ири чыгарылышын, ошондой эле порту бар WireGuardNT 1.0 драйверлерин чыгарды. VPN WireGuard Windows 10 жана 11 ядросу үчүн, AMD64, x86 жана ARM64 архитектураларын колдойт. Windows ядросунун компонент коду GPLv2 лицензиясы боюнча, ал эми кардар программасы MIT лицензиясы боюнча лицензияланган.
Порт Linux ядросу үчүн негизги WireGuard ишке ашыруунун код базасына негизделген, ал Windows ядросунун элементтерин жана NDIS тармактык стегин колдонууга айландырылган. Колдонуучу мейкиндигинде иштеген жана Wintun тармактык интерфейсин колдонгон wireguard-go ишке ашыруусуна салыштырмалуу, WireGuardNT контексттик которгучтарды жок кылуу жана пакеттин мазмунун ядродон колдонуучу мейкиндигине көчүрүү менен иштин натыйжалуулугун олуттуу жакшыртууларды сунуштайт. Linux, OpenBSD жана FreeBSD үчүн ишке ашырууларга окшош, WireGuardNTдеги бардык протоколду иштетүү логикасы түздөн-түз тармактык стек деңгээлинде иштейт.
1.0 версиясы бир катар маселелердин чечилишин жана пландаштырылган тапшырмалардын аткарылышын белгилеп, маанилүү этап катары белгиленди, мисалы: Reserved талаасында драйвердин абалын анча коопсуз эмес сактоонун жана документтештирилбеген чегинүүлөрдү колдонуунун ордуна NdisWdfGetAdapterContextFromAdapterHandle() функциясын колдонуу; системалык чакырууларды кармоо аркылуу MTU (Максималдуу Өткөрүү Бирдиги) өлчөмүн туура жана тез көзөмөлдөө; коддо C23 стандартын колдонуу.
Эскерте кетсек, VPN WireGuard заманбап шифрлөө методдорунун негизинде ишке ашырылган, өтө жогорку өндүрүмдүүлүктү камсыз кылат, колдонууга оңой, татаалдыктарсыз жана чоң көлөмдөгү трафикти иштеткен бир катар ири ишке ашырууларда өзүн жакшы далилдеген. Долбоор 2015-жылдан бери өнүгүп келе жатат жана колдонулган шифрлөө ыкмаларын текшерүүдөн жана расмий текшерүүдөн өткөн. WireGuard ар бир тармак интерфейси менен купуя ачкычты байланыштырууну жана байланыштыруу үчүн ачык ачкычтарды колдонууну камтыган ачкычка негизделген шифрлөө багыттоо концепциясын колдонот.
Байланыш түзүү үчүн ачык ачкычтарды алмашуу SSHке окшош. Колдонуучу мейкиндигинде өзүнчө демонду иштетпестен ачкычтарды сүйлөшүү жана туташуу үчүн, SSHдеги authorized_keysти тейлөөгө окшош Noise Protocol Framework'тен Noise_IK механизми колдонулат. Маалыматтарды берүү UDP пакеттеринде инкапсуляциялоо аркылуу жүргүзүлөт. Өзгөртүү колдоого алынат. IP даректери VPN серверлери (роуминг) байланыш үзгүлтүккө учурабастан, кардарды автоматтык түрдө кайра конфигурациялоо менен.
Шифрлөөдө Дэниел Дж. Бернштейн, Таня Ланге жана Питер Швабе тарабынан иштелип чыккан ChaCha20 агым шифри жана Poly1305 билдирүүнүн аныктыгын текшерүү алгоритми (MAC) колдонулат. ChaCha20 жана Poly1305 AES-256-CTR жана HMACтин тезирээк жана коопсуз аналогдору катары жайгаштырылган, программалык камсыздоону ишке ашыруу атайын аппараттык колдоону колдонбостон, белгиленген аткаруу убактысына жетүүгө мүмкүндүк берет. Бөлүшүлгөн жашыруун ачкычты түзүү үчүн, Elliptic Curve Diffie-Hellman протоколу Даниел Бернштейн тарабынан сунушталган Curve25519 ишке ашырууда колдонулат. Хешинг үчүн BLAKE2s (RFC7693) алгоритми колдонулат.
Source: opennet.ru
