Giải pháp bảo mật cơ sở dữ liệu ứng dụng mã nguồn mở

09:39 | 20/02/2014

Trong các hệ thống công nghệ thông tin hiện nay, dữ liệu thường được lưu trữ một cách có tổ chức và hệ thống trong các cơ sở dữ liệu (CSDL). Điều này giúp cho công tác quản lý, khai thác và bảo vệ dữ liệu trở nên thuận tiện. Mặc dù vấn đề bảo vệ CSDL đã được thế giới nghiên cứu một cách rộng rãi cả về lý thuyết và thực hành, nhưng đây vẫn là bài toán thách đố giới chuyên môn. Bài báo này giới thiệu một giải pháp sử dụng sản phẩm mã nguồn mở để bảo mật CSDL của các hệ thống thông tin nhiều cấp, ví dụ như CSDL quản lý hồ sơ về tài chính (HSTC).

1. Bài toán bảo mật CSDL nhiều cấp
Cơ sở dữ liệu nghiên cứu ở đây được chia thành 3 cấp, cấp 1 là cao nhất (cấp Trung ương), cấp 2 (cấp Tỉnh, Thành phố) và cấp 3 (cấp huyện, quận, thị xã). Trong đó, CSDL cấp Trung ương lưu trữ toàn bộ HSTC trong toàn quốc, CSDL cấp Tỉnh lưu trữ toàn bộ các HSTCNH trong toàn tỉnh, và CSDL cấp Quận, Huyện, Thị xã lưu trữ toàn bộ HSTC trong đơn vị hành chính đó. Giữa CSDL cấp 2 và cấp 1 cũng như giữa cấp 3 và cấp 2 luôn có sự đồng bộ dữ liệu để đảm bảo tính nhất quán dữ liệu giữa các  mức. Cách tổ chức CSDL đó được mô tả trên hình sau đây:


Hình 1. Mô hình CSDL Hồ sơ tài chính

Toàn bộ hệ thống được phát triển trên MySQL miễn phí, có khả năng đáp ứng được yêu cầu xây dựng CSDL nhiều cấp.
Toàn bộ HSTC được chia thành hai loại (hai mức bảo mật) là hồ sơ mật và hồ sơ thông thường. Đối với hồ sơ thông thường chỉ yêu cầu đảm bảo tính toàn vẹn dữ liệu, có nghĩa là đảm bảo dữ liệu trong CSDL không bị làm sai lệch trong quá trình khai thác và lưu trữ. Các cơ chế bảo vệ ở đây là nhằm tránh phá hủy và xuyên tạc dữ liệu. Từ bài toán thực tế đặt ra yêu cầu phải xây dựng hệ thống an toàn cho hệ thống CSDL, đảm bảo dữ liệu luôn ở trong trạng thái an toàn khi phục vụ khai thác cũng như khi không phục vụ khai thác. Phải đảm bảo chống lại được những khám phá thông tin trái phép, chống tấn công làm sai lệch dữ liệu hoặc phá hỏng CSDL, đáp ứng tốt yêu cầu khai thác thông tin trong CSDL HSTCNH đảm bảo an toàn.

2. Mô hình giải pháp bảo vệ cơ sở dữ liệu
Mô hình an toàn hệ thống CSDL nhằm giải quyết các bài toán đảm bảo an toàn dữ liệu khi truyền trên mạng, trong lúc khai thác CSDL phục vụ tác nghiệp và đảm bảo an toàn CSDL khi không phục vụ tác nghiệp. Bài toán bảo mật cho hệ thống CSDL  ba cấp như CSDL HSTC được xây dựng trên cơ sở một số ràng buộc sau: không khai thác CSDL vượt cấp, có nghĩa người dùng ở mức dưới không được phép khai thác CSDL ở mức trên và mức ngang hàng; không hỗ trợ khai thác trực tiếp CSDL từ xa; không đòi hỏi theo thời gian thực và việc đồng bộ dữ liệu chủ yếu được thực hiện định kỳ.


Hình 2. Mô hình khai thác CSDL được bảo mật

