Hoạt động của giao thức SSL

Một phần của tài liệu Xây dựng hệ thống quản lý chứng chỉ số sử dụng công nghệ IAIK và SSL (Trang 33)

Hình 1-9. Các tầng của giao thức SSL

SSL sử dụng các thuật tốn mã hố khố đối xứng để thực hiện mã hố dữ liệu trước khi truyền nhưng để cĩ được khố đối xứng trước hết giao thức phải thực hiện quá trình bắt tay để thống nhất được khố đối xứng giữa hai bên tham gia truyền tin. Nên ta cĩ thể chia hoạt động của giao thức ra làm hai tầng:

 Tầng thứ nhất là SSL Handshake Protocol và các giao thức con SSL khác (SSL subprotocols) khác cho phép client và server chứng thực lẫn nhau, thoả thuận thuật tốn mã hố và khố bí mật trước khi giao thức của ứng dụng truyền và nhận byte đầu tiên.

 Tầng thức hai là SSL Record Protocol được đặt trên các tầng truyền thơng tin cậy (như TCP). SSL Record Protocol được dùng để đĩng gĩi các giao thức ở tầng cao hơn (đĩng gĩi dữ liệu trước khi truyền đi). Các gĩi tin trước khi mã hố để truyền đi cĩ thể được nén để tiết kiệm băng thơng đường truyền.

Application Software

Application Protocols (ftp, telnet, smtp, pop3,...)

Basic Transfer Protocol (TCP/IP)

Internet

SSL

SSL handshake protocol

a) Giao thức SSL handshake

Để khởi tạo liên kết, SSL Handshake Protocol thực hiện nhiệm vụ tạo liên kết giữa client và server đồng thời nĩ cũng thiết lập trạng thái ban đầu bao gồm phương pháp nén, cách thức mã hố và một số thơng số khác của một phiên làm việc SSL. Cụ thể như sau:

1) Client gửi thơng điệp client_hello tới server trong thơng điệp bao gồm: danh sách các bộ thuật tốn mã hố (CipherSuite) và hàm băm, thuật tốn nén mà phía client hỗ trợ, được sắp xếp theo thứ tự ưu tiên sử dụng của phía client, một số ngẫu nhiên, thời gian

2) Gửi thơng điệp để dùng trong quá trình tạo khố chung.

3) Server chọn lấy một bộ thuật tốn mã hố, thuật tốn nén, tạo ra một định danh phiên làm việc, sinh số ngẫu nhiên của server dùng trong quá trình tạo khố chung, cùng với thời gian gửi thơng điệp đĩng gĩi vào thơng điệp server_hello và gửi cho client.

4) Tiếp đĩ server gửi chứng nhận của mình nếu cĩ cho phía client. Nếu server khơng cĩ chứng nhận hoặc khố cơng khai trong chứng nhận của server chỉ cĩ chức năng ký thì server phải gửi thêm thơng điệp server_key_exchange để trao truyển khố với client, thêm vào đĩ server cĩ thể gửi thơng điệp yêu cầu certifcate của client. Sau đĩ server gửi thơng điệp sever_done để chỉ ra server kết thúc phần trao chuyển khố của mình.

5) Client kiểm tra chứng nhận của server. Client phải gửi chứng nhận của mình hoặc thơng điệp cảnh báo nếu server yêu cầu chứng nhận. Lấy thơng khố cơng khai của từ chứng nhận của server, và thơng tin từ server_key_exchange nếu cĩ tạo khố chung, đĩng gĩi thơng tin tạo khố chung vào client_key_exchange gửi cho server. Gửi thơng tin kiểm tra chứng nhận nếu cần. Gửi change_cipher_spec chỉ ra ngay sau gĩi tin này các gĩi tin khác sẽ được mã hố bằng khố chung và gửi tiếp finished chỉ ra kết thúc bắt tay.

Hình 1-10. Quá trình khởi tạo kết nối

Server ClientHello ServerHello Certificate* CertificateRequest* ServerKeyExchange* ServerDone Certificate* ClientKeyExchange CertificateVerify* change cipher spec

Finished

change cipher spec Finished

Application Data Application Data

b) Trạng thái phiên và giao thức Rehandshake

Khi client và server bắt tay xong thì cũng là lúc một phiên làm việc mới được thiết lập, kênh truyền bảo mật đã được thiết lập. Tầng SSL Record protocol đi vào hoạt động, nhưng trước khi xem xét hoạt động của tầng Record protocol ta hãy xem kỹ thuật lưu trữ thơng số phiên làm việc, và cách bắt tay lại tạo phiên làm việc mới một trong những ưu điểm của SSL.

1) Trạng thái phiên

