Một dòng ghi «lần bắt tay gần nhất, hai phút trước» trông như bằng chứng về hoạt động liên tục và yếu hơn thế. Nó đánh dấu lần trao đổi khóa hoàn tất gần nhất cho một peer, diễn ra theo bộ hẹn giờ làm mới khóa cố định khi lưu lượng chạy và dừng lại khi peer im lặng. Việc thời điểm đó có liên kết một người với bất cứ điều gì hay không phụ thuộc vào các định danh được lưu bên cạnh và đồng hồ của cả hai hệ thống. Dưới đây là cách bản ghi hoạt động trong hai ngăn xếp phổ biến nhất, và nơi việc đọc nó sai.

Hai bản ghi, hai ý nghĩa khác nhau

WireGuard giữ một dấu thời gian bắt tay cho mỗi peer, được thay thế mỗi lần làm mới khóa, cùng với bộ đếm byte theo mỗi hướng. OpenVPN thường ghi lại thời điểm bắt đầu phiên, một lần ngắt kết nối và mọi thứ mà mức chi tiết đã cấu hình thêm vào, khiến đơn vị của bản ghi là phiên chứ không phải lần trao đổi khóa.

Sự khác biệt đó quyết định ý nghĩa của một sự vắng mặt:

QuestionWireGuard handshakeOpenVPN session log
Did the peer send recently?Strong hint within the rekey windowNot answered by start time alone
Did the peer stop?Weak, because idle peers also stop rekeyingOnly if a disconnect was written
What was visited?NothingNothing

Vì sao bắt tay không phải là sử dụng liên tục

WireGuard làm mới khóa khoảng hai phút một lần chừng nào còn dữ liệu cần bảo vệ, và một peer trở nên nhàn rỗi chỉ đơn giản dừng lại. Vì vậy một lần bắt tay cũ có thể nghĩa là laptop đang ngủ, người dùng đã ngừng làm việc, hoặc mạng đã bỏ các gói tin lẽ ra kích hoạt lần trao đổi tiếp theo. Dấu thời gian là giới hạn dưới của hoạt động, không phải công cụ theo dõi sự chú ý.

Sai lầm ngược lại cũng dễ như vậy. Lưu lượng keepalive liên tục giữ đường hầm ấm trên một thiết bị nhàn rỗi, nên một lần bắt tay gần đây có thể xuất hiện trên máy mà không ai chạm vào suốt một giờ. Bộ đếm byte giúp ích ở đây, vì chúng phân biệt một peer gửi dữ liệu thật với một peer chỉ trao đổi keepalive, và cũng cho biết hướng nào mang khối lượng. Không điều nào trong số đó tiết lộ đích đến, trang hay truy vấn.

Các định danh đi cùng dấu thời gian

Một thời điểm không có tài khoản, khóa công khai hay địa chỉ nguồn là đứa trẻ mồ côi. Ghép dấu thời gian với danh tính của peer và quan sát trở nên có thể liên kết: khóa công khai tồn tại qua các lần đổi địa chỉ, trong khi địa chỉ nguồn có thể được nhiều thuê bao chia sẻ sau bước dịch địa chỉ của nhà mạng.

Sự bất đối xứng đó là điều hầu hết các cuộc thảo luận về quyền riêng tư bỏ sót. Địa chỉ trông ẩn danh vì nó được chia sẻ, và khóa trông kỹ thuật vì nó dài, nhưng khóa mới là định danh ổn định. Giữ một trường và bỏ trường kia thay đổi rủi ro tương quan mà không đổi độ chính xác bề ngoài.

Bản thân tương quan là mối lo được ghi nhận. Nối một thời điểm kết nối với một sự kiện đăng nhập của nhà cung cấp, một phiếu hỗ trợ hay một bản ghi thanh toán có thể liên kết một danh tính với hoạt động ngay cả khi chưa từng ghi lại đích đến nào, và đó là lý do việc ghép cặp quan trọng hơn việc định dạng.

Tương quan giữa các hệ thống cần chăm sóc đồng hồ

Hai hệ thống báo cùng một thời điểm hiếm khi khớp đến từng giây. Một bên có thể áp dụng độ lệch múi giờ trong đầu ra, bên kia có thể chạy trên đồng hồ sai vài giây, và một máy ảo có thể trôi sau khi bị tạm dừng.

Trước khi kết luận hai sự kiện xảy ra cùng nhau, hãy chuyển cả hai về cùng múi giờ và kiểm tra độ lệch trong bản ghi thô chứ không phải trong hiển thị. Nếu khoảng cách bạn đo nhỏ hơn độ lệch có thể xảy ra, bạn hoàn toàn không có thứ tự.

Quy tắc thực tế là giữ độ chính xác mà công việc khắc phục sự cố cần và không hơn. Số phiên mỗi giờ trả lời câu hỏi về tính sẵn sàng mà không giữ lịch sử theo từng tài khoản, và một bản tổng hợp có thể được lưu lâu hơn nhiều so với các hàng thô mà nó hình thành.

Đọc bản ghi bằng lệnh, không bằng trí tưởng tượng

In ra các trường bạn sắp lập luận, theo đơn vị mà công cụ lưu trữ chứ không phải đơn vị mà bảng điều khiển hiển thị.

Hai dòng này hiển thị tuổi của lần bắt tay và bộ đếm byte cho từng peer WireGuard, sau đó là loại tư liệu tương tự từ một tệp trạng thái OpenVPN:

wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.status

So sánh tuổi với khoảng làm mới khóa trước khi kết luận, và đọc các bộ đếm cùng với nó. Một peer có lần bắt tay gần đây và gần như không truyền tải đang trao đổi keepalive, trong khi một peer có lần bắt tay cũ và bộ đếm lớn đã bận cho đến khi dừng lại. Không dòng nào nói đã làm gì, và nói thẳng điều đó chính xác hơn là ngụ ý rằng dấu thời gian chứng minh một lượt truy cập.

Bài viết liên quan