2.3.1.3. Các thông điệp trao đổi trong pha thiết lập liên kết
(1). Thông điệp ClientHello
Thông điệp ClientHello được máy khách gửi để bắt đầu phiên giao tiếp SSL.
Bảng 2.3: Các thành phần trong thông điệp ClientHello
Tên trường Ý nghĩa
Version Phiên bản SSL cao nhất mà máy khách hỗ trợ.
RandomNumber Một số ngẫu nhiên 32 bytes dùng để tính tốn các tham số bí mật trong phiên SSL.
CipherSuites Danh sách các tham số bảo mật mà máy khách hỗ trợ.
CompressionMethod Danh sách các phương thức nén dữ liệu mà máy khách hỗ trợ.
Trường Version chứa giá trị cho biết phiên bản SSL cao nhất mà máy khách hỗ trợ. Nếu máy khách gửi tới máy chủ phiên bản SSL 3.0 mà khi đó máy chủ chỉ hỗ trợ phiên bản SSL 2.0 thì máy chủ có thể trả lời với phiên bản SSL 2.0 và máy khách có thể tiếp tục phiên SSL với phiên bản 2.0 hoặc có thể hủy bỏ phiên giao tiếp.
Trường RandomNumber chứa một số ngẫu nhiên 32 byte dùng để tạo các tham số bí mật mật cho phiên SSL. 4 bytes đầu chứa giá trị ngày và giờ hiện tại nhằm mục đích bảo vệ sự tấn cơng trở lại, 28 bytes còn lại là chuỗi ngẫu nhiên được sinh bởi bộ sinh số ngẫu nhiên.
Trường SessionID chứa giá trị cho biết số định danh phiên. Giá trị này có thể bằng 0 hoặc khác 0 tùy thuộc vào phiên mà máy khách muốn thiết lập.
Trường CipherSuites là danh sách các dịch vụ mã hoá mà máy khách hỗ trợ, bao gồm các thuật toán mã hoá, thuật toán trao đổi khoá, thuật tốn băm và kích thước khố. Máy chủ căn cứ vào danh sách này để chọn ra các thuật toán dùng cho phiên SSL.
Trường CompressionMethod là danh sách các thuật toán nén được hỗ trợ bởi máy khách
(2). Thông điệp ServerHello
Thông điệp ServerHello được máy chủ gửi cho máy khách để cung cấp các tham số bảo mật dùng cho phiên. Nội dung thông điệp được liệt kê trong bảng 2.4
Bảng 2.4: Các thành phần trong thông điệp ServerHello
Tên trường Ý nghĩa
Version Phiên bản SSL được sử dụng cho phiên giao tiếp.
RandomNumber Một số ngẫu nhiên 32 bytes dùng để tính tốn các tham số bí mật trong phiên SSL.
SessionID Số định danh phiên SSL.
CipherSuites Danh sách các tham số bảo mật được sử dụng trong phiên
CompressionMethod Các phương thức nén dữ liệu được sử dụng trong phiên.
Trường Version chứa phiên bản SSL sẽ được dùng trong phiên. Căn cứ vào phiên bản SSL mà máy khách gửi, máy chủ chọn một phiên bản SSL phù hợp để sử dụng cho phiên giao tiếp.
Trường RandomNumber chứa một số ngẫu nhiên 32 byte dùng cho việc tạo các tham số phiên. 4 bytes đầu chứa ngày và giờ nhằm mục đích bảo vệ sự tấn cơng trở lại, 28 bytes cịn lại là số ngẫu nhiên được sinh bởi bộ sinh số ngẫu nhiên.
Trường SessionID chứa một số khác 0 cho biết số định danh phiên được thiết lập.
Trường CipherSuites là danh sách các thuật tốn và thơng tin khóa mà máy chủ đã lựa chọn để dùng cho phiên SSL. Các thuật toán này được chọn trong danh sách mà máy khách gửi cho nó.
(3). Thông điệp Certificate:
Sau khi gửi thông điệp ServerHello, máy chủ gửi tiếp thông điệp Certificate nhằm mục đích xác thực máy chủ. Thông điệp này là chuỗi của chứng chỉ số X.509.
(4). Thông điệp CertificateRequest
Thông điệp CertificateRequest được máy chủ gửi khi có yêu cầu xác thực máy khách. Nội dung thông điệp thông báo cho máy khách biết những kiểu chứng chỉ mà máy chủ có thể chấp nhận. Các trường trong thông điệp CertificateRequest được mô tả trong bảng 2.5:
Bảng 2.5: Các thành phần trong thông điệp CertificateRequest
Tên trường Ý nghĩa
CertificateTypes Danh sách các kiểu chứng chỉ số có thể chấp nhận bởi máy chủ.
Distinguished- Names
Danh sách tên các nhà cung cấp chứng chỉ số có thể được máy chủ chấp nhận.
(5). Thông điệp ServerHelloDone
Thông điệp ServerHelloDone thông báo máy khách biết rằng máy chủ đã gửi thông điệp cuối cùng trong pha thương lượng. Thông điệp này khơng chứa thơng tin nhưng nó rất quan trọng với máy khách, bởi vì khi máy khách nhận thơng điệp này có thể chuyển sang trạng thái thiết lập kết nối.
(6). Thông điệp ClientKeyExChange
Khi máy chủ hoàn thành việc thương lượng, máy khách trả lời với thông điệp ClientKeyExChange, thông điệp này cung cấp thông tin cho quá trình tạo
các tham số phiên. Nội dung thơng điệp ClientKeyExChange là một chuỗi bí mật được mã hố bằng khố cơng khai của máy chủ nhằm mục đích bảo vệ thơng tin trên đường truyền và kiểm tra sự tương ứng giữa khố cơng khai và khố riêng mà máy chủ sở hữu. Thơng điệp này đảm bảo máy khách đang giao tiếp với thành phần sở hữu khố riêng, chỉ có hệ thống với khố riêng thực sự này mới có thể giải mã được thơng điệp mà máy khách đã mã
(7). Thông điệp CertificateVerify
Thông điệp CertificateVerify cho phép máy chủ kiểm tra sự tương ứng giữa khoá riêng của máy khách với khố cơng khai có trong chứng chỉ số mà máy khách cung cấp. Nội dung của thơng điệp là bản tóm lược của tất cả các thông tin mà hai bên đã trao đổi cho tới thời điểm này và được ký bởi máy khách. Máy chủ sử dụng khố cơng khai có trong chứng chỉ số máy khách để kiểm tra chữ ký. Các thành phần của thông điệp CertificateVerify được liệt kê trong bảng 2.6:
Bảng 2.6: Các thành phần trong thông điệp CertificateVerify
Thơng tin khố
Nội dung của tất cả các thông điệp bắt tay trao đổi giữa hai bên (8). Thông điệp ChangeCipherSpec
Sau khi máy khách gửi thông điệp ClientKeyChange, pha thương lượng được hồn thành. Tại thời điểm đó, các bên sẵn sàng bắt đầu dùng các dịch vụ an ninh mà họ đã thương lượng. Giao thức SSL định nghĩa một thông điệp đặc biệt – thông điệp ChangeCipherSpec để chỉ định một thời điểm cụ thể mà các dịch vụ an ninh có hiệu lực, đó là thời điểm chuyển trạng thái. Mỗi bên tham gia giao tiếp định nghĩa hai trạng thái: trạng thái đọc (read state) và trạng thái ghi (write state). Trạng thái đọc định nghĩa các tham số bảo mật cho dữ liệu mà
hệ thống sẽ gửi, và trạng thái ghi định nghĩa các tham số bảo mật cho dữ liệu mà hệ thống sẽ nhận. Trước khi máy khách hoặc máy chủ gửi thơng điệp ChangeCipherSpec, nó phải biết đầy đủ các tham số bảo mật để kích hoạt trạng thái. Trạng thái ghi được kích hoạt ngay sau khi thơng điệp ChangeCipherSpec được gửi và trạng thái đọc được kích hoạt ngay sau khi nhận được thơng điệp này.