Xây dựng giải pháp ký số trên nền tảng Web

Một phần của tài liệu Nghiên cứu giải pháp bảo mật và xác thực website (Trang 65)

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.10: 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[4].

2.5.6.1. Phân tích các chức năng của ứng dụng Applet

a. 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.

b. 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[4].

2.5.6.2. Phân tích thiết kế quy trình ký số, xác thực dữ liệu

a. Lược đồ ký số

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. 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 2.11).

Hình 2.11: 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.

b. 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ý [4].

Hình 2.12. Lược đồ xác thực ký số

Kết luận chương 2

Trong chương 2 trình bày thực trạng mất an ninh an toàn trong môi trường web, các cách tấn công web. Từ đó phân tích, đánh giá và đưa ra một số giải pháp xác thực, bảo mật để đảm bảo an ninh an toàn cho web.

Từ cơ sở lý thuyết an toàn bảo mật thông tin chương 1 và giải pháp xác thực và bảo mật trong website, là tiền đề để xây dựng giải pháp ứng dụng bảo mật và xác thực website trong chương 3.

Chương 3

ĐỀ XUẤT GIẢI PHÁP

VÀ TRIỂN KHAI XÂY DỰNG HỆ THỐNG 3.1. Phân tích yêu cầu và thiết kế ứng dụng

3.1.1. Yêu cầu bài toán

Với những nguy cơ và thách thức trong bài toán an toàn bảo mật và xác thực website như đã phân tích trong chương 2, và với cơ sở lý thuyết an toàn bảo mật thông tin chương 1. Đặc biệt, hiện nay trên thế giới và tại Việt Nam đã có nhiều công cụ (phần mềm, giải pháp) hỗ trợ người dùng trong việc xác thực và mã hóa thông tin. Tuy nhiên các công cụ này chủ yếu được cung từ các nhà chữ ký số hoặc phần mềm miễn phí để cài đặt tại máy PC của người sử dụng. Việc tích hợp với các ứng dụng khác đặc biệt trong ứng dụng Web chưa được chú trọng.

Giải pháp bảo mật và xác thực trên môi trường web được xây dựng cho phép tích hợp chức năng gửi và nhận tài liệu sử dụng chứng chỉ số cho máy chủ và chứng chỉ số của tổ chức, cá nhân tham gia vào hệ thống.

Để giải quyết yêu cầu bài toán trên, em đi xây dựng ứng dụng xác thực và bảo mật Web trên mô hình Client – Server, sử dụng USB eToken để giám sát truy nhập hệ thống và thực hiện mã hoá và giải mã khi trao đổi thông tin giữa Client tới Server và ngược lại.

3.1.2. Sơ đồ ứng dụng 3.1.2.1. Sơ đồ đăng kí 3.1.2.1. Sơ đồ đăng kí 3.1.2.1. Sơ đồ đăng kí

Người dùng muốn đăng ký tài khoản sử dụng phải mang Usb token đến nhà cung cấp để đăng ký và Database do Server (Web Server) quản lý sẽ lưu trữ tài khoản tên đăng nhập, mật khẩu và khóa công khai của từng Token. Sau khi Server kiểm tra tài khoản đăng ký, nếu tài khoản chưa tồn tại thì cho phép tạo tài khoản và được lưu trữ tại server. Nếu tài khoản đã tồn tại thì việc đăng

ký là thất bại. Sau khi đăng ký thành công thì người dùng mới có thể sử dụng trên máy client cá nhân của mình và sử dụng phần mềm kèm theo. Điều này giúp đăng ký và quản lý token một cách tập trung tránh người dùng đăng ký tại client. Server có chức năng chứng thực quyền hợp pháp truy cập hệ thống khi Client có sử dụng Usb Token đã đăng ký với Server và được Server quản lý.

Hình 3.1: Sơ đồ đăng kí tài khoản bằng token

3.1.2.2. Sơ đồ đăng nhập

3.1.2.3. Trao đổi giữa Client và Client

Hình 3.3: Trao đổi giữa Client A và Client B

Ở đây ta xét trường hợp tổng quát. Chat hay gửi file giữa các Client với nhau qua socket đều quy thành các “gói”. Server quản lý tất cả Public Key của các Client đang online. Client A lấy khóa công khai của Client B và mã hóa gói tin cần gửi. Client B khi nhận gói tin, lấy khóa bí mật của mình để giải mã gói tin. Như vậy ai cũng có thể mã hóa gói tin nhưng muốn giải mã thì chỉ có thể giải mã bằng khóa bí mật, nằm trong Token của người nhận.

3.1.2.4. Trao đổi giữa Server – Client

