1. Secure Socket Layer (SSL) là gì?
Trong hơn mười năm, giao thức SSL đã được sử dụng rộng rãi nhằm vào mục đích đảm bảo an tồn cho các giao dịch web qua internet. Bạn cĩ thể tưởng tượng mỗi ngày cĩ hàng triệu, hàng tỉ đơ la giao dịch trên mạng dùng SSL.
Việt Nam đang trên đường hội nhập với nền cơng nghệ thơng tin thế giới, nên nay mai, các hoạt động giao dịch trên mạng ở Việt Nam cũng sẽ diễn ra sơi nổi, khi đĩ vấn đề bảo mật trở nên quan trọng, việc triển khai SSL là điều thiết yếu. Tuy nhiên đến nay mới chỉ cĩ rất ít trang web ở Việt Nam sử dụng SSL trong các giao dịch của mình.
Được phát triển bởi Netscape, ngày nay SSL đã được sử dụng rộng rãi trên world wide web nhằm mục đích xác thực và mã hố thơng tin giữa client và server. Cụ thể SSL được sử dụng để mã hĩa cho tất cả các giao thức hoạt động tại lớp Application như: HTTP, FTP, SMTP, POP, IMAP,… Tổ chức IETF (Internet Engineering Task Force) đã chuẩn hố SSL và đặt lại tên là TLS (Transport Layer Security). Mặc dù là cĩ sự thay đổi về tên nhưng TLS chỉ là một phiên bản mới của SSL. Phiên bản TSL 1.0 tương đương với phiên bản SSL 3.1. Tuy nhiên, SSL là thuật ngữ được sử dụng rộng rãi hơn.
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 (socket 443) nhằm mã hố tồn bộ thơng tin đi/đến, được sử dụng trong giao dịch điện tử, thƣơng mại.
Bản thân SSL được dựa trên các khái niệm khá đơn giản. Nĩ sắp xếp các thuật tốn mã hố và khố giữa 2 lần gửi - nhận của một giao dịch. Sau đĩ thiết lập một đưịng dẫn ảo mã hố thơng qua các giao thức khác (như HTTP). SSL cũng cĩ thể thẩm định cả hai chiều của giao dịch thơng qua việc dùng các “chứng chỉ” (certificate).
Giao thức SSL Handshake
Giao thức SSL Change Cipher Spec
Giao thức SSL Alert
Giao thức SSL Record Layer
Vị trí của các giao thức trên, tương ứng với mơ hình TCP/IP được minh hoạ theo biểu đồ sau:
Hình 18: Các giao thức con của SSL trong mơ hình TCP/IP
Theo biểu đồ trên, SSL nằm trong tầng ứng dụng của giao thức TCP/IP. Do đặc điểm này, SSL cĩ thể được dùng trong hầu hết mọi hệ điều hành hỗ trợ TCP/IP mà khơng cần phải chỉnh sửa nhân của hệ thống hoặc ngăn xếp TCP/IP. Điều này mang lại cho SSL sự cải tiến mạnh mẽ so với các giao thức khác như IPSec (IP Security Protocol). Vì giao thức này địi hỏi nhân hệ điều hành phải hỗ trợ và chỉnh sửa ngăn xếp TCP/IP. SSL cũng cĩ thể dễ dàng vượt qua tường lửa và proxy, cũng như NAT mà khơng cần nguồn cung cấp.
2. Giao thức SSL làm việc nhƣ thế nào?
Điểm cơ bản của SSL là được thiết kế độc lập với tầng ứng dụng để đảm bảo tính bí mật, an tồn và chống giả mạo luồng thơng tin qua Internet giữa hai ứng dụng bất kỳ, thí dụ như máy chủ web (web server) và các trình duyệt (browser), do đĩ nĩ được sử dụng rộng rãi trong nhiều ứng dụng khác nhau trên mơi trường Internet. Tồn bộ cơ chế hoạt động và hệ thống thuật tốn mã hố sử dụng trong SSL đƣợc phổ biến cơng khai, trừ khố chia sẻ tạm thời (khĩa phiên – 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. Ngồi ra, giao thức SSL cịn địi hỏi ứng dụng chủ (server) phải được chứng thực bởi một đối tượng lớp thứ ba (CA) thơng qua chứng chỉ điện tử (digital certificate) dựa trên mật mã cơng khai (thí dụ RSA). Sau đây ta sẽ xem xét một cách khái quát cơ chế hoạt động của SSL để phân tích cấp độ an tồn của nĩ và các khả năng áp dụng trong các ứng dụng nhạy cảm.
Giao thức SSL dựa trên hai nhĩm giao thức con là giao thức "bắt tay" (Handshake) và giao thức "bản ghi" (Record Layer). Giao thức bắt tay xác định các tham số giao dịch giữa hai đố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ã hố và truyền tin hai chiều giữa hai đối tượng đĩ. Khi hai ứng dụng làm việc với nhau, máy chủ và máy khách sẽ trao đổi "lời chào" (Hello) 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 khách, đồng thời xác định các chuẩn về thuật tốn mã hố và nén số liệu cĩ thể được áp dụng giữa hai ứng dụng. Ngồi ra, các ứng dụng cịn trao đổi "số nhận dạng/khố 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 chỉ điện tử (digital certificate) xác thực của ứng dụng chủ (web server).
Sau khi kiểm tra chứng chỉ điện tử của máy chủ (sử dụng thuật tốn mật mã cơng khai, như RSA tại máy khách), ứng dụng máy khách sử dụng các thơng tin trong chứng chỉ điện tử để mã hố thơng điệp gửi lại máy chủ mà chỉ cĩ máy chủ đĩ cĩ thể giải mã. Trên cơ sở đĩ, hai ứng dụng trao đổi khố chính (master key) – khố bí mật hay khố đối xứng – để làm cơ sở cho việc mã hố luồng thơng tin/dữ liệu qua lại giữa hai ứng dụng chủ khách.
Biểu đồ dưới đây sẽ chỉ ra một cách đơn giản với từng bước quá trình thiết lập kết nối SSL giữa máy khách (client – dùng một đường dẫn web browser) và máy chủ (server – dùng một SSL web server):
Như ta thấy trên hình, quá trình thiết lập kết nối SSL bắt đầu bằng việc trao đổi các tham số mã hố và sau đĩ xác nhận các server một cách tuỳ ý (dùng giao thức SSL Handshake). Nếu “bắt tay” (Handshake) thành cơng, cả hai chiều đều chấp nhận bộ mã hố chung và các khố mã hố, thì dữ liệu ở tầng ứng dụng (thơng thường dùng HTTP, nhưng cũng cĩ thể là một giao thức khác) cĩ thể được gửi thơng qua đường hầm (tunnel) mã hố (dùng SSL Record Layer).
Trong thực tế, tiến trình trên cịn phức tạp hơn một chút. Để tránh những cái “bắt tay” khơng cần thiết, một số tham số mã hố được giữ lại. Các thơng báo được gửi đi. Bộ mã hố cũng cĩ thể được thay đổi. Tuy nhiên, bất chấp các đặc điểm kĩ thuật đĩ, cách thức phổ biến nhất của tiến trình này làm việc thực sự như trên.
Như vậy, SSL đã kết hợp những yếu tố sau để thiết lập được một giao dịch an tồn:
Xác thực: đảm bảo tính xác thực của trang mà bạn sẽ làm việc ở đầu kia của kết nối. Cũng như vậy, các trang web cũng cần phải kiểm tra tính xác thực của người sử dụng.
Mã hố: đảm bảo thơng tin khơng thể bị truy cập bởi đối tượng thứ ba. Để loại trừ việc nghe trộm những thơng tin “nhạy cảm” khi nĩ được truyền qua Internet, dữ liệu phải được mã hố để khơng thể bị đọc được bởi những người khác ngồi người gửi và người nhận.
Tồn vẹn dữ liệu: đảm bảo thơng tin khơng bị sai lệch và nĩ phải thể hiện chính xác thơng tin gốc gửi đến.
Với việc sử dụng SSL, các website cĩ thể cung cấp khả năng bảo mật thơng tin, xác thực và tồn vẹn dữ liệu đến người dùng. SSL được tích hợp sẵn vào các browser và web server, cho phép người sử dụng làm việc với các trang web ở chế độ an tồn. Khi web browser sử dụng kết nối SSL tới server, biểu tượng ổ khĩa sẽ xuất hiện trên thanh trạng thái của cửa sổ browser và dịng “http” trong hộp nhập địa chỉ URL sẽ đổi thành “https”. Một phiên giao dịch HTTPS sử dụng cổng 443 thay vì sử dụng cổng 80 như dùng cho HTTP.
Trong phần phụ lục sẽ trình bày cụ thể cách cài đặt SSL cho webserver, cách tạo chứng chỉ SSL (SSL certificate) và Server Private Key cho server.
Phần C: CÀI ĐẶT MỘT SỐ ỨNG DỤNG
I. Chƣơng trình mã hĩa và ứng dụng chữ ký số RSA:
1. Giao diện chính của chƣơng trình:
Hình 20: Giao diện chính chương trình mã hĩa và ứng dụng chữ ký số RSA
Chƣơng trình cĩ 5 tab (thẻ) chính:
Tab Write: Phần dùng cho chức năng soạn thảo văn bản (được gọi là phần soạn thảo văn bản).
Hình 21: Giao diện phần soạn thảo văn bản
Tab RSA Crypto: Phần dùng cho chức năng mã hĩa và giải mã văn bản (được gọi là phần mã hĩa văn bản).
Hình 22: Giao diện phần mã hĩa văn bản
• Keys generator: Chức năng tạo cặp khĩa riêng và cơng khai. • RSA algorithm: Chức năng demo giải thuật RSA.
• Decrypt text: Chức năng giải mã văn bản trong vùng nhập văn bản. • File encryption: Chức năng mã hĩa và giải mã file.
Tab Digital Signature: Phần dùng cho chức năng ký và xác minh chữ ký của văn bản (được gọi là phần chữ ký số).
Hình 23: Giao diện phần chữ ký số
• Text hash code: Lấy mã băm (SHA-1) của văn bản trong vùng nhập văn bản. • File hash code: Lấy mã băm (SHA-1) của một tập tin bất kỳ.
• Sign document: Ký văn bản trong vùng nhập văn bản. • Verify signature: Chức năng xác minh chữ ký.
Tab View: Phần dùng cho chức năng hiển thị giá trị khĩa (Keys value), mã băm (Message digest), chữ ký số (Digital signature) trên menu docksite nếu menu này bị ẩn (được gọi là phần hiển thị).
Hình 24: Giao diện phần hiển thị
Hình 25: Giao diện menu docksite
Tab Help: Phần dùng cho chức năng hướng dẫn sử dụng và thơng tin về phần mềm (được gọi là phần giúp đỡ).
• Help using: Hướng dẫn sử dụng chương trình, chức năng này cho liên kết ngồi một tập tin CHM.
Hình 26: Giao diện phần giúp đỡ
2. Giao diện một số form chức năng chính:
Form tạo cặp khĩa:
Hình 27: Form tạo cặp khĩa
Form demo giải thuật RSA:
Form mã hĩa văn bản:
Form giải mã văn bản:
Hình 30: Form giải mã văn bản
Form mã hĩa và giải mã file:
Form tạo mã băm (SHA-1) cho văn bản:
Hình 32: Form tạo mã băm (SHA-1) cho văn bản
Form tạo mã băm (SHA-1) cho file:
Form ký văn bản:
Form chứng thực chữ ký của văn bản (chấp nhận):
Form chứng thực chữ ký của văn bản (từ chối):
II. Trang web bán hàng trực tuyến hỗ trợ giao thức SSL:
1. Giao diện chính:
2. Giao diện một số chức năng:
Trang giỏ hàng:
Trang sản phẩm trong danh mục:
Trang thơng tin sản phầm:
Trang chính giao diện quản trị:
Giao diện quản trị danh mục sản phẩm:
Phần D: TỔNG KẾT VÀ HƢỚNG PHÁT TRIỂN
I. Kết quả đạt đƣợc:
Nghiên cứu và trình bày một cách cĩ hệ thống các nội dung cơ bản về tốn học mật mã, về hệ mật mã cĩ khĩa cơng khai RSA, các phương pháp sử dụng và quản lý khố cơng khai, hàm băm mật mã, chữ ký số sử dụng mật mã cĩ khĩa cơng khai, giao thức bảo mật SSL trong thương mại điện tử,…
Xây dựng được một ứng dụng về mã hĩa tài liệu, chữ ký số và xác minh chữ ký số (bằng ngơn ngữ C#); trang web bán hàng trực tuyến cĩ hỗ trợ giao thức SSL (bằng ngơn ngữ PHP).
Sử dụng phần mềm mã nguồn mở XAMPP (cĩ kèm theo OpenSSL) tạo chứng thực điện tử cho web server,…
II. Hạn chế:
Do đề tài về mật mã và mã hĩa cịn khá mới mẻ nên khi thực hiện cịn bỡ ngỡ nhất là trong việc tổng hợp các kiến thức về mật mã, lý thuyết cơ bản, tài liệu chuyên ngành liên quan.
Chương trình ứng dụng cịn chưa hồn chỉnh và mới chỉ dừng lại trên máy riêng lẻ, chưa tạo thành hệ thống cho việc sử dụng trên mạng.
Hạn chế về vật chất (khơng cĩ được một root domain, mạng máy tính, khĩ khăn trong việc đăng ký chứng thực SSL với các CA trên mạng – phí quá đắt, địi hỏi phải cĩ root domain,…) tạo khĩ khăn trong việc thực hiện demo chương trình.
Tài liệu về chứng thực trong thương mại điện tử ở Việt Nam rất hiếm (khơng tìm thấy) nhất là tài liệu chuẩn về SSL.
Vấn đề triển khai những cơ chế nêu trên khơng khĩ về mặt kỹ thuật nhưng phải xây dựng một cơ sở hạ tầng tốt để cĩ thể thực thi các ứng dụng, hơn nữa về mặt pháp lý chúng ta vẫn chưa cĩ cơ chế nào cĩ hiệu lực để thực hiện chúng, nhất là cần phải cĩ một cơ quan đủ tư cách pháp lý để cấp các chứng chỉ số CA làm nhiệm vụ giám sát và xử lý những hoạt động nêu trên.
III. Hƣớng phát triển:
Xây dựng hồn chỉnh một giao thức xác thực, sử dụng hệ mật mã cĩ khố cơng khai trên hệ thống mạng LAN, Internet.
Hồn chỉnh chương trình ứng dụng và trang web bán hàng (trang web cịn chưa hồn chỉnh hết các chức năng quản trị - do thời gian hạn chế nên chưa xây dựng kịp).
Phát triển quy mơ của đề tài để tìm hiểu sâu hơn về chứng thực trong thương mại điện tử (quy trình, cách thức tiến hành,…).
Phần E: PHỤ LỤC
I. Cài đặt SSL cho web server:
Muốn tạo chứng thực cho server của mình, bạn phải liên lạc với một CA nào đĩ, tất nhiên bạn phải tốn một khoản tiền khơng nhỏ. Ngồi ra do một số ràng buộc pháp lý của chính phủ Mỹ (cấm truyền bá các cơng nghệ mã hĩa cấp cao ra các nước ngồi khu vực Bắc Mỹ), bạn chỉ cĩ thể nhận được một chứng thực cĩ khĩa “yếu” nếu bạn ở Việt Nam hay bất kỳ nước nào ngồi Mỹ và Canada.
Tuy nhiên ta vẫn cĩ thể cĩ được một bộ khĩa cĩ độ dài tùy ý mà chẳng phải tốn tiền, lại hồn tồn khơng vi phạm bản quyền. Đĩ là sử dụng các cơng cụ của cộng đồng mã nguồn mở.
OpenSSL (http://www.openssl.org) cung cấp cơng nghệ mã hĩa miễn phí cho bất kỳ tổ chức, cá nhân nào cho các mục đích thương mại hoặc phi thương mại. OpenSSL Project phổ biến các cơng cụ mã nguồn mở nhằm triển khai giao thức SSL (SSL v2/v3) và TLS (TLS v1) cũng như cung cấp một thư viện lập trình mã hĩa đầy đủ chức năng. OpenSSL dựa trên thư viện SSLeay phát triển bởi Eric A. oung và Tim J.Hudson.
Tuy nhiên, do tính phức tạp trong việc biên dịch và cài đặt (OpenSSL được thiết kế dành cho hệ điều hành mã nguồn mở như Linux,…) nên ta khơng tiến hành biên dịch và cài đặt trực tiếp nĩ mà sẽ sử dụng phần mềm miễn phí XAMPP Server cĩ tích hợp sẵn OpenSSL đã được biên dịch cho hệ điều hành Windows.
XAMPP là một gĩi phần mềm miễn phí tích hợp nhiều tính năng (Apache HTTPD, MySQL, PHP, Perl, FileZilla FTP Server, phpMyAdmin, OpenSSL, Freetype, Webalizer, mod_perl, eAccelerator, mcrypt, SQLite, Mercury Mail Transport System, fake sendmail for windows, FPDF Class) do Apache Friends phát triển. Phiên bản mới nhất dành cho hệ điều hành Windows ở thời điểm hiện tại là 1.7.0, tải về tại địa chỉ http:// www.apachefriends.org.
1. Cài đặt XAMPP Server:
- Chạy tập tin cài đặt xampp-win32-1.7.0-installer.exe (phiên bản hiện tại):
- Bấm Next để tiếp tục, chọn thư mục cài đặt trên máy rồi tiếp tục bấm Next:
- Check chọn vào các mục Install Apache as service, Install MySQL as service,
- Sau đĩ chờ cho quá trình cài đặt tiến hành:
- Nếu cổng 80 (http) hoặc cổng 443 (https) bị sử dụng bởi một tiến trình nào khác, hãy tạm thời ngưng tiến trình đĩ lại (thường là dịch vụ IIS hoặc một Apache server khác):
- Nếu trong quá trình cài Apache, hộp thoại tường lửa Windows cĩ hiện ra, hãy chọn
Unblock. Nếu khơng, server trên localhost sẽ bị tường lửa Windows chặn lại: