Như chỳng ta đó đề cập trước đú, OpenVPN cung cấp một giải phỏp tốt nhất kờnh dữ liệu sử dụng UDP datagrams như giao thức vận chuyển của nú.
OpenVPN cú thể tựy chọn sử dụng kết nối TCP thay vỡ UDP datagrams. Mặc dự đõy là thuận tiện trong một số trường hợp, nú cú vấn đề về xung đột và nờn trỏnh cỏc lớp độ tin cậy khi cú thể.
78
Với UDP, cỏch đúng gúi kờnh dữ liệu, thể hiện trong hỡnh 3.2
Hỡnh 3. 2: Cỏc OpenVPN kờnh dữ liệu Đúng gúi
OpenVPN chia tỏch cỏc tải tiờu đề thành hai phần: phần tiờu đề gúi(packet header), nhận dạng loại gúi và dạng khúa và tiờu đề tải dữ liệu (data payload
header), bao gồm chứng thực, IV, và cỏc trường số thứ tự (sequence number fields) cho
cỏc gúi dữ liệu.
Hỡnh 3.3 cho thấy cỏc tiờu đề gúi tin cho cả hai (A) TCP và (B) UDP. Cỏc trường
packet length xuất hiện trong phiờn bản TCP chỉ ra chiều dài của gúi tin. Trường này là
khụng cần thiết cho UDP, bởi vỡ UDP là một giao thức khụng kết nối, TCP là một giao thức truyền thụng hướng kết nối. Cỏc trường mó op(op code) Nhận dạng loại gúi tin. Hỡnh 3.4 , cho thấy giỏ trị cú thể của nú.
Hỡnh 3. 3: The OpenVPN Packet Header OpenVPN Op Codes
Giỏ trị OP CODE í nghĩa
1 P_CONTROL_HARD_RESET_CLIENT_V1 Kiểu 1 khúa khởi đầu từ client 2 P_CONTROL_HARD_RESET_SERVER_V1 Kiểu 1 khúa khởi đầu từ server
3 P_CONTROL_SOFT_RESET_V1 Khúa mới
79
OpenVPN Op Codes
Giỏ trị OP CODE í nghĩa
5 P_ACK_V1 ACK
6 P_DATA_V1 gúi kờnh dữ liệu
7 P_CONTROL_HARD_RESET_CLIENT_V2 loại 2 hoặc khúa cao hơn ban đầu từ client
8 P_CONTROL_HARD_RESET_SERVER_V2 loại 2 hoặc khúa cao hơn ban đầu từ server
Hỡnh 3. 4: Giỏ trị OpenVPN Op Codes
Trường Key ID nhận dạng loại khúa được sử dụng cho gúi tin.
Lưu ý từ hỡnh 3.2 mó húa và xỏc thực nằm trong một phần trường data payload header. Cơ cấu chớnh xỏc được thực hiện rừ ràng trong hỡnh 3.5 , kết hợp data payload header và payload vào cỏc gúi dữ liệu OpenVPN.
Hỡnh 3. 5: The OpenVPN Data Packet
Trường HMAC là một chuẩn HMAC SHA-1 hoặc MD5 dựa trờn HMAC. Như đó nờu trong sơ đồ, đõy là trường xỏc thực tải, Packet ID và IV. IV là một vector khởi tạo ngẫu nhiờn cho chế độ mó húa CBC.
Ngoài chế độ CBC, OpenVPN hỗ trợ cỏc thụng tin phản hồi mật mó (cipher feedback - CFB) và chế độ đầu ra thụng tin phản hồi (output feedback-OFB). Cỏc IV thường cú độ dài là 64 hoặc 128 bit .
80
Trường packet ID được sử dụng như một trường sequence number để ngăn chặn cỏc cuộc tấn cụng phỏt lại(replay attack). OpenVPN duy trỡ một cửa sổ trượt (sliding window) số thứ tự (sequence number) và từ chối nếu một gúi tin của nú cú số thứ tự là khụng hợp lệ.
Ngoài cỏc cửa sổ trượt, OpenVPN ỏp dụng một bài kiểm tra thời gian và từ chối out- of-order packets được nhận được hơn t giõy sau khi bất kỳ gúi cú chứa một số thứ tự cao hơn. Tham số t là cấu hỡnh với một giỏ trị mặc định là 15 giõy. Chiều rộng của cửa sổ cũng được cấu hỡnh, với một mặc định là 64 (64 sequence numbers).
Hỡnh 3.5 Cú thể thấy Packet ID là 32 bit, kớch thước của nú khi chế độ CBC được sử dụng. Khi CFB, OFB, hoặc chế độ static key sử dụng, kớch thước của nú sẽ được 64 bit.
Như chỳng ta cú thể thấy, OpenVPN Data Channel chớnh xỏc đỏp ứng yờu cầu cho một VPN: một đường hầm mó húa và xỏc thực giữa hai mạng hoặc mỏy tớnh. Như chỳng ta thấy khi chỳng ta thảo luận về an ninh, kờnh dữ liệu được thiết kế tốt và khụng cú bất kỳ khai thỏc điểm yếu an ninh.