Helpex - Trao đổi & giúp đỡ Đăng nhập

Mổ xẻ TLS bằng Wireshark

mục tiêu chính của giao thức bảo mật lớp truyền tải như được định nghĩa trong rfc 2246 (tls phiên bản 1.0) là “cung cấp quyền riêng tư và tính toàn vẹn dữ liệu giữa hai ứng dụng giao tiếp”. giao thức tls đảm bảo điều này bằng cách mã hóa dữ liệu để bất kỳ bên thứ ba nào không thể chặn giao tiếp; nó cũng xác thực các đồng nghiệp để xác minh danh tính của họ. bằng cách cung cấp một kênh liên lạc an toàn giữa hai đồng nghiệp, giao thức tls bảo vệ tính toàn vẹn của thông điệp và đảm bảo nó không bị giả mạo.

lịch sử

tls và ssl được sử dụng thay thế cho nhau. tls phát triển từ giao thức ssl (ssl 3.0) không còn được coi là an toàn nữa; các lỗ hổng như cuộc tấn công poodle đã chứng minh điều này. tls đã trải qua hai lần lặp lại, rfc 4346 (tls 1.1) và rfc 5246 (tls 1.2), với bản cập nhật mới nhất tls 1.3 là một bản nháp đang hoạt động.

ngành kiến ​​trúc
Mổ xẻ TLS bằng Wireshark


tls nằm giữa ứng dụng và lớp truyền tải. nó được thiết kế để hoạt động trên một giao thức truyền tải đáng tin cậy như tcp (nhưng cũng đã được điều chỉnh cho phù hợp với udp) và được chia thành hai lớp con:

  • Lớp giao thức bản ghi tcp - đây là lớp thấp hơn nằm trên cùng của lớp tcp và chịu trách nhiệm:
    • phân mảnh thông điệp để truyền thành các khối có thể quản lý được.
    • mã hóa / giải mã dữ liệu đã băm.
    • nén / giải nén dữ liệu đi / đến.
    • áp dụng mã xác thực tin nhắn (mac), một hàm băm để duy trì tính toàn vẹn của dữ liệu.
    • truyền dữ liệu từ lớp ứng dụng trên xuống lớp truyền tải dưới và ngược lại.
  • lớp cao hơn bao gồm các giao thức con sau:
    • cảnh báo: giao thức con này xác định các mức cảnh báo và cung cấp mô tả về các cảnh báo. nó được sử dụng để thông báo cho đồng nghiệp về bất kỳ điều kiện lỗi nào đã xảy ra.
    • thay đổi thông số kỹ thuật mật mã: nó xác định các thay đổi trong chiến lược mật mã. thông báo thông số kỹ thuật mật mã thay đổi, được truyền bởi cả máy khách và máy chủ, xác định thông số kỹ thuật mật mã được thương lượng lại và các khóa sẽ được sử dụng cho tất cả các thông báo được trao đổi từ đó trở đi.
    • dữ liệu ứng dụng: giao thức này đảm bảo rằng các thông điệp được phân mảnh, nén, mã hóa và truyền đi một cách an toàn.
    • bắt tay: để giao tiếp qua một kênh an toàn, hai đồng nghiệp phải đồng ý về các khóa mật mã và thuật toán mã hóa cho phiên đó. giao thức tls mô tả các bước để xác thực các đồng nghiệp và thiết lập kết nối an toàn với các tham số xác định. toàn bộ chuỗi liên quan đến việc thiết lập số nhận dạng phiên, phiên bản giao thức tls, thương lượng bộ mật mã, xác thực chứng chỉ của các đồng nghiệp và trao đổi khóa mật mã giữa các đồng cấp được gọi là bắt tay tls. các bước liên quan đến bắt tay tls được hiển thị bên dưới:

Mổ xẻ TLS bằng Wireshark

phân tích bắt tay tls bằng Wirehark

sơ đồ dưới đây là ảnh chụp nhanh về sự bắt tay tls giữa một máy khách và một máy chủ được chụp bằng wirehark, một công cụ phân tích giao thức mạng phổ biến.

Mổ xẻ TLS bằng Wireshark

chúng ta hãy phân tích từng bước.

1. giao tiếp từ máy khách đến máy chủ ban đầu

xin chào khách hàng

Mổ xẻ TLS bằng Wireshark


thông thường, thông điệp đầu tiên trong quá trình bắt tay tls là thông điệp xin chào máy khách được gửi bởi máy khách để bắt đầu một phiên với máy chủ.

Mổ xẻ TLS bằng Wireshark


