Chương 6. Một số giao thức bảo mật thông dụng khác
6.2. An ninh tầng giao vận và tầng đệm bảo mật
SSL (Secure Socket Layer) 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 (socket 443) nhằm mã hóa 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 (Personal Information Number) trên Internet, trên các thẻ tín dụng v.v.
Giao thức SSL được hình thành và phát triển bởi Netscape, và ngày nay đã được sử dụng rộng rãi trên World Wide Web trong việc xác thực và mã hóa thông tin giữa phía khách (client) và phía máy chủ (server). Tổ chức IETF (Internet Engineering Task Force: Lực lượng công tác kỹ thuật về Internet) đã chuẩn hóa SSL và đặt lại tên là TLS (Transpot Layer Security: An ninh lớp giao vận). Tuy nhiên SSL vẫn là thuật ngữ được sử dụng rộng rãi hơn.
SSL được thiết kế như là một giao thức riêng cho vấn đề bảo mật có thể hỗ trợ rất nhiều ứng dụng. Giao thức SSL hoạt động bên trên TCP/IP và bên dưới các giao thức ứng dụng tầng cao hơn như là HTTP (Hyper Text Transpot Protocol: Giao thức truyền tải siêu văn bản), IMAP (Internet Messaging Access Protocol: Giao thức truy nhập bản tin Internet) và FTP (File Transport Protocol: Giao thức truyền file). SSL có thể sử dụng để hỗ trợ các giao dịch an toàn cho
rất nhiều ứng dụng khác nhau trên Internet, và hiện nay SSL được sử dụng chính cho các giao dịch trên Web.
SSL không phải là một giao thức đơn lẻ, mà là một tập hợp các thủ tục đã được chuẩn hóa để thực hiện các nhiệm vụ bảo mật sau:
Xác thực Server
Cho phép người sử dụng xác thực được server muốn kết nối. Lúc này, phía browser sử dụng các kỹ thuật mã hóa công khai để chắc chắn rằng certificate và public ID của server là có giá trị và được cấp phát bởi một CA trong danh sách các CA đáng tin cậy của client.
Điều này rất quan trọng đối với người dùng. Ví dụ như khi gửi mã số credit card qua mạng thì có người dùng thực sự muốn kiểm tra liệu server sẽ nhận thông tin có đúng là server mà họ định gửi đến không.
Xác thực Client
Cho phép phía server xác thực được người sử dụng muốn kết nối. Phía server cũng sử dụng các kỹ thuật mã hóa công khai để kiểm tra xem certificate và public ID của server có giá trị hay không và được cấp phát bởi một CA trong danh sách các CA đáng tin cậy của server không. Điều này rất quan trọng đối với các nhà cung cấp.
Ví dụ khi một ngân hàng định gửi các thông tin tài chính mang tính bảo mật tới khách hàng thì họ rất muốn kiểm tra định danh của người nhận. Mã hóa kết nối: Tất cả thông tin trao đổi giữa client và server được mã hóa trên đường truyền nhằm nâng cao khả năng bảo mật. Điều này rất quan trọng đối với cả hai bên khi có các giao dịch mang tính riêng tư. Ngoài ra, tất cả các dữ liệu được gửi đi trên một kết nối SSL đã được mã hóa còn được bảo vệ nhờ cơ chế tự động phát hiện các xáo trộn, thay đổi trong dữ liệu.
6.2.2. Hoạt động của SSL
Điểm cơ bản của SSL là nó được thiết kế độc lập với tầng ứng dụng để đảm bảo tính bí mật, an toàn và chống giả mạo luồng thông
tin qua Internet giữa hai ứng dụng bất kỳ, ví dụ như webserver và các trình duyệt khách (browsers), do đó được sử dụng rộng rãi trong nhiều ứng dụng khác nhau trên môi trường Internet.
Toàn bộ cơ chế hoạt động và hệ thống thuật toán mã hóa sử dụng trong SSL được phổ biến công khai, trừ khóa phiên chia sẻ tạm thời (session key) được sinh ra tại thời điểm trao đổi giữa hai ứng dụng là tạo ngẫu nhiên và bí mật đối với người quan sát trên mạng máy tính.
Ngoài ra, giao thức SSL còn đòi hỏi ứng dụng chủ phải được chứng thực bởi một đối tượng lớp thứ ba (CA) thông qua chứng thực điện tử (digital certificate) dựa trên mật mã công khai (ví dụ RSA).
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 đối tác 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 việc tiến hành mã hóa và truyền tin hai chiều giữa hai đối tác đó. Khi hai ứng dụng máy tính, ví 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” dưới dạng các thông điệp gửi 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ã hóa 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/khóa 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). Chứng thực điện tử (chứng thư) thường được xác nhận bởi một cơ quan trung gian là CA như RSA Data Sercurity.., một dạng tổ chức độc lập, trung lập và có uy tín. Các tổ chức này cung cấp dịch vụ “xác nhận”
số nhận dạng của một công ty và phát hành chứng chỉ duy nhất cho
công ty đó như là bằng chứng nhận dạng (identity) cho các giao dịch trên mạng, ở đây là các máy chủ (web server).
Sau khi kiểm tra chứng thư (chứng chỉ điện tử) của máy chủ (sử dụng thuật toán mật mã công khai, như RSA tại trình máy trạm), ứng dụng máy trạm sử dụng các thông tin trong chứng thư để mã hóa thông điệp gửi lại máy chủ mà chỉ có máy đó mới có thể giải mã.
Trên cơ sở đó, hai ứng dụng trao đổi khóa chính (master key) (khóa bí mật hay khóa đối xứng) để làm cơ sở cho việc mã hóa luồng thông tin/dữ liệu qua lại giữa hai ứng dụng chủ khách.
TLS hoặc SSL có thể xem như một tầng giao thức trung gian giữa tầng mạng và tầng giao vận trong mô hình DoD (5 tầng) hoặc OSI (7 tầng) của mạng máy tính. Trong TLS hoặc SSL, mỗi thông điệp được chuyển đi cho một đối tác được cấp chứng nhận giao dịch hoặc nhận từ đối tác đó đều được mã hóa bởi một khóa đối xứng khi chuyển đi và được giải mã khi nhận đến, thông điệp đó còn được gắn một mật mã nhận dạng (có vai trò như một chữ ký điện tử) được hệ thống cấp cho mỗi đối tác. SSL sử dụng sự xác nhận thông qua mật mã chung X509.
Tầng giao vận Tầng mạng
Tầng giao vận Tầng mạng
Giải mã Mã hóa
SSL SSL
Hình 6.1: SSL trong giao thức mạng
Một website sử dụng giao thức http được tích hợp SSL có tính năng bảo mật thông tin gửi từ phía máy khách (client side) vào trang web đến phía máy chủ (server side) vì thông tin ở tầng giao vận bên máy khách phải qua tầng phụ SSL để được mã hóa (theo luật mã hóa
công khai đã được SSL cung cấp cho máy chủ trang web) rồi mới quay về tầng mạng để tiếp tục chuyển đi: dữ liệu truyền đi trên môi trường Internet đã được mã hóa (ciphertext). Phía máy chủ khi dữ liệu về đến tầng mạng thì lại được đưa sang tầng phụ SSL để được giải mã (bằng khóa riêng của phía máy chủ tương ứng với khóa công khai trên trang web) rồi quay về tầng giao vận để chuyển xuống tầng áp dụng: thông tin tầng ứng dụng nhận được lại là thông tin tường minh (plaintext).
Giao thức http có tích hợp SSL thường ký hiệu là: https. Các trang web dùng cho dịch vụ ngân hàng trực tuyến của các website thanh toán điện tử an toàn nhất thiết đều cần được sử dụng giao thức này.
Công nghệ truyền thông riêng tư (PCT)
Công nghệ truyền thông riêng tư PCT (Private Communication Technology) PCT 1.0 cũng là một giao diện an toàn ở tầng giao vận (transport layer) được hãng Microsoft phát triển vào khoảng giữa những năm 1990 để khắc phục những lỗ thủng trong phiên bản 2.0 và để thúc ép hãng Nescape từ bỏ quyền kiểm soát SSL 2.0 mà lúc đó họ đang sở hữu bản quyền.
Về sau PCT được thay thế bởi SSLv3 và TLS. Trong một giai đoạn ngắn PCT còn được Internet Explorer hỗ trợ nhưng các phiên bản sau này không còn nữa. PCT hiện còn được thấy trong IIS và trong các thư viện hệ điều hành Windows tuy nhiên trong Windows Server 2003 thì mặc định là không cho phép sử dụng.