Tổ chức không gian khai thác tại mỗi máy chủ CSDL
Không gian làm việc của CSDL phải sẵn sàng đáp ứng các yêu cầu khai thác CSDL và đảm bảo an toàn. Trong trạng thái làm việc, CSDL sẵn sàng đáp ứng cho khai thác thông qua giao diện ứng dụng, còn ở trạng thái lưu trữ, CSDL không đáp ứng những yêu cầu từ phía người dùng. Những truy cập trái phép ở mức hệ điều hành cũng không thu được bất kỳ thông tin gì về các đối tượng trong CSDL khi tiếp cận với CSDL. Để làm việc với CSDL, người dùng luôn luôn phải thông qua giao diện ứng dụng có tích hợp bảo mật. Mô hình làm việc của CSDL HSTC tại các nút CSDL được mô tả như trong Hình 1.
Các giải pháp kỹ thuật phải giải quyết 2 yêu cầu là tính toàn vẹn dữ liệu và bảo mật dữ liệu. Không gian khai thác CSDL tại mỗi máy chủ CSDL được tổ chức tách biệt khỏi mạng chung. Các máy chủ CSDL và các thiết bị khai thác CSDL được tổ chức trong cùng một không gian làm việc.
Đảm bảo an toàn trong trạng thái khai thác CSDL phục vụ tác nghiệp
Bài toán đảm bảo an toàn dữ liệu CSDL trong trạng thái khai thác CSDL nhằm phục vụ tác nghiệp, chống lại tấn công trực tiếp vào CSDL qua môi trường hệ quản trị CSDL được giải quyết theo các hướng sau: 
- Phân hoạch CSDL: CSDL nên được phân hoạch theo chiều ngang tùy theo độ nhạy cảm của dữ liệu. Với mỗi phân hoạch hệ thống an toàn sẽ thực hiện một chiến lược bảo mật riêng theo yêu cầu bảo mật của dữ liệu. Việc khai thác trên các thành phần CSDL chỉ có thể tiến hành qua thành phần giao diện ứng dụng. Khi làm việc chỉ người dùng có thẩm quyền mới có thể chuyển CSDL về trạng thái sẵn sàng phục vụ và khi kết thúc công việc CSDL lại được chuyển về trạng thái lưu trữ, tức trạng thái mã hóa trong hệ điều hành.

- Mã hóa các trường dữ liệu quan trọng: Những trường chứa thông tin có độ bảo mật cao được mã hóa bằng hệ mật đã được lựa chọn phù hợp với yêu cầu của dữ liệu. Việc xác định độ mật tương ứng của từng trường phải được người có thẩm quyền xác định. Các thông tin có độ mật cao luôn được lưu trữ ở dạng mã hóa. Những thông tin này chỉ được giải mã ở tầng giao diện với người dùng và chỉ có những thông tin thỏa mãn yêu cầu của người dùng và trong thẩm quyền được phép của người dùng mới được giải mã.


Hình 3. Mô hình phân hoạch dữ liệu đảm bảo an toàn khi khai thác
- Kiểm soát truy cập: Hệ thống bảo mật CSDL HSTCNH sử dụng một thiết bị eToken duy nhất chứa khóa riêng và chứng thư số của người dùng. Quá trình thiết lập an toàn sẽ diễn ra như sau: Mật khẩu cho người sử dụng truy cập vào hệ thống CSDL sẽ được sinh ngẫu nhiên và đăng ký với MySQL cùng với tên của người dùng. Mật khẩu ngẫu nhiên sau đó được mã hóa bởi khóa công khai của người dùng trong chứng thư và lưu vào hệ thống để kiểm soát. Khi kết nối vào hệ thống CSDL, chương trình sẽ dùng khóa bí mật trong eToken để giải mã mật khẩu ngẫu nhiên và truy cập vào CSDL. Như vậy, người dùng sẽ thuận tiện khi sử dụng hệ thống và chỉ người dùng có eToken phù hợp mới có thể truy cập vào hệ thống.
Đảm bảo an toàn dữ liệu CSDL trong trạng thái không phục vụ tác nghiệp
Khi không phục vụ tác nghiệp, phần CSDL chứa dữ liệu có độ mật cao sẽ được chuyển về trạng thái lưu giữ. Khi ở trạng thái lưu giữ này thì ngoài những trường quan trọng được mã hóa thì toàn bộ CSDL cũng được mã hóa. Hệ mật phục vụ cho mã hóa cũng là sự kết hợp giữa mã hóa khóa đối xứng và mã hóa khóa công khai, đảm bảo cho người dùng hợp lệ có thể chuyển CSDL về trạng thái khai thác. Cách thức này sẽ ngăn chặn được những tấn công thông qua hệ điều hành vào CSDL. Với những dữ liệu không có nhu cầu bảo mật thì hệ thống chỉ đảm bảo xác thực nội dung, các kỹ thuật được áp dụng nhằm đảm bảo phát hiện được những thay đổi nội dung bất hợp pháp.

