WireGuard VPN เบชเบณเบฅเบฑเบš Windows เปเบฅเบฐ WireGuardNT 1.0 เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเปเบฅเป‰เบง

Jason A. Donenfeld, เบœเบนเป‰เบ‚เบฝเบ™ WireGuard VPN, เป„เบ”เป‰เบ›เปˆเบญเบเบŠเบญเบšเปเบงเบฅเบนเบเบ„เป‰เบฒ WireGuard เบฅเบธเป‰เบ™เบ—เบณเบญเบดเบ”เบชเบณเบฅเบฑเบš Windows 1.0, เบžเป‰เบญเบกเบ—เบฑเบ‡เป„เบ”เบฃเป€เบงเบต WireGuardNT 1.0 เบ—เบตเปˆเบกเบตเบžเบญเบ” VPN WireGuard เบชเบณเบฅเบฑเบš kernel Windows 10 เปเบฅเบฐ 11, เบฎเบญเบ‡เบฎเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณ AMD64, x86, เปเบฅเบฐ ARM64. เบฅเบฐเบซเบฑเบ”เบชเปˆเบงเบ™เบ›เบฐเบเบญเบš kernel Windows เปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เบžเบฒเบเปƒเบ•เป‰ GPLv2, เปเบฅเบฐเบŠเบญเบšเปเบงเบฅเบนเบเบ„เป‰เบฒเปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT.

เบžเบญเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” WireGuard เบซเบผเบฑเบเบชเบณเบฅเบฑเบš kernel Linux, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เปƒเบŠเป‰เปœเปˆเบงเบเบ‡เบฒเบ™ kernel Windows เปเบฅเบฐ NDIS network stack. เป€เบกเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” wireguard-go, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰ เปเบฅเบฐ เปƒเบŠเป‰เบญเบดเบ™เป€เบ•เบตเป€เบŸเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบ Wintun, WireGuardNT เบชเบฐเป€เปœเบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบชเบณเบ„เบฑเบ™เป‚เบ”เบเบเบฒเบ™เบเบณเบˆเบฑเบ” context switches เปเบฅเบฐ เบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเป€เบ™เบทเป‰เบญเปƒเบ™เปเบžเบฑเบเป€เบเบฑเบ”เบˆเบฒเบ kernel เป„เบ›เบซเบฒเบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰. เบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบณเบฅเบฑเบš Linux, OpenBSD, เปเบฅเบฐ FreeBSD, เป€เบซเบ”เบœเบปเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ WireGuardNT เป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบเบปเบ‡เปƒเบ™เบฅเบฐเบ”เบฑเบš network stack.

เป€เบงเบตเบŠเบฑเบ™ 1.0 เป„เบ”เป‰เบ–เบทเบเปเบฒเบเป€เบ›เบฑเบ™เบˆเบธเบ”เบชเบณเบ„เบฑเบ™, เป€เบŠเบดเปˆเบ‡เปเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบˆเบณเบ™เบงเบ™เปœเบถเปˆเบ‡ เปเบฅเบฐ เบเบฒเบ™เบšเบฑเบ™เบฅเบธเปœเป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบ•เบฑเป‰เบ‡เปƒเบˆเป„เบงเป‰, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™ NdisWdfGetAdapterContextFromAdapterHandle() เปเบ—เบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฐเบ–เบฒเบ™เบฐเป„เบ”เบฃเป€เบงเบตเบ—เบตเปˆเบ›เบญเบ”เป„เบžเปœเป‰เบญเบเบเบงเปˆเบฒเปƒเบ™เบžเบฒเบเบชเบฐเปœเบฒเบก Reserved เปเบฅเบฐ เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™; เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ‚เบฐเปœเบฒเบ” MTU (Maximum Transmission Unit) เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ เปเบฅเบฐ เบงเปˆเบญเบ‡เป„เบงเบœเปˆเบฒเบ™เบเบฒเบ™เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบญเบตเป‰เบ™เบฅเบฐเบšเบปเบš; เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C23 เปƒเบ™เบฅเบฐเบซเบฑเบ”.

เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™เบงเปˆเบฒ VPN WireGuard เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบšเบปเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก, เบชเบฐเบซเบ™เบญเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เบซเบผเบฒเบ, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‡เปˆเบฒเบ, เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เปเบฅเบฐเป„เบ”เป‰เบžเบดเบชเบนเบ”เบ•เบปเบ™เป€เบญเบ‡เป„เบ”เป‰เบ”เบตเปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ. เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เบ™เบฑเบšโ€‹เบ•เบฑเป‰เบ‡โ€‹เปเบ•เปˆ 2015 เปเบฅเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบขเบฑเป‰เบ‡โ€‹เบขเบทเบ™โ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹. WireGuard เปƒเบŠเป‰เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบฅเบฐเบซเบฑเบ”, เป€เบŠเบดเปˆเบ‡เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบเบฐเปเบˆเบชเปˆเบงเบ™เบ•เบปเบงเบเบฑเบšเปเบ•เปˆเบฅเบฐเบชเปˆเบงเบ™เบ•เบดเบ”เบ•เปเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบ เปเบฅเบฐเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบœเบนเบเบกเบฑเบ”.

เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบเบฐเปเบˆเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš SSH. เป€เบžเบทเปˆเบญเป€เบˆเบฅเบฐเบˆเบฒเบเบฐเปเบˆ เปเบฅเบฐ เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰ daemon เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰, เบเบปเบ™เป„เบ Noise_IK เบˆเบฒเบ Noise Protocol Framework เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบเบฒเบ™เบฎเบฑเบเบชเบฒ authorized_keys เปƒเบ™ SSH. เบเบฒเบ™เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบœเปˆเบฒเบ™เบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเปƒเบ™เปเบžเบฑเบเป€เบเบฑเบ” UDP. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบกเปˆเบ™เบฎเบญเบ‡เบฎเบฑเบš. เบ—เบตเปˆเบขเบนเปˆ IP เป€เบŠเบตเบšเป€เบงเบต VPN (เป‚เบฃเบกเบกเบดเบ‡) เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ”เป‰เบงเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฅเบนเบเบ„เป‰เบฒเปƒเปเปˆเป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบชเบฐเบ•เบฃเบตเบก ChaCha20 เปเบฅเบฐเบฅเบฐเบšเบปเบšเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบ‚เปเป‰เบ„เบงเบฒเบก Poly1305 (MAC), เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบ Daniel J. Bernstein, Tanja Lange, เปเบฅเบฐ Peter Schwabe. ChaCha20 เปเบฅเบฐ Poly1305 เบ–เบทเบเบˆเบฑเบ”เบงเบฒเบ‡เป€เบ›เบฑเบ™ analogues เบ—เบตเปˆเป„เบงเบเบงเปˆเบฒเปเบฅเบฐเบ›เบญเบ”เป„เบžเบเบงเปˆเบฒเบ‚เบญเบ‡ AES-256-CTR เปเบฅเบฐ HMAC, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบŠเบญเบšเปเบงเบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบšเบฑเบ™เบฅเบธเป€เบงเบฅเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบปเบ‡เบ—เบตเปˆเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฎเบฒเบ”เปเบงเบžเบดเป€เบชเบ”. เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™, เป‚เบ›เป‚เบ•เบ„เบญเบ™ Elliptic Curve Diffie-Hellman เปเบกเปˆเบ™เปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” Curve25519, เบ—เบตเปˆเบชเบฐเป€เปœเบตเป‚เบ”เบ Daniel Bernstein. BLAKE2s (RFC7693) algorithm เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ hashing.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru