WireGuard là gì?
WireGuard là một hệ thống VPN (Virtual Private Network) tập trung vào bảo mật. Nó được biết đến ban đầu bởi tính đơn giản và dễ dàng sử dụng. WireGuard sử dụng các giao thức mã hóa và các thuật toán để bảo vệ dữ liệu. Ban đầu, WireGuard được phát triển dành cho Linux. Hiện nay, nó đã phổ biến trên Windows, macOS, BSD, iOS và Android.
Mạng riêng ảo VPN là thành phần không thể thiếu đối với các doanh nghiệp. Họ có thể liên kết các chi nhánh từ xa khác nhau đến mạng chính của công ty. Từ đó cho phép nhân viên sử dụng các ứng dụng nội bộ của công ty. Đồng thời cho phép các cloud server trở thành một phần của mạng, tương tự như các máy chủ on-premises.
Hầu hết các giải pháp VPN trước đây đều tương đối chậm. Mà lại được thiết kế phức tạp quá mức. Mặt khác, WireGuard đặt tính bảo mật và sự đơn giản lên hàng đầu.
Lịch sử hình thành của WireGuard
Nhà nghiên cứu bảo mật và phát triển kernel Jason Donenfeld đã có ý tưởng cho WireGuard vào năm 2017. Khi đó, anh đang cần một giải pháp tunneling lưu lượng một cách bí mật. Từ đó có thể sử dụng chúng trong các cuộc thử nghiệm xâm nhập (penetration testing). Càng xem xét kĩ về các tùy chọn hiện có lúc bấy giờ, anh càng nhận ra rằng những hệ thống VPN như IPsec hay OpenVPN không hoạt động thật sự tốt. Bên cạnh đó nó cũng khó để cấu hình và quản lý đúng cách.
Do đó, Donenfeld bắt đầu tạo ra một giao thức VPN hoàn toàn mới. Anh muốn nó có thể tránh được lối mòn thiết kế của các hệ thống khác. Anh không muốn nó thành các dự án với những code bases khổng lồ. Donenfled cần sự đơn giản!
Cách hoạt động của mật mã WireGuard là gì?
Đầu tiên, WireGuard loại trừ tính linh hoạt của mật mã. Đó là việc cung cấp các lựa chọn giữa thuật toán mã hóa, trao đổi khóa…Sở dĩ vì nó dẫn đến việc triển khai không an toàn với các công nghệ khác. Thay vào đó, giao thức của WireGuard sử dụng một lựa chọn các nguyên bản mã hiện đại. Do đó, các lựa chọn mật mã mặc định này đủ mạnh mẽ để người dùng không thể thay đổi hoặc cấu hình sai.
WireGuard sử dụng ChaCha20 để mã hóa đối xứng với Polu1305 cho message authentication. Sự kết hợp này hiệu quả hơn AES trên các kiến trúc CPU được nhúng mà không có khả năng tăng tốc phần cứng mật mã (cryptographic hardware acceleration); Curve25519 cho Diffie-Hellman (ECDH). Hay BLAKE2s để hashing, nhanh hơn SHA-3; và 1.5-RTT dựa trên nền tảng Noise. Ngoài ra, nó cũng bao gồm tính năng bảo vệ khỏi giả mạo, từ chối dịch vụ, và replay attack.
Trong giao thức WireGuard, mỗi peer được xác định với những peer khác thông qua các khóa public ngắn. Việc này tương tự với cách xác thức dựa trên khóa trong OpenSSH. Các public key cũng được sử dụng để thiết lập địa chỉ IP nào được chỉ định cho từng peer bên trong tunnel. Nó là một phần trong khái niệm mới được Wireguard gọi là “cryptokey routing”.
Giao thức này không phản hồi với bất các packet mà nó không nhận ra. Vì vậy quá trình network scanning sẽ không cho thấy WireGuard đang chạy trên server. Hơn nữa, nó có thể hoạt động như cả server lẫn client cùng một lúc.
Khả năng của WireGuard là gì?
Trên Linux, WireGuard hoạt động ở kernel space. Do đó, hiệu suất của nó cao hơn nhiều so với OpenVPN – trong userspace và virtual network interface driver. Điểm benchmark của WireGuard cho hiệu suất và tốc độ kết nối cao hơn OpenVPN đến 4 lần. Đồng thời, tốc độ của nó cũng cao hơn so với VPN dựa trên IPsec, trên cùng một phần cứng.
Tuy nhiên, triển khai WireGuard trên Android, iOS, macOS, OpenBSD và Windows được viết bằng Go. Ngoài một số dự án cho Android được cộng đồng hỗ trợ tích hợp WireGuard kernel module, các triển khai không thuộc Linux của WireGuard chạy trong userspace và không hưởng lợi từ hiệu suất tương tự như triển khai ở kernel. Điều này cho thấy WireGuard vẫn có thể quản lý để phù hợp. Đồng thời vẫn vượt trội hơn OpenVPN trong hầu hết mọi mặt.
WireGuard tích hợp với Linux kernel
Kể từ phiên bản 5.6 của Linux Kernel, phát hành vào ngày 29/3/2020, WireGuard đã chính thức là một trong những công nghệ được tích hợp mặc định. Đây cũng được xem là lần phát hành ổn định đầu tiên của WireGuard (phiên bản 1.0.0).
Các kế hoạch sau đó của Donenfled liên quan đến việc hợp nhất một API mã hóa mới, đơn giản hơn vào Linux kernel, gọi là Zinc. Donefled cho rằng Zinc sẽ giúp các developer thực hiện các thao tác mã hóa trong ứng dụng dễ dàng hơn. Việc này đã đánh dấu một bước ngoặt quan trọng trong quá trình upstream của WireGuard vào hệ thống Linux subsystem. Kể từ đó, đã có nhiều bước tiến nhanh chóng, đáng kể trước khi Zinc chính thức được phát hành ổn định.
Windows và một driver TUN mới
Donenfeld mong muốn cải thiện hiệu suất của WireGuard trên Windows. Do đó, anh cùng các developer đã tạo một driver TUN mã nguồn mở mới, gọi là Wintun. Giống như bản thân Zinc và WireGuard, Wintun dường như chú trọng vào tính đơn giản, khả năng kiểm tra và bảo mật.
Doanh nghiệp WireGuard
Ngay cả trước khi ra mắt phiên bản ổn định, WireGuard đã được sử dụng trong sản xuất. Một số nhà cung cấp dịch vụ VPN thương mại cung cấp máy chủ WireGuard. Đồng thời, họ cũng đang không ngừng nỗ lực để xây dựng các công cụ xung quanh nó. WireGuard hiện vẫn chưa sẵn sàng để trở thành một doanh nghiệp. Bên cạnh đó, các developer chỉ miễn cưỡng thêm các tính năng mới đặc thù cho một nhóm nhỏ người dùng. Tuy vậy, WireGuard vẫn là một nền tảng tốt để các giải pháp phức tạp hơn có thể được tạo ra.
Lấy ví dụ khi một doanh nghiệp cần tự động triển khai và cấu hình một phần mềm mới trên lượng lớn máy tính. Tuy nhiên việc phân phối khóa công khai giữa các đồng nghiệp và quản lý khóa không được đề cập trong dự án WireGuard mà sẽ phải được triển khai riêng biệt.
Theo CSO.