tin nhắn chứa:

  • phiên bản: số phiên bản giao thức tls mà máy khách muốn sử dụng để giao tiếp với máy chủ. đây là phiên bản cao nhất được hỗ trợ bởi khách hàng.
  • máy khách ngẫu nhiên: số giả ngẫu nhiên 32 byte được sử dụng để tính bí mật chính (được sử dụng trong việc tạo khóa mã hóa).
  • số nhận dạng phiên: một số duy nhất được khách hàng sử dụng để xác định phiên.
  • bộ mật mã: danh sách các bộ mật mã được khách hàng hỗ trợ đặt hàng theo sở thích của khách hàng. bộ mật mã bao gồm một thuật toán trao đổi khóa, thuật toán mã hóa hàng loạt, thuật toán mac và một hàm giả ngẫu nhiên. ví dụ về một bộ mật mã duy nhất (một trong 28 bộ được đề cập trong sơ đồ trên) như sau:
  • where
    tls = protocol version
    rsa = key exchange algorithm determining the peer authentication
    3des_ede_cbc = bulk encryption algorithm used for data encryption
    sha-1 = message authentication code which is a cryptographic hash.


  • phương pháp nén : chứa danh sách các thuật toán nén được sắp xếp theo sở thích của khách hàng. đây là tùy chọn.

2. phản hồi của máy chủ với máy khách

Mổ xẻ TLS bằng Wireshark

Mổ xẻ TLS bằng Wireshark

máy chủ trả lời máy khách bằng nhiều thông báo:

máy chủ xin chào

Mổ xẻ TLS bằng Wireshark


máy chủ xin chào chứa thông tin sau:

  • phiên bản máy chủ : phiên bản giao thức tls cao nhất được hỗ trợ bởi máy chủ cũng được hỗ trợ bởi máy khách.
  • máy chủ ngẫu nhiên : số giả ngẫu nhiên 32 byte được sử dụng để tạo bí mật chính.
  • số nhận dạng phiên : số duy nhất để xác định phiên cho kết nối tương ứng với máy khách.
    • nếu id phiên trong thông báo chào máy khách không trống, máy chủ sẽ tìm thấy một điểm trùng khớp trong bộ đệm phiên. nếu tìm thấy một kết quả phù hợp và máy chủ muốn sử dụng cùng một trạng thái phiên, nó sẽ trả về cùng một id như được gửi bởi máy khách. nếu máy chủ không muốn tiếp tục cùng một phiên, thì một id mới sẽ được tạo. máy chủ cũng có thể gửi một id trống, cho biết không thể tiếp tục phiên.
  • bộ mật mã : bộ mật mã mạnh nhất mà cả máy chủ và máy khách đều hỗ trợ. nếu không có bộ mật mã hỗ trợ, thì một cảnh báo lỗi bắt tay sẽ được tạo.
  • phương pháp nén : thuật toán nén được cả máy chủ và máy khách đồng ý. đây là tùy chọn.

chứng chỉ máy chủ

Mổ xẻ TLS bằng Wireshark

máy chủ gửi cho máy khách một danh sách các chứng chỉ x.509 để tự xác thực. chứng chỉ của máy chủ chứa khóa công khai của nó. xác thực chứng chỉ này được thực hiện bởi bên thứ ba (tổ chức phát hành chứng chỉ) được đồng nghiệp, hệ điều hành và trình duyệt tin cậy có chứa danh sách tổ chức phát hành chứng chỉ nổi tiếng hoặc bằng cách nhập thủ công chứng chỉ mà người dùng tin cậy.

tình trạng chứng chỉ

Mổ xẻ TLS bằng Wireshark

thông báo này xác thực xem chứng chỉ số x.509 của máy chủ có bị thu hồi hay không, nó được xác định bằng cách liên hệ với máy chủ ocsp (giao thức trạng thái chứng chỉ trực tuyến) được chỉ định. phản hồi ocsp, được ghi ngày và ký, chứa trạng thái chứng chỉ. máy khách có thể yêu cầu máy chủ gửi thông báo “trạng thái chứng chỉ” có chứa phản hồi ocsp. cách tiếp cận này được gọi là ocsp stapling. quá trình này tiết kiệm băng thông trên các mạng bị hạn chế vì nó ngăn các máy chủ ocsp bị quá tải với quá nhiều yêu cầu của khách hàng.

khách hàng, để cho biết rằng nó muốn một thông báo trạng thái chứng chỉ, bao gồm một phần mở rộng của loại “status_request” trong yêu cầu xin chào của ứng dụng khách.

Mổ xẻ TLS bằng Wireshark


trao đổi khóa máy chủ

