Tải bản đầy đủ (.pdf) (57 trang)

Bảo mật cơ sở dữ liệu MySQL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (936.04 KB, 57 trang )

MỤC LỤC
LỜI CAM ĐOAN .......................................................................................................3
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT ..............................................4
DANH MỤC CÁC HÌNH VẼ.....................................................................................5
MỞ ĐẦU .....................................................................................................................6
Chương 1 - TỔNG QUAN VỀ AN TOÀN THÔNG TIN TRONG CƠ SỞ DỮ
LIỆU.................... ........................................................................................................8
1.1. Giới thiệu .........................................................................................................8
1.2. Khái niệm cơ bản .............................................................................................8
1.2.1 Các thành phần của DBMS .......................................................................9
1.2.2 Các mức mô tả dữ liệu .............................................................................10
1.3. Vấn đề an toàn trong cơ sở dữ liệu ................................................................11
1.3.1. Các hiểm hoạ đối với an toàn cơ sở dữ liệu ...........................................11
1.3.2 Các yêu cầu bảo vệ cơ sở dữ liệu ...........................................................12
1.4. Kiểm soát an toàn ..........................................................................................13
1.4.1 Kiểm soát luồng .......................................................................................14
1.4.2 Kiểm soát suy diễn .................................................................................14
1.4.3. Kiểm soát truy nhập................................................................................14
Chương 2 - CƠ SỞ LÝ THUYẾT MẬT MÃ TRONG BẢO MẬT CỞ SỞ DỮ
LIỆU ..........................................................................................................................16
2.1.Giới thiệu ........................................................................................................16
2.2. Mã hóa bằng khóa bí mật ...............................................................................16
2.2.1 Cơ chế mã hóa khóa bí mật .....................................................................17
2.3. Mã hóa bằng khóa công khai .........................................................................19
2.3.1 Cơ chế mã hóa khóa công khai ................................................................20
2.4. Xác thực thông tin ..........................................................................................23
2.5. Hàm băm ........................................................................................................23
2.6. Chữ ký số .......................................................................................................24

1



Chương 3 - NGHIÊN CỨU CÁC GIẢI PHÁP BẢO MẬT CƠ SỞ DỮ LIỆU
MYSQL .....................................................................................................................26
3.1. Giải pháp bảo mật cơ sở dữ liệu ....................................................................26
3.1.1. Giới thiệu ................................................................................................26
3.1.2. Mô hình bảo mật CSDL .........................................................................26
3.1.3. Các yếu tố mất an toàn ...........................................................................29
3.1.4. Yêu cầu đặt ra khi xây dựng một hệ thống an toàn ................................31
3.1.5. Giải pháp ................................................................................................31
3.2. Nghiên cứu giải pháp bảo mật CSDL trong hệ quản trị CSDL MySQL .......39
3.2.1. Giới thiệu ................................................................................................39
3.2.2. Vấn đề bảo mật trong MySQL ...............................................................39
3.2.3. Xây dựng ứng dụng ................................................................................47
KẾT LUẬN ...............................................................................................................56
TÀI LIỆU THAM KHẢO .........................................................................................57

2


LỜI CAM ĐOAN
Tôi xin cam đoan những kết quả được trình bày trong luận văn là hoàn toàn trung
thực của tôi, không vi phạm bất cứ điều gì trong luật sở hữu trí tuệ và pháp luật
Việt Nam. Nếu sai, tôi hoàn toàn chịu trách nhiệm trước Nhà trường.
TÁC GIẢ LUẬN VĂN

Nguyễn Xuân Trường

3



DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Ký hiệu

Tên tiếng anh

Tên tiếng việt

AES

Advanced Encrypition Standard

Chuẩn mã tiên tiến

CA

Certificate Authority

Chủ quyền chứng nhận

CSDL

Database

Cơ sở dữ liệu

DBMS

Database Management

Hệ quản trị cơ sở dữ liệu


DDL

Data Definition Language

Ngôn ngữ định nghĩa dữ liệu

DES

Data Encript Standard

Chuẩn mã hóa dữ liệu

DML

Data Nanipulation Language

Ngôn ngữ thao tác dữ liệu

MAC

Message Authentication Code

Mã xác thực bản tin

QL

Query Language

Ngôn ngữ truy vấn


SQL

Structured Query Language

Ngôn ngữ truy vấn có cấu trúc

4


DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Tương tác giữa trình ứng dụng và cơ sở dữ liệu
Hình 1.2 Hệ thống kiểm soát truy nhập
Hình 1.3 Kiểm soát truy nhập bắt buộc
Hình 1.4 Kiểm soát truy nhập tuỳ ý
Hình 1.5 Thiết kế các quy tắc trao quyền
Hình 2.1 Mã hóa bằng khóa bí mật
Hình 2.2 Sơ đồ mã hóa AES
Hình 2.3 Mã hóa bằng khóa công khai
Hình 3.1 Các thành phần của mô hình an toàn trong một hệ thống an toàn
Hình 3.2 Dòng dữ liệu trao đổi giữa hai nút
Hình 3.3 Mô hình khai thác CSDL được bảo mật
Hình 3.4 Giao thức bắt tay của SSL
Hình 3.5 Mô hình bài toán ứng dụng một cấp
Hình 3.6 Form đăng nhập và xác thực user
Hình 3.7 Giao diện chọn chứng thư số của người đăng nhập
Hình 3.8 Dữ liệu rõ trên ứng dụng máy trạm chi nhánh
Hình 3.9 Thông tin user đã được mã hóa trong CSDL MySQL
Hình 3.10 Dữ liệu đã được mã hóa ở một số trường lưu trong máy chủ chi nhánh
Hình 3.11 Thêm mới danh mục cán bộ

