Tìm hiểu chung về SSL và TLS Phần 3

ssl1

I.3 Giao thức SSL Record

SSL Record Protocol cung cấp 2 dịch vụ cho kết nối SSL:

  •    Confidentiality (tính cẩn mật): Handshake Protocol định nghĩa 1 khóa bí mật được chia sẻ, khóa này được sử dụng cho mã hóa quy ước các dữ liệu SSL.
  •    Message integrity (tính toàn vẹn thông điệp):Handshake Protocol cũng định nghĩa 1 khóa bí mật được chia sẻ, khóa này được sử dụng để hình thành MAC (mã xác thực message).

Hình sau chỉ ra toàn bộ hoạt động của SSL Record Protocol.SSL Record Protocol nhận 1 message ứng dụng sắp được truyền đi,phân mảnh dữ liệu thành nhiều block,nén dữ liệu 1 cách tùy chọn,áp dụng vào 1 MAC,mã hóa,thêm vào header,và truyền khối kết quả thu được trong 1 segment TCP.Dữ liệu nhận được được giải mã,kiểm tra ,giải nén,sắp xếp lại và phân phối đến người sử dụng ở lớp cao hơn. ssl31

Hình I.2 : Hoạt động của SSL Record Protocol

Bước đầu tiên là phân mảnh.Mỗi message của lớp bên trên được phân mảnh thành các block ,mỗi block là 214 byte (16384 byte) hoặc ít hơn.

Tiếp theo,nén đƣợc áp dụng 1 cách tùy chọn.Nén phải là không mất mát thông tin và có thể không làm tăng chiều dài nội dung nhiều hơn 1024 byte (Dĩ nhiên,người ta mong muốn nén làm co lại dữ liệu hơn là nới rộng dữ liệu.Tuy nhiên ,với những block ngắn,có thể ,do định dạng quy ước,thuật toán nén thực sự làm cho output dài hơn input).Trong SSLv3 (cũng như phiên bản hiện tại của TLS),không có thuật toán nén nào được chỉ rõ,vì vậy thuật toán nén mặc định là null.

ớc xử lí kế tiếp là tính toán MAC (mã xác thực message) trên dữ liệu đã được nén.Để thực hiện cần dùng đến1 khóa bí mật được chia sẻ.Phép tính được định nghĩa như sau:

hash(MAC_write_secret || pad_2 || hash(MAC_write_secret || pad_1 ||seq_num ||SSLCompressed.type || SSLCompressed.length || SSLCompressed.fragment))

trong đó:

  • || : phép nối/hoặc.
  • MAC_write_secret: khóa bí mật được chia sẻ.
  • hash: thuật toán băm mã hóa, MD5 hoặc SHA-1.
  •  pad_1: byte 0x36 (0011 0110) được lặp lại 48 lần (384 bit) cho MD5 và 40 lần (320 bit) cho SHA-1.
  •  pad_2: byte 0x5c (0101 1100) được lặp lại 48 lần cho MD5 và 40 lần cho SHA-1.
  • seq_num: sequence number cho message này.
  • SSLCompressed.type: giao thức ở lớp trên được dùng để xử lí phân mảnh này.
  • SSLCompressed.length: chiều dài của phân mảnh đã được nén.
  • SSLCompressed.fragment: phân mảnh đã được nén (nếu nén không được dùng, phân mảnh ở dạng plaintext).

Chú ý rằng,cái này tương tự như thuật toán HMAC.Điểm khác biệt là 2 phần đệm (pad) được || trong SSLv3 và được XOR trong HMAC.Thuật toán MAC trong SSLv3 được dựa trên bản phác thảo Internet ban đầu cho HMAC.Phiên bản gần nhất của HMAC được định nghĩa trong RFC 2104,sử dụng XOR.

Kế tiếp, message đã nén cộng thêm MAC được mã hóa theo phƣơng pháp mã hóa đối xứng.Mã hóa có thể không làm tăng chiều dài nội dung hơn 1024 byte,vì vậy chiều dài tổng cộng không vượt quá 214+2048. Các thuật toán mã hóa sau được cho phép:

