Tổng lượt truy cập

Tuesday, December 21, 2010

Hiểu về SSL

Nếu bạn đã sử dụng trang web bắt đầu bằng https://.... là bạn đã sử dụng giao thức SSL rồi đó vậy bản chất của SSL hoạt động để mã hóa đường truyền như thế nào, có nhiều bạn làm về security nhưng cũng chỉ hiểu mang máng thôi, nếu bạn đã làm security chúng ta không được hiểu mọi sự là mang máng, ác chừng, muốn xử lý một vấn đề chúng ta cần hiểu xâu về chúng.
Giao thức SSL bao gồm 4 giao thức con sau:
  • Giao thức SSL Handshake
  • Giao thức SSL Change Cipher Spec
  • Giao thức SSL Alert
  • SSL Record Layer

Khi một kết nối được thiết lập sử dụng SSL/TLS ví dụ sử dụng giao thức HTTPS(cổng mặc định 443) một thông điệp(messages) sẽ được trao đổi giữa các client .quá trình bắt đầu được kết nối với server.Đầu tiên trao đổi các messages được gọi quá trình bắt tay “handshake “. Quá trình được trao đổi như sau:

Bước 1: Client sẽ gửi cho server số phiên bản SSL đang dùng, các tham số của thuật toán mã hoá, dữ liệu được tạo ra ngẫu nhiên (đó chính là digital signature) và một số thông tin khác mà server cần để thiết lập kết nối với client.

Bước 2: Server gửi cho client số phiên bản SSL đang dùng, các tham số của thuật toán mã hoá, dữ liệu được tạo ra ngẫu nhiên và một số thông tin khác mà client cần để thiết lập kết nối với server. Ngoài ra server cũng gửi certificate của nó đến client, và yêu cầu certificate của client nếu cần.

Bướ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 sử dụng sẽ đượ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 sẽ thực hiện tiếp

Bước 4: Sử dụng tất cả 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) sẽ tạo ra premaster secret cho phiên làm việc, mã hoá bằng khoá công khai (public key) mà server gửi đến trong certificate ở bước 2, và gửi đến server.

Bứoc 5: Nếu server có yêu cầu xác thực client, thì phía client sẽ đánh dấu vào phần thông tin riêng chỉ liên quan đến quá trình “bắt tay” này mà hai bên đều biết. Trong trường hợp này, client sẽ gửi cả thông tin được đánh dấu và certificate của mình cùng với premaster secret đã được mã hoá tới server.

Bước 6: Server sẽ xác thực client. Trường hợp client không được xác thực, phiên làm việc sẽ bị ngắt. Còn nếu client được xác thực thành công, server sẽ sử dụng khoá bí mật (private key) để giải mã premaster secret, sau đó thực hiện một số bước để tạo ra master secret.

Bước 7: Client và server sẽ sử dụng master secret để tạo ra các session key, đó chính là các khoá đối xứng được sử dụng để mã hoá và 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.

Bước 8: Client sẽ gửi một lời nhắn đến server thông báo rằng các message tiếp theo sẽ được mã hoá bằng session key. Sau đó nó gửi một lời nhắn đã được mã hoá để thông báo rằng phía client đã kết thúc giai đoạn “bắt tay”.

Bước 9: Server cũng gửi một lời nhắn đến client thông báo rằng các message tiếp theo sẽ được mã hoá bằng session key. Sau đó nó gửi một lời nhắn đã được mã hoá để thông báo rằng server đã kết thúc giai đoạn “bắt tay”.

Bước 10: 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, và kiểm tra tính toàn vẹn dữ liệu

Giao thức SSL Change Cipher Spec:

- Là giao thức cập nhật thông số mã hóa

Giao thức SSL Alert :

- Là giao thức cảnh báo

- Trao đổi thông tin cảnh báo giữa 2 đầu kết nối

- Mỗi session cảnh báo gồm 2 byte:byte cho biết mức độ cảnh báo (thường hay nghiêm trọng).Cảnh báo thường:phiên làm việc vẫn diền ra nhưng không tạo thêm kết nối.Cảnh báo nghiêm trọng:kết thúc phiên làm việc hiện hành.

SSL Record Layer:

-Là giao thức chuyển dữ liệu (thực hiện mã hóa và xác thực)