Hình 3.12 Sửa danh mục cán bộ
Hình 3.13 Mô hình bài toán ứng dụng hai cấp
Hình 3.14 Dữ liệu rõ trên ứng dụng máy trạm chi nhánh
Hình 3.15 Dữ liệu với một số trường đã được mã hóa lưu trong máy chủ trụ sở
chính
Hình 3.16 Thông tin chứng thư số của người gửi

5


MỞ ĐẦU
Lý do lựa chọn đề tài.
Với sự phát triển không ngừng của công nghệ thông tin, dữ liệu của các
doanh nghiệp, các nhân, tổ chức không chỉ lưu giữ trên giấy tờ mà tổ chức thành
một cơ sở dữ liệu (CSDL) và được quản lý bằng hệ quản trị cơ sở dữ liệu để lưu trữ
tập trung tất cả các thông tin quý giá của mình. Chính vì vậy việc bảo vệ cơ sở dữ
liệu trước các rủi ro, xâm nhập, mất thông tin là một điều quan trọng. Hiện nay các
kỹ thuật tấn công ngày càng tin vi hiện đại thực hiện trên diện rộng với nhiều cách
thức khác nhau. Điều đó sẽ ảnh hưởng rất lớn đến quá trình hoạt động của tổ chức,
doang nghiệp, website do đó ta cần phảo có biện pháp để bảo vệ toàn bộ cơ sở dữ
liệu đó.
Tính cấp thiết của đề tài.
Hiện nay rất nhiều các đơn vị sử dụng hệ quản trị CSDL MySQL để tránh
nguy cơ mất an toàn thông tin và bảo vệ dữ liệu của các đơn vị, doanh nghiệp, các
website. Do vậy cần tập trung nghiên cứu bảo mật cơ sở dữ liệu là rất cần thiết.
Chính vì nhận thấy nhiệm vụ bảo vệ dữ liệu quan trọng như trên và My SQL - là hệ
quản trị cơ sở dữ liệu rất phổ biến nên tôi đã chọn đề tài "Bảo mật Cơ sở dữ liệu
MySQL".
Mục đích của đề tài (các kết quả cần đạt được).
- Đề tài tìm hiểu các kỹ thuật và phương pháp để thực hiện nhiệm vụ bảo mật

và an toàn thông tin trong MySQL, quá trình thực hiện và các kiến thức khoa học và
thuật toán liên quan như: Xác thực, bảo mật dữ liệu, mật mã, chữ ký số …
- Áp dụng các kết quả tìm hiểu để triển khai hệ thống bảo mật và an toàn
thông tin trong MySQL.
- Các vấn đề bảo mật, chứng thực trong MySQL, sử dụng chữ ký số, các kỹ
thuật sử dụng, phương pháp kết hợp các hệ mật mã trong bảo mật.

6


- Cài đặt thử nghiệm vấn đề về bảo mật và an toàn trong MySQL đã nghiên
cứu.
Phương pháp nghiên cứu.
Nghiên cứu tài liệu, ứng dụng và công nghệ liên quan. Tổng hợp các tài liệu
lý thuyết về bảo mật CSDL. Xây dựng ứng dụng để bảo mật CSDL MySQL.

7


Chương 1 - TỔNG QUAN VỀ AN TOÀN THÔNG TIN TRONG CƠ SỞ DỮ
LIỆU
1.1. Giới thiệu
An ninh cơ sở dữ liệu đã trở thành một vấn đề có tầm quan trọng toàn cầu,
những kẻ xâm nhập tìm mọi con đường để đánh cắp dữ liệu. Mặc dù chúng ta
không bao giờ khẳng định an toàn 100%, chúng ta cần phải thực hiện mọi biện pháp
để giảm thiểu rủi ro và bảo vệ trước những kẻ xâm phạm, bởi vì tác động của một
hành vi xâm phạm có thể là thảm họa ở nhiều mức độ khác nhau.
Hướng triển khai nhiều lớp bảo mật trong môi trường cơ sở dữ liệu quan
trọng là phương pháp hữu hiệu nhất để giảm thiểu nguy cơ xâm phạm dữ liệu. Nếu
nhiều lớp bảo mật được áp dụng cho một môi trường lưu trữ dữ liệu, khi đó những

kẻ xâm nhập sẽ có một thời gian khó khăn hơn khi truy cập dữ liệu. Trong các môi
trường đa lớp bảo mật, một kẻ xâm nhập đã có thể thỏa hiệp các lớp đầu tiên sẽ phải
tìm cách vượt qua lớp thứ hai và thậm chí lớp ba để có được quyền truy cập, làm
cho xâm nhập phức tạp và tốn thời gian.
Để bảo mật môi trường lưu trữ dữ liệu cần có những lớp bảo vệ sau: bảo mật
cơ sở dữ liệu, bảo mật máy tính và an ninh mạng. Để đảm bảo hiệu quả cơ sở dữ
liệu, người ta phải bảo mật môi trường cơ sở dữ và bảo mật của các hệ cơ dữ liệu
đó.
1.2. Khái niệm cơ bản
CSDL là tập hợp có tổ chức của các dữ liệu liên quan với nhau về mặt logic,
được sử dụng trong các tổ chức với những ứng dụng khác nhau. Trong thiết kế
CSDL có hai vấn đề chính đó là thiết kế pha khái niệm và thiết kế pha logic, hai pha
này dùng để mô tả cấu trúc CSDL. Trong quá trình thiết kế pha logic, lược đồ logic
được chuyển từ lược đồ khái niệm. Pha khái niệm độc lập với DBMS, pha logic phụ
thuộc vào từng DBMS.
DBMS là phần mềm ứng dụng để quản lý, tạo mới, bảo trì, và đảm bảo truy
cập có điều kiện tới CSDL của người dùng. Có rất nhiều DBMS khác nhau, từ các

