Ký số và xác thực trên nền tảng web
1. Giải pháp ký số, xác thực tài liệu trên nền tảng Web
Bài toán đặt ra là cần phải phát triển một hệ thống thông tin với giao diện người dùng trên nền web, có thể truy cập thông qua Internet. Người sử dụng của hệ thống này có thể gửi tài liệu đến máy chủ các tập tin có định dạng khác nhau (Word, PDF, Excel, JPEG, GIF...). Để xác thực người gửi và đảm bảo tài liệu sau khi gửi đi không bị sửa đổi trái phép thì hệ thống cần cung cấp cho người dùng khả năng có thể ký số các tập tin được gửi đi.
Giải pháp ký số trên máy client
Ký số yêu cầu truy cập vào khóa bí mật của người ký. Khóa bí mật của mỗi người chỉ có thể truy cập bởi chính người đó, do đó việc ký số sẽ được thực hiện trên máy tính của người ký (máy client). Nếu người ký phải gửi khóa bí mật của mình đến máy chủ thì sẽ nảy sinh mối đe dọa về an toàn - khóa bí mật có thể bị đánh cắp trên đường truyền. Chúng ta sẽ phân tích các phương pháp tiếp cận có thể ký số tài liệu trên máy client. Một cách tiếp cận là người sử dụng cài đặt trên máy tính của họ một số loại phần mềm thiết kế đặc biệt. Nhưng điều này lại gặp khó khăn là phần mềm ký số phải có các phiên bản riêng biệt hỗ trợ cho các hệ điều hành khác nhau. Ngoài ra, việc hỗ trợ cho các phần mềm như vậy rất phức tạp, bởi vì bất kỳ sự thay đổi nào của chúng sẽ buộc người dùng phải tải về và cài đặt phiên bản mới. Một cách tiếp cận khác là có thể sử dụng ngôn ngữ kịch bản JavaScrip hoặc một số công nghệ kịch bản phía máy trạm khác, chẳng hạn như ActiveX, Macromedia Flash, .NET Windows Forms Controls, hoặc Java applet.
Ký số dữ liệu lưu trữ trên Server sử dụng khóa bí mật trên máy client
Việc ký số dữ liệu lưu trữ trên sever có thể thực hiện theo các phương pháp sau:
- Chuyển chứng thư số và khóa bí mật đến máy chủ: Phương pháp này gây mất an toàn khóa bí mật, nên hầu như không được sử dụng.
- Chuyển tài liệu cho máy client: Mức an toàn của phương pháp này không cao. Nếu việc chuyển tài liệu có thể tiến hành, ký số sẽ được thực hiện bằng cách sử dụng môđun ký số phía máy client (một ứng dụng, plugin trình duyệt hay Java Applet hay ActiveX control).
- Tính toán giá trị băm của dữ liệu trên Server và gửi lại nó cho client: Phương pháp này tương tự phương pháp ký số trên máy client, ngoại trừ tài liệu không được gửi cho client. Phương pháp này đòi hỏi một ứng dụng phía Server có thể nhúng hoặc gắn chữ ký với tài liệu gốc.
Hình 1: Mô hình ký số dữ liệu trên Server
2. Một số giải pháp ký số đã triển khai trên nền tảng Web
Một số giải pháp trên thế giới
Tại các quốc gia có hệ thống chứng thực điện tử phát triển mạnh, các ứng dụng ký số trên nền tảng web cũng được sử dụng nhiều, kèm theo các giải pháp cụ thể đối với từng mô hình hoạt động của hệ thống. Điển hình trong đó là các giải pháp của công ty Digi - Sign và Ascertia.
Digi - Seal Applet là sản phẩm được viết trên nền tảng Java và được phát triển cho người dùng cuối có khả năng ký số, mã hóa, giải mã và xác thực chữ ký số trên nền tảng web. Digi - Seal là giải pháp tốt cho người dùng ký bên phía client. Đối với các dịch vụ trực tuyến hay dịch vụ dựa trên trình duyệt, các giao dịch được sử dụng máy chủ Digi - Seal. Một ứng dụng nhỏ applet sẽ được cài đặt trên máy chủ Web và tự động tải về cho trình duyệt. Đây là hành động “một lần duy nhất” và không cần yêu cầu xử lý từ phía người dùng cuối. Một khi các applet Digi - Seal được kích hoạt, người sử dụng có thể ký form, ký các file tải lên theo ý muốn.
Ưu điểm khi sử dụng Digi - Seal: Có thể ký số lên dữ liệu Web form và file tải lên; hoạt động trên các hệ điều hành Windows, Linux, Solaris, Mac; dễ dàng xác thực hơn so với chữ ký truyền thống.
Go>Sign applet là sản phẩm của công ty Ascertia được viết trên nền java. Ứng dụng này được thiết kế giúp cho ứng dụng ký số phía client được thực hiện dễ dàng và sử dụng trong bất kỳ ứng dụng web nào. Nó loại bỏ những khó khăn liên quan đến phần mềm được cài đặt trên nền tảng Desktop, được thiết kế cho phép những người không chuyên về kỹ thuật có thể ký các văn bản và dữ liệu.
Ưu điểm Go>Sign applet là: Dễ sử dụng, dễ dàng cập nhật nâng cấp; hỗ trợ nhiều định dạng tài liệu và nhiều định dạng chữ ký PDF, CMS/PKCS#7, SML DSig, CAdES, XAdES, PAdES; cho phép tùy chọn với nhiều kho lưu trữ khóa; có chức năng hiển thị các tài liệu định dạng PDF, có khả năng kiểm tra các chữ ký đã tồn tại trên tài liệu; phòng chống rò rỉ dữ liệu. Nó còn có thể tích hợp dễ dàng và cung cấp dịch vụ xác thực tập trung, đây là một trong những hỗ trợ rất khác so với Digi - Seal.
Một số giải pháp tại Việt Nam
Hiện nay, các giải pháp ký số trên các ứng dụng web chưa được quan tâm phát triển đúng mức, các giải pháp trong nước hay được sử dụng là: Sử dụng ứng dụng Desktop để ký số tài liệu sau đó tải tài liệu lên web hoặc một số ứng dụng sử dụng các công nghệ của nước ngoài. Ví dụ, ứng dụng chữ ký số cho hệ thống kê khai thuế qua mạng, kê khai hải quan điện tử và sử dụng cho các dịch vụ ngân hàng trực tuyến, chứng khoán điện tử.... Các sản phẩm này được cung cấp bởi một số nhà cung cấp dịch vụ chứng thực chữ ký số công cộng như: FPT- CA, VietTel- CA, VNPT- CA, BKAV- CA.... So với các sản phẩm tương tự của nước ngoài, các sản phẩm này thường có các tính năng đơn giản và thiếu sự hỗ trợ của một số chuẩn và định dạng.
Ví dụ, giải pháp ký số trên nền tảng web trong kê khai thuế qua mạng được ứng dụng ký số của Hệ thống kê khai thuế trực tuyến của Tổng Cục thuế - Bộ Tài chính được viết trên nền java. Đây là một sản phẩm tự phát triển và chỉ hỗ trợ ký số trên tài liệu định dạng PDF. Tài liệu kê khai thuế được chuyển đổi thành tài liệu PDF và ký số tài liệu PDF này. Tài liệu sau khi ký số được ứng dụng applet upload lên Server. Việc sử dụng giải pháp này giúp cơ quan thuế thực hiện cải cách hành chính thuế, tạo thuận lợi cho người nộp thuế, giảm chi phí về thời gian và thủ tục giấy tờ trong việc khai thuế, nộp thuế.
3. Xây dựng giải pháp ký số trên nền tảng Web
Nghiên cứu một số giải pháp trên thế giới và đánh giá, khảo sát ở một số đơn vị trong nước cho thấy một số yêu cầu cần đặt ra khi tích hợp chữ ký số vào các ứng dụng: Tương thích với nhiều trình duyệt web khác nhau; dễ dàng tích hợp vào các hệ thống thông tin có sẵn, có thể chạy trên nhiều hệ điều hành khác nhau.
Dưới đây mô tả một mô hình ký số và xác thực dữ liệu trên nền tảng web có thể triển khai ứng dụng:
Mô hình tổng quan giải pháp ký số, xác thực dữ liệu trên nền tảng web
Hình 2: Mô hình tổng quan
Người sử dụng cuối 1 sau khi nhập liệu trên web form có thể ký dữ liệu trên web form và gửi lên web server, người sử dụng cuối 2 sẽ tải dữ liệu đã ký lên web form trên máy của mình và tiến hành xác thực dữ liệu trên server.
Phân tích các chức năng của ứng dụng Applet
Truy cập vào máy chủ web từ Applet
Ứng dụng applet ký tài liệu phải có một số phương tiện để có thể gửi chữ ký số tới máy chủ. Điều này được thực hiện bằng nhiều cách: Các applet sẽ mở ra một socket để gửi chữ ký, hoặc nó sẽ gửi thông tin của một yêu cầu truy cập vào một địa chỉ URL của máy chủ; hoặc giao tiếp với các trình duyệt và gửi thông tin cho server. Cách tiếp cận cuối cùng là thuận tiện nhất, vì nó đòi hỏi ít chi phí lập trình để gửi và nhận tập tin đã được ký. Trong trường hợp này máy chủ nhận được các tập tin cùng với chữ ký của tập tin trong một yêu cầu trình duyệt web duy nhất, không có thêm bất kỳ hành động nào khác.
Giao tiếp giữa Applet và trình duyệt web
Thông thường, sẽ có một form HTML được sử dụng để gửi các tập tin đến một ứng dụng web không có chức năng ký số. Nếu muốn mở rộng hình thức này để nó hỗ trợ ký số các tập tin, đơn giản là tích hợp một java- applet cho các tập tin trên đó. Trong trường hợp này, applet sẽ thực hiện ký số của file và đưa chữ ký số vào một số trường của form HTML. Khi “summit” form HTML, trình duyệt web sẽ gửi chữ ký cùng với tập tin, vì vậy không cần thiết lập bất kỳ kênh liên lạc nào giữa máy chủ và applet.
Phân tích thiết kế quy trình ký số, xác thực dữ liệu
Có thể tạo chữ ký theo chuẩn CMS/PKCS#7 và ký trên tất cả các định dạng tài liệu.
Lược đồ ký số
Trong sơ đồ này, sử dụng phương pháp tách chữ ký và dữ liệu ký. Do vậy, dữ liệu cần ký không được ghép vào khuôn dạng chữ ký đầu ra và được băm thông qua một hàm băm (SHA- 1 hoặc SHA- 2). Dữ liệu băm được ký bởi khóa bí mật của người ký; khóa bí mật được lưu trong thiết bị USB lưu khóa. ID của chứng thư số người ký cũng được ghép với chữ ký đầu ra. Để thuận tiện cho người xác thực dữ liệu, chứng thư số của người ký cũng được ghép với chữ ký đầu ra để người xác thực không phải tìm kiếm chứng thư số của người ký khi xác thực chữ ký.
Khuôn dạng chữ ký đầu ra gồm các thông tin chính sau: Tên hàm băm được sử dụng, chữ ký số, chứng thư số người ký, ID người ký. Đối với lược đồ ký số dữ liệu có tem thời gian, quy trình ký dữ liệu cũng dựa trên các thuật toán ký chuẩn đã được thiết kế trong thư viện của java; tuy nhiên trước khi ký dữ liệu, các chứng thư số ký được kiểm tra trực tuyến sử dụng CRLs. Ngoài ra, tem thời gian cũng được sử dụng trong quy trình này. Tem thời gian gồm có thời gian chuẩn lấy từ máy chủ cấp tem thời gian và chứng thư số của máy chủ cấp tem thời gian. Tem thời gian sau khi lấy về được kiểm tra trước khi gắn vào chữ ký. Quy trình ký được thể hiện trên sơ đồ trong Hình 3.
Hình 3: Lược đồ ký số trên web
Dữ liệu ký gồm có: Dữ liệu gốc, tên hàm băm, chữ ký số, ID người ký, chứng thư số người ký, tem thời gian.
Lược đồ xác thực dữ liệu
Quá trình xác thực chữ ký được thực hiện theo quy trình ngược lại và cũng sử dụng các thuật toán xác thực cơ bản đã thiết kế trong thư viện chuẩn của Java. Tuy nhiên, tem thời gian và chứng thư số của người ký và của máy chủ cấp tem thời gian sẽ được kiểm tra trước khi xác thực chữ ký (Hình 4).
Hình 4: Lược đồ xác thực ký số
Một số giao diện ứng dụng
Trên cơ sở phân tích thiết kế giải pháp ký số, xác thực dữ liệu trên nền tảng web có thể ứng dụng ký số, xác thực dữ liệu trên nền tảng web trong cả hai trường hợp có sử dụng tem thời gian và không sử dụng tem thời gian trong việc ký số và xác thực. Hệ thống này có thể triển khai trên một số hệ điều hành khác nhau.
4. Kết luận
Bài báo này đã nghiên cứu một số giải pháp ký số, xác thực trên nền tảng Web; phân tích các yêu cầu và mô tả giải pháp tích hợp chữ ký số trên nền tảng Web để đáp ứng các yêu cầu ứng dụng chữ ký trên nền webform của các hệ thống thông tin. Mô hình giải pháp này có thể nghiên cứu để đưa vào ứng dụng trong xác thực giao dịch điện tử của nhiều hoạt động nghiệp vụ khác nhau đang được triển khai tại Việt Nam.