Hình 4. Mô hình hoạt động của chức năng phân loại dữ liệu
3. Thiết kế các chức năng của phần mềm bảo mật CSDL
Phần mềm bảo mật CSDL được xây dựng trên nền tảng Java, sử dụng hệ quản trị CSDL MySQL được đánh giá là một trong các hệ quản trị CSDL tương đối an toàn hiện nay, với phần mềm nguồn mở. Hệ thống phần mềm được xây dựng bao gồm các chức năng sau:
- Quản lý đăng nhập hệ thống: Quản lý người sử dụng hệ thống, phân quyền người sử dụng hệ thống, quản lý đăng nhập hệ thống sử dụng eToken.
- Quản lý thông tin HSTC: Quản lý các danh mục, quản lý thông tin HSTC, tổng hợp báo cáo thống kê, tìm kiếm, chức năng cập nhật, đồng bộ dữ liệu giữa các mức trung ương, tỉnh, huyện, sao lưu và phục hồi dữ liệu HSTC.

Hình 5. Bảng dữ liệu CSDL mã hóa
- Mã hóa đảm bảo an toàn CSDL, bao gồm:
+ Chức năng mã hóa phục vụ CSDL khi khai thác được xây dựng ở cả 3 cấp, bao gồm: mã hóa khóa phiên khai thác dữ liệu, sử dụng khóa công khai của người dùng để mã hóa khóa phiên phục vụ khai thác dữ liệu khi người dùng kết thúc phiên làm việc (Hệ mật khóa công khai được sử dụng là RSA); Giải mã khóa phiên khai thác dữ liệu, sử dụng khóa bí mật (hệ mật RSA) của người dùng để giải mã khóa phiên phục vụ khai thác dữ liệu; Mã hóa/ giải mã các trường dữ liệu mật ở cả 3 cấp, sử dụng khóa phiên cho dữ liệu mật và hệ mật khóa đối xứng; Ký số dữ liệu, sử dụng khóa bí mật của người dùng để ký số đối với các hồ sơ thông thường ở cả 3 cấp; Xác thực dữ liệu, sử dụng khóa công khai của người ký để xác thực dữ liệu đối với các hồ sơ thông thường ở cả 3 cấp.
+ Chức năng mật mã phục vụ CSDL khi không khai thác: Các môđun mật mã cho hệ thống bảo mật CSDL HSTC khi không khai thác thực hiện mã hóa file dữ liệu của CSDL đảm bảo an toàn ở mức hệ điều hành.
+ Chức năng mã hóa phục vụ CSDL khi đồng bộ dữ liệu: Đồng bộ dữ liệu được thực hiện ở 2 cấp với nhau là cấp 3 với cấp 2 và cấp 2 với cấp 1. Các chức năng bao gồm: mã hóa khóa phiên phục vụ trao đổi dữ liệu đồng bộ sử dụng hệ mật khóa công khai RSA; giải mã khóa phiên phục vụ trao đổi dữ liệu đồng bộ sử dụng hệ mật khóa công khai RSA; mã hóa dữ liệu đồng bộ sử dụng khóa phiên đồng bộ và hệ mật tương ứng; giải mã dữ liệu đồng bộ sử dụng khóa phiên đồng bộ và hệ mật tương ứng.
+ Chức năng phân loại dữ liệu: do dữ liệu HSTC ban đầu trước khi đưa vào sử dụng trong hệ thống CSDL chỉ là CSDL ở dạng rõ. Để phân hoạch CSDL thành các dữ liệu theo độ mật và khai thác các CSDL này thì dữ liệu ban đầu phải được xử lý và phân loại bởi chức năng xử lý dữ liệu.
Trên cơ sở phân tích thiết kế các chức năng của phần mềm bảo mật CSDL, một chương trình bảo mật CSDL đã được thử nghiệm trong thực tế, với giao diện thử nghiệm trong Hình 5. Giải pháp  trình bày trên đây có thể góp phần giải quyết bài toán bảo mật CSDL dựa trên sử dụng hệ quản trị CSDL mã nguồn mở MySQL. Tuy nhiên, để có thể ứng dụng trong thực tế, các chức năng của phần mềm bảo mật CSDL này cần được phân tích, đánh giá một cách toàn diện và có những bước thử nghiệm chặt chẽ.