8


phần mềm nhỏ chạy trên máy tính các nhân đến các hệ quản trị phức tạp chạy trên
các siêu máy tính. Nhưng tất cả đều có đặc điểm chung là sử dụng ngôn ngữ truy
vấn có cấu trúc SQL. Các ngôn ngữ dùng trong DBMS bao gồm:
 DDL là ngôn ngữ định nghĩa dữ liệu, hỗ trợ định nghĩa lược đồ CSDL
logic.
 DML là ngôn ngữ thao tác dữ liệu, được người dùng đặc biệt sử dụng, ví
dụ như nhà phát triển. Bao gồm các cú pháp cập nhật, xóa, thêm thông tin.
 QL là ngôn ngữ hỏi, cho phép người sử dụng khai thác dữ liệu, truy vấn
thông tin trên CSDL.

1.2.1 Các thành phần của DBMS
Một DBMS thông thường bao gồm nhiều môđun tương ứng với các chúc
năng sau:
 Định ngĩa dữ liệu - DDL.
 Thao tác dữ liệu - DML.
 Hỏi đáp cơ sở dữ liệu - QL.
 Quản trị cơ sở dữ liệu - DBMS.
 Quản lý file.
Và tập hợp các dữ liệu hỗ trợ các môđun này:
 Các bảng mô tả CSDL.
 Các bảng trao quyền
 Các bảng truy cập đồng thời.
Nguyên lý hoạt động: yêu cầu người dùng cuối hoặc một chương trình ứng
dụng thông qua câu lệnh của DML hoặc QL để thao tác với CSDL. Các câu lệnh
này được thông dịch bằng bộ xử lý DML, QL. Kết quả đưa ra các câu hỏi tối ưu
theo lược đồ CSDL. Sau đó các câu lệnh được đưa tới bộ quản lý CSDL. Tại đây bộ
quản lý CSDL kiểm tra xem người dùng hoặc chương trình có được phép truy cập
tới CSDL không, thông qua bảng phân quyền. Ngoài tra chương trình quản lý
CSDL không, thông qua bảng truy cập đồng thời. Tiếp đó thực hiện truy vấn tới

9


chương trình quản lý file, thực thi các thao tác trên file. Chương trình này chịu trách
nhiệm lấy dữ liệu từ trong CSDL rồi trả về kết qủa cho người dùng thông qua
chương trình quản lý file, chương trình quản lý CSDL. Bộ xử lý DML, QL là nơi
tiếp nhận sự trả về cuối cùng.
Vùng làm việc của
các trình ứng dụng


Các trình ứng dụng
------------------------------------------Các lệnh DML
----------------------

Thủ tục của DBMS

Cơ sở
dữ liệu

--------------------

Vùng làm việc của
DBMS

Hình 1.1 Tương tác giữa trình ứng dụng và cơ sở dữ liệu
Tất cả mọi thao tác nhằm truy vấn tới CSDL đều được thực hiện thông qua
các thủ tục của DBMS. Thực hiện một câu lệnh DML tương ứng với một thủ tục
của DBMS truy cập tới CSDL.
1.2.2 Các mức mô tả dữ liệu
DBMS mô tả dữ liệu theo nhiều mức khác nhau. Mỗi mức cung cấp một mức
trừu tượng về cơ sở dữ liệu. Trong DBMS có thể có các mức mô tả sau:
 Tầng hiển thị logic: chức năng của tầng là hỗ trợ các ứng dụng hiển thị trên
đó, việc xây dựng tầng này phụ thuộc vào các yêu cầu của mô hình logic và mục
đích của ứng dụng. Tầng hiển thị logic mô tả một phần tầng lược đồ CSDL logic.
Tầng này sử dụng DDL để định nghĩa các hiển thị logic và DML để thực hiện các
thao tác trên đó.

10



 Tầng lược đồ dữ liệu logic: ở tầng này tất cả dữ liệu của CSDL được mô tả
sử dụng mô hình logic của DBMS. Dữ liệu và các mối quan hệ của dữ liệu được mô
tả qua DDL của DBMS và các thao tác khác nhau trên tầng này được xác định
thông qua DML của DBMS.
 Tầng dữ liệu vật lý: ở tầng này kiến trúc lưu trữ của dữ liệu chính là các
file trên bộ nhớ ngoài. Dữ liệu là các dữ liệu vật lý được lưu trữ như bản ghi hay
con trỏ của bản ghi.
Việc DBMS tạo ra các tầng khác nhau trong mô tả của dữ liệu làm cho khái
niệm về logic và vật lý của dữ liệu trở nên độc lập ở cả hai mức logic và vật lý.
 Độc lập logic nghĩa là một lược đồ logic có thể được thay đổi mà không
làm thay đổi các chương trình ứng dụng làm việc của lược đồ này.
 Độc lập vật lý nghĩa là lược đồ dữ liệu vật lý có thể thay đổi mà không cần
thay đổi các ứng dụng truy cập dữ liệu trên đó.
1.3. Vấn đề an toàn trong cơ sở dữ liệu
1.3.1. Các hiểm hoạ đối với an toàn cơ sở dữ liệu
Hiểm họa đối với an ninh cơ sở dữ liệu là người truy cập trái phép vào CSDL
nhằm sao chép, sửa đổi, khám phá thông tin. Hiện nay hiểm họa hàng đầu đối với
an toàn cơ sở sữ liệu là:
 Lạm dụng quyền vượt mức: Người dùng sử dụng quyền vượt mức các yêu
cầu trong chức năng công việc của mình
 Lạm dụng quyền hợp pháp: Người dùng sử dụng không dúng mục đích
