Điểm:0

Dữ liệu ứng dụng TLS 1.3 được mã hóa bằng AES-GCM được gửi 'qua dây' như thế nào?

lá cờ mx

Tôi đã cố gắng giải mã thủ công một số lưu lượng truy cập TLS 1.3 vì lý do giáo dục và đã vấp phải rào cản. Cho đến nay, tôi đã có thể hoàn thành hầu hết lịch trình khóa, bao gồm cả việc lấy được các bí mật lưu lượng truy cập bắt tay chính xác từ các khóa ECDHE. Tuy nhiên, tôi không thể tìm thấy nhiều thông tin về cách định dạng bản mã và thẻ xác thực trong các thông báo Dữ liệu ứng dụng.

Đây là bản ghi đầy đủ.

1703030017bf687d10e2f209661418d92aaf3626dfe5670f3127d6ed

Và đây là bí mật lưu lượng bắt tay của máy chủ:

475a0f3b5a86d4797e24545c2eb6388de9507e5e0bc367c74c3e78e0d8033f34b721a2e3a1d89ec5990287954402fc43

Wireshark nói với tôi rằng việc giải mã tin nhắn này mang lại bản rõ 08 00 00 02 00 00, tương ứng với thông báo Tiện ích mở rộng được mã hóa.

Từ những gì tôi có thể nói, "dữ liệu được liên kết" phải là byte 17 03 03 00 17, và phần còn lại của bản ghi là bản mã + thẻ xác thực.RFC 8446 nói rằng bộ mật mã TLS_AES_256_GCM_SHA384 được định nghĩa trong RFC 5116, nhưng RFC 5116 nói:

Tài liệu này không chỉ định bất kỳ mã hóa cụ thể nào cho AEAD đầu vào và đầu ra, vì mã hóa không ảnh hưởng đến bảo mật các dịch vụ được cung cấp bởi một thuật toán AEAD.

Tuy nhiên, tất cả những nỗ lực của tôi để giải mã dữ liệu đều không xác thực được, điều này dẫn đến hai khả năng:

  • Tôi đang dẫn xuất các khóa giao thông sai. Tôi biết rằng quy trình HKDF-Mở rộng-Nhãn của tôi hoạt động vì tất cả các bí mật khác được lấy chính xác và khớp với các giá trị được OpenSSL ghi lại. Tuy nhiên, phải thừa nhận rằng tôi không chắc chắn 100% khóa chính xác và độ dài IV là gì. Hiện tại tôi đang sử dụng khóa 32 byte và IV 12 byte. Tôi không biết đó có phải là những gì TLS 1.3 sử dụng hay không.
  • Tôi đang đọc sai thẻ xác thực/bản mã. Tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào về định dạng phù hợp, vì vậy tất cả những nỗ lực của tôi trong lĩnh vực này chỉ là phỏng đoán. Đặc biệt, tôi không chắc thẻ xác thực dành cho bộ mật mã này dài bao lâu, mặc dù việc tra cứu trên Google gợi ý rằng nó dài 12 byte.

Tôi đang làm gì sai?

adrian avatar
lá cờ mx
Tôi mới nhận ra rằng tôi đã hoàn toàn che đậy phần thông số kỹ thuật đề cập rằng IV bị XOR bởi số thứ tự bản ghi.. vấn đề chưa được giải quyết, nhưng bây giờ đã đóng lại một cách trêu ngươi.
dave_thompson_085 avatar
lá cờ cn
5116 chỉ định nghĩa các nguyên hàm AEAD, có thể sử dụng được trong tất cả các loại ứng dụng tiền điện tử, bao gồm nhưng không dành riêng cho (các) bộ mật mã TLS. Định dạng và xây dựng bản ghi được mã hóa là trong 8446 5.2 và thế hệ nonce (dường như bạn đã tìm thấy) trong 5.3.
Điểm:0
lá cờ mx

Hóa ra tôi đã phạm không chỉ một mà đến hai sai lầm!

  • Tôi đã không đọc phần RFC giải thích rằng nonce trên mỗi bản ghi được tính bằng cách XOR số thứ tự so với IV.
  • Tôi đã sử dụng độ dài thẻ không chính xác là 12 thay vì 16.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.