Cấu trúc giao thức bảo mật SSL

Một phần của tài liệu LUẬN VĂN:NGHIÊN CỨU BẢO MẬT WEB SERVICES pot (Trang 38 - 45)

4. Kết luận

4.2.1. Cấu trúc giao thức bảo mật SSL

SSL là giao thức đa mục đích được thiết kế để tạo ra các giao tiếp giữa hai chương trình ứng dụng trên một cổng định trước (thông thường là socket 443) nhằm mã hoá toàn bộ thông tin đi/đến, mà ngày nay được sử dụng rộng rãi cho giao dịch điện tử như truyền số hiệu thẻ tín dụng, mật khẩu, số bí mật cá nhân (PIN) trên Internet. Giao thức SSL được hình thành và phát triển đầu tiên năm 1994 bởi nhóm nghiên cứu Netscape dẫn dắt bởi Elgammal và ngày nay đã trở thành chuẩn bảo mật thực hành trên mạng Internet. Phiên bản SSL hiện nay là 3.0 và vẫn đang tiếp tục được bổ sung và hoàn thiện. Chức năng chính là bảo vệ bằng mật mã lưu lượng dữ liệu HTTP.

Giao thức SSL dựa trên hai nhóm con giao thức là giao thức “bắt tay” (handshake protocol) và giao thức “bản ghi” (record protocol). Giao thức bắt tay xác định các tham số giao dịch giữa hai

[39]

đối tượng có nhu cầu trao đổi thông tin hoặc dữ liệu, còn giao thức bản ghi xác định khuôn dạng cho tiến hành mã hoá và truyền tin hai chiều giữa hai đối tượng đó. Khi hai ứng dụng máy tính, thí dụ giữa một trình duyệt web và máy chủ web, làm việc với nhau, máy chủ và máy khách sẽ trao đổi “lời chào” (hellos) dưới dạng các thông điệp cho nhau với xuất phát đầu tiên chủ động từ máy chủ, đồng thời xác định các chuẩn về thuật toán mã hoá và nén số liệu có thể được áp dụng giữa hai ứng dụng. Ngoài ra, các ứng dụng còn trao đổi “số nhận dạng/khoá theo phiên” (session ID, session key) duy nhất cho lần làm việc đó. Sau đó ứng dụng khách (trình duyệt) yêu cầu có chứng thực điện tử (digital certificate) xác thực của ứng dụng chủ (web server).

Cấu trúc của một giao thức bảo mật SSL như hình sau:

Hình 4.1: Cấu trúc của giao thức bảo mật SSL

Hình trên mô tả giao thức bảo mật SSL. Trong đó, SSL chỉ một lớp bảo mật trung gian giữa tầng transport và tầng application. SSL được xếp lớn lên trên một dịch vụ vận chuyển định hướng kết nổi và đáng tin cậy. Chẳng hạn như được cung cấp bở TCP. Về khả năng, nó có thể cung cấp các dịch vụ bảo mật cho các giao thức ứng dụng tùy ý dựa vào TCP chứ không chỉ HTTP. Thực tế, một ưu điểm chính của các giao thức bảo mật tầng vận chuyển (transport layer) nói chung và giao thức SSL nói riêng là chúng độc lập với ứng dụng theo nghĩa là chúng có thể được sử dụng

[40]

để bảo vệ bất kỳ giao thức ứng dụng được xếp lớp lên trên TCP một cách trong suốt. Hình minh họa một số giao thức ứng dụng điển hình bao gồm NSIIOP, HTTP, FTP, Telnet, IMAP, IRC, và POP3. Tất cả chúng có thể được bảo vệ bằng cách xếp lớn chúng lên trên SSL (mẫu tự S được thêm vào trong các từ ghép giao thức tương ứng chỉ định việc sử dụng SSL). Tuy nhiên, chú ý rằng SSL có một định hướng client-server mạnh mẽ và thật sự không đáp ứng các yêu cầu của các giao thức ứng dụng ngang hàng.

Tóm lại, giao thức SSL cung cấp sự bảo mật truyền thông vốn có ba đặc tính cơ bản:

1. Các bên giao tiếp (nghĩa là client và server) có thể xác thực nhau bằng cách sử dụng mật mã khóa chung.

2. Sự bí mật của lưu lượng dữ liệu được bảo vệ vì nối kết được mã hóa trong suốt sau khi một sự thiết lập quan hệ ban đầu và sự thương lượng khóa session đã xảy ra.