quyền của mình để thu thập dữ liệu...
 Nâng cấp quyền bất hợp pháp: Kẻ tấn công thay đổi quyền truy nhập của
người bình thường thành quyền truy nhập của một người quản trị.
 Lợi dụng các điểm yếu của nền tảng: Các điểm yếu trên hệ điều hành, điểm
yếu trong các dịch vụ được cài đặt máy chủ CSDL có thể dẫn tới truy nhập bất hợp
pháp, hay từ chối dịch vụ.

11



 SQL Injection: Kẻ tấn công chèn các mệnh đề CSDL bất hợp pháp vào
nguồn CSDL SQL. Để truy nhập và khai thác dữ liệu.
 Mã độc: kẻ tấn công sử dụng các mã độc, hoặc phần mềm độc hại để thâm
nhập vào các tổ chức để lấy cắp dữ liệu nhạy cảm.
 Lợi dụng vết kiểm toán yếu: Không phát hiện và ngăn chặn được hành
động tấn công của người dùng do không ghi lại được đày đủ những hành động của
người dùng.
 Từ chối dịch vụ: Người dùng hợp pháp sẽ không thể truy cập được dữ liệu
hay các ứng dụng trên mạng.
 Lợi dụng sự sơ hở để khai thác phương tiện lưu trữ: do các phương tiện lưu
trữ không thường xuyên được bảo vệ khỏi các tấn công dễ dẫn đến mất mát đĩa và
băng sao lưu CSDL.
1.3.2 Các yêu cầu bảo vệ cơ sở dữ liệu
Bảo vệ cơ sở dữ liệu khỏi các hiểm hoạ, có nghĩa là bảo vệ tài nguyên, đặc
biệt là dữ liệu khỏi các thảm hoạ, hoặc truy nhập trái phép. Các yêu cầu bảo vệ cơ
sở dữ liệu gồm:
 Bảo vệ chống truy cập trái phép: đây là một vấn đề được quan tâm chính
trong an toàn CSDL. Nó bao gồm việc truy cập hợp pháp tới dữ liệu của người được
cấp quyền. Các yêu cầu truy cập sẽ được DBMS kiểm tra lại để xem xét có chấp
nhận quyền đó của người dùng hay chương trình ứng dụng không thông qua bảng
phân quyền. Kiểm soát truy cập tới dữ liệu khó hơn nhiều so với kiểm soát truy cập
tới file và việc kiểm soát cần được thực hiện trên các đối tượng dữ liệu ở mức thấp
hơn mức file, đó là các bản ghi, thuộc tính và giá trị.
 Bảo vệ chống suy diễn: suy diễn chỉ rõ khả năng thu được thông tin bí mật
từ những dữ liệu đã được công khai. Vấn đề suy diễn thường là mối đe dọa lớn của
cơ sở dữ liệu thống kê. Người dùng sẽ bắt đầu tìm thông tin ẩn từ những dấu vết để
lại trên thông tin đã được công khai.

12



 Bảo vệ toàn vẹn CSDL: bảo vệ truy vấn lại sự truy cập trái phép bắt nguồn
từ các lỗi, virut, sự phá hoại hoặc các lỗi hệ thống. DBMS dựa vào dạng bảo vẹn
thông qua việc kiểm soát tính đúng đắn của hệ thống, các thủ tục sao lưu, phục hồi
dữ liệu, các thủ tục an toàn dữ liệu. Để duy trì tính tương thích của CSDL, mỗi giao
tác phải là một đơn vị tính toán tin cậy, tương thích.
 Tính đúng đắn của các phép toán thực hiện trên dữ liệu: yêu cầu này đảm
bảo tính tương thích logic của dữ liệu và các thao tác thực hiện đồng thời trên dữ
liệu.
 Tính toàn vẹn về mặt ngữ nghĩa của dữ liệu: yêu cầu đảm bảo tính tương
thích logic của dữ liệu bị thay đổi, bằng cách kiểm tra dữ liệu có nằm trong khoảng
giá trị cho phép hay không.
 Dữ liệu có khả năng lưu vết và kiểm tra: là khả năng ghi lại mọi truy cập
tới dữ liệu và dữ liệu có khả năng kiểm tra được nhằm đảm bảo tính toàn vẹn dữ
liệu.
 Xác thực người dùng: hệ thống phải có khả năng xác thực đối tượng người
dùng, và quyền truy cập của người dùng tới dữ liệu, chỉ có người có quyền hợp
pháp mới được truy cập tới dữ liệu.
 Bảo vệ dữ liệu nhạy cảm: bảo vệ dữ liệu nhạy cảm là một vấn đề rất quan
trọng đặt biệt trong các môi trường năng động, nhạy cảm như quân đội, thương
mại…Vì vậy, cần có chế độ kiểm soát người dùng truy cập tới dữ liệu nhạy cảm,
hạn chế tối đa mức truy cập không cần thiết.
 Có nhiều cấp độ bảo vệ khác nhau: tùy vào tính chất nhạy cảm của dữ liệu
mà phân cấp, cấp độ bảo vệ khác nhau và trao quyền cho người dùng truy cập tới dữ
liệu là khác nhau.
 Giới hạn thông tin truyền nhằm tránh mất mát thông tin trên đường truyền.
1.4. Kiểm soát an toàn
Có thể bảo vệ được cơ sở dữ liệu thông qua các phương pháp an toàn sau:


 Kiểm soát luồng
13


 Kiểm soát suy diễn
 Kiểm soát truy nhập
