VPN WireGuard đã được chấp nhận vào nhánh net-next và dự kiến ​​sẽ được đưa vào nhân Linux 5.6

David Miller (David S. Miller), chịu trách nhiệm về hệ thống con mạng của nhân Linux, Đã được chấp nhận đến nhánh tiếp theo bản vá lỗi với việc triển khai giao diện VPN từ dự án Dây bảo vệ. Đầu năm tới, những thay đổi được tích lũy trong nhánh net-next sẽ tạo cơ sở cho việc phát hành nhân Linux 5.6.

Nỗ lực đẩy mã WireGuard vào nhân chính đã được thực hiện trong vài năm qua nhưng vẫn không thành công do bị ràng buộc với việc triển khai độc quyền các chức năng mật mã được sử dụng để cải thiện hiệu suất. Ban đầu, các chức năng này được đề xuất cho kernel dưới dạng API Zinc cấp thấp bổ sung, cuối cùng có thể thay thế API tiền điện tử tiêu chuẩn.

Sau các cuộc thảo luận tại hội nghị Công thức hạt nhân, những người tạo ra WireGuard vào tháng XNUMX đã đưa ra quyết định thỏa hiệp chuyển các bản vá của bạn để sử dụng API Crypto có sẵn trong lõi, điều mà các nhà phát triển WireGuard có khiếu nại trong lĩnh vực hiệu suất và bảo mật chung. Người ta quyết định tiếp tục phát triển API Zinc nhưng dưới dạng một dự án riêng biệt.

Vào tháng XNUMX, các nhà phát triển hạt nhân đi để đáp lại một thỏa hiệp và đồng ý chuyển một phần mã từ Zinc sang kernel chính. Về cơ bản, một số thành phần Zinc sẽ được chuyển vào lõi, nhưng không phải dưới dạng API riêng biệt mà là một phần của hệ thống con API Crypto. Ví dụ: API tiền điện tử đã bao gồm triển khai nhanh thuật toán ChaCha20 và Poly1305 được chuẩn bị trong WireGuard.

Liên quan đến việc phân phối WireGuard trong lõi chính sắp tới, người sáng lập dự án công bố về việc tái cấu trúc kho lưu trữ. Để đơn giản hóa việc phát triển, kho lưu trữ nguyên khối “WireGuard.git”, được thiết kế để tồn tại độc lập, sẽ được thay thế bằng ba kho lưu trữ riêng biệt, phù hợp hơn để tổ chức công việc với mã trong kernel chính:

  • dây bảo vệ-linux.git - một cây nhân hoàn chỉnh với những thay đổi từ dự án Wireguard, các bản vá từ đó sẽ được xem xét để đưa vào nhân và thường xuyên được chuyển sang các nhánh net/net-next.
  • wireguard-tools.git - một kho lưu trữ các tiện ích và tập lệnh chạy trong không gian người dùng, chẳng hạn như wg và wg-quick. Kho lưu trữ có thể được sử dụng để tạo các gói để phân phối.
  • wireguard-linux-compat.git - một kho lưu trữ với một biến thể của mô-đun, được cung cấp riêng biệt với hạt nhân và bao gồm lớp compat.h để đảm bảo khả năng tương thích với các hạt nhân cũ hơn. Quá trình phát triển chính sẽ được thực hiện trong kho wireguard-linux.git, nhưng miễn là người dùng có cơ hội và nhu cầu, một phiên bản riêng biệt của các bản vá cũng sẽ được hỗ trợ ở dạng hoạt động.

Hãy nhớ 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, mang lại hiệu suất rất cao, dễ sử dụng, không phức tạp và đã chứng minh được bản thân trong một số hoạt động triển khai lớn xử lý lượng lớn lưu lượng truy cập. Dự án được phát triển từ năm 2015, đã vượt qua kiểm toán và xác minh chính thức các phương pháp mã hóa được sử dụng. Hỗ trợ WireGuard đã được tích hợp vào NetworkManager và systemd, đồng thời các bản vá kernel được bao gồm trong các bản phân phối cơ sở Debian không ổn định, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Đoạn con и ALT.

WireGuard sử dụng khái niệm định tuyến khóa mã hóa, bao gồm việc liên kết khóa riêng với từng giao diện mạng và sử dụng khóa chung để liên kết. Việc trao đổi khóa công khai để thiết lập kết nối cũng tương tự như SSH. Để đàm phán các khóa và kết nối mà không cần chạy trình nền không gian người dùng riêng biệt, cơ chế Noise_IK từ Khung giao thức tiếng ồntương tự như việc duy trì ủy quyền trong SSH. Việc truyền dữ liệu được thực hiện thông qua việc đóng gói trong các gói UDP. Nó hỗ trợ thay đổi địa chỉ IP của máy chủ VPN (chuyển vùng) mà không ngắt kết nối và tự động cấu hình lại máy khách.

Để mã hóa được sử dụng mật mã dòng ChaCha20 và Thuật toán xác thực tin nhắn (MAC) Poly1305, được thiết kế bởi Daniel Bernstein (Daniel J. Bernstein), Tanya Lange
(Tanja Lange) và Peter Schwabe (Peter Schwabe). ChaCha20 và Poly1305 được định vị là các chất 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 thi cố định mà không cần hỗ trợ phần cứng đặc biệt. Để tạo khóa bí mật dùng chung, giao thức Diffie-Hellman trên các đường cong elip được sử dụng trong quá trình triển khai Curve25519, cũng được đề xuất bởi Daniel Bernstein. Thuật toán được sử dụng để băm là BLAKE2 (RFC7693).

Khi thử nghiệm Hiệu suất WireGuard đã chứng minh thông lượng cao hơn 3.9 lần và khả năng phản hồi cao hơn 3.8 lần so với OpenVPN (AES 256-bit với HMAC-SHA2-256). So với IPsec (256-bit ChaCha20+Poly1305 và AES-256-GCM-128), WireGuard cho thấy sự cải thiện hiệu suất một chút (13-18%) và độ trễ thấp hơn (21-23%). Các thử nghiệm được thực hiện bằng cách triển khai nhanh các thuật toán mã hóa do dự án phát triển - việc chuyển sang API Crypto tiêu chuẩn của hạt nhân có thể dẫn đến hiệu suất kém hơn.

VPN WireGuard đã được chấp nhận vào nhánh net-next và dự kiến ​​sẽ được đưa vào nhân Linux 5.6

Nguồn: opennet.ru

Thêm một lời nhận xét