Hình bên dưới minh họa các bước thực hiện trong quá trình truyền số liệu:
Hình 7-7. Truyền dữ liệu theo khối trong SSL
Trong giao thức truyền số liệu, dữ liệu được chia thành các khối có kích thước là 214 byte (16384) Sau đó, dữ liệu này được nén lạị Tuy nhiên hiện nay trong SSL version 3 chưa mô tả cụ thể một phương pháp nén nào nên mặc định xem như là không nén.
Bước tiếp theo giá trị MAC của khối dữ liệu nén được tính theo công thức sau:
hash(MAC_key || pad_2 ||hash(MAC_key || pad_1 || seq_num ||type ||length || data))
trong đó:
- Hàm hash là hàm MD5 hay SHA-1
- MAC_key: khóa tính MAC đã được client và server thống nhất trong phần bắt tay
- pad_1: byte 0x36 (00110110) được lặp lại 48 lần (384 bít) đối với hàm hash MD5 và 40 lần (320 bít) đối với hàm hash SHA-1
- pad_2: byte 0x5C (10101100) được lặp lại 48 lần đối với MD5 và 40 lần với SHA-1
- seq_num: số thứ tự của khối dữ liệu
- type: loại khối dữ liệu (xem phần bên dưới) - length: kích thước khối dữ liệu
- data: khối dữ liệu
Sau khi tính MAC xong, khối dữ liệu cùng với giá trị MAC được mã hóa bằng một thuật toán mã khối đã được lựa chọn trong giao thức bắt taỵ
Cuối cùng một SSL header được gắn vào đầu khối dữ liệụ SSL header gồm các field sau:
- Content Type (1 byte): Ngoài việc truyền dữ liệu của giao thức HTTP, SSL Record Protocol còn được dùng để truyền dữ liệu của giao thức Handshake cũng như hai giao thức còn lại SSL Change Cipher Spec và SSL Alert. Giá trị
Dữ liệu Chia nhỏ Nén Tính MAC Mã hóa Thêm SSL header
114
của field này dùng để xác định loại giao thức đang được sử dụng. Đối với giao thức giao thức Handshake dữ liệu được truyền thẳng không cần nén, tính MAC và mã hóạ
- Major Version (1 byte): số hiệu chính của phiên bản SSL. Với SSLv3 field này có giá trị là 3.
- Minor Version (1 byte): số hiệu phụ của phiên bản SSL. Với SSLv3 field này có giá trị là 0.
- Compressed Length (2 byte): kích thước tính bằng byte của khối dữ liệu sau bước nén.
Hình 7-8. Mối liên hệ giữa các giao thức con của SSL