Với kiểm soát này chỉ những người có người dùng hợp pháp mới có thể hiểu
được vì dữ liệu đã được mã hóa bằng khóa bí mật, để đảm bảo dữ liệu được bí mật.
1.4.1 Kiểm soát luồng
Kiểm soát luồng là kiểm tra xem thông tin có trong một số đối tượng có đi
vào các đối tượng có mức bảo vệ thấp hơn hay không. Các kiểm soát luồng điều
chỉnh phân bố luồng thông tin giữa các đối tượng có khả năng truy nhập. Các chính
sách kiểm soát luồng cần phải chỉ ra các luồng có thể được chấp nhận, hoặc phải
điều chỉnh.
1.4.2 Kiểm soát suy diễn
Kiểm soát suy diễn nhằm mục đích bảo vệ dữ liệu không bị khám phá gián
tiếp.
Các kênh suy diễn chính trong hệ thống là:
 Truy nhập gián tiếp: từ dữ liệu được phép truy nhập để khám phá ra những
dữ liệu khác qua các câu hỏi truy vấn.
 Dữ liệu tương quan: Dữ liệu tương quan là một kênh suy diễn đặc trưng,
xảy ra khi dữ liệu có thể nhìn thấy được X và dữ liệu không thể nhìn thấy được Y
kết nối với nhau mặt ngữ nghĩa. Kết quả là có thể khám phá được thông tin về Y
nhờ đọc X.
 Thiếu dữ liệu: Kênh thiếu dữ liệu là một kênh suy diễn mà qua đó, người
dùng có thể biết được sự tồn tại của một tập giá trị X.
1.4.3. Kiểm soát truy nhập
Kiểm soát truy nhập trong các hệ thống thông tin là đảm bảo mọi truy nhập
trực tiếp vào các đối tượng của hệ thống tuân theo các kiểu và các quy tắc đã được
xác định trong chính sách bảo vệ. Một hệ thống kiểm soát truy nhập (hình 1.2) bao

gồm các chủ thể truy nhập vào đối tượng.

14


Truy nhập bị
từ chối
Yêu cầu
truy nhập

Các thủ tục
kiểm soát

Truy nhập
được phép
Sửa đổi
yêu cầu

Các chính sách
an toàn

Các quy tắc
truy nhập

Hình 1.2 Hệ thống kiểm soát truy nhập
Xét về mặt chức năng, nó bao gồm hai thành phần:
 Tập các chính sách và quy tắc truy nhập: bao gồm các thông tin về chế độ
truy nhập mà các chủ thể có thể có được khi truy nhập các đối tượng.
 Tập các thủ tục kiểm soát (các kỹ thuật an toàn): kiểm tra yêu cầu truy nhập
dựa vào các quy tắc đã được xác định.

Kết luận
Chương này nhằm giới thiệu một cách tổng quan về an toàn thông tin trong cơ
sở dữ liệu. Chương đã đề cập tới các vấn đề:
 Khái niệm cơ bản về CSDL
 Vấn đề an toàn trong CSDL trong đó đã đưa ra được các nguy cơ, hiểm họa
hiện nay đối với cơ sở dữ liệu và yêu cầu bảo vệ cơ sở dữ liệu.
 Các phương pháp kiểm soát an toàn để bảo vệ CSDL.

15


Chương 2 - CƠ SỞ LÝ THUYẾT MẬT MÃ TRONG BẢO MẬT CỞ SỞ DỮ
LIỆU
2.1.Giới thiệu
Có thể nói rằng, thời đại hiện nay là thời đại của công nghệ thông tin, trong
đó thông tin được lưu trữ các máy tính rất phổ biến, các thông tin này được trao đổi
qua mạng internet và lưu trữ trong CSDL…, chính vì thế khả năng dữ liệu bị mất
mát trên đường truyền, thay đổi, chỉnh sửa trái phép…là không thể tránh khỏi. Do
đó đặt ra vấn đề đảm bảo tính bí mật, toàn vẹn của dữ liệu trên đường truyền hoặc
trong các CSDL, mã hóa dữ liệu là phương pháp chính trong việc bảo vệ dữ liệu.
Thực chất, mã hóa là quá trình biến đổi thông tin ban đầu sang một dạng khác gọi là
bản mã.
Có nhiều phương pháp mã hóa đã được đưa ra dựa trên các giải thuật phức
tạp, để tạo ra sự khó khăn cho những người nào đó muốn phá mật mã mà không
cần được ai trao cho chìa khóa. Nói việc tạo ra sự khó khăn là vì trên lý thuyết,
không thể nói việc tìm ra khóa là không thể. hoặc đến khi tìm ra khóa thì dữ liệu
không còn giá trị nữa thì đó là một mức độ an toàn tốt.
2.2. Mã hóa bằng khóa bí mật
Các hệ thống mã hóa bằng khóa bí mật còn được gọi là mã hóa bằng khóa
riêng hay mã hóa bằng khóa đối xứng, mã hóa khóa đối xứng sử dụng duy nhất một

khóa cho cả quá trình mã hóa lẫn giải mã.
Một số thuật toán hiện đang được sử dụng rộng rãi hiện nay như: DES,
Triple DES, RC6, Rijndael (AES)…
Quá trình mã hóa và giải mã bằng khóa bí mật được minh họa như hình sau:

16


Bản mã
hóa AES

Bản mã
Mã hóa

Giải mã

Bản rõ

