Trao đổi khóa TLS so với chứng chỉ máy khách: cái nào đăng nhập?
Tách thỏa thuận khóa khỏi xác thực máy khách và danh tính ứng dụng, rồi đọc các thông điệp bắt tay cho thấy kết nối thực sự đã dùng cái nào.
Mang một giá trị trao đổi khóa công khai trong bắt tay không phải là cùng một sự kiện với việc máy khách đăng nhập. Một bên thiết lập trạng thái mật mã cho kết nối; bên kia nói rõ máy khách là ai, và chỉ xảy ra khi máy chủ yêu cầu và trao đổi hỗ trợ điều đó. Coi cái đầu là cái sau dẫn đến kết luận sai về những gì VPN che giấu và không che giấu. Hãy đọc các thông điệp, rồi quyết định bạn thực sự quan sát được thuộc tính nào trong bốn thuộc tính.
Hai đối tượng trông giống nhau trong bản ghi
Máy khách TLS 1.3 có thể đóng góp tài liệu trao đổi khóa trong chuyến bay đầu tiên mà không trình bất kỳ chứng chỉ nào. Đóng góp đó là công khai theo thiết kế, vì máy chủ cần nó để tạo ra bí mật chung. Chứng chỉ máy khách là thông điệp khác, chỉ được gửi sau khi máy chủ yêu cầu. Nó mang danh tính mà máy chủ sau đó xác minh, và xác thực lẫn nhau là quyết định của máy chủ, không phải thuộc tính mà bộ mật mã hàm ý. Danh tính ứng dụng là thứ thứ ba hoàn toàn khác: biểu mẫu đăng nhập, token mang, cookie. Không thứ nào trong số đó xuất hiện trong bắt tay, và tất cả đều tồn tại qua thay đổi đường mạng.
| Object in play | What it establishes |
|---|---|
| Key-exchange share | Cryptographic state for this connection |
| Server certificate | Which server the client reached |
| Client certificate | Client authentication, when requested |
| Application session | Account identity inside the application |
Bốn hàng độc lập. Một kết nối có thể có hàng một và hai, bỏ qua hàng ba, và vẫn mang hàng bốn trong tiêu đề cookie.
Quyết định bắt tay đã ghi lại có thể chứng minh điều gì
Chỉ từ bắt tay, người quan sát biết phiên bản đã thương lượng, bộ mật mã, chứng chỉ của máy chủ và các giá trị trao đổi khóa công khai. Thế là đủ để lấy dấu vân tay của một triển khai máy khách và xem máy chủ nào đã được liên hệ. Điều nó không cho là trạng thái riêng cần để giải mã kết nối, mà tính bí mật dựa trên trao đổi tạm thời chứ không dựa trên phần công khai. Nó cũng không cho danh tính tài khoản, thứ chưa bao giờ có trong bắt tay ngay từ đầu.
Vì vậy kết luận trung thực là hẹp: không có chứng chỉ máy khách nào được trình trong trao đổi này. Không phải là máy khách không gửi gì có thể liên kết, và chắc chắn không phải là phiên không mang bất kỳ định danh nào.
Đọc thông điệp, không đọc tên mật mã
Hỏi máy chủ yêu cầu gì, thay vì suy ra từ bộ mật mã. Một bắt tay TLS 1.3 có yêu cầu chứng chỉ là thấy được trong bản ghi, và sự vắng mặt của nó cũng thấy được như vậy.
openssl s_client -connect app.example.net:443 -tls1_3 -msg < /dev/null 2>&1 | grep -i -E 'key_share|CertificateRequest'
Sau đó lặp lại với chứng chỉ máy khách đã cấu hình và so sánh. Lần chạy thứ hai phải cho thấy chứng chỉ được gửi và chấp nhận; lần đầu không được cho thấy gì, và đó chính là khác biệt cụ thể của cuộc tranh luận.
openssl s_client -connect app.example.net:443 -tls1_3 -cert client.pem -key client.key -quiet
Nếu bạn chỉ cần trường hợp duyệt web thông thường, đầu ra chi tiết của máy khách đủ để xem phiên bản giao thức, kết quả xác minh và liệu có chứng chỉ máy khách được đề nghị hay không. Máy chủ không bao giờ gửi yêu cầu chứng chỉ thì không thể đã nhận được một cái.
Nơi việc tiếp tục thay đổi câu trả lời
Tiếp tục trong TLS 1.3 dùng vé gắn với trạng thái bí mật, nên kết nối sau có thể hoàn tất mà không cần trao đổi chứng chỉ đầy đủ. Điều đó giảm những gì người quan sát thấy và thay đổi những gì bản ghi chứng minh. Nó không tạo ra danh tính ở nơi vốn không có. Phiên được tiếp tục vẫn thuộc cùng phiên ứng dụng, và mọi cookie hay token trong phiên đó vẫn là định danh quan trọng.
Đó là lý do một đánh giá quyền riêng tư dừng ở "không có chứng chỉ máy khách" bỏ lỡ phần thú vị. Câu hỏi cần đặt là bên nào giữ một định danh ổn định, không phải thông điệp nào đã thiếu trong một lần bắt tay.
Ghi bốn thuộc tính, không phải một phán quyết
Ghi thỏa thuận khóa, xác minh máy chủ, xác thực máy khách và danh tính ứng dụng thành bốn dòng riêng, kèm bằng chứng cho từng dòng. Bản kiểm kê đó tồn tại qua thay đổi phiên bản giao thức, và nó làm cho một lập luận về quyền riêng tư có thể được người khác kiểm chứng. Sau đó thêm phần đường mạng đóng góp. VPN thay đổi địa chỉ nguồn mà dịch vụ thấy; nó không xóa đăng nhập, cookie hay dấu vân tay thiết bị mà ứng dụng đã có.
Ghi cùng nhau phiên bản đã thương lượng của kết nối và kết quả của yêu cầu chứng chỉ, vì chính cặp đó là thứ người đánh giá cần để tái tạo kết luận của bạn mà không có bản ghi riêng.