Tài liệu giao thức là một hợp đồng giữa các cách hiện thực, và đọc kỹ sẽ cho bạn biết hai bên tuân thủ sẽ trao đổi gì và những thuộc tính nào mà các nhà thiết kế định bảo đảm. Nhưng nó không cho bạn biết tệp nhị phân nào đang chạy trên máy chủ bạn kết nối, máy chủ đó được cấu hình thế nào hay điều gì xảy ra sau đó với bản ghi tài khoản của bạn. Đây là ba loại bằng chứng khác nhau, và coi đặc tả như cả ba chính là cách một cái tên giao thức bắt đầu làm công việc mà nó không thể làm. Giữ ba thứ tách biệt là toàn bộ bài tập.

Tài liệu là khởi đầu của một lập luận, không phải kết luận của nó.

Tài liệu thực sự quy định điều gì

Với WireGuard, mô tả giao thức định nghĩa bắt tay Noise IK, một tập nguyên thủy cố định, bố cục thông điệp và khung truyền tải sau đó chở các gói. Với IKEv2, hiện vật tương đương là RFC 7296, quy định các trao đổi, tải trọng và việc thương lượng đề xuất. Trong cả hai trường hợp phạm vi đều chính xác: các thông điệp, máy trạng thái và những giả định mà dưới đó các mục tiêu bảo mật có hiệu lực.

Các chế độ tùy chọn làm việc đọc trở nên phức tạp. Một thuộc tính đúng cho một lần bắt tay có thể không áp dụng cho một triển khai dùng cách xác thực khác hoặc cấu hình dự phòng.

Nơi các bảo đảm dừng lại

Phân tích hình thức trả lời một câu hỏi về mô hình. Công trình xác minh của WireGuard dùng một mô hình ký hiệu trong bộ chứng minh Tamarin, có thể chỉ ra rằng thiết kế chống được một số tấn công dưới các giả định của nó; nó không chỉ ra rằng một cách hiện thực không gian người dùng đã phát hành không có lỗi an toàn bộ nhớ. Chính trong khoảng trống giữa mô hình và máy móc này là nơi các sự cố thật sinh sống. Đọc một chứng minh như chứng nhận hiện thực là lỗi phạm trù.

Bí mật chuyển tiếp minh họa cùng ranh giới. Thuộc tính phụ thuộc vào việc khóa bị hủy đúng như giao thức dự định, và đó là thuộc tính của cách hiện thực và môi trường của nó, không phải của định dạng thông điệp. Một thiết kế quy định việc xóa không thể áp đặt nó trên nền tảng đưa bộ nhớ ra đĩa.

Các phụ thuộc phân tầng mở rộng khoảng trống hơn nữa: thư viện TLS phía sau một đường hầm dựa trên TLS, giao diện nhân mà một đường hầm không gian người dùng dùng, và bộ sinh số ngẫu nhiên đều nằm ngoài văn bản giao thức.

Theo các byte vào tận bản dựng

Chuyển từ tài liệu sang hiện vật bằng cách xác định các phiên bản, rồi so sánh chúng với thứ thực sự phục vụ lưu lượng. Một sản phẩm nêu tên giao thức có thể thêm các thành phần cung cấp, đo từ xa và quản lý mà đặc tả không bao giờ mô tả.

openvpn --version | head -3
wg --version
dpkg -l | grep -E 'openvpn|wireguard|libssl'
ss -lunp | grep -E '1194|51820'
sha256sum ./wireguard-tools_1.0.20210914_amd64.deb

Các bản dựng tái lập được và tổng kiểm tra công bố giúp liên kết cây mã nguồn với tệp nhị phân được phân phối. Không có liên kết đó, mã nguồn công bố chỉ chứng minh việc kiểm tra là khả thi, không chứng minh tệp đang chạy khớp với nó.

Cấu hình thuộc cùng bước. Các bộ mật mã, các đối tác được phép và thiết lập định tuyến là lựa chọn triển khai, và một bản dựng tuân thủ được cấu hình cẩu thả vẫn tạo ra một đường hầm yếu.

Giữ các thực hành vận hành tách biệt

Hồ sơ tài khoản, dữ liệu thanh toán và yêu cầu hỗ trợ là quyết định của nhà vận hành mà không văn bản giao thức nào ràng buộc. Báo cáo kiểm toán bao gồm các thành phần được nêu tên trong phạm vi đã công bố, và chính sách quyền riêng tư mô tả ý định và thực hành; không cái nào thay thế cái kia, và không cái nào là một phát biểu mật mã.

Kết luận chính xác mang tính tích lũy: đặc tả giải thích thiết kế, bản dựng và cấu hình giải thích đường hầm, và các thực hành được ghi nhận của nhà vận hành giải thích mọi thứ mà đường hầm không bao giờ thấy. Hãy nói bạn đã xác minh điều nào trong số đó, và tuyên bố vẫn đúng.

Bài viết liên quan