Triển khai VPN mới, WireGuard, đã được thêm vào cơ sở mã FreeBSD.

Cây nguồn FreeBSD đã được cập nhật với cách triển khai VPN WireGuard mới, dựa trên mã mô-đun hạt nhân do nhóm phát triển FreeBSD và WireGuard cốt lõi cùng sản xuất với sự đóng góp của Jason A. Donenfeld, tác giả của VPN WireGuard và John H. Baldwin ), một nhà phát triển nổi tiếng của GDB và FreeBSD, người đã triển khai hỗ trợ cho SMP và NUMA trong nhân FreeBSD vào đầu những năm 2000. Sau khi trình điều khiển được chấp nhận vào FreeBSD (sys/dev/wg), việc phát triển và bảo trì nó sẽ được thực hiện trong kho FreeBSD từ đó trở đi.

Trước khi mã được chấp nhận, việc đánh giá đầy đủ các thay đổi đã được tiến hành với sự hỗ trợ của FreeBSD Foundation, trong đó sự tương tác của trình điều khiển với phần còn lại của hệ thống con kernel cũng được phân tích và khả năng sử dụng các nguyên hàm mật mã do kernel cung cấp đã được đánh giá.

Để sử dụng các thuật toán mật mã mà trình điều khiển yêu cầu, API của hệ thống con mật mã hạt nhân FreeBSD đã được mở rộng, trong đó một khai thác đã được thêm vào cho phép sử dụng các thuật toán không được hỗ trợ trong FreeBSD thông qua API mật mã tiêu chuẩn, sử dụng việc triển khai các thuật toán cần thiết từ thư viện libsodium. Trong số các thuật toán được tích hợp trong trình điều khiển, chỉ còn lại mã để tính toán băm Blake2, vì việc triển khai thuật toán này được cung cấp trong FreeBSD được gắn với kích thước băm cố định.

Ngoài ra, trong quá trình xem xét, việc tối ưu hóa mã đã được thực hiện, giúp tăng hiệu quả phân phối tải trên các CPU đa lõi (đảm bảo cân bằng thống nhất việc gán nhiệm vụ mã hóa và giải mã gói cho các lõi CPU). Kết quả là chi phí xử lý gói gần bằng chi phí triển khai trình điều khiển Linux. Mã này cũng cung cấp khả năng sử dụng trình điều khiển ossl để tăng tốc các hoạt động mã hóa.

Không giống như nỗ lực trước đây nhằm tích hợp WireGuard vào FreeBSD, triển khai mới sử dụng tiện ích wg tiêu chuẩn, thay vì phiên bản sửa đổi của ifconfig, giúp có thể thống nhất cấu hình trên Linux và FreeBSD. Tiện ích wg, cũng như trình điều khiển, được bao gồm trong mã nguồn FreeBSD, điều này có thể thực hiện được bằng cách thay đổi giấy phép cho mã wg (mã hiện có sẵn theo giấy phép MIT và GPL). Nỗ lực cuối cùng để đưa WireGuard vào FreeBSD được thực hiện vào năm 2020, nhưng đã kết thúc trong một vụ bê bối, do đó mã đã được thêm vào đã bị xóa do chất lượng thấp, làm việc bất cẩn với bộ đệm, sử dụng sơ khai thay vì kiểm tra, triển khai không đầy đủ của giao thức và vi phạm giấy phép GPL.

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à đã được chứng minh trong một số triển khai lớn xử lý lưu lượng lớn. 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 thức mã hóa được sử dụng. WireGuard sử dụng khái niệm định tuyến khóa mã hóa, 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 tương tự như SSH. Để đàm phán các khóa và kết nối mà không cần chạy một trình nền không gian người dùng riêng biệt, cơ chế Noise_IK của Khung giao thức tiếng ồn được sử dụng, tương tự như việc duy trì các khóa được ủy quyền 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. 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ới cấu hình lại máy khách tự động.

Quá trình mã hóa sử dụng mật mã luồng ChaCha20 và thuật toán xác thực thông báo Poly1305 (MAC) do Daniel J. Bernstein, Tanja Lange và Peter Schwabe phát triển. 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 hiện 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 đường cong elip trong triển khai Curve25519, cũng do Daniel Bernstein đề xuất, được sử dụng. Để băm, thuật toán BLAKE2s (RFC7693) được sử dụng.

Nguồn: opennet.ru

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