Khóa
Hình 2.1 Mã hóa bằng khóa bí mật.
2.2.1 Cơ chế mã hóa khóa bí mật
2.2.1.1 Khái quát
Mã hóa khóa bí mật là thuật toán mà tại đó khóa mã hóa có thể tính toán ra
được từ khóa giải mã. Trong rất nhiều trường hợp, khóa mã hóa và khóa giải mã là
giống nhau. Thuật toán này yêu cầu người gửi và người nhận phải thỏa thuận một
khóa trước khi thông báo được gửi đi, khóa này phải được cất giữ bí mật. Độ an
toàn của thuật toán này phục thuộc vào khóa, nếu để lộ ra khóa này nghĩa là bất kỳ
người nào cũng có thể mã hóa và giải mã thông báo trong hệ thống mã hóa.
Hệ mã hóa khóa bí mật không an toàn nếu khóa bị lộ với xác suất cao, trong
hệ này khóa phải được gửi đi trên kênh an toàn.

Vấn đề quản lý và phân phối khóa là khó khăn và phức tạp khi sử dụng hệ
mã hóa bí mật. Người gửi và người nhận luôn phải thống nhất với nhau về khóa.
Việc thay đổi khóa là rất khó khăn và dễ bị lộ.
2.2.1.2. Cơ chế mã hóa AES
AES là thuật toám mã hóa khối được chính phủ Hoa kỳ áp dụng làm chuẩn
mã hóa từ năm 2001. AES có thể thể dễ dàng thực hiện với tốc độ cao bằng phần
mềm hoặc phần cứng và không đỏi hỏi nhiều bộ nhớ. Nó sử dụng một kích thước
khối 128-bit và kích thước khóa 128, 192, hoặc 256 bit.
Để mã hóa khối dữ liệu bằng AES thì đầu tiên, tiến hành thao tác:
 Add Round Key (thao tác XOR một khóa con với khối dữ liệu). Tiếp theo
thì thực hiện một số vòng lặp chính, số vòng lặp chính trong Rijdael như sau:

17


- Là 9 vòng nếu cả khối cùng mã hóa và khóa có cùng chiều dài là 128 bit.
- Là 11 vòng nếu hoặc khối dữ liệu hay khóa là 192 bit và không có cái nào
có kích thước lớn hơn 192 bit.
- Là 13 vòng nếu hoặc khối dữ liệu hay khóa có chiều dài là 256 bit. Vòng
lặp chính bao gồm những bước sau:
 SubByte (Substitution Byte): Mỗi byte của khối được thay thế bằng một
giá trị khi qua một hộp S-box.
 ShiftRow (Shift Rows): Là quá trình chuyển đổi các dòng.
 MixColumn (Multiply Colunms): Thực hiện quá trình nhân ma trận, mỗi
cột được nhân với một ma trận kích thước 4x4.
 AddRoundKey (Xored By Key): Quá trình này chỉ là việc XOR khóa con
và cho kết quả của vòng hiện hành.
Vòng cuối cùng chỉ thi hành việc chuyển đổi:
- SubByte.
- ShiftRow.

- AddRoundKey.
2.2.1.3. Phân phối khóa bí mật
Vấn đề an toàn trong dùng khóa đối xứng là vấn đề rất quan trọng vì khóa
yêu cầu giữ bí mật tuyệt đối, nếu khóa bị lộ coi như toàn bộ thông tin bị lộ. An toàn
trong dùng khóa đối xứng liên quan mật thiết tới vấn đề phân phối khóa. Sơ đồ khóa
đối xứng đòi hỏi cả hai đối tác chia sẻ khóa bí mật chung. Dẫn đến việc phải phân
phối khóa mật.
Với hai đối tác A và B cần thực hiện chia sẻ thông tin thì có cách phân phối
khóa bí mật như sau:
 A lựa chọn khóa bí mật và truyền cho B.
 Đối tác thứ ba chọn khóa và phân phối cho A và B.

18


 A và B có thể thống nhất dùng khóa trước để mã khóa mới.
 A và B trao đổi với một đối tác thứ ba là C và C chuyển tiếp giữa A và B.
Phân loại khóa: có hai loại chính là khóa phiên và khóa chính.
- Khóa phiên: là khóa tạm thời dùng để mã hóa dữ liệu giữa nhóm người
dùng cho một phiên logic sau đó bị hủy.
- Khóa chính: là khóa dùng để mã hóa các khóa phiên chia sẻ giữa người
dùng và trung tâm phân phối khóa.
Đối với vấn đề phân phối khóa thì đối với các mạng lớn thì đòi hỏi cần một
trung tâm phân phối khoá và trung tâm này tạo sự tin cậy giữa các đối tượng sử
dụng khóa với trung tâm và giữa các trung tâm với nhau. Thời gian sống của khóa
phiên cần phải hạn chế cho an toàn và các khóa được phát sinh càng ngẫu nhiên
càng tốt và hỗ trợ kiểm soát mục đích của bên dùng khóa.
2.3. Mã hóa bằng khóa công khai
Mã hóa bằng khóa công khai hay còn được gọi là mã hóa khóa bất đối xứng
hay mã hóa bằng khóa chung. Hệ thống mã hóa bằng khóa công khai sử dụng hai

khóa khác nhau để mã hóa và giải mã: một khóa dành cho người mã hóa thường
được công khai và khóa còn lại dùng cho người giải mã và được giữ bí mật. Như
vậy thì hệ thống mã hóa sử dụng khóa công khai cần có một quá trình sinh ra hai
khóa để mã hóa và giải mã thông điệp, và các khóa này được xem như một bộ đôi:
 Public-key (khóa công khai): Là khóa được phép công khai mà không phải
chịu bất kỳ một rủi ro nào về an toàn, khóa này được dùng để mã hóa dữ liệu.
 Private-key (khóa bí mật): Là khóa để giải mã và được giữ bí mật, mỗi một
dữ liệu được mã hóa bằng khóa công khai thì chỉ có thể giải mã được bằng một
khóa bí mật thích hợp.
Một số thuật toán mã hóa khóa công khai phổ biến như: RSA, Elgamal,…
Quá trình mã hóa và giải mã bằng cách sử dụng khóa công khai được minh
họa như hình sau:

