Jason A. Donenfeld, tác giả của WireGuard VPN, đã phát hành phiên bản chính đầu tiên của phần mềm máy khách WireGuard dành cho Windows 1.0, cũng như trình điều khiển WireGuardNT 1.0 với một cổng kết nối. VPN WireGuard dành cho nhân Windows 10 và 11, hỗ trợ các kiến trúc AMD64, x86 và ARM64. Mã nguồn thành phần nhân Windows được cấp phép theo GPLv2, và phần mềm máy khách được cấp phép theo giấy phép MIT.
Phiên bản này dựa trên mã nguồn của triển khai WireGuard chính cho nhân Linux, đã được chuyển đổi để sử dụng các thực thể nhân Windows và ngăn xếp mạng NDIS. So với triển khai wireguard-go, chạy trong không gian người dùng và sử dụng giao diện mạng Wintun, WireGuardNT mang lại những cải tiến đáng kể về hiệu suất bằng cách loại bỏ việc chuyển đổi ngữ cảnh và sao chép nội dung gói từ nhân sang không gian người dùng. Tương tự như các triển khai cho Linux, OpenBSD và FreeBSD, tất cả logic xử lý giao thức trong WireGuardNT đều chạy trực tiếp ở cấp độ ngăn xếp mạng.
Phiên bản 1.0 được đánh dấu là một cột mốc quan trọng, đánh dấu việc giải quyết một số vấn đề và hoàn thành các nhiệm vụ dự định, chẳng hạn như: sử dụng hàm NdisWdfGetAdapterContextFromAdapterHandle() thay vì lưu trữ trạng thái trình điều khiển kém an toàn hơn trong trường Reserved và sử dụng các offset không được ghi chép; theo dõi chính xác và kịp thời kích thước MTU (Maximum Transmission Unit) thông qua việc chặn các lệnh gọi hệ thống; sử dụng tiêu chuẩn C23 trong mã nguồn.
Xin nhắc lại rằng VPN WireGuard được triển khai trên cơ sở các phương pháp mã hóa hiện đại, cung cấp hiệu suất rất cao, dễ sử dụng, không phức tạp và đã chứng minh được hiệu quả trong một số triển khai lớn xử lý khối lượng lưu lượng lớn. Dự án đã được phát triển từ năm 2015 và đã trải qua quá trình kiểm tra và xác minh chính thức các phương pháp mã hóa được sử dụng. WireGuard sử dụng khái niệm định tuyến mã hóa dựa trên khóa, bao gồm việc liên kết khóa riêng với mỗi giao diện mạng và sử dụng khóa công khai để liên kết.
Việc trao đổi khóa công khai để thiết lập kết nối tương tự như SSH. Để đàm phán khóa và kết nối mà không cần chạy một tiến trình nền riêng biệt trong không gian người dùng, cơ chế Noise_IK từ Khung giao thức Noise được sử dụng, tương tự như việc duy trì authorized_keys trong SSH. Việc truyền dữ liệu được thực hiện thông qua đóng gói trong các gói UDP. Việc thay đổi được hỗ trợ. Các địa chỉ IP Máy chủ VPN (di động) không gián đoạn kết nối với cấu hình lại tự động cho máy khách.
Mã hóa sử dụng mã hóa luồng ChaCha20 và thuật toán xác thực tin nhắn Poly1305 (MAC), được phát triển bởi Daniel J. Bernstein, Tanja Lange và Peter Schwabe. ChaCha20 và Poly1305 được định vị là phiên bản tương tự nhanh hơn và an toàn hơn của AES-256-CTR và HMAC, việc triển khai phần mềm cho phép đạt được thời gian thực hiện cố định mà không cần sử dụng hỗ trợ phần cứng đặc biệt. Để tạo khóa bí mật chia sẻ, giao thức Elliptic Curve Diffie-Hellman được sử dụng trong triển khai Curve25519, cũng được Daniel Bernstein đề xuất. Thuật toán BLAKE2s (RFC7693) được sử dụng để băm.
Nguồn: opennet.ru
