Tìm hiểu về tiến trình Handshake giữa TLS 1.3 và TLS 1.2

Handshake TLS 1.3 là một cải tiến đáng kể so với handshake TLS 1.2

Lý do tại sao TLS 1.3 được đánh giá cao như vậy là những cải tiến mà nó mang lại cho chúng tôi qua TLS 1.2, thành viên tốt nhất và là thành viên phục vụ lâu nhất của SSL / TLS.

Chủ yếu, TLS 1.3 mang lại hai tiến bộ so với TLS 1.2 và chúng được tạo ra vì lợi ích về bảo mật và tốc độ. TLS 1.3 cắt giảm các tùy chọn mã hóa lỗi thời và khó hiểu được hỗ trợ bởi TLS 1.2 có khả năng không an toàn. Điều này không có nghĩa là TLS 1.2 không an toàn — TLS 1.2 vẫn an toàn. Trong khi không có sự bất an tiềm ẩn nào được khai thác trong tự nhiên, từ khóa là tiềm năng.

Tuy nhiên, khi nói đến TLS 1.3, quá trình handshake của nó là điều khiến mọi người không hiểu. Trong bài viết này, bạn sẽ hiểu tại sao.

Nhưng trước khi chúng ta có thể làm được điều đó, chúng ta hãy xem xét việc handshake trông như thế nào trong TLS 1.2. Bởi bạn sẽ không thể hiểu những cải tiến trong handshake TLS 1.3 mà không biết về việc handshake TLS 1.2.

Vì vậy, chúng ta hãy xem xét kỹ hơn handshake trong TLS 1.2.

Bắt tay TLS 1.2

Handshake trong TLS 1.2 tương tự như của TLS 1.0 và 1.1, liên quan đến một loạt các thông tin liên lạc back- và -forth  giữa client và server. 

Để đơn giản hóa một chút, tôi đã gộp một vài bước này lại với nhau.

Bước 1: Toàn bộ kết nối / bắt tay bắt đầu với máy khách gửi một thông điệp “hello client”  đến máy chủ. Thông báo này bao gồm các thông tin mật mã như giao thức được hỗ trợ và CipherSuites được hỗ trợ. Nó cũng bao gồm một giá trị ngẫu nhiên hoặc chuỗi byte ngẫu nhiên.

Bước 2: Để trả lời thư “hello client” của máy khách, máy chủ phản hồi với thông báo “hello server”. Thông điệp này bao gồm CipherSuite mà máy chủ đã chọn trong số những người được cung cấp bởi khách hàng. Máy chủ cũng gửi chứng chỉ của nó cùng với ID phiên và một giá trị ngẫu nhiên khác.

Bước 3: Bây giờ máy khách xác minh chứng chỉ được gửi bởi máy chủ. Khi quá trình xác minh được thực hiện, nó sẽ gửi một chuỗi byte ngẫu nhiên, còn được gọi là “pre-master secret” và mã hóa nó bằng khóa công khai của chứng chỉ của máy chủ.

Bước 4: Khi máy chủ nhận được pre-master secret, máy khách và máy chủ đều tạo khóa chính cùng với các khóa phiên (các phím tạm thời). Các khóa phiên này sẽ được sử dụng để mã hóa đối xứng dữ liệu.

Bước 5: Bây giờ máy khách gửi một thông báo “Change Cipher Spec” tới máy chủ để cho nó biết rằng nó sẽ chuyển sang mã hóa đối xứng với sự trợ giúp của các khóa phiên. Cùng với nó, nó cũng sẽ gửi tin nhắn “Khách hàng hoàn thành”.

Bước 6: Để trả lời thông báo “Change Cipher Spec” của máy khách, máy chủ thực hiện tương tự và chuyển trạng thái bảo mật của nó sang mã hóa đối xứng. Máy chủ kết thúc việc bắt tay bằng cách gửi thông báo “hoàn thành máy chủ”.

Như bạn có thể thấy, phải mất hai chuyến đi khứ hồi giữa khách hàng và máy chủ để hoàn tất việc bắt tay. Trung bình, điều này sẽ diễn ra trong khoảng từ 0,25 giây đến 0,5 giây. Tuy nhiên, nó có thể mất nhiều hơn tùy thuộc vào một số yếu tố. Nửa giây có thể không có vẻ như rất nhiều thời gian nhưng hãy nhớ; đây chỉ là thời gian cho việc handshake, việc truyền dữ liệu vẫn chưa bắt đầu. Khi bạn so sánh TTFB (thời gian với byte đầu tiên) của các trang web HTTP và HTTPS, TTFB của trang web HTTPS mất nhiều thời gian hơn khi so sánh với trang web HTTP, đặc biệt khi trang web đang chạy trên HTTP / 1.

Handshake TLS 1.3

