Tiến trình bắt tay

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Tìm hiểu hạ tầng mật mã khóa công khai - PKI, ứng dụng trong thương mại điện tử (dịch vụ công trực tuyến cấp độ 3 và truyền nhận chứng từ trong thương mại điện tử) (Trang 39 - 42)

“ * “ cho biết đây là tuỳ chọn hoặc là các thông điệp phụ thuộc tuỳ vào tình hình cụ thể sẽ không gửi đi.

Tiến trình hoạt động của giao thức bắt tay:

1. Client gửi tới server số phiên bản SSL của client, tham số của hệ mã hoá, sinh dữ liệu ngẫu nhiên (đó là digital signature) và các thông tin khác mà server cần để thiết lập kết nối với client.

2. Server gửi tới client số phiên bản SSL của server đang dùng, tham số của hệ mã hoá, sinh dữ liệu ngẫu nhiên và các thông tin khác mà client cần để thiết lập kết nối với server có dùng SSL. Server cũng gửi chứng chỉ của mình tới client, nếu client yêu cầu tài nguyên của server mà cần xác thực, thì nó yêu cầu chứng chỉ của client.

3. Client sử dụng một số thông tin mà server gửi đến để xác thực server. Nếu nhƣ server không đƣợc xác thực thì ngƣời dùng đƣợc cảnh báo và kết nối không đƣợc thiết lập. Còn nếu nhƣ xác thực đƣợc server thì phía client thực hiện tiếp bƣớc 4.

4. Sử dụng các thông tin đƣợc tạo ra trong giai đoạn bắt tay ở trên, client (cùng với sự cộng tác của server và phụ thuộc vào thuật toán đƣợc sử dụng) tạo ra Premaster Secret cho phiên làm việc. Nó mã hoá bằng khoá công khai mà server gửi đến trong chứng chỉ ở bƣớc 2, tiếp theo gửi tới server.

5. Nếu server có yêu cầu xác thực client (tuỳ chọn trong quá trình bắt tay), client sẽ ký trên dữ liệu, dữ liệu này là duy nhất đối với quá trình bắt tay và đều đƣợc lƣu trữ bởi client và server. Trong trƣờng hợp này, client sẽ gửi cả dữ liệu đƣợc ký, chứng chỉ số của mình cùng với Premaster Secret đã đƣợc mã hoá tới server.

6. Nếu server yêu cầu xác thực client, server cố gắng xác thực client. Nếu client không đƣợc xác thực, phiên làm việc sẽ bị ngắt. Nếu client đƣợc xác thực, server sẽ sử dụng khoá riêng để giải mã Premaster Secret, sau đó tạo ra Master Secret.

7. Client và server sử dụng Master Secret để tạo ra các Session Key, đó là các khoá đối xứng đƣợc dùng để mã hoá - giải mã các thông tin trong phiên làm việc và kiểm tra tính toàn vẹn dữ liệu (thay đổi về dữ liệu giữa thời điểm gửi và nhận).

8. Client gửi thông điệp tới server thông báo rằng các thông điệp tiếp theo sẽ đƣợc mã hoá bằng session key. Sau đó gửi kèm theo thông điệp riêng biệt xác định quá trình bắt tay phía server đã kết thúc.

9. Lúc này giai đoạn “bắt tay” đã hoàn thành, và phiên làm việc SSL bắt đầu. Cả hai phía client và server sẽ sử dụng các session key để mã hoá và giải mã thông tin trao đổi giữa hai bên, cũng nhƣ kiểm tra tính toàn vẹn dữ liệu.

Khi client và server quyết định sử dụng lại phiên trƣớc hoặc tạo bản sao của phiên đang tồn tại (thay vì phải thoả thuận lại các tham số an toàn mới), thì luồng thông điệp hoạt động nhƣ sau: client gửi một ClientHello có sử dụng Session ID của phiên đƣợc dùng lại, server kiểm tra nơi lƣu trữ phiên (session cache) tƣơng ứng. Nếu có, server sẽ thiết lập lại kết nối dƣới trạng thái phiên đƣợc chỉ định, server sẽ gửi một thông điệp ServerHello có giá trị Session ID giống hệt. Mỗi khi quá trình thiết lập lại đƣợc hoàn thành thì client và server có thể trao đổi dữ liệu lớp ứng dụng. Ngƣợc lại nếu Session ID không tìm thấy, thì server tạo ra Session ID mới, SSL client và server thực hiện quá trình bắt tay thông thƣờng nhƣ ở trên.

Giai đoạn 1 : Các thông điệp Hello cho kết nối logic