3. Tính xác thực và tính toàn vẹn của lưu lượng dữ liệu cũng được bảo vệ vì các thông báo được xác thực và được kiểm tra tính toàn vẹn một cách trong suốt bằng cách sử dụng MAC. Tuy nhiên, điều quan trọng cần lưu ý là SSL không ngăn các cuộc tấn công phân tích lưu lượng. Ví dụ, bằng cách xem xét các địa chỉ IP nguồn và đích không được mã hóa và các sô cổng TCP, hoặc xem xét lượng dữ liệu được truyền, một người phân tích lưu lượng vẫn có thể xác định các bên nào đang tương tác, các loại dịch vụ đang được sử dụng, và đôi khi ngay cả dành được thông tin về các mối quan hệ doanh nghiệp hoặc cá nhân. Hơn nữa, SSL không ngăn các cuộc tấn công có định hướng dựa vào phần thực thi TCP, chẳng hạn như các cuộc tấn công làm tràn ngập TCP SYN hoặc cưỡng đoạt session.

Để sử dụng sự bảo vệ SSL, cả client lẫn server phải biết rằng phía bên kia đang sử dụng SSL. Nói chung, có ba khả năng để giải quyết vấn đề này:

1. Sử dụng các số cổng chuyên dụng được dành riêng bởi Internet Asigned Numbers Authority (IANA). Trong trường hợp này, một số cổng riêng biệt phải được gán cho mọi giao thức ứng dụng vốn sử dụng SSL.

2. Sử dụng số cổng chuẩn cho mọi giao thức ứng dụng và để thương lượng các tùy chọn bảo mật như là một phần của giao thức ứng dụng (bây giờ được chỉnh sửa đôi chút).

[41]

3. Sử dụng một tùy chọn TCP để thương lượng việc sử dụng một giao thức bảo mật, chẳng hạn như SSL trong suốt giai đoạn thiết lập nối kết TCP thông thường.

Sự thương lượng dành riêng cho ứng dụng của các tùy chọn bảo mật (nghĩa là khả năng thứ hai) có khuyết điểm là đòi hỏi mọi giao thức ứng dụng được chỉnh sửa để hiểu tiến trình thương lượng. Ngoài ra, việc xác định một tùy chọn TCP (nghĩa là khả năng thứ ba) là một giải pháp tốt, nhưng đó không được thảo luận nghiêm túc cho đến bây giờ. Thực tế, các số cổng riêng biệt đã được dành riêng và được gán bởi IANA cho mọi giao thức ứng dụng vốn có thể chạy trên SSL hoặc TLS (nghĩa là khả năng thứ nhất). Tuy nhiên, hãy chú ý việc sử dụng các số cổng riêng biệt cũng có khuyết điểm là đòi hỏi hai nối kết TCP nếu client không biết những gì mà server hỗ trợ. Trước tiên, client phải nối kết với cổng an toàn và sau đó với cổng không an toàn hay ngược lại. Rất có thể các giao thức sau này sẽ hủy bỏ phương pháp này và tìm khả năng thứ hai. Ví dụ, SALS (Simple Authentication và Security Layer) xác định một phù hợp để thêm sự hỗ trợ xác thực vào các giao thức ứng dụng dựa vào kết nối. Theo thông số kỹ thuật SALS, việc sử dụng các cơ chế xác thực có thể thương lượng giữa client và server của một giao thức ứng dụng đã cho.

Các số cổng được gán bởi IANA cho các giao thức ứng dụng vốn chạy trên SSL/TLS được tóm tắt trong bảng 1.2 và được minh họa một phần trong hình 1.1. Ngày nay, "S" chỉ định việc sử dụng SSL được thêm (hậu tố) nhất quán vào các từ ghép của các giao thức ứng dụng tương ứng (trong một số thuật ngữ ban đầu, S được sử dụng và được thêm tiền tố một cách không nhất quán và một số từ ghép).

Bảng 4.1: Các số cổng được gán cho các giao thức ứng dụng chạy trên TLS/SSL.

Từ khóa Cổng Mô tả

Nsiiop 261 Dịch vụ tên IIOP trên TLS/SSL https 443 HTTP trên TLS/SSl

[42] Nntps 563 NNTP trên TLS/SSL Ldaps 636 LDAP trên TLS/SSL

Ftps-data 989 FTP (dữ liệu) trên TLS/SSL Ftps 990 FTP (Điều khiển) trên TLS/SSL Tenets 992 TELNET trên TLS/SSL

Imaps 994 IRC trên TLS/SSL Pop3s 995 POP3 trên TLS/SSL