Quá trình handshake TLS 1.3 chỉ liên quan đến một chuyến đi khứ hồi thay vì ba chuyến trong TLS 1.2.Điều này dẫn đến độ trễ giảm.

Bước 1: Tương tự như quá trình handshake trong TLS 1.2, handshake TLS 1.3 bắt đầu bằng thông báo “Client Hello” – với một thay đổi đáng kể. Máy khách gửi danh sách các bộ dãy cypher được hỗ trợ và dự đoán giao thức thỏa thuận khóa nào mà máy chủ có khả năng chọn. Máy khách cũng gửi chia sẻ khóa của nó cho giao thức thỏa thuận khóa cụ thể đó.

Bước 2: Để trả lời thư “Client Hello”, máy chủ trả lời bằng giao thức thỏa thuận khóa mà nó đã chọn. Thông báo “Server Hello” cũng bao gồm phần chia sẻ khóa của máy chủ, chứng chỉ của nó cũng như thông báo “Server Finished”.

Thông báo “Hoàn thành máy chủ”, được gửi ở bước thứ 6 trong quá trình bắt tay TLS 1.2, được gửi ở bước thứ hai. Qua đó, tiết kiệm bốn bước và một chuyến đi vòng trên đường đi.

Bước 3: Bây giờ, máy khách kiểm tra chứng chỉ máy chủ, tạo ra các khóa vì nó có phần chia sẻ chính của máy chủ và gửi thông báo “Khách hàng đã hoàn tất”. Từ đây, mã hóa dữ liệu bắt đầu.

Bằng cách này, bắt tay TLS 1.3 tiết kiệm toàn bộ chuyến đi khứ hồi và hàng trăm mili giây. Một cải tiến lớn trong việc bắt tay TLS 1.2. Bạn có thể có khuynh hướng nói rằng điều này tạo ra sự khác biệt rất ít hoặc không, nhưng không! Vào năm 2006, khi mọi người có một thứ gọi là kiên nhẫn, Marissa Mayer tiết lộ rằng sự chậm trễ nửa giây đã làm giảm 20% lưu lượng truy cập. Hai mươi phần trăm !!!

0-RTT nối lại: The Good

Một mốc quan trọng khác mà TLS 1.3 được thiết lập để hoàn thành là quá trình tiếp tục 0-RTT. Điều đó có nghĩa là nếu khách hàng đã kết nối với máy chủ trước đó, TLS 1.3 cho phép việc bắt tay chuyến đi bằng không. Điều này được thực hiện bằng cách lưu trữ thông tin bí mật (thông thường, ID phiên hoặc Vé phiên) của các phiên trước đó và sử dụng chúng khi cả hai bên kết nối với nhau trong tương lai.

Tiếp tục 0-RTT: Lỗi

Tuy nhiên, có một vài lo ngại khi nói đến bảo mật trong các phiên nối lại 0-RTT. Việc đầu tiên là thiếu bí mật về phía trước đầy đủ. Điều đó có nghĩa là nếu các khóa vé phiên này bị xâm nhập, kẻ tấn công có thể giải mã dữ liệu 0-RTT do khách hàng gửi trên chuyến bay đầu tiên. Tất nhiên, điều này có thể dễ dàng tránh được bằng cách xoay các khóa phiên thường xuyên. Nhưng xem xét TLS 1.2 không hỗ trợ đầy đủ bí mật về phía trước, TLS 1.3 chắc chắn là một sự cải tiến.

Vấn đề an ninh thứ hai khi nói đến TLS 1.3 0-RTT là nó không đảm bảo rằng việc phát lại giữa các kết nối. Nếu kẻ tấn công bằng cách nào đó quản lý để giữ dữ liệu được mã hóa 0-RTT của bạn, nó có thể đánh lừa máy chủ tin rằng yêu cầu đến từ máy chủ vì nó không có cách nào biết dữ liệu đến từ đâu. Nếu kẻ tấn công gửi yêu cầu này nhiều lần, nó được gọi là ‘tấn công phát lại’. Nó không phải là dễ dàng như nó âm thanh và rõ ràng, có một số cơ chế để ngăn chặn điều đó (nhiều hơn về điều đó trong bài viết khác).

Suy nghĩ cuối cùng

Không cần phải nói, TLS 1.3 cung cấp những cải tiến đáng kể về an ninh cũng như độ trễ. Bạn có thể trải nghiệm sức mạnh của TLS 1.3 vì Chrome và Firefox đã bật hỗ trợ cho bản nháp của nó. Điều duy nhất còn lại để được nhìn thấy là khi nó được xuất bản và trở thành một tiêu chuẩn. Điều chắc chắn là nó sẽ phục vụ chúng ta trong nhiều năm tới!

bình luận

Leave a Comment