Để quá trình bắt tay tạo liên kết mới được nhanh chĩng, ngay sau lần bắt tay đầu tiên bắt tay SSL thiết lập và lưu trữ trạng thái của phiên hoạt động (session state), và trạng thái liên kết để cĩ thể tận dụng dùng lại các thơng số đã thiết lập một cách tối đa nếu cĩ thể.

Thơng tin về trạng thái phiên làm việc bao gồm:

 session identifier: một chuỗi các byte do server tạo ra để định danh duy nhất một phiên làm việc.

 peer certificate: chứng nhận của đối tác truyền tin.

 compression method: thuật tốn sử dụng để nén dữ liệu trước khi mã hố và truyền đi. (adsbygoogle = window.adsbygoogle || []).push({});

 cipher spec: các thuật tốn mã hố, thuật tốn băm đã quy ước sử dụng giữa client và server.

 master secret: 48 byte thơng tin bí mật chung giữ client và server.

 is resumable: cờ trạng thái, cho phép thiết lập hay khơng một phiên làm việc mới từ phiên làm việc hiện hành.

Thơng tin về trạng thái liên kết bao gồm:

 server and client random: các chuỗi byte ngẫu nhiên được tạo ra trong client_hello và server hello.

 client write key: khố dùng trong thuật tốn mã hố dữ liệu trước khi truyền dùng bởi server.

 initialization vectors: vector khởi tạo dùng trong thuật tốn mã hố khối.  sequence numbers: mỗi bên tham gia truyền tin đều cĩ một số dùng để

đếm số thơng điệp truyền và nhận tin.

2) Giao thức Rehandshake

Khi client và server quyết định khởi tạo lại một phiên làm việc trước đĩ hoặc nhân đơi một phiên làm việc đang tồn tại (thay vì thương lượng để tạo phiên làm việc mới) được thực hiện như sau:

Client gửi thơng điệp client_hello chứa của session identifier của phiên làm việc đã được thiết lập từ trước. Server kiểm tìm xem session identifier tương ứng cĩ được lưu trữ. Nếu một session tương ứng được tìm thấy, server gửi server_hello với cùng giá trị session identifier. Vào thời điểm này cả client và server phải gửi các thơng điệp cipher_change_spec và trực tiếp xử lý thơng điệp finished, trạng thái phiên và trạng thái liên kết tương ứng với session identifier đĩ sẽ được sử dụng lại.

Việc khởi tạo lại được thực hiện xong và dữ liệu tại tầng ứng dụng cĩ thể tiếp tục được trao đổi. Nếu session identifier khơng được tìm thấy server sẽ tạo ra một session identifier mới và server và client thực hiện lại đầy đủ việc bắt tay từ đầu .

Hình 1-11. Quá trình khởi tạo lại một phiên làm việc

c) Giao thức SSL Record

Server

ClientHello

ServerHello change cipher spec

Finished

change cipher spec Finished

Application Data Application Data

Client SSL Plaintext SSL Compressed SSL Ciphertext Phân khối Nén, giải nén Dữ liệu Mã hĩa, giải mã

Sau khi trạng thái phiên và trạng thái liên kết đã được thiết lập, dữ liệu được đĩng gĩi, nén, mã hố và truyền đi qua giao thức SSL Record protocol. Cơng việc được chia làm ba giai đoạn:

 SSL Plaintext: dữ liệu được phân thành các khối phù hợp cĩ kích thức nhỏ hơn 214

và thêm các thơng tin như loại dữ liệu được gửi đi, gồm các loại change_cipher_spec, alert, handshake, application data. Các dữ liệu thơng tin điều khiển sẽ được ưu tiên gửi đi trước dữ liệu ứng dụng (application data).  SSL Compressed: dữ liệu sẽ được nén bằng thuật tốn nén đã quy ước sử

dụng trong trạng thái liên kết.

 SSL Ciphertext: Tính MAC thêm vào gĩi tin sau đĩ mã hố tồn bộ gĩi tin đĩng gĩi lại và gửi đi.

Phần trên ta đã thấy được cách thức thiết lập bắt tay thoả thuận khố chung, dùng trạng thái phiên, và đĩng gĩi dữ liệu gửi đi trong các pha hoạt động của SSL. Sau đây ta sẽ đưa ra mơ hình tổng thể kết hợp các hoạt động của giao thức:

Hình 1-13. Mơ hình tổng thể kết hợp các hoạt động của giao thức

Application Data Alert Change cipher spec Handshake Record Layer TCP

Chương 2. VẤN ĐỀ CƠNG NGHỆ CỦA CƠ SỞ HẠ TÂNG MẬT MÃ KHĨA CƠNG KHAI (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Xây dựng hệ thống quản lý chứng chỉ số sử dụng công nghệ IAIK và SSL (Trang 33)