19


Bản mã

Bản mã
Mã hóa

Giải mã

Bản rõ

Khóa giải

Khóa mã

Hình 2.2 Mã hóa bằng khóa công khai.

2.3.1 Cơ chế mã hóa khóa công khai
2.3.1.1 Cơ chế mã hóa RSA
Thuật toán mã hóa RSA do ba nhà toán học là Ron Rivest, Adi Shamir và
Len Adlerman tại đại học MIT cùng thực hiện vào năm 1977 và được công bố vào
năm 1978. Thuật toán được đặt tên là RSA(Rivest - Shamir - Adlerman) được thiết
kế theo hệ mã hóa khóa công khai.
Sự khác biệt cơ bản giữa một hệ mã hóa khóa bí mật với một hệ mã hóa khóa
công khai đó là hệ mã hóa khóa công khai sử dụng hai khóa khác nhau để mã hóa
và giải mã. Vì thế một bộ mã hóa khóa công khai gồm hai khóa, một khóa dành cho
người mã hóa và thường được công khai, khóa còn lại dành cho người giải mã,
được giữ bí mật. Mặc dù hai khóa này thực hiện các thao tác ngược nhau và có liên
quan đến nhau, nhưng phải làm thế nào đó để không thể suy ra khóa bí mật từ khóa
công khai.
Và để thực hiện được yêu cầu này, Rivest, Shamir và Adleman đã đưa ra
phương pháp dựa trên nhận xét là có thể dễ dàng sinh ra hai số nguyên tố lớn và
nhân chúng lại với nhau, nhưng rất khó khăn khi muốn phân tích thừa số cho tích
của chúng.
Các bước thực hiện của thuật toán RSA:

20


Hình 2.3 Các bước thực hiện của thuật toán RSA.
Vấn đề cốt lõi của thuật toán RSA là hai số nguyên tố p và q, hai số này cần
phải được giữ bí mật tuyệt đối. Mặt khác, có thể tính toán được khóa bí mật D nếu
phân tích được n thành hai số nguyên tố p và q. Nhưng điều này là không khả thi vì
phải đối mặt với bài toán khó.
Định nghĩa các giá trị:
Sinh khóa:
- Chọn p, q là 2 số nguyên tố.

- Tính N: N=p*q
- Tính Ø (n): Ø (n) = (p – 1) (q − 1)
- Chọn e: USCLN[e, Ø (n) =1]
- Tính d: d=e-1 mod Ø (n)
- Khóa public: KU={e,N}
- Khóa private: KR={d,N}

21


Mã hóa: Bản tin gốc: P, bản mã: C=Pe(mod n).
Giải mã: Bản tin mã: C, bản giải mã: P=Cd(mod n).
Các hệ thống mã hóa khóa công khai khắc phục được nhược điểm phân phối
khóa phải được giữ một cách an toàn. Tuy nhiên thì khi công khai các khóa dùng để
mã hóa thì lại nảy sinh vấn đề một người nào đó giả danh sử dụng để mã hóa các
thông báo gửi đến bên nhận làm cho họ không thể phân biệt được thông báo đó là
hợp lệ hay không. Và có nhiều phương pháp giải quyết được vấn đề này, điển hình
là chữ ký số.
2.3.1.2. Phân phối khóa công khai
Các hệ mã công khai chúng ta đã biết yêu cầu mỗi người phải có một giá trị
công khai. Để phân phối các giá trị đó cho người dùng đảm bảo tính xác thực, ta có
thể sử dụng một trong các kỹ thuật sau:
Phân phối điểm - điểm trên kênh truyền tin cậy: Khóa công khai của các bên
thu được thông qua việc tra đổi trược tiếp với nhau trên mật kênh tin cậy. Phương
pháp này phù hợp với hệ thống không thường xuyên sử dụng hoặc hệ thống đóng và
nhỏ.
Truy nhập trực tiếp tới các tệp dùng chung: Sử dụng một cơ sở dữ liệu công
khai lưu trữ tên và khóa công khai được xác thực mỗi người dùng hệ thống. Truy
cập từ xa trên những kênh truyền công cộng có thể tránh được những tấn công bị
động, còn muốn chống lại những tấn công chủ động ta sử dụng những kênh truyền

tin cậy.
Sử dụng phục vụ ủy quyền trực tuyến: Một phục vụ tin cậy cho phép các truy
nhập như khi truy nhập tới tệp dùng chung, khi các bên có nhu cầu khóa công khai,
nó sẽ được phục vụ gửi cho và chữ ký của phục vụ trên đó. Mỗi người sử dụng đều
có thể kiểm thử được chữ ký của phục vụ đó.
Sử dụng phục vụ ủy quyền ngoại tuyến và chứng chỉ: Phục vụ được gọi là
CA (ủy quyền chứng chỉ). Mỗi người sử dụng chỉ phải liên lạc với phục vụ một lần
để đăng ký khóa công khai của mình và nhận khóa kiểm thử chữ ký của CA. CA sẽ

22


