Giao thức bắt tay SSL Handshaking Protocol

Một phần của tài liệu bài giảng an toàn bảo mật thông tin (Trang 116 - 119)

CHƢƠNG 5 MÃ CHỨ NG THỰC THÔNG ĐIỆP, HÀM BĂM

7.3.1 Giao thức bắt tay SSL Handshaking Protocol

Trước khi tiến hành truyền số liệu, SSL thực hiện giao thức bắt tay để chứng thực website và chứng thực người duyệt web, trao đổi khóa phiên và thống nhất các thuật tốn mã hóa được sử dụng. Sơ đồ bắt tay được minh họa trong hình bên dướị

Client Server client_hell o server_hello certificate certificate_request server_hello_done certificate client_exc hange_key certificate

_verify finished finished Phase 1 Phase 2 Phase 3 Phase 4

(đường nét đứt là các thông điệp không bắt buộc, chỉ sử dụng khi cần chứng

thực từ phía client)

113

Hình 7-6. Giao thức bắt tay SSL

Sơ đồ trên gồm có 10 loại thơng điệp và được chia thành 4 pha:

1) Pha 1: thỏa thuận về phương pháp mã hóa được sử dụng. Pha này bắt đầu bằng thơng điệp client_hello được gửi từ client đến website, thông điệp này gồm các tham số sau:

• Version: phiên bản SSL cao nhất mà client sử dụng • Random: là một cấu trúc ngẫu nhiên gồm 32 byte

• SessionID: nếu bằng 0 có nghĩa là client muốn thiết lập một session mới hoàn toàn. Nếu khác 0 nghĩa là client muốn thiết lập một kết nối mới trong session nàỵ Việc dùng session giúp cho client và server giảm các bước thỏa thuận trong quá trình bắt taỵ

• CompressionMethod: phương pháp nén dữ liệu sử dụng trong q trình truyền dữ liệu

• CipherSuite: Các phương pháp mã hóa khóa cơng khai dùng để trao đổi khóa phiên như RSA, Fixed Diffie-Hellman, Ephemeral Diffie-Hellman, Anonymous Diffie-Hellman. Phương pháp nào liệt kê trước thì có được ưu tiên hơn. Ứng với mỗi phương pháp trao đổi khóa là danh sách các loại mã hóa đối xứng được sử dụng. Gồm các tham số sau:

- CipherAlgorithm: phương pháp mã hóa đối xứng sử dụng (là một trong các phương pháp mã khối RC2, DES, 3DES, IDEA, AES, Fortezza hay mã dòng RC4)

- Hash Algorithm: MD5 hay SHA-1.

- KeyMaterial: một chuỗi byte được dùng để sinh khóạ

- IV Size: kích thước của IV dùng trong mơ hình CBC của mã khốị • Sau khi nhận được client_hello server sẽ trả lời bằng thơng điệp

server_hello để xác các thuật tốn được sử dụng.

2) Pha 2: chứng thực server và trao đổi khóa của mã hóa cơng khaị Sau khi đã xác

nhận thuật tốn mã hóa với client, server tiếp tục thực hiện các thông điệp sau: - Thông điệp certificate: server cung cấp certificate của mình cho client

(dưới dạng chứng chỉ X.509) .

- Thông điệp certificate_request: trong trường hợp server cần chứng thực người sử dụng, server sẽ gửi thông điệp này để yêu cầu client cung cấp chứng chỉ.

- Thông điệp server_hello_done: báo hiệu server đã hoàn tất pha 2.

3) Pha 3: chứng thực client và trao đổi khóa của mã hóa đối xứng

- Thông điệp certificate: nếu server yêu cầu certificate, client cung cấp certificate của mình cho server.

- Thơng điệp client_key_exchange: trong bước này client gửi các thông số cần thiết cho server để tạo khóa bí mật. Ta cũng sẽ chỉ đề cập đến trường hợp RSẠ Trong trường hợp này client tạo một giá trị bất kỳ gọi là “tiền khóa chủ” (pre-master secret) có kích thước 48 byte, mã hóa bằng khóa 114

cơng khai của server. Sau khi có “pre-master secret”, client và server sẽ tính giá trị “khóa chủ” (master-secret) như sau:

master_secret = MD5(pre_master_secret || SHẮÁ || pre_master_secret ||ClientHellọrandom || ServerHellọrandom)) || MD5(pre_master_secret || SHẮBB' || pre_master_secret || ClientHellọrandom || ServerHellọrandom)) || MD5(pre_master_secret || SHẮCCC' || pre_master_secret || ClientHellọrandom || ServerHellọrandom))

Master_secret cũng có chiều dài là 48 byte (384 bít). Phép tốn || là phép nối - Thơng điệp certificate_verify: là chữ ký của client trong trường hợp server cần chứng thực client. Client phải dùng khóa riêng để ký chữ ký, do đó server có thể đảm bảo được là khơng ai khác dùng certificate của client để giả mạọ

4) Pha 4: hoàn tất quá trình bắt taỵ Trong pha này client và server gửi thơng điệp

finished để thơng báo hồn tất q trình bắt tay lẫn nhaụ Tham số của thơng điệp

này là một giá trị hash để hai bên có thể kiểm tra lẫn nhaụ Giá trị hash này kết nối của 2 giá trị hash:

MD5(master_secret || pad2 ||

MD5(handshake_messages || Sender || master_secret || pad1)) SHĂmaster_secret || pad2 ||

Trong đó handshake_messages là tất cả các thông điệp đầu đến trước thông điệp finished nàỵ Sender là mã để phân biệt thông điệp finished này là từ client hay từ server. Đây là cơ chế chống replay attack dùng hàm hash mà chúng ta đã tìm hiểu trong chương 6.

Dựa trên giá trị master_secret, client và server sẽ tính các tham số cần thiết cho mã hóa đối xứng như sau:

- Hai khóa dành cho việc mã hóa dữ liệu, một khóa dành cho chiều server gửi client và 1 khóa dành cho chiều client và server.

- Hai giá trị IV, cũng dành cho server và client tương ứng

- Hai khóa dành cho việc tính giá trị MAC, cũng tương ứng cho server và client Tùy theo phương pháp mã hóa đối xứng được sử dụng mà các tham số này có chiều dài khác nhaụ Tuy nhiên, chúng được lấy từ dãy bít theo cơng thức sau:

key_block = MD5(master_secret || SHẮÁ || master_secret ||

ServerHellọrandom || ClientHellọrandom)) || MD5(master_secret || SHẮBB' || master_secret || ServerHellọrandom || ClientHellọrandom)) || MD5(master_secret || SHẮCCC' || master_secret || ServerHellọrandom ||ClientHellọrandom)) || ... 115 Việc dùng các giá trị ClientHellọrandom và ServerHellọrandom sẽ làm phức tạp

việc phá mã hơn.

Đến đây client và server đã hồn tất q trình bắt tay trao đổi khóa, sẵn sàng để truyền số liệu theo giao thức truyền số liệụ

Một phần của tài liệu bài giảng an toàn bảo mật thông tin (Trang 116 - 119)

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

(190 trang)
w