Nói chung, một session SSL có trạng thái và giao thức SSL phải khởi tạo và duy trì thông tin trạng thái ở một trong hai phía của session. Các phần tử thông tin trạng thái session tương ứng bao gồm một session ID, một chứng nhận ngang hàng, một phương pháp nén, một thông số mật mã, một khóa mật chính và một cờ vốn chỉ định việc session có thể tiếp tục lại hay không, được tóm tắt trong bảng 1.3. Một session SSL có thể được sử dụng trong một số kết nối và các thành phần thông tin trạng thái nối kết tương ứng được tóm tắt trong bảng 1.4. Chúng bao gồm các tham số mật mã, chẳng hạn như các chuỗi byte ngẫu nhiên server và client, các khóa mật MAC ghi server và client, các khóa ghi server và client, một vector khởi tạo và một số chuỗi. Ở trong hai trường hợp, điều quan trọng cần lưu ý là các phía giao tiếp phải sử dụng nhiều session SSL đồng thời và các session có nhiều nối kết đồng thời.

Bảng 4.2. Các thành phần thông tin trạng thái Session SSL

Thành Phần Mô tả

Session ID

Định danh được chọn bởi server để nhận dạng một trạng thái session hoạt động hoặc có thể tiếp tục lại.

[43]

Peer certificate Chứng nhân X.509 phiên bản 3 của thực thể ngang hàng.

Compression

method Thuật toán dừng để nén dữ liệu trước khi mã hóa

Cipher spec Thông số của các thuật toán mã hóa dữ liệu và MAC

Master secret Khóa mật 48-byte được chia sẻ giữa client và server.

Is resumable Cờ vốn biểu thị session có thể được sử dụng để bắt đầu các nối kết mới hay không.

Bảng 4.3. Các thành phần thông tin trạng thái nối kết SSL

Thành Phần Mô tả

Ngẫu nhiên server và client

Các chuỗi byte được chọn bởi server và client cho mỗi nối kết.

Khóa mật MAC ghi server

Khóa mật được sử dụng cho các hoạt động MAC trên dữ liệu được ghi bởi server.

Khóa mật MAC ghi client

Khóa mật được sử dụng cho các hoạt động MAC trên dữ liệu được ghi bởi client.

Khóa ghi server

Khóa được sử dụng cho việc mã hóa dữ liệu bởi server và giải mã bởi client

[44]

Khóa ghi client Khóa được sử dụng để mã khóa dữ liệu bởi client và giải mã bởi server.

Initialization vector

Trạng thái khởi tạo cho một mật mã khối trong chế độ CBC. Trường này được khởi tạo đầu tiên bởi SSL Handshake Player. Sau đó, khối text mật mã sau cùng từ mỗi bản ghi được dành riêng để sử dụng vởi bản ghi sau đó.

Số chuỗi

Mỗi phía duy trì các số chuỗi riêng biệt cho các thông báo được truyền và được nhận cho mỗi nối kết.

Như được minh họa trong hình 1.1, giao thức SSL gồm hai phần chính, SSL Record Protocol và một số giao thức con SSL được xếp lớp trên nó:

- Record OK được xếp lớp trên một dịch vụ lớp vận chuyển định hướng nối kết và đáng tin cậy, chẳng hạn như được cung cấp bởi TCP và cung cấp sự xác thực nguồn gốc thông báo, sự bí mật dữ liệu và dữ liệu.

- Các dịch vụ toàn vẹn (bao gồm nhưng thứ như chống xem lại).

- Các giao thức con SSL được xếp lớp trên SSL Record Protocol để cung cấp sự hỗ trợ cho việc quản lý session SSL và thiết lập nối kết.

- Giao thức con SSL quan trọng nhất là SSL Handshake Protocol. Lần lượt giao thức này là một giao thức xác thực và trao đổi khóa vốn có thể được sử dụng để thương lượng, khởi tạo và đồng bộ hóa các tham số bảo mật và thông tin trạng thái tương ứng được đặt ở một trong hai điểm cuối của một session hoặc nối kết SSL.

- Sau khi SSL Handshake Protocol đa hoàn tất, dữ liệu ứng dụng có thể được gửi và được nhận bằng cách sử dụng SSL Record Protocol và các tham số bảo mật được thương lượng và các thành phần thông tin trạng thái. SSL Record và Handshake Protocol được trình bày tổng quan ở phần tiếp theo.

[45]

Một phần của tài liệu LUẬN VĂN:NGHIÊN CỨU BẢO MẬT WEB SERVICES pot (Trang 38 - 45)