chứng nhận khóa công khai của người sử dụng rồi rằng buộc giá trị này với xâu xác
định danh tính của người sử dụng, đó là nội dung chứng chỉ của nghời sử dụng.
2.4. Xác thực thông tin
Việc xác thực thông tin liên quan đến việc sau khi thông tin được truyền trên
mạng bao gồm có:
- Bảo vệ tính toàn vẹn của thông tin, tức là bảo vệ thông tin không bị thay
đổi hoặc có thể phát hiện ra nếu thông tin có sự thay đổi trên đường truyền.
- Kiểm chứng danh tính nguồn gốc thông tin, tức là kiểm tra xem thông tin
có đúng là người gửi hay bị kẻ khác mạo danh.
- Chống từ chối bản tin gốc, tức là bản thân thông tin có chứa định danh
người gửi và không ai có thể làm việc đó.
- Có thể bổ sung thêm việc bảo mật như mã hóa.
Do đó để đáp ứng được những yêu cầu đó thì có ba cách mã hóa được lựa
chọn là:
- Thông tin được mã hóa bằng khóa đối xứng hoặc công khai.
- Sử dụng mã xác thực bản tin, dùng khóa với hàm nén thông tin cần gửi để
nhận được một đặc trưng đính kèm với thông tin và người gửi đó.
- Sử dụng hàm băm nén thông tin thành dấu vân tay cho thông tin.

Yêu cầu bảo mật thông tin khi truyền thông tin trên mạng bao gồm có: Giữ
bí mật thông tin, chỉ cho phép người có quyền biết nắm được thông tin đó, không
cho phép theo dõi hoặc cản trở việc truyền tin, tránh việc giả mạo lấy danh nghĩa
của người khác để truyền tin, ngăn chặn việc nội dung thông tin bị cắn xén và sửa
đổi, tránh việc thay đổi thứ tự bản tin truyền, chống chối cãi.
2.5. Hàm băm
Hàm băm chính là một biến thể của mã xác thực thông điệp. Với hàm băm,
đầu vào là một thông điệp M có kích thước bất kỳ, nhưng đầu ra H(M) có kích
thước cố định. Mã băm chính là hàm của tất cả các bit trong một thông điệp, đồng

23


thời cũng cung cấp khả năng phát hiện ra lỗi. Tức là nếu người nào đó thay đổi một
bit bất kỳ hay một chuỗi bit trong một thông điệp thì giá trị băm cũng sẽ bị thay đổi.
Do đó để đáp ứng yêu cầu về xác thực thì hàm băm phải thỏa mãn những yêu cầu
sau:
 Có thể áp dụng cho mọi thông điệp có kích thước tùy ý, nhưng đầu ra H
phải có kích thước cố định thường là 128 hay 1024 bit.
 Dễ tính được giá trị h=H(M) cho mọi bản tin M và hàm băm H tính toán
nhanh, phụ thuộc vào bản tin và không thể tính toán ngược lại, nói cách khác chính
là hàm một chiều.
 Nếu cho một giá trị x thì không thể tìm được y sao cho H(x)=H(y) và cũng
không thể tìm được x,y sao cho H(x)=H(y).
 Hàm băm sẽ tạo nên dấu vân tay hay chính là thông tin đặc trưng của dữ
liệu.
 Vì việc đầu vào có kích thước tùy ý, đầu ra có kích thước cố định, nói cách
khác là hàm băm đã nén thông điệp về dấu vân tay có kích thước cố định.
Các bước thực hiện để băm một thông điệp là:
Bước 1: Với một thông điệp có kích thước bất kỳ, bổ sung một số bit vào

thông điệp để sao cho độ dài của thông điệp khi đó là bội của một số cho trước. Sau
đó chia nhỏ thông điệp ra thành các khối M1, M2,….Ms…
Bước 2: Với H là hàm trạng thái có kích thước n bit, f là hàm nén thực hiện
thao tác trên gói dữ liệu với trạng thái như sau:
 H(0) là trạng thái ban đầu, khởi tạo.
 Hi=f(Hi-1, Mi) với i=1,2…s.
 Hs là thông điệp đã được rút gọn.
2.6. Chữ ký số
Một chữ ký số là một cơ chế xác thực cho phép người tạo ra một thông điệp
để đính kèm một mã số hoạt động như một chữ ký. Thông thường các chữ ký được

24


tạo thành bằng cách lấy các hash của thông điệp và mã hóa các tin nhắn với khóa
riêng của người tạo ra nó. Chữ ký đảm bảo nguồn gốc và tính toàn vẹn của thông
điệp. Chữ ký số dùng để hai thành viên bảo vệ lẫn nhau trong việc gửi thông điệp.
Chữ ký số có tính chất sau:
 Có khả năng xác thực tác giả và thời gian ký.
 Có khả năng xác thực nội dung tại thời điểm ký.
 Thành viên thứ ba có thể xác thực để giải quyết tranh chấp.
Các yêu cầu đối với chữ ký số:
 Chữ ký phải là chuỗi bit phụ thuộc vào các thông điệp được ký
 Chữ ký phải sử dụng một thông tin duy nhất nào đó từ người gửi nhằm
ngăn chặn tình trạng làm giả chữ ký và chối bỏ chữ ký.
 Việc tạo ra chữ ký số là dễ dàng.
 Khó có thể làm giả chữ ký.
 Cần phải lưu trữ một bản sao các chữ ký.
Quá trình thực hiện chữ ký số công khai: Chữ ký số khóa công khai dựa trên
nền tảng mật mã khóa công khai. Để có thể trao đổi thông tin trong môi trường này,

mỗi người dùng có một căp khóa (khóa công khai và khóa bí mật). Khóa công khai
được công bố rộng rãi, còn khóa bí mật được giữ kín và không thể tìm được khóa bí
mật nếu chỉ biết khóa công khai.
Quá trình gồm ba thuật toán: tạo khóa, tạo chữ ký số và kiểm tra chữ ký số.

Kết luận
Trong chương này đã giới thiệu những kiến thức chung về mã hóa đối xứng,
mã hoá công khai và cơ chế mã hóa. Nêu ra các vấn đề an toàn toàn trong dùng các
hệ mã, phân phối và sử dụng khóa. Tìm hiểu về xác thực thông tin, kỹ thuật băm,
chữ ký số và một số kỹ thuật cơ bản được sử dụng.

25


×