Client gửi một thông điệp ClientHello tới server, server phải đáp ứng lại bằng một thông điệp ServerHello, hoặc ngƣợc lại nếu lỗi xảy ra và kết nối sẽ thất bại. ClientHello và ServerHello đƣợc sử dụng để tăng tính an toàn giữa client và server. ClientHello và ServerHello thiết lập các thuộc tính: Protocol Version, Session ID, Cipher Suite và Compression Method. Ngoài ra hai giá trị ngẫu nhiên đƣợc tạo ra và đƣợc trao đổi là: ClientHello.random, ServerHello.random. Các thông điệp giai đoạn chào hỏi đƣợc dùng để trao đổi các thuộc tính thừa kế bảo mật giữa client và server.

1. Thông điệp HelloRequest

Thông điệp này đƣợc gửi bởi server tại bất kỳ thời điểm nào, nhƣng có thể bị client bỏ qua nếu Handshake Protocol đang thực hiện. Nếu client nhận HelloRequest trong trạng thái thoả thuận bắt tay thì client đơn giản là bỏ qua thông điệp này.

2. Thông điệp ClientHello

Thông điệp ClientHello bắt đầu phiên truyền thông SSL giữa hai bên. Client sử dụng thông điệp này hỏi server để bắt đầu thoả thuận các dịch vụ bảo mật dùng SSL.

3. ServerHello

Khi server nhận đƣợc thông điệp ClientHello, nó gửi đáp lại với thông điệp ServerHello. Nội dung của ServerHello tƣơng tự nhƣ ClientHello, tuy nhiên, cũng có một số điểm khác biệt.

Giai đoạn 2 : Xác thực Server và trao đổi khoá

Sau các thông điệp Hello, server bắt đầu giai đoạn 2 bằng cách gửi chứng chỉ của nó nếu cần đƣợc xác thực. Thông điệp ServerKey Exchange đƣợc gửi nếu nó đƣợc yêu cầu. Nếu server đã đƣợc xác thực, nó có thể yêu cầu chứng chỉ từ client, nếu thích hợp

với bộ mã đƣợc chọn. Sau đó, server gửi thông điệp ServerHelloDone, thể hiện rằng giai đoạn thông điệp Hello của Handshake đã hoàn thành. Server đợi đáp ứng của client.

Nếu server đã gửi thông điệp yêu cầu chứng chỉ (Certificate request message), client phải gửi lại thông điệp chứng chỉ (certificate message).

4). Thông điệp ServerCertificate

Nếu server đã đƣợc xác thực, nó phải gửi một chứng chỉ ngay sau thông điệp ServerHello. Kiểu chứng chỉ phải phù hợp với thuật toán chuyển đổi khoá của bộ mã (cipher suite) đã lựa chọn, nó thƣờng là chứng chỉ X.509 v3. Nó phải chứa khoá phù hợp với phƣơng pháp chuyển đổi khoá. Thuật toán ký cho chứng chỉ phải giống nhƣ thuật toán cho khoá chứng chỉ (certificate key).

Thông điệp Certificate dễ hiểu, đƣợc minh hoạ trong hình 14.

Kiểu thông điệp giao thức Handshake của nó là 11, nó bắt đầu với kiểu thông điệp và chiều dài thông điệp bắt tay chuẩn. Phần thân của thông điệp bao gồm một dãy các chứng chỉ khoá công khai. Dãy này bắt đầu với 3 byte thể hiện chiều dài. (Giá trị chiều dài dãy luôn là 3 nhỏ hơn giá trị chiều dài thông điệp). Mỗi chứng chỉ trong dãy cũng bắt đầu với một trƣờng 3 byte lƣu cỡ của chứng chỉ. Thông điệp đầu tiên thể hiện toàn bộ chiều dài của dãy chứng chỉ. Phần sau thể hiện chiều dài của mỗi chứng chỉ với 3 byte ngay trƣớc chứng chỉ đó.

Dãy các thông điệp cho phép SSL hỗ trợ các hệ chứng chỉ. Chứng chỉ đầu tiên trong dãy luôn là của bên gửi. Chứng chỉ tiếp theo là của bên cấp chứng chỉ cho bên gửi. Chứng chỉ thứ ba thuộc về CA cho quyền đó, và tiếp tục nhƣ thế. Dãy chứng chỉ sẽ tiếp tục cho tới khi nó tìm thấy chứng chỉ cho quyền chứng chỉ gốc (Root).

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Tìm hiểu hạ tầng mật mã khóa công khai - PKI, ứng dụng trong thương mại điện tử (dịch vụ công trực tuyến cấp độ 3 và truyền nhận chứng từ trong thương mại điện tử) (Trang 39 - 42)

Tải bản đầy đủ (PDF)

(106 trang)