Về vấn đề trao đổi file giữa Server và Client có đôi chút khác biệt khi trao đổi file giữa Client và Client. Ở đây khi trao đổi file, ta không mã hóa bằng token vì hai lý do sau:

- Do Server bật liên tục và là duy nhất, không cần phải sử dụng eToken - Sử dụng thuật toán mã hóa RSA như đã trình bày ở trên.

Với những lý do đó, khi trao đổi giữa Server và Client, em sử dụng một file key.dat có lưu trữ 3 giá trị e, p, q để phục vụ cho thuật toán RSA tự viết.

Việc sử dụng key.dat hay Token là tương đương nhau. Tùy theo nhu cầu của người dùng mà ta có thể chuyển giữa việc dùng Token hay dùng key.dat.

Xác thực thành công

Hình 3.4: Trao đổi giữa Server – Client

3.1.3. Môi trường hệ thống

3.1.3.1. Các thành phần của hệ thống

Quản trị Server: Là người được quản lý server, khởi động, tắt Server. Quản lý thêm sửa xóa các tài khoản người sử dụng. Có thể chat và gửi file đồng thời tới mọi Client đang online.

Người dùng: Mỗi người dùng là một client, tham gia sử dụng phần mềm, họ phải đăng nhập bằng token để sử dụng phần mềm. Có thể chat, gửi file tới Server hoặc Client khác đang online.

3.1.3.2. Các chức năng của hệ thống

Các chức năng cho Server

Các chức năng cho người dùng Client

Hình 3.6: Chức năng người dùng Client

3.1.4. Thiết kế cơ sở dữ liệu

Với mục đích demo ứng dụng là chính, cơ sở dữ liệu của chương trình khá đơn giản, lưu trữ tài khoản, mật khẩu, tên nhân viên, khóa công khai của nhân viên. Bảng cơ sở dữ liệu chính là bảng của các Client. Server chỉ có một nên không có đăng nhập và quản lý bằng cơ sở dữ liệu. Cơ sở dữ liệu được thiết kế trên SQL 2005.

Hình 3.7: Thiết kế cơ sở dữ liệu

3.1.5. USB Token

eToken Pro USB là một sản phẩm thuộc dòng sản phẩm eTokenTM của Aladdin Knowledge Systems Ltd., Israel.

eToken Pro USB là một thiết bị bảo mật cao, giao tiếp với máy tính qua cổng USB, sử dụng tiện lợi, an toàn, dễ mở rộng. eToken Pro USB hỗ trợ tất cả hạ tầng khóa công khai eToken PKI như xác thực người dùng, quản lý mật khẩu, bảo mật chữ ký số và bảo mật dữ liệu...

Ngoài ra, do eToken Pro USB hỗ trợ các giao diện và hệ thống bảo mật theo tiêu chuẩn công nghiệp, nên eToken Pro USB còn đảm bảo việc tích hợp dễ dàng với hạ tầng và các chính sách bảo mật.

Bảng 3.1: Đặc tính kĩ thuật của USB eToken

Operating Systems Windows 2000/Xp/2003/VistaMac OS X; Linux

API & standard Support PKCS#11 v2.01 Mcrosoft CAPI, PC/SC, X059 v3 Certificate storage, SSL v3, IPSec/IKE

Models 32K Siemens CardOS / 32K Memory

64K Siemens CardOS / 64K Memory Java:java Virtual Machine / 72K Memory

On board Security algo RSA 1024-bit / 2048-bit DES, 3DES, SHA1, SHA256 Security certifications FIPS 140-1L2&3; Commom criteria

EAL4+/EAL5+(smart card chip and OS) Pending: FIPS 140-2 and CC EAL4+PP-SCCD

(Certifications differ per model; please inquire)

Dimensions 52x16x8 mm (2.05x0.63x0.31 inches)

ISO Specification Support Support for IOS 7816-1 to 4 Specifications Operating temperature 00C to 700C (32F to 158F)

Storage temperature -400C to 800C (-40F to 185F)

Humidity rating 0 – 100% without condensation

Water resistance cert IPX8 – IEC 529

Connector USB type A (Universal Serial Bus)

Casing Hard molded plastic, tamper evident

Memory data retention At least 10 yaers Memory cell rewrites At least 500,000

Dựa trên các tiêu chí đánh giá, eToken có tính năng nổi trội về khả năng hỗ trợ hệ điều hành, hỗ trợ các ứng dụng PKI, hỗ trợ các chuẩn bảo mật và khả năng tích hợp.

3.2. Xây dựng ứng dụng 3.2.1. Server 3.2.1. Server 3.2.1. Server

Server của hệ thống là nơi khởi tạo kết nối và thực hiện các chức năng sau:

1. Khởi tạo kết nối, làm điểm truy nhập của các Client. 2. Lưu giữ các PublicKey của các Client đang kết nối. 3. Đăng kí mới, sửa, xóa các eToken đã đăng kí tài khoản. 4. Chat với mọi Client.

5. Gửi file cho mọi Client.

Để vào mục quản lý tài khoản, ta ấn nút Account Manager, để bắt đầu Server ta ấn nút Start. Các Client sau khi kết nối tới Server này sẽ hiển thị ở ô bên trái màu vàng.

Hình 3.9: Màn hình chính của Server

Dưới đây là màn hình quản lý tài khoản, cũng chính là cơ sở dữ liệu của hệ thống. Lưu trữ lại các thông tin cùng với khóa công khai.

Hình 3.10: Màn hình quản lý tài khoản

Với mục tiêu quản lý người dùng. Những ai muốn sử dụng phần mềm phải có token và phải mang token đó để cho Server để đăng kí sử dụng.

Hình 3.11: Màn hình thêm tài khoản

Sau khi thêm tài khoản, người quản trị Server có thể sửa đổi thông tin của tài khoản đó, trừ tên đăng nhập.

3.2.2. Client

Client của hệ thống là những người sử dụng mạng. Họ bắt buộc phải có token, ở đây đóng vai trò như chìa khóa để sử dụng phần mềm này. Nếu

trong quá trình sử dụng, rút token, Client sẽ kết thúc. Các chức năng của Client:

1.Chat với Server, Client. 2.Gửi file tới Server, Client.

3.Hiển thị danh sách các Client đang sử dụng phần mềm.

Trước tiên, người dùng cần cắm token vào máy tính chạy Client, sau đó thực hiện đăng nhập theo yêu cầu

Hình 3.12: Màn hình đăng nhập pin Usb token

Hình 3.13: Màn hình đăng nhập user

Nếu đăng nhập thành công, ta sẽ vào được giao diện chính của Client. Đây là màn hình có thể xem danh sách Client đang online và cũng nơi giao tiếp trực tiếp với Server.

Hình 3.14: Màn hình chính của Client

Với giao diện trên ta có thể chat và gửi file tới Server hoặc Client khác. Do kết nối socket không ổn định và mã hóa RSA làm giảm tốc độ nên không được gửi file quá lớn.

Hình 3.15: Màn hình chọn file Khi nhận được file, sẽ có thông báo nhận file

Tất cả các Client đều phải cắm token khi sử dụng, trong quá trình sử dụng, vì bất kì lý do gì không tìm thấy token, chương trình lập tức hiện ra cảnh báo và thoát khỏi chương trình ngay lập tức.

Hình 3.17: Màn hình cảnh báo không thấy token

Ứng dụng hướng đến đối tượng sử dụng cần sự trao đổi thông tin nội bộ, bảo mật và kiểm soát người dùng trong môi trường trao đổi thông tin giữa Client – Server. USB eToken là chìa khóa để sử dụng phần mềm này. Tin tặc có thể bắt được gói tin nhưng nếu không có USB eToken, hắn sẽ không thể giải mã gói tin vì không có PrivateKey. Đây là hình ảnh file đã mã hóa, cũng chính là file mà tin tặc bắt được nhưng không thể giải mã:

Hình 3.18: So sánh 2 file mã hóa và gốc

Khi thực hiện ký số dữ liệu, ta chọn file cần ký sau đó chọn chứng thư số từ USB token hoặc file có sẵn trên máy tính để lấy thông tin ký trên file. Giao diện ký số dữ liệu thể hiện qua (Hình 3.19).

Hình 3.19: Ký số dữ liệu

Khi tiến hành xác thực, ta chọn file file dữ liệu cần xác thực và thực hiện xác thực dữ liệu (Verify). Nếu dữ liệu không bị thay đổi thì thông báo xác thực thành công, nếu tài liệu bị thay đổi thì đưa ra thông báo dữ liệu đã bị thay đổi. Điều này sẽ đảm bảo tính toàn vẹn và chống chối từ của văn bản.

Phần mềm đã giải quyết được các vấn đề:

1. Quản lý người dùng bằng cách cấp phát token.

2. Quản lý tài khoản token để quyết định có cho phép truy cập hay không, kể cả khi có token.

3. Người dùng có thể chat và trao đổi file.

4. Mã hóa và giải mã các gói tin trao đổi trong mạng nội bộ. 5. Ký số và xác thực dữ liệu

Những điều phần mềm chưa giải quyết được:

1. Chưa có chứng thực gói tin (kí và kiểm tra chữ kí).

Một phần của tài liệu Nghiên cứu giải pháp bảo mật và xác thực website (Trang 65)