ssl32

  • DES (Data Encryption Standard) là một thuật toán mã hoá có chiều dài khoá là 56 bit.
  • 3-DES (Triple-DES): là thuật toán mã hoá có độ dài khoá gấp 3 lần độ dài khoá trong mã hoá DES
  • DSA (Digital Signature Algorithm): là một phần trong chuẩn về xác thực số đang được được chính phủ Mỹ sử dụng.
  • KEA (Key Exchange Algorithm) là một thuật toán trao đổi khoá đang được chính phủ Mỹ sử dụng.
  • MD5 (Message Digest algorithm) được phát thiển bởi Rivest.
  • RSA: là thuật toán mã hoá công khai dùng cho cả quá trình xác thực và mã hoá dữ liệu được Rivest, Shamir, and Adleman phát triển.
  • RSA key exchange: là thuật toán trao đổi khoá dùng trong SSL dựa trên thuật toán RSA.
  • RC2 and RC4: là các thuật toán mã hoá được phát triển bởi Rivest dùng cho RSA Data Security.
  • SHA-1 (Secure Hash Algorithm): là một thuật toán băm đang được chính phủ Mỹ sử dụng.

Các thuật toán trao đổi khoá như KEA, RSA key exchange được sử dụng để 2 bên client và server xác lập khoá đối xứng mà họ sẽ sử dụng trong suốt phiên giao dịch SSL. Và thuật toán được sử dụng phổ biến là RSA key exchange.

Các phiên bản SSL 2.0 và SSL 3.0 hỗ trợ cho hầu hết các bộ mã hoá. Người quản trị có thể tuỳ chọn bộ mã hoá sẽ dùng cho cả client và server. Khi một client và server trao đổi thông tin trong giai đoạn bắt tay (handshake), họ sẽ xác định bộ mã hoá mạnh nhất có thể và sử dụng chúng trong phiên giao dịch SSL.

Fortezza có thể được sử dụng trong mục tiêu mã hóa smart card.

Với mã hóa stream (luồng),message đã nén cộng thêm MAC được mã hóa.Chú ý rằng MAC được tính toán trước khi mã hóa xảy ra và MAC được mã hóa cùng với plaintext hoặc là plaintext đã nén.

Với mã hóa block (khối),MAC có thể được đệm thêm trước khi mã hóa.Phần đệm thêm (padding) có dạng gồm nhiều byte đệm được theo sau bởi 1 byte chỉ rõ chiều dài của phần đệm.Tổng số lượng đệm vào là lượng nhỏ nhất sao cho tổng kích thước dữ liệu được mã hóa (plaintext +MAC + padding) là 1 bội số của chiều dài khối mã hóa.Ví dụ, plaintext (hoặc text đã nén nếu nén được dùng) là 58 byte, với MAC là 20 byte (dùng SHA-1), được mã hóa với chiều dài block là 8 byte (như DES..).Cùng với byte padding.length ,nó sinh ra tổng cộng 79 byte.Để tạo ra 1 số nguyên là bội của 8,1 byte đệm được thêm vào.

Bước cuối cùng của xử lí SSL Record Protocol là gắn thêm vào1 header ,bao gồm các mục sau:

  •    Content Type (8 bit): giao thức lớp trên được dùng để xử lí phân mảnh đi kèm.
  •    Major Version (8 bit): chỉ ra phiên bản SSL tối đa được dùng. Ví dụ, SSLv3, giá trị này là 3.
  •    Minor Version (8 bit) : chỉ ra phiên bản tối thiểu được dùng.Ví dụ, SSLv3 ,giá trị này là 0.
  •    Compressed Length (16 bit) : chiều dài theo byte của phân mảnh plaintext (hoặc chiều dài theo byte của phân mảnh đã nén nếu nén được dùng).Gía trị lớn nhất là 214+2048.

Các loại nội dung được định nghĩa là change_cipher_spec,alert,handshake, và application_data. Ba cái đầu tiên là các giao thức đặc trưng-SSL,được bàn đến trong phần kế tiếp.Chú ý rằng không có sự khác biệt nào được tạo ra giữa các ứng dụng (như HTTP..) có thể dùng SSL,nội dung dữ liệu được tạo ra bởi các ứng dụng đó thì không trong suốt đối với SSL.

Hình sau minh họa định dạng SSL record.

ssl33Còn tiếp phần 4 (Nguồn sưu tầm)

Comments

comments