Mổ xẻ TLS bằng Wireshark

thông báo là tùy chọn và được gửi khi khóa công khai có trong chứng chỉ của máy chủ không phù hợp để trao đổi khóa hoặc nếu bộ mật mã đặt ra hạn chế yêu cầu khóa tạm thời. khóa này được khách hàng sử dụng để mã hóa quá trình trao đổi khóa của khách hàng sau này.

yêu cầu chứng chỉ khách hàng

điều này là tùy chọn và được gửi khi máy chủ muốn xác thực máy khách, giả sử, một trang web mà máy chủ cần xác nhận danh tính của máy khách trước khi cung cấp quyền truy cập vào thông tin cá nhân. thông báo chứa loại chứng chỉ được yêu cầu và danh sách các tổ chức phát hành chứng chỉ được chấp nhận.

máy chủ xin chào đã xong

Mổ xẻ TLS bằng Wireshark

thông báo này cho biết máy chủ đã hoàn tất và đang chờ phản hồi của máy khách.

3. phản hồi của máy khách với máy chủ

Mổ xẻ TLS bằng Wireshark

trao đổi khóa khách hàng

Mổ xẻ TLS bằng Wireshark


tin nhắn này chứa:

  • phiên bản giao thức của máy khách mà máy chủ xác minh xem nó có khớp với thông báo chào máy khách ban đầu hay không.
  • pre-master secret - một số ngẫu nhiên do máy khách tạo ra và được mã hóa bằng khóa công khai của máy chủ. điều này cùng với số ngẫu nhiên của máy khách và máy chủ được sử dụng để tạo bí mật chính. nếu máy chủ có thể giải mã thư bằng khóa riêng và có thể tạo bí mật chính cục bộ, thì máy khách được đảm bảo rằng máy chủ đã tự xác thực.

thay đổi thông số kỹ thuật mật mã

Mổ xẻ TLS bằng Wireshark


thông báo này thông báo cho máy chủ rằng tất cả các thư trong tương lai sẽ được mã hóa bằng thuật toán và các khóa vừa được thương lượng.

đã hoàn thành (bắt tay được mã hóa)

Mổ xẻ TLS bằng Wireshark


thông điệp đã hoàn thành phức tạp vì nó là một hàm băm của tất cả các thông điệp được trao đổi trước đó cùng với một nhãn (“khách hàng đã hoàn thành”). thông báo này cho biết rằng thương lượng tls đã hoàn tất cho khách hàng.

lưu ý: wirehark hiển thị thông báo đã hoàn thành dưới dạng bắt tay được mã hóa vì, không giống như các thông báo trước đó, thông báo này đã được mã hóa bằng các khóa / thuật toán vừa được thương lượng.

4. phản hồi của máy chủ đối với máy khách

Mổ xẻ TLS bằng Wireshark

thay đổi thông số kỹ thuật mật mã

Mổ xẻ TLS bằng Wireshark

máy chủ thông báo cho khách hàng rằng các thông báo sẽ được mã hóa bằng các thuật toán và khóa hiện có. lớp bản ghi bây giờ thay đổi trạng thái của nó để sử dụng mã hóa khóa đối xứng.

đã kết thúc

Mổ xẻ TLS bằng Wireshark

giống như thông báo đã hoàn thành của ứng dụng khách nhưng có nhãn khác (“máy chủ đã hoàn thành”). sau khi máy khách giải mã và xác thực thông báo thành công, máy chủ đã được xác thực thành công.

5. luồng dữ liệu ứng dụng

Mổ xẻ TLS bằng Wireshark

khi toàn bộ quá trình bắt tay tls được hoàn tất thành công và các ứng dụng ngang hàng được xác thực, các ứng dụng trên các ứng dụng ngang hàng có thể bắt đầu giao tiếp với nhau.

bài báo đưa ra giải thích ngắn gọn về cách thức hoạt động của giao thức tls và phân tích quá trình bắt tay tls bằng cách sử dụng một công cụ mạnh mẽ như wirehark. Một điều quan trọng cần lưu ý là các ứng dụng không nên dựa vào tls để tạo kết nối an toàn mạnh nhất giữa các ứng dụng ngang hàng vì hacker có thể làm cho các ứng dụng tương tự giảm xuống kết nối kém an toàn nhất. ngoài ra, việc sử dụng tsl / ssl có thể ảnh hưởng đến hiệu suất. do đó, sự hiểu biết rõ ràng về giao thức sẽ giúp đánh giá các ưu điểm và lỗ hổng của nó.

17 hữu ích 0 bình luận 14k xem chia sẻ

Có thể bạn quan tâm

loading