1. Trang chủ
  2. » Luận Văn - Báo Cáo

Mã hóa cơ sở dữ liệu trong oracle

80 1,3K 14

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 80
Dung lượng 1,07 MB

Nội dung

Mã hóa cơ sở dữ liệu trong oracle

Trang 1

MỤC LỤC

MỤC LỤC I DANH MỤC CÁC CHỮ VIẾT TẮT III DANH MỤC CÁC BẢNG IV DANH MỤC CÁC HÌNH VẼ V

CHƯƠNG 1: CƠ BẢN VỀ MÃ HÓA 1

1.1 Giới thiệu 1

1.2 Lựa chọn mã hóa 2

1.3 Thuật toán mã hóa và khóa 3

1.4 Các phương pháp mã hóa 3

1.4.1 Quá trình mã hóa khóa đối xứng 4

1.4.2 Quá trình mã hóa khóa công khai 5

CHƯƠNG 2: TỔNG QUAN VỀ MÃ HÓA CƠ SỞ DỮ LIỆU 9

2.1 Tóm tắt ngắn gọn về cơ sở dữ liệu 9

2.1.1 Định nghĩa cơ sở dữ liệu (DataBase) 9

2.1.2 Ưu điểm của cơ sở dữ liệu 9

2.1.3 Những vấn đề mà CSDL cần phải giải quyết 9

2.1.4 Các đối tượng sử dụng CSDL 10

2.1.5 Hệ quản trị cơ sở dữ liệu (Database Management System) 11

2.1.6 Các ứng dụng của cơ sở dữ liệu 12

2.2 An toàn thông tin trong cơ sở dữ liệu 12

2.2.1 Tại sao phải bảo vệ cơ sở dữ liệu 12

2.2.2 Các tấn công vào cơ sở dữ liệu 13

2.2.3 Các phương pháp bảo vệ cơ sở liệu 15

2.2.4 Áp dụng mã hóa 16

2.3 Các mức mã hóa (Encryption Level) 16

2.3.1 Mã hóa mức lưu trữ (Storage-Level Encryption) 16

2.3.2 Mã hóa mức hệ quản trị cơ sở dữ liệu (DBMS-Level Encryption) 17

2.3.3 Mã hóa mức ứng dụng (Application-Level Encryption) 17

2.3.4 Thuật toán mã hóa và chế độ hoạt động 18

2.3.5 Quản lý khóa 19

CHƯƠNG 3: MÃ HÓA CƠ SỞ DỮ LIỆU TRONG HQT ORACLE 9I 22 3.1 Giới thiệu về hệ quản trị cơ sở dữ liệu Oracle 9i 22

Trang 2

3.1.2 Ưu điểm của Oracle 24

3.2 Giải pháp mã hóa dữ liệu lưu trữ trong Oracle 9i 25

3.2.1 Các khả năng mã hóa dữ liệu của Oracle 9i 25

3.2.2 Các thách thức của mã hóa dữ liệu 41

CHƯƠNG 4: TRIỂN KHAI MÃ HÓA TRÊN CSDL NHÂN VIÊN 49

4.1 Bảng nhân viên 49

4.2 Thiết kế lược đồ mã hóa cho bảng nhân viên 51

4.3 Các bước triển khai 53

4.3.1 Tạo người dùng SA 54

4.3.2 Xây dựng package mã hóa/giải mã 54

4.3.3 Mã hóa/giải mã dữ liệu 54

4.3.4 Xử lý quá trình thêm, cập nhật và xóa nhân viên 57

4.3.5 Quản lý khóa 57

4.3.6 Quản lý người dùng truy cập dữ liệu rõ 57

4.4 Kết quả kiểm tra 58

4.5 Đánh giá lược đồ mã hóa bảng nhân viên 61

KẾT LUẬN 63

TÀI LIỆU THAM KHẢO 64

PHỤ LỤC 65

A Người dùng SA 65

B Gói CRYPT_UTIL 65

C Khung nhìn NhanVien_vw 67

D Trigger NhanVien_vw_trg 68

Trang 3

DANH MỤC CÁC CHỮ VIẾT TẮT

AES Advanced Encryption Standard

ANSI American National Standards Institute

CBC Cipher-Block Chaining

DAC Discretionary Access Control

DBA Database Administrator

DBMS Database Management System

DCL Data Control Language

DDL Data Description Language

DEA Encryption Standard Algorithm

DES Data Encryption Standard

DML Data Manipulation Language

ECB Electronic Codebook

HSM Hardware Security Module

IDS Intrusion Detection System

ISO International Organization for Standardization

SA Security Administrator

SHA Secure Hash Algorithm

SQL Structured Query Language

SSL Secure Sockets Layer

Trang 4

DANH MỤC CÁC BẢNG

Bảng 3.1: Hoạt động của TripleDES 27

Bảng 3.2: Các chương trình con của gói DBMS_OBFUSCATION 30

Bảng 3.3: Các tham số của DES3DECRYPT cho dữ liệu thô 31

Bảng 3.4: Các tham số của hàm và thủ tụcDES3ENCRYPT 33

Bảng 3.5: Các tham số của hàm và thủ tục DES3GETKEY 36

Bảng 3.6: Các tham số của hàm và thủ tụcDESDECRYPT 37

Bảng 3.7: Các tham số của hàm và thủ tụcDESENCRYPT 38

Bảng 3.8: Các tham số của hàm và thủ tục DESGETKEY 40

Bảng 3.9: Các tham số của hàm và thủ tục MD5 41

Bảng 4.1: Bảng nhân viên 50

Trang 5

DANH MỤC CÁC HÌNH VẼ

Hình 1.1: Quá trình mã hóa khóa đối xứng 4

Hình 1.2: Quá trình mã hóa khóa công khai 6

Hình 1.3: Mã hóa khóa công khai được sử dụng để xác thực 7

Hình 2.1: Ba tùy chọn cho các mức mã hóa cơ sở dữ liệu 18

Hình 2.2: Các phương pháp quản lý khóa 20

Hình 2.3: Chế độ liên kết khối mã – CBC 28

Hình 4.1: Bảng NhanVien 51

Hình 4.2: Bảng Nhanvien_Ecrypt 51

Hình 4.3: Bảng NhanVien_Key 52

Hình 4.4: Tạo khung nhìn NhanVien_Table 53

Hình 4.5: Quá trình mã hóa bảng NhanVien 55

Hình 4.6: Bảng nhân viên đã mã hóa 55

Hình 4.7: Tạo khung nhìn NhanVien_Table 56

Hình 4.8: Bảng Nhanvien_table 57

Hình 4.9: Nhân viên A xem dữ liệu rõ 58

Hình 4.10: Select từ bảng NhanVien_Encrypt 59

Hình 4.11: Insert vào bảng NhanVien 60

Hình 4.12: Update bảng NhanVien 61

Hình 4.13: So sánh kết quả mã hóa các bản ghi giống nhau 62

Trang 6

LỜI NÓI ĐẦU

Với nhiều tổ chức, cơ sở dữ liệu là một kho tàng thông tin nhạy cảm chứa nhiều loại dữ liệu khác nhau, từ thông tin chi tiết về khách hàng và thông tin cạnh tranh bí mật đến các thông tin sở hữu trí tuệ Mất mát hoặc bị trộm cắp dữ liệu, đặc biết là dữ liệu của khách hàng, có thể ảnh hưởng đến danh tiếng, bất lợi cạnh tranh và thiệt hài về tài chính nghiêm trọng

Chính vì vậy, an toàn cơ sở dữ liệu là một ưu tiên hàng đầu cho các tổ chức ngày nay Tuy nhiên, các kĩ thuật bảo đảm an toàn cơ sở dữ liệu truyền thống như tường lửa và an toàn ứng dụng trong những năm gần đây bộc lộ rất nhiều thiếu sót và các phương pháp để bảo đảm an toàn này không đủ để bảo

vệ các doanh nghiệp và dữ liệu trong thời đại hiên nay, một môi trường công nghệ thông tin mở và phức tạp Trong các biện pháp bảo đảm an toàn cơ sở

dữ liệu mã hóa được coi như là phương pháp phòng thủ sâu nhất chống lại các

lỗ hổng an toàn

Từ thực tế đó, em đã chọn đề tài “Mã hóa cơ sở dữ liệu trong Oracle”

làm đồ án tốt nghiệp Mục tiêu của đề tài là tìm hiểu về các phương pháp mã hóa cơ sở dữ liệu và ứng dụng vào mã hóa một cơ sở dữ liệu nhỏ trong hệ quản trị Oracle

Báo cáo của đồ án của em được chia thành 3 chương:

- Chương 3: Mã hóa cơ sở dữ liệu trong hệ quản trị Oracle 9i

- Chương 4: Triển khai mã hóa trên cơ sở dữ liệu nhân viên

Trong đó chương 1 giới thiệu tổng quan về mã hóa, tầm quan trọng của

mã hóa trong việc bảo vệ thông tin và các phương pháp mã hóa cơ bản hiện nay; chương 2 trình bày về các vấn đề liên quan đến cơ sở dữ liệu và các mức

có thể áp dụng mã hóa để bảo vệ dữ liệu; chương 3 trình bày khả năng mã hóa

Trang 7

cơ sở dữ liệu của hệ quản trị Oracle; chương 4 sẽ đưa ra cách áp dụng khả năng mã hóa của Oracle để đảm bảo an toàn cho cơ sở dữ liệu nhân viên

Em xin chân thành cảm ơn sự giúp đỡ tận tình của TS Nguyễn Nam Hải và CN Trần Thị Lượng để Đồ án của em được hoàn thành

Do thời gian có hạn nên Đồ án của em chắc chắn còn nhiều thiếu sót

Em rất mong nhận được sự giúp ý, chỉ bảo của quý thầy cố để Đồ án của em

được hoàn thiện hơn

Em xin chân thành cảm ơn!

Hà Nội, Ngày 16 tháng 06 năm 2010

Sinh viên Ong Thị Hồng

Trang 8

Quá trình mã hóa có lịch sử ra đời rất thú vị Việc mã hóa được ra đời

từ hàng nghìn năm trước, thậm chí có thể ra đời từ thời kì đế quốc La Mã Trong thời gian đó, Julius Caesar, người nắm chính quyền Roma cổ đại muốn truyền thông điệp tới các vị tướng của mình trong trận địa Những thông điệp này hết sức nhạy cảm, bí mật bởi nó là thông điệp truyền lệnh chỉ ra cách bắt

đầu một chiến dịch quân sự mới đối với một mục tiêu nào đó

Những thông điệp này được gửi đi bằng những sứ giả đưa tin, và đây là một việc hết sức mạo hiểm bởi vì những thông điệp này có thể bị chặn bắt trước khi tới được đích Đây là điều hết sức nghiêm trọng bởi vì nó gây thất bại tới chiến dịch quân sự đó Chính vì vậy, thuật toán mã hóa đơn giản đã ra

đời, và được sử dụng để mã hóa những thông điệp Julius Caesar được biết tới

như là người mã hóa và giải mã những thông điệp đầu tiên Nhờ vậy khi thông điệp bị chặn bắt, hoặc người sứ giả bị mua chuộc hay tra tấn nhằm tìm

ra nội dung thông điệp được mã hóa đều có thể bị loại bỏ nhờ phương pháp này

Vậy phải kết hợp sử dụng mã hóa như thế nào Điều quan trọng là ta phải hiểu được bản chất của vấn đề Quá trình mã hóa cung cấp sự bảo vệ cho những dữ liệu nhạy cảm được truyền trên những kênh liên lạc không an toàn Thông điệp được mã hóa từ những dữ liệu nhạy cảm, sau đó sẽ được sứ giả

đưa tin chuyển thông điệp qua kênh liên lạc không an toàn (qua vùng địch,

sông, núi )

Quá trình mã hóa bảo đảm dữ liệu nhạy cảm được truyền đi an toàn trên những kênh liên lạc không tin cậy

Trang 9

Ngày nay, trong thế giới kết nối Internet, quá trình mã hóa đã được sử dụng một cách rộng rã bởi vì nó khá phù hợp trong điều kiện hiện nay: quá trình mã hóa sẽ đảm bảo truyền những dữ liệu nhạy cảm qua môi trường không an toàn là Internet một cách an toàn Từ đó cũng xuất hiện nhiều chuyên gia vừa có những kinh nghiệm phong phú trong các lĩnh vực an toàn mạng vừa có những hiểu biết sâu rộng trong lĩnh vực mật mã Đây là một trong những lí do làm cho quá trình mã hóa trở nên phổ biến ngày nay

Quá trình mã hóa là quá trình xử lý dữ liệu từ bản rõ và chuyển đổi chúng sang dạng không thể đọc được Kết quả nhận được sẽ là dữ liệu đã

được mã hóa, thông thường sẽ được gọi là bản mã Khi dữ liệu đã được mã

hóa, thì sau đó nó sẽ cần được giải mã trở lại Quá trình giải mã (quá trình thực hiện những hành động ngược với quá trình mã hóa) dữ liệu là quá trình

đưa bản mã trở về dạng ban đầu là bản rõ Việc nghiên cứu hai quá trình xử lý

này được gọi là môn mật mã học

1.2 Lựa chọn mã hóa

Có rất nhiều cách để mã hóa dữ liệu, nhưng chỉ có một vài cách có thế

đem lại hiệu quả cao Nhiều người được khuyến khích viết những bản mã của

riêng mình, như đại đế Julius Caesar đã làm Tuy nhiên, trừ phi họ phải là những thiên tài, hoặc là người cực kì may mắn, nên cho tới giờ những bản mã của riêng cá nhân là hết sức ít ỏi Ngày nay, hiệu suất của việc mã hóa được

đánh giá dựa trên 1 tiêu chuẩn chung và dựa vào việc phân tích, xem xét

những thuật toán mã hóa đó Những thử nghiệm là hết sức quan trọng bởi vì

nó đảm bảo rằng quá trình mã hóa có thể loại bỏ được những sai sót không

đáng có, dẫn tới việc những người không được cho phép có thể xác định được

nội dung thông tin nhạy cảm

Có một số chuẩn mã hóa mà ta có thể lựa chọn, nhưng trước khi bắt

đầu lựa chọn những thuật toán này để sử dụng trong cơ sở dữ liệu, ta cần phải

hiểu được một vài điều về quá trình thực hiện mã hóa

Trang 10

1.3 Thuật toán mã hóa và khóa

Để mã hóa cơ sở dữ liệu có hai điều cần được đặt ra như sau: đó là

thuật toán mã hóa và khóa mã hóa Quá trình mã hóa dữ liệu diễn ra khá đơn giản như sau: bản rõ sẽ được “đưa vào” thuật toán mã hóa Khóa mã hóa cũng

được thêm vào Kết hợp thuật toán sẽ sử dụng khóa và những quá trình logic

phức tạp để mã hóa dữ liệu Quá trình giải mã được tiến hành tương tự, nghĩa

là nó cũng yêu cầu khóa và thuật toán giải mã

Độ mạnh của quá trình mã hóa là không xác định bởi thuật toán hoặc

độ dài của khóa Độ mạnh của quá trình này được xác định bởi cả hai yếu tố

trên Thông thường quan niệm sai cho rằng, khóa càng lớn có nghĩa là thuật toán càng mạnh hơn những thuật toán khác sử dụng khóa có độ dài nhỏ hơn Một vài thuật toán yêu cầu khóa có độ dài lớn thì mới có độ mạnh giống như thuật toán khác có độ dài khóa nhỏ hơn Trong một số trường hợp thì khóa với độ dài lớn được sử dụng trong cùng một thuật toán làm cho quá trình mã hóa trở nên an toàn hơn

Thách thức còn lại chính là hiệu suất của quá trình mã hóa Nếu Julius muốn gửi tới cho các vị tướng một thông điệp được mã hóa, thì đầu tiên Julius cần có cả thuật toán và khóa mới có thể mã hóa thông điệp đó Những nghiên cứu của mật mã học chỉ ra cho chúng ta thấy rằng đối với các thuật toán hiện nay chỉ cần khám phá một điểm mấu chốt đó chính là khóa Những thuật toán phổ biến không hỗ trợ kẻ tấn công tìm ra được những thông tin nhạy cảm Rõ ràng những thuật toán này dường như là những công cụ an ninh tốt, ngọai trừ rắc rối tới từ những kẻ tấn công đã xác định trước

1.4 Các phương pháp mã hóa

Ba phương pháp mã hóa sẽ được trình bày bao gồm:

• Mật mã đối xứng: Sử dụng một khóa duy nhất cho cả việc mã hóa

và giải mã

• Mật mã bất đối xứng: Sử dụng một khóa để mã hóa và một khóa khác để giải mã

Trang 11

• Hàm băm: Sử dụng một phép biến đổi toán học để mã hóa thông tin theo một chiều

1.4.1 Quá trình mã hóa khóa đối xứng

Ngày nay có hai loại mã hóa sử dụng Loại đầu tiên có tên gọi là mã hóa khóa đối xứng Thuật toán và khóa trong mã hóa khóa đối xứng được sử dụng cả trong quá trình mã hóa và giải mã, chúng đối xứng với nhau Thông

điệp được mã hóa bằng một khóa và được giải mã cũng chính bằng khóa đó

Hình 1.1: Quá trình mã hóa khóa đối xứng

Thuật toán khóa đối xứng đảm bảo an ninh cao và đem lại hiệu suất lớn trong cả quá trình mã hóa và giải mã thông tin Một vài thuật toán khóa đối xứng phổ biến là RC4, RC5, DES, 3-DES và AES Bởi vì những thuật toán

mã hóa này mạnh và đem lại hiệu suất cao nên chúng thường được sử dụng để

mã hóa số lượng thông tin lớn

Các mã pháp đối xứng hiện nay chia thành hai loại: mã khối và mã dòng Mã khối mã hóa một đoạn vài bit của dữ liệu một lúc, trong khi đó mã dòng mã hóa một bit một như luồng dữ liệu chuyển qua Khi mã khối phải mã hóa dữ liệu có kích cỡ dài hơn một khối, thì đầu tiên dữ liệu đó phải được chia thành các khối có kích cỡ phù hợp, và sau đó thuật toán mã hóa được áp

Trang 12

dụng cho mỗi khối Có vài chế độ hoạt động để chỉ ra cách mà các khối được

xử lý Các chế độ cho phép một thuật toán sử dụng một cách an toàn trong nhiều tình huống Bằng cách lựa chọn một chế độ thích hợp, một mã khối có thể sử dụng như mã dòng

Ưu điểm của mã dòng trong mã hóa dữ liệu là không cần phải thêm

phần đệm Với các mã khối hoạt động trên một kích thước cố định, thì các khối dữ liệu có kích thước nhỏ hơn phải được thêm phần đệm Mã dòng tránh

được điều này, và khi dòng dữ liệu kết thúc, việc mã hóa cũng kết thúc

Khi hai người muốn sử dụng thuật toán khóa đối xứng, họ cần thiết lập trước khóa chung và cách truyền khóa đảm bảo an toàn Khi hai bên đã biết nhau, có thể họ đã biết khóa của nhau, nhưng để hai bên chưa từng gặp gỡ nhưng giờ muốn trao đổi dữ liệu một cách an toàn, nảy sinh thách thức đó là vấn đề trao đổi khóa Bạn không thể chuyển khóa cùng với bản rõ vì như thế

kẻ tấn công sẽ phát hiện ra Nếu bạn mã hóa khóa, bạn lại phải sử dụng một khóa khác để mã hóa, từ đó sẽ phát sinh thêm vấn đề mới Trước những thúc

đẩy cần phát triển đó, một quá trình mã hóa khác được ra đời, đó là quá trình

mã hóa khóa bất đối xứng hay còn gọi là quá trình mã hóa khóa công khai

1.4.2 Quá trình mã hóa khóa công khai

Trong quá trình mã hóa khóa công khai, có hai khóa tạo thành một cặp hoạt động một cách bổ sung Thuật toán mã hóa khóa công khai là thuật toán

đảo ngược Nếu một khóa thực hiện mã hóa thì khóa kia thực hiện quá trình

giải mã và ngược lại Hơn nữa, mặc dù biết được thuật toán và một khóa trong cặp khóa thì kẻ tấn công cũng không thể xác định khóa còn lại và giải mã dữ liệu

Trong quá trình mã hóa khóa công khai, một khóa sẽ được gọi là khóa công khai, khóa kia sẽ được gọi là khóa riêng

Dữ liệu được mã hóa với khóa công khai và được giải mã bằng khóa riêng

Trang 13

“Khóa riêng” và “khóa công khai” được sử dụng để mô tả thuật ngữ

“khóa”, bởi vì khóa công khai có thể được biết bởi nhiều người, còn khóa riêng được giữ bí mật, và chỉ có người sở hữu mới có thể biết Chừng nào khóa riêng được còn giữ bí mật, thì quá trình mã hóa khóa công khai còn hoạt

động tốt

Do vậy Quá trình mã hóa khóa công khai giải quyết được vấn đề phân phối khóa Để hai bên có thể trao đổi với nhau, họ cần phải biết được khóa công khai của bên kia Hình 2 mô tả cách mã hóa khóa công khai gửi thông

điệp bí mật giữa hai bên liên lạc Để đảm bảo rằng người nhận (là Alice trong

hình 1.2) có thể nhận được đúng thông điệp, thì thông điệp này phải được mã hóa bằng khóa công khai của Alice Và chỉ Alice mới có thể giải mã được thông điệp bởi vì chỉ có khóa riêng của Alice mới có thể giải mã được thông

điệp đã được mã hóa bằng khóa công khai của cô ta Cố gắng giải mã thông điệp với khóa riêng không chính xác là điều không tưởng

Khóa công khai không thể sử dụng để giải mã thông điệp được, dù cho

nó được mã hóa cùng với thông điệp

Hình 1.2: Quá trình mã hóa khóa công khai

Ngoài ra, khóa riêng được sử dụng như là một phương pháp xác thực

đối với người gửi Như hình 1.3 mô tả người gửi có thể mã hóa thông điệp

Trang 14

bằng khóa riêng của họ Người nhận sử dụng khóa công khai của người gửi

để giải mã thông điệp Nếu thông điệp được giải mã thì người gửi được xác

thực bởi vì chỉ có người gửi mới có thể sử dụng khóa riêng của họ để mã hóa thông điệp

Hình 1.3: Mã hóa khóa công khai được sử dụng để xác thực

Đáng tiếc là thuật toán mã hóa khóa công khai yêu cầu khóa có kích

thước lớn để có thể có cùng độ mạnh như khi mã hóa với khóa đối xứng Do vậy thuật toán khóa công khai thực hiện chậm hơn đồng thời cũng thực hiện tính toán phức tạp hơn so với thuật toán khóa đối xứng

Ngày nay, mã hóa khóa công khai và mã hóa khóa đối xứng được sử dụng song song như là 1 thành phần của giao thức mạng SSL Giao thức SSL

là kĩ thuật mã hóa dữ liệu phổ biến trên mạng Internet Để chuyển dữ liệu giữa 2 bên, khóa công khai được sử dụng để mã hóa khóa đối xứng Trong hình 1.2 và 1.3 thông điệp bí mật thực sự chính là khóa riêng

1.4.3 Hàm băm mật mã

Một hàm băm mật mã, còn được gọi là một tóm lược thông báo, giống như dấu tay của dữ liệu Thuật toán hàm băm mật mã nén một lượng dữ liệu lớn thành một giá trị nhỏ duy nhất Điều khác biệt quan trọng của hàm băm mật mã với các hàm băm khác là gần như không thể tính toán được dữ liệu gốc từ giá trị băm hoặc tìm bản dữ liệu khác có giá trị băm giống như vậy

Trang 15

Vai trò chính của hàm băm trong hệ thống mật mã hiện đại là nâng cao hiệu quả của chữ kí số Bởi vì mật mã khóa công khai chậm hơn nhiều so với mật mã khóa đối xứng, chữ kí của các khối dữ liệu lớn mất nhiều thời gian tính toán Do vậy, hầu hết các giao thức chữ kí số định rõ áp dụng chữ kí số trên bản băm của dữ liệu Bởi vì tính toán một giá trị thường nhanh và giá trị kết quả thường nhỏ hơn nhiều dữ liệu gốc, nên thời gian kí giảm đi đáng kể

Một số ứng dụng khác của hàm băm bao gồm bảo vệ mật khấu, dữ liệu thời gian để theo dõi an toàn việc tạo và thay đổi ngày và thời gian, và bảo

đảm tính toàn vẹn Một số thuật toán hàm băm an toàn nổi tiếng gồm có

SHA-224, SHA-256, SHA-384, và SHA-512 Các thuật toán cũ hơn SHA-1

và MD5 hiện đang được sử dụng rộng rãi, nhưng những sai sót trong hai thuật toán này đã được chỉ ra, do đó nên thay thế bằng các hàm băm an toàn hơn

Trang 16

Chương 2 TỔNG QUAN VỀ MÃ HÓA CƠ SỞ DỮ LIỆU

Chương này em sẽ trình bày các khái niệm cơ bản của cơ sở dữ liệu và

hệ quản trị cơ sở dữ liệu, vai trò của nó trong môi trường công nghệ thông tin hiện nay Từ đó sẽ đưa ra các nguy cơ mất an toàn đối với một cơ sở dữ liệu,

và tìm hiểu các mức có thể áp dụng mã hóa để bảo vệ cơ sở dữ liệu lưu trữ đó

2.1 Tóm tắt ngắn gọn về cơ sở dữ liệu

2.1.1 Định nghĩa cơ sở dữ liệu (Database)

Cơ sở dữ liệu (CSDL) là một hệ thống các thông tin có cấu trúc được lưu trữ trên các thiết bị như băng từ, đĩa từ,… để có thể thoả mãn yêu cầu khai thác đồng thời của nhiều người sử dụng

CSDL gắn liền với đại số, logic toán và một số lĩnh vực khác

2.1.2 Ưu điểm của cơ sở dữ liệu

- Giảm sự trùng lặp thông tin xuống mức thấp nhất và do đó bảo đảm

được tính nhất quán và toàn vẹn dữ liệu

- Đảm bảo dữ liệu có thể truy xuất theo nhiều cách khác nhau

- Khả năng chia sẻ thông tin cho nhiều người sử dụng

2.1.3 Những vấn đề mà CSDL cần phải giải quyết

- Tính chủ quyền của dữ liệu

Tính chủ quyền của dữ liệu được thể hiện ở phương diện an toàn dữ liệu, khả năng biểu diễn các mối liên hệ ngữ nghĩa của dữ liệu và tính chính xác của dữ liệu Điều này có nghĩa là người khai thác CSDL phải có nhiệm vụ cập nhật các thông tin mới nhất của CSDL

- Tính bảo mật và quyền khai thác thông tin của người sử dụng

Trang 17

Do có nhiều người được phép khai thác dữ liệu một cách đồng thời, nên cần thiết phải có một cơ chế bảo mật và phân quyền hạn khai thác CSDL Các

hệ điều hành nhiều người sử dụng hay hệ điều hành mạng cục bộ đều có cung cấp cơ chế này

- Tranh chấp dữ liệu

Nhiều người được phép truy nhập cùng một lúc vào tài nguyên dữ liệu của CSDL với những mục đích khác nhau, do đó cần thiết phải có một cơ chế ưu tiên khi truy nhập dữ liệu Cơ chế ưu tiên có thể được thực hiện bằng việc cấp quyền ưu tiên cho từng người khai thác

- Đảm bảo an toàn dữ liệu khi có sự cố

Việc quản lý dữ liệu tập trung có thể làm tăng khả năng mất mát hoặc sai lệch thông tin khi có sự cố như mất điện đột xuất, hay một phần đĩa lưu trữ CSDL bị hư,… một số hệ điều hành mạng có cung cấp dịch vụ sao lưu ảnh

đĩa cứng, tự động kiểm tra và khắc phục lỗi khi có sự cố Tuy nhiên, bên cạnh

dịch vụ của hệ điều hành, để đảm bảo CSDL luôn ổn định, một CSDL nhất thiết phải có một cơ chế khôi phục dữ liệu khi có các sự cố bất ngờ xảy ra

- Những người quản trị CSDL, đó là những người hiểu biết về tin học, về các hệ quản trị CSDL và hệ thống máy tính Họ là người tổ chức CSDL, do đó họ phải nắm rõ các vấn đề kỹ thuật về CSDL để có thể phục hồi CSDL khi có sự cố Họ là những người cấp quyền hạn khai thác CSDL, do vậy họ có thể giải quyết được các vấn đề tranh chấp dữ liệu nếu có

Trang 18

2.1.5 Hệ quản trị cơ sở dữ liệu (Database management system)

Để giải quyết tốt những vấn đề tổ chức CSDL như đã nói ở trên, cần

thiết phải có những phần mềm chuyên dùng để khai thác chúng Những phần mềm này được gọi là các hệ quản trị CSDL Các hệ quản trị CSDL có nhiệm

vụ hỗ trợ cho các nhà phân tích thiết kế CSDL cũng như những người khai thác CSDL Hiện nay trên thị trường phần mềm đã có những hệ quản trị CSDL hỗ trợ được nhiều tiện ích như: MS Access, Visual Foxpro, SQL Server Oracle, …

Mỗi hệ quản trị CSDL đều được cài đặt dựa trên một mô hình dữ liệu

cụ thể Dù là dựa trên mô hình dữ liệu nào, một hệ quản trị CSDL cũng phải hội tụ đủ các yếu tố sau:

- Ngôn ngữ giao tiếp giữa người sử dụng và CSDL, bao gồm :

Ngôn ngữ mô tả dữ liệu (DDL): Để cho phép khai báo cấu trúc của

CSDL, khai báo các mối liên hệ của dữ liệu và các quy tắc quản lý áp đặt lên các dữ liệu đó

Ngôn ngữ thao tác dữ liệu (DML): Cho phép người sử dụng có thể cập

nhật dữ liệu (thêm/sửa/xoá)

Ngôn ngữ truy vấn dữ liệu (SQL): Cho phép người khai thác sử dụng để

truy vấn các thông tin cần thiết trong CSDL

Ngôn ngữ quản lý dữ liệu (DCL): Cho phép những người quản trị hệ thống

thay đổi cấu trúc của các bảng dữ liệu, khai báo bảo mật thông tin và cấp quyền hạn khai thác CSDL cho người sử dụng.,…

Trang 19

Mỗi hệ quản trị CSDL cũng có thể cài đặt một cơ chế riêng để giải quyết các vấn đề này Một số biện pháp sau đây thường được sử dụng: thứ nhất: cấp quyền ưu tiên cho từng người sử dụng; thứ hai: Đánh dấu yêu cầu truy xuất

dữ liệu, phân chia thời gian, người nào có yêu cầu trước thì có quyền truy xuất dữ liệu trước,…

- Hệ quản trị CSDL cũng phải có cơ chế sao lưu (backup) và phục hồi (restore) dữ liệu khi có sự cố xảy ra

Điều này có thể thực hiện bằng cách sau một thời gian nhất định hệ quản

trị CSDL sẽ tự động tạo ra một bản sao những CSDL, cách này hơi tốn kém, nhất là đối với CSDL lớn

- Hệ quản trị CSDL phải cung cấp một giao diện thân thiện, dễ sử dụng

2.1.6 Các ứng dụng của cơ sở dữ liệu

Hiện nay, hầu như CSDL gắn liền với mọi ứng dụng của tin học; chẳng hạn như việc quản lý hệ thống thông tin trong các cơ quan nhà nước, việc lưu trữ và xử lý thông tin trong các doanh nghiệp, trong các lĩnh vực nghiên cứu khoa học, trong công tác giảng dạy, cũng như trong việc tổ chức thông tin đa phương tiện,…

2.2 An toàn thông tin trong cơ sở dữ liệu

2.2.1 Tại sao phải bảo vệ cơ sở dữ liệu

Cơ sở dữ liệu là trái tim của một doanh nghiệp Đó là nơi lưu trữ các thông tin có giá trị và quan trọng Dữ liệu của một công ty có thể liên quan

đến các bản ghi tài chính, hoặc các bản ghi khác cần thiết cho sự thành công

của một tổ chức, như bí mật thương mại, thông tin miêu tả về cá nhân với các thông tin cần được bảo vệ

Giá trị của những thông tin nhạy cảm này có thể là đích của kẻ tấn công Các tấn công thành công có thể gây thiệt hại lớn cho các doanh về tài chính, ảnh hưởng nghiêm trọng đến danh tiếng và quan hệ với khách hàng, thậm chí làm mất tính cạnh tranh,… Hơn nữa, với một kẻ tấn công, khi tấn

Trang 20

công vào cơ sở dữ liệu sẽ có lợi hơn là nghe nén giao tiếp trên mạng Bởi vì thông thường dữ liệu thường được mã hóa trên đường truyền nhưng lại được lưu dưới dạng rõ trong cơ sở dữ liệu

An toàn thông tin trong CSDL bao gồm 3 yếu tố chính: tính bí mật, toàn vẹn và sẵn sàng

- Đảm bảo tính bí mật (secrecy) có nghĩa là ngăn chặn/phát

hiện/cản trở những truy nhập thông tin trái phép Nói chung, tính bí mật được sử dụng để bảo vệ dữ liệu trong những mỗi trường bảo mật cao như các trung tâm quân sự hay kinh tế quan trọng Bảo vệ tính riêng tư của dữ liệu

- Đảm bảo tính toàn vẹn (integrity) của thông tin có nghĩa là ngăn

chặn/phát hiện/cản trở các sửa đổi thông tin trái phép

- Đảm bảo tính sẵn sàng (availability) của hệ thống có nghĩa là

ngăn chặn/phát hiện/cản trở sự từ chối trái phép các truy nhập hợp pháp đến dịch vụ trong hệ thống

2.2.2 Các tấn công vào cơ sở dữ liệu

Dựa vào vị trí của kẻ tấn công ta có thể chia các tấn công vào cơ sở dữ liệu thành 2 kiểu:

- Tấn công bên trong: kẻ tấn công là người bên trong tổ chức (bên trong

tường lửa), họ biết về kiến trúc của mạng

- Tấn công bên ngoài: kẻ tấn công phải vượt qua tường lửa, IDS và

không biết về kiến trúc của mạng

Kẻ tấn công bên trong (có thể gồm cả người quản trị của CSDL) là mối

đe dọa còn lớn hơn các tấn công bên ngoài

a Tấn công tính bí mật

Tấn công tính bí mật là loại tấn công trong đó, những người dùng bất hợp pháp có khả năng truy nhập vào thông tin nhạy cảm của CSDL Kiểm

Trang 21

soát mức thấp nhất họ có thể thực hiện là đọc CSDL Ví dụ như kẻ tấn công

có thể kiểm soát toàn bộ máy chủ CSDL, do đó anh ta có thể tải xuống toàn

bộ file CSDL rồi nạp file vào Database engine để truy nhập dữ liệu như người dùng bình thường

Để duy trì được tính bí mật của dữ liệu, chính sách kiểm soát truy cập

bắt buộc được định nghĩa trong DBMS là một phương thức phổ biến được sử dụng để bảo vệ CSDL Một chính sách kiểm soát truy cập có thể có hình thức khác nhau tùy thuộc vào mô hình CSDL nằm dưới và cách xác thực được thực thi như: DAC, RBAC, MAC Tuy nhiên phương pháp kiểm soát truy cập thường được cấu hình chưa đúng, tạo khe hở cho những người dùng muốn lạm dụng quyền, hoặc là kẻ tấn công có thể truy cập trực tiếp vào file CSDL

vật lý

Một khả năng khác làm cho kẻ tấn công có thể truy cập dữ liệu nhạy cảm đó là từ việc sao lưu cơ sở dữ liệu không an toàn Người ta thường sao lưu các hệ thống cơ sở dữ liệu để tránh các thảm họa mất mát dữ liệu Tuy nhiên, dữ liệu sao lưu này thường được lưu ở một nơi khác, nên kẻ tấn công

có thể tấn công lấy trộm các thông tin nhạy cảm từ các dữ liệu này

b Tấn công tính toàn vẹn

Đây là loại tấn công gây ra những sửa đổi trái phép đối với thông tin

trong CSDL Để thực hiên được tấn công này thì kẻ tấn công phải có khả năng ghi vào CSDL Do đó, trong loại tấn công này ta không lo ngại đối với các kẻ tấn công có thể đọc CSDL

Một số tấn công tính toàn vẹn phổ biến:

– Tấn công từ người quản trị ác ý

– Sự gây hại của các ứng dụng bị lỗi

– Sử dụng tài khoản đánh cắp có truy nhập ghi vào CSDL

– Khả năng leo thang đặc quyền của một số tài khoản

Trang 22

2.2.3 Các phương pháp bảo vệ cơ sở liệu

Trường hợp CSDL lưu trữ thông tin nhạy cảm và then chốt là không hiếm, do đó cần cung cấp đầy đủ các mức bảo vệ cho nội dung của CSDL Các phương pháp bảo vệ sự an toàn cho CSDL được chia thành 4 lớp:

– An toàn vật lý

– An toàn hệ điều hành

– An toàn hệ quản trị cơ sở dữ liệu

– Mã hóa

Chỉ sử dụng 3 lớp đầu tiên thì không đủ bảo đảm an toàn cho CSDL vì

dữ liệu được lưu trữ ở dạng rõ, dạng có thể đọc được Vì vậy bất kì ai có quyền truy cập tời CSDL bao gồm DBA đều có khả năng đọc dữ liệu

Một số kĩ thuật điển hình để bảo vệ dữ liệu trong CSDL, như tường lửa,

hệ thống phát hiện xâm nhập, và kiểm soát truy cập Tuy nhiên tường lửa và

hệ thống phát hiện xâm nhập chỉ cung cấp sự bảo vệ ở lớp mạng Kiểm soát truy cập cũng trở nên vô dụng khi kẻ tấn công đạt được quyền truy cập vào dữ liệu thô bằng cách vượt qua các cơ chế truyền thống Các thức tấn công này rất dễ dàng đạt được bởi những người bên trong, như người quản trị hệ thống

và DBA

Một trong những phương pháp tiến bộ đang được các tổ chức kết hợp chặt chẽ để giải quyết các thách thức bộc lộ dữ liệu nhạy cảm, đặc biệt trong ngân hàng, tài chính, bảo hiểm, chính phủ và y tế là mã hóa CSDL

Do đó, cách tốt nhất để bảo đảm an toàn dữ liệu ở trạng thái nghỉ là mã hóa Mã hóa sẽ mang lại sự phòng thủ hiệu quả nhất để bảo vệ dữ liệu, đồng thời bổ xung an toàn cho các phương pháp khác

Trang 23

2.2.4 Áp dụng mã hóa

Với tinh thần của một nguyên tắc quan trọng được gọi là phòng thủ theo chiều sâu (ví dụ phòng thủ phân lớp như kẻ tấn công phải vượt qua lớp này đến lớp khác của việc bảo vệ), dùng đến các kĩ thuật mật mã để bổ sung

và củng cố việc điều khiển truy cập gần đây nhận được nhiều sự chú ý từ cộng đồng CSDL Mục đích của mã hóa CSDL là để đảm bảo tính không trong suốt của CSDL bằng cách giữ thông tin được ẩn với bất kì người nào không có thẩm quyền (ví dụ kẻ xâm nhập) Thậm chí kẻ tấn công vượt qua

FW và tránh các chính sách kiểm soát truy cập, thì họ vẫn không có khóa để giải mã dữ liệu

Mã hóa CSDL sẽ bảo vệ được tính bí mật và tính toàn vẹn của dữ liệu lưu trữ

Mã hóa cơ sở dữ liệu mang lại những lợi ích sau:

- Bảo đảm sự bí mật của khác hàng khi sử dụng các dịch vụ của công ty

- Phương pháp đơn giản và hiệu quả nhất để lấp đầy các yêu cầu

- Bảo như đảm an toàn dữ liệu có giá trị nhất của công ty

- Nâng cao sự bảo vệ an toàn dữ liệu

- Giảm các rủi ro an toàn dữ liệu

- Bảo đảm hoạt động kinh doanh

- Duy trì tính cạnh tranh

- Bảo đảm dữ liệu outsource

- Lấp đầy các yêu cầu và quy định quản trị

2.3 Các mức mã hóa (Encryption Level)

2.3.1 Mã hóa mức lưu trữ (Storage-Level Encryption)

Mã hóa mức lưu trữ chung quy là mã hóa dữ liệu trong hệ thống lưu trữ phụ và vì vậy bảo vệ dữ liệu lưu trữ (ví dụ từ những kẻ trộm phương tiện lưu trữ) Phương pháp này phù hợp cho việc mã hóa tập tin và toàn bộ thư mục trong phạm vi hệ điều hành Từ quan điểm CSDL, mã hóa mức lưu trữ có ưu

điểm là trong suốt vì vậy tránh được bất kỳ thay đổi trong ứng dụng hiện có

Mặt khác, vì hệ thống phụ lưu trữ không biết về cấu trúc và đối tượng CSDL,

Trang 24

nên chiến lược mã hóa không liên quan với đặc quyền người dùng (ví dụ: bằng cách sử dụng các khóa riêng biệt cho người dùng riêng biệt), hoặc là với

dữ liệu nhạy cảm Vì vậy lựa chọn mã hóa nên mã hóa chỉ một phần của CSDL để giảm chi phí mã hóa, hạn chế mã hóa trong các tập tin có độ chi tiết cao Hơn nữa, việc lựa chọn các tập tin mã hóa là mạo hiểm vì cần đảm bảo rằng không có bản sao dữ liệu nhạy cảm nào chưa được mã hóa (ví dụ trong tập tin nhật ký, tập tin tạm thời…)

2.3.2 Mã hóa mức hệ quản trị cơ sở dữ liệu (DBMS-Level Encryption)

Mã hóa mức hệ quản trị cơ sở dữ liệu cho phép bảo đảm dữ liệu khi chèn hoặc khôi phục từ CSDL Chiến lược mã hóa là một phần trong thiết kế CSDL và có thể liên quan với dữ liệu nhạy cảm và/hoặc đặc quyền người sử dụng Mã hóa chọn lọc có thể được thực hiện tại nhiều mức chi tiết khác nhau, như là bảng, cột và hàng Thậm chí có thể liên quan tới một vài điều kiện logic (ví dụ mã hóa lương lớn hơn 1000$/1 tháng) Tùy thuộc vào mức

độ tích hợp của tính năng mã hóa và hệ quản trị cơ sở dữ liệu, quá trình mã

hóa có thể thay đổi từ ứng dụng Hơn nữa, mã hóa có thể gây giảm hiệu suất

hệ quản trị cơ sở dữ liệu vì mã hóa thường ngăn cản người dùng ghi chỉ số trên dữ liệu được mã hóa Thực chất nếu không sử dụng thuật toán cụ thể hoặc chế độ mã hóa cụ thể thì việc ghi chỉ số dữ liệu được mã hóa là vô ích

Với hai mức mã hóa trên, dữ liệu được giải mã trên máy chủ CSDL khi thực hiện Vì vậy khóa mã phải được truyền hoặc lưu trữ cùng với dữ liệu

được mã hóa ở phía máy chủ, do vậy hai mức mã hóa này hạn chế trong việc

chống lại các tấn công của người quản trị máy chủ hoặc bất kỳ kẻ xâm nhập nào chiếm đoạt quyền quản trị Thực chất kẻ tấn công cũng có thể dò xét bộ nhớ và khám phá ra khóa mã hoặc bản rõ

2.3.3 Mã hóa mức ứng dụng (Application-Level Encryption)

Mã hóa mức ứng dụng chuyển quá trình mã hóa/giải mã tới ứng dụng hiển thị dữ liệu Vì vậy mã hóa được thực hiện ở ứng dụng, dữ liệu được gửi

ở dạng mã hóa, do đó được lưu trữ và khôi phục dạng mã hóa một cách tự

nhiên, để cuối cùng được giải mã ở ứng dụng Phương pháp này có lợi ích là

Trang 25

tách khóa mã với dữ liệu mã hóa được lưu trong CSDL, vì vậy các khóa không bao giờ phải tách rời khỏi phía ứng dụng Tuy nhiên, các ứng dụng cần

được điều chỉnh để thực thi theo giải pháp này Thêm vào đó, phụ thuộc vào

mức độ chi tiết của mã hóa, ứng dụng có thể phải khôi phục một lượng dữ liệu lớn hơn người dùng cần thực tế, vì vậy mở ra một lỗ hổng về an toàn Thực vậy người dùng bất kì (hoặc kẻ tấn công thu được quyền truy cập vào máy mà ứng dụng đang chạy) có thể hack ứng dụng để truy cập dữ liệu trái phép Cuối cùng như một phương pháp gây ra chi phí hiệu suất và ngăn chặn

sử dụng vài tính năng cải tiến của CSDL trên dữ liệu mã hóa, như các thủ tục lưu trữ (như các đoạn mã dược lưu trong hệ quản trị cơ sở dữ liệu có thể được chia sẻ và yêu cầu bởi vài ứng dụng) và các trigger (như đoạn chương trình tự khởi động khi dữ liệu trong CSDL được chỉnh sửa) Trong khái niệm độ chi tiết và quản lý khóa, mã hóa mức ứng dụng đưa ra sự linh hoạt cao nhất vì độ chi tiết mã hóa và các khóa mã có thể được chọn phụ thuộc vào sự logic của

ứng dụng

Ba phương pháp miêu tả trên được minh họa trong Hình 2.1

Hình 2.1: Ba tùy chọn cho các mức mã hóa cơ sở dữ liệu

2.3.4 Thuật toán mã hóa và chế độ hoạt động

Tùy thuộc vào chiến lược mã hóa, sự an toàn của dữ liệu đã mã hóa phụ thuộc vào thuật toán mã, kích thước khóa mã và sự bảo vệ khóa mã Thậm chí

sử dụng thuật toán mạnh, như AES, thì bản mã vẫn có thể bị phơi bày thông

Trang 26

tin bản rõ nếu chọn chế độ hoạt động không phù hợp Ví dụ, nếu thật toán mã

được thực thi ở chế độ quyển mã điện tử (ECB - Electronic Codebook Mode),

thì các khối bản rõ giống nhau sẽ được mã hóa thành các khối bản mã giống nhau, vì vậy bộc lộ sự lặp đi lặp lại mô hình Trong khung cảnh CSDL, sự lặp

đi lặp lại mô hình phổ biến khi nhiều bản ghi có cùng giá trị thuộc tính, vì vậy

việc xem xét nên được đưa ra khi chọn chế độ mã hóa Hơn nữa giải pháp đơn giản có thể làm việc trong khung cảnh khác (ví dụ sử dụng chế độ bộ đếm với một vector khởi tạo dựa trên địa chỉ dữ liệu) có thể phát sinh lỗi trong CSDL một khi dữ liệu được cập nhật (ở với ví dụ trước, thực thi phép loại trừ OR giữa dữ liệu đã mã hóa phiên bản cũ và mới sẽ phơi bày loại trừ OR giữa dữ liệu dạng rõ phiên bản cũ và mới) Tất cả các đặc trưng của ngữ cảnh CSDL

có thể được đưa vào trong tài liệu để hướng dẫn việc chọn một thuật toán mã hóa và chế độ hoạt động tương xứng về: mô hình lặp, sự cập nhật, khối lượng

dữ liệu mã hóa lớn Hơn nữa, sự bảo vệ nên đủ mạnh vì dữ liệu có thể hợp lệ trong khoảng thời gian dài (vài năm) Vì vậy, nên sử dụng thuật toán mã hóa

độc lập với mức mã hóa, nội dung sau đây giả sử sử dụng mã hóa mức CSDL

Với mã hóa mức hệ quản trị CSDL, một giải pháp đơn giản là lưu khóa trong một bảng hoặc tập tin đã được giới hạn, và tất cả được mã hóa bởi một khóa chủ (master key) (bản thân khóa chủ được lưu ở một nơi nào đó trên máy chủ CSDL) Trừ người quản trị với đặc quyền truy cập có thể truy cập vào các khóa này và giải mã bất kì dữ liệu trong hệ thống mà không bị phát hiện

Trang 27

Hình 2.2: Các phương pháp quản lý khóa

Để giải quyết vấn đề này, các chipset mật mã có tính kháng xáo trộn

chuyên dụng, được gọi là module an toàn phần cứng (HSM-hardware security module), có thể được sử dụng để cung cấp nơi lưu trữ an toàn cho khóa mã Nói chung các khóa mã được lưu trữ trên máy chủ được mã hóa bởi một khóa chủ lưu trong HSM Tại thời điểm mã hóa /giải mã, các khóa được mã sẽ tự

động giải mã bởi HSM (bằng cách dùng khóa chủ) và chuyển tới bộ nhớ của

máy chủ ngay khi hoạt động mật mã được thực hiện, như hình 2.2.a

Một giải pháp được lựa chọn khác là chuyển các công việc liên quan

đến vấn đề an toàn tới một phần mềm chạy trên một máy chủ (vật lý) khác, được gọi là máy chủ an toàn, như hình 2.2.b Sau đó máy chủ an toàn quản lý

người dùng, vai trò, đặc quyền, chính sách mã hóa và khóa mã (hoàn toàn tin cậy vào HSM) Trong phạm vi DBMS, một module an toàn truyền thông với máy chủ an toàn để xác thực người dùng, kiểm tra đặc quyền và dữ liệu mã hóa hoặc giải mã Sau đó các khóa mã có thể được liên kết với người dùng hoặc đặc quyền người dùng Một khác biệt rõ ràng cũng được tạo ra giữa vai trò của DBA, quản lý tài nguyên CSDL, và vai trò của SA (người quản trị an toàn – Security Administrator), quản lý các tham số an toàn Sự tin cậy thu

được từ thực tế là để tấn công yêu cầu sự kết hợp giữa DBA và SA

Trang 28

Trong khi thêm một máy chủ an toàn hoặc HSM sẽ giảm thiểu được sự phơi bày của các khóa mã, nhưng nó không hoàn toàn bảo vệ CSDL Thật vậy các khóa mã, cũng như là dữ liệu đã được mã hóa vẫn xuất hiện trong bộ nhớ máy chủ CSDL và có thể là đích tấn của kẻ tấn công

Trang 29

Chương 3

MÃ HÓA CƠ SỞ DỮ LIỆU TRONG HQT ORACLE 9i

Hệ quản trị cơ sở dữ liệu Oracle là một hệ quản trị lớn, được sử dụng khá rộng rãi hiện nay trong các doanh nghiệp Nó cung cấp khả năng an toàn cao cho cơ sở dữ liệu Trong đó cơ chế mã hóa dữ liệu cũng được Oracle cung cấp từ phiên bản 8i, đó là gói DBMS_OBFUSCATION_TOOLKIT Vì vậy chương này sẽ trình bày về khả năng mã hóa dữ liệu của Oracle và các vấn đề xung quanh

3.1 Giới thiệu về hệ quản trị cơ sở dữ liệu Oracle 9i

3.1.1 Lịch sử phát triển của Oracle

Đầu tiên ta hãy đi ngược lại lịch sử để hiểu rõ hơn về Oraclẹ

- 1977 Thành lập Relational Software Inc

- 1978 Phiên bản Oracle v1 đầu tiên, chạy trên hệ điều hành PDP-11 của máy RSX (dòng của hãng DEC), khả năng sử dụng bộ nhớ tối đa là 128

KB, viết bằng ngôn ngữ Assemblỵ Oracle V1 chỉ được sử dụng trong nội bộ công ty, không được phát hành ra bên ngoài

- 1980 Phát hành phiên bản Oracle v2 - Đây cũng là hệ cơ sở dữ liệu thương mại đầu tiên sử dụng ngôn ngữ SQL Phiên bản này vẫn được viết bằng Assembly cho PDP-11, tuy nhiên, nó còn chạy được trên Vax/VMS

- 1982 Phát hành Oracle v3 released, Oracle trở thành DBMS đầu tiên chạy trên các máy mainframes, minicomputers, và PC's (portable codebase) Phiên bản Oracle đầu tiên thể làm việc theo "transactional" Oracle v3 được viết bằng C

- 1983 Relational Software Inc đỗi tên thành Oracle Corporation

Trang 30

- 1984 Phát hành Oracle v4, giới thiệu tính năng "read consistency", có thể chạy trên nhiều Hệ Điều Hành, và cũng là phiên bản đầu tiên chạy theo mô hình PC - Server

- 1986 Phát hành Oracle v5 Thực sự là CSDL client/server, hổ trợ cluster trên VAX CSDL đầu tiên sử dụng truy vấn dữ liệu phân tán (distributed queries)

- 1988 Phát hành Oracle v6 Giới thiệu ngôn ngữ PL/SQL Oracle cũng giới thiệu sản phẩm ứng dụng sử dụng CSDL Oracle - Oracle Financial Applications

- 1989 Phát hành Oracle v6.2 với tính năng chạy song song - Oracle Parallel Server

- 1992 Phát hành Oracle v7 chạy trên UNIX

- 1993 Phát hành bộ công cụ phát triển ứng dụng - Oraclés Cooperative Development Environment (CDE) Giới thiệu "Oracle Industries" và

"Oracle Media Server"

- 1994 Phát hành Oracle v7.1 và Oracle v7 trên máy PC

- 1997 Phát hành Oracle8 , giới thiệu Cơ sở Dữ liệu Hướng Đối Tượng - object-relational

- 1998 Phát hành phiên bản trên Intel Linux

- 1999 Phát hành Oracl8i (i = internet), tích hợp với máy ảo Java – JVM

- 2000 Phát hành Oracl8i Release 2 Ngoài Oracle Database, Oracle còn phát triển bộ sản phẩm ứng dụng cho doanh nghiệp – ERP Phát hành Oracl9i Application Server, đây là một sản phẩm thuộc lớp giữa (midle tier)

- 2001 Phát hành Oracl9i Release 1 với tính năng Cluster (RAC) và Advanced Analytic Service

Trang 31

- 2002 Phát hành Oracl9i Release 2

- 2004 Phát hành Oracle10g Release 1 (g = grid)

- 2005 Phát hành Oracle10g Release 2

3.1.2.Ưu điểm của Oracle

Nhiều người cho rằng Oracle chỉ sử dụng cho những Doanh Nghiệp (DN) lớn nên không thích hợp ở Việt Nam Điều này là hoàn toàn sai lầm Oracle không chỉ nhắm tới những DN lớn mà còn nhắm tới những DN trung bình và cho cả những DN nhỏ Cụ thể là Oracle Server có đủ các phiên bản thương mại từ Personal, Standard đến Enterprise (ngoài ra còn có Oracle lite nữa)

- Về phía các DN: Oracle tỏ ra rất có ưu điểm như tính bảo mật cao, tính

an toàn dữ liệu cao, dễ dàng bảo trì-nâng cấp, cơ chế quyền hạn rõ ràng, ổn định,

- Về phía những nhà phát triển: Oracle cũng tỏ ra rất có ưu điểm như dễ

cài đặt, dễ triển khai và dễ nâng cấp lên phiên bản mới Hơn nữa Oracle còn tích hợp thêm PL/SQL, là một ngôn ngữ lập trình có cấu trúc - Structure Language Tạo thuận lợi cho các lập trình viên viết các Trigger, StoreProcedure, Package Đây là điểm rất mạnh so với các CSDL hiện có trên thị trường

Trong Oracle, ngoài các kiểu dữ liệu thông thường còn có các kiểu dữ liệu đặc biệt khác góp phần mang lại sức mạnh cho Oracle như Blob, Clob, Bfile,

Ngoài ra, bạn có thể triển khai Oracle trên nhiều hệ điều hành khác nhau (Windows, Solaris, Linux, ) mà không cần phải viết lại mã PL/SQL

Có thể import một dumpFile (backupFile) từ một máy chạy hệ điều hành này sang hệ điều hành khác hoặc từ một phiên bản thấp lên một phiên bản cao hơn

mà không gặp bất cứ trở ngại nào (ngược lại cũng có thể thực hiện được nếu như bạn không sử dụng các tính năng mới so với phiên bản trước đó)

Trang 32

Cơ sở dữ liệu Oracle đang ngày càng được sử dụng phổ biến tại Việt Nam Rất nhiều hệ thống cơ sở dữ liệu tại các cơ quan, doanh nghiệp lớn đều

sử dụng hệ thống cơ sở dữ liệu Oracle phục vụ cho công tác lưu trữ dữ liệu

Danh sách một số cơ quan, doanh nghiệp sử dụng Oracle:

- Khối cơ quan nhà nước: Bộ Tài chính, Tổng cục Thuế, Kho bạc Nhà

nước…

- Khối viễn thông: Tổng công ty Viễn thông Quân đội Viettel; Các đơn

vị thuộc tập đoàn Bưu chính Viễn thông Việt Nam (VNPT) như Mobifone, Vinaphone, Viễn thông Hà Nội…

- Khối doanh nghiệp nước ngoài: Toyota Việt Nam, Honda Việt Nam,

Jamil Steel…

3.2 Giải pháp mã hóa dữ liệu lưu trữ trong Oracle 9i

Để giải quyết bài toán mã hóa thông tin nhạy cảm trước khi lưu trữ vào

trong cơ sở dữ liệu, Oracle9i cung cấp một gói PL/SQL để mã hóa và giải mã

dữ liệu lưu trữ Đó là gói DBMS_OBFUSCATION_TOOLKIT, gói này được

cung cấp ở cả 2 phiên bản Oracle9i Standard Edition và Oracle9i Enterprise Edition Oracle9i

3.2.1 Các khả năng mã hóa dữ liệu của Oracle 9i

Hiện nay, gói DBMS_OBFUSCATION_TOOLKIT hỗ trợ mã hóa dữ liệu khối lượng lớn bằng cách sử dụng thuật toán DES (Data Encryption Standard), và bao gồm các thủ tục để mã hóa (DESEncrypt) và giải mã

DBMS_OBFUSCATION_TOOLKIT cũng bao gồm các hàm để mã hóa và giải mã bằng cách sử dụng DES 2 khóa và 3 khóa, trong chế độ CBC

Trang 33

Gói DBMS_OBFUSCATION_TOOLKIT cũng bao gồm khả năng tổng kiểm tra mật mã (MD5), và khả năng tạo số ngẫu nhiên an toàn (GetKey) Việc tạo số ngẫu nhiên an toàn là một phần quan trọng của mật mã; các khóa

có thể dự đoán là các khóa dễ dàng phỏng đoán, và các khóa dễ đoán có thể dẫn tới việc dễ dàng giải mã dữ liệu Hầu hết việc thám mã được thực hiện bằng cách tìm các khóa yếu hoặc các khóa được lưu trữ kém, nhiều hơn là thông qua phân tích thuật toán (duyệt tất cả các khóa có thể có)

Quản lý khóa gắn liền với chương trình Nghĩa là, các ứng dụng (gọi chức năng mã hóa này) phải cung cấp khóa mã; điều này có nghĩa là người phát triển ứng dụng phải tìm cách lưu trữ và gọi khóa ra một các an toàn Gói DBMS_OBFUSCATION_TOOLKIT, có thể xử lý dữ liệu ở cả dạng chuỗi và dạng thô, yêu cầu đưa ra khóa 64 bit

Oracle cài đặt gói DBMS_OBFUSCATION_TOOLKIT trong lược đồ SYS và được gán quyền truy cập mặc định cho vai trò PUBLIC Oracle khuyến cáo rằng quyền này nên được thu hồi Sau đó bạn có thể gán quyền sử dụng gói cho người dùng và các vai trò khi cần thiết

3.2.1.1 Các thuật toán

Thuật toán DES, còn được gọi là thuật toán DEA theo viện tiêu chuẩn quốc gia Hoa Kỳ (ANSI ) và DEA-1 theo Tổ chức tiêu chuẩn quốc tế (ISO),

đã trở thành một chuẩn mã hóa toàn thế giới trên 20 năm qua Ngành công

nghiệp ngân hàng chấp nhận các chuẩn dựa trên DES cho các giao dịch giữa các tổ chức tài chính, và giữa các tổ chức tài chính và các cá nhân

DES là một thuật toán mã hóa đối xứng; nghĩa là, sử dụng cùng một khóa để mã hóa cũng như là giải mã dữ liệu DES mã hóa khối dữ liệu 64 bit bằng một khóa 56 bit Thuật toán DES bỏ qua 8 bit của 64 bit khóa; tuy nhiên, các nhà phát triển phải cung cấp một khóa 64 bit cho thuật toán DES mã hóa thông tin qua 16 bước, ở mỗi bước một nửa khối thông tin sẽ được chuyển đổi

và hoán vị theo một quá trình phức tạp

Trang 34

Hiện nay DES được xem là không đủ an toàn cho nhiều ứng dụng Nguyên nhân chủ yếu là độ dài 56 bit của khóa là quá nhỏ Khóa DES đã từng

bị phá trong vòng chưa đầy 24 giờ Đã có rất nhiều kết quả phân tích cho thấy những điểm yếu về mặt lý thuyết của mã hóa có thể dẫn đến phá khóa, tuy chúng không khả thi trong thực tiễn Thuật toán được tin tưởng là an toàn trong thực tiễn có dạng Triple DES (thực hiện DES ba lần), mặc dù trên lý thuyết phương pháp này vẫn có thể bị phá Gần đây DES đã được thay thế bằng AES (Advanced Encryption Standard, hay Tiêu chuẩn Mã hóa Tiên tiến)

3DES (Triple DES), là thuật toán mã hóa khối trong đó thông khối

thông tin 64 bit sẽ được lần lượt mã hóa 3 lần bằng thuật toán mã hóa DES với 2 hoặc 3 khóa khác nhau

Mã hóa Ek3(Dk2(Ek1(m))) Ek1(Dk2(Ek1(m))) Giải mã Dk3(Ek2(Dk1(m))) Dk1(Ek2(Dk1(m)))

Bảng 3.1: Hoạt động của TripleDES

Trang 35

mã sẽ nhanh hơn mã hóa

Ưu và nhược của chế độ CBC

- Mỗi khối mã phụ thuộc vào tất cả các khối bản rõ

- Sự thay đổi của bản tin ở đâu đó sẽ kéo theo sự thay đổi của mọi khối

Trang 36

- Cần giá trị véc tơ ban đầu IV được biết trước bởi người gửi và người nhận

MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trị băm là 128bit Từng được xem là một chuẩn trên Internet, MD5 đã được sữ dụng rông rãi trong các chương trình an ninh mạng, và cũng thường được dùng để kiểm tra tính nguyên vẹn của tập tin

MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó, MD4 (cũng do ông thiết kế, trước đó nữa là MD2)

MD5 có 2 ứng dụng quan trọng:

1/ MD5 được sử dụng rộng rãi trong thế giới phần mềm để đảm bảo rằng tập tin tải về không bị hỏng Người sử dụng có thể so sánh giữa thông số kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5

2/ MD5 được dùng để mã hóa mật khẩu Mục đích của việc mã hóa này

là biến đổi một chuỗi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã

đó không thể nào lần trở lại mật khẩu Có nghĩa là việc giải mã là không thể

hoặc phải mất một khoãng thời gian vô tận (đủ để làm nản lòng các hacker)

Chương trình con Mô tả

DES3DECRYPT

Procedures and Functions

Tạo ra dạng giải mã của dữ liệu đầu vào

DES3ENCRYPT

Procedures and Functions

Tạo ra dạng mã hóa của dữ liệu đầu vào bằng cách chuyển qua thuật toán mã hóa TripleDES DES3GETKEY Procedures

and Functions

Đưa vào một giá trị ngẫu nhiên và sử dụng để

tạo một khóa mật mã, bằng cách sử dụng TripleDES

Trang 37

Chương trình con Mô tả

Functions

Tạo ra hàm băm MD5 của dữ liệu

Bảng 3.2: Các chương trình con của gói DBMS_OBFUSCATION

decrypted_data OUT RAW,

which IN PLS_INTEGER DEFAULT TwoKeyMode

iv IN RAW DEFAULT NULL);

DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT(

input_string IN VARCHAR2,

key_string IN VARCHAR2,

decrypted_string OUT VARCHAR2,

which IN PLS_INTEGER DEFAULT TwoKeyMode iv_string IN VARCHAR2 DEFAUTL NULL);

DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT(

input IN RAW,

key IN RAW,

which IN PLS_INTEGER DEFAULT TwoKeyMode

iv IN RAW DEFAULT NULL)

RETURN RAW;

Trang 38

DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT(

input_string IN VARCHAR2,

key_string IN VARCHAR2,

which IN PLS_INTEGER DEFAULT TwoKeyMode

iv_string IN VARCHAR2 DEFAULT NULL)

RETURN VARCHAR2;

Tham số

input Dữ liệu được mã hóa

decrypted_data Dữ liệu đã giải mã

which Nếu bằng 0 (mặc định) thì chế độ TwoKeyMode được sử

dụng

Nếu bằng 1 thì chế độ ThreeKeyMode được sử dụng

input_string Chuỗi để giả mã

key_string Chuỗi khóa giải mã

decrypted_string Chuỗi đã giải mã

iv_string Chuỗi vector khởi tạo

Bảng 3.3: Các tham số của DES3DECRYPT cho dữ liệu thô

Trang 39

input size for Obfuscation toolkit." Thông báo lỗi

ORA-28233 không áp dụng được cho hàm DES3DECRYPT

Nếu độ dài khóa ít hơn 8 byte, thì thủ tục đưa ra thông báo lỗi

ORA-28234 "Key length too short” Chú ý rằng nếu khóa dài hơn được sử dụng, thì các byte thêm bị bỏ qua Vì vậy một khóa 9 byte sẽ không tạo ra một trường hợp ngoại lệ

Nếu một giá trị sai được chỉ ra cho tham số which, thông báo lỗi

ORA-28236 "Invalid Triple DES mode" được đưa ra Chỉ giá trị 0 (với chế

độ TwoKeyMode) và 1 (với chế độ ThreeKeyMode)là có giá trị

Hạn chế

Ta phải cung cấp một khóa 128 bit cho cài đặt 2-khóa (trong đó chỉ 112 bit được sử dụng), hoặc một khóa 192 bit cho cài đặt 3-khóa (trong đó chỉ 168 bit được sử dụng) Oracle sẽ tự động chặt khóa được cung cấp thành các độ dài 56 bit cho việc giải mã Độ dài các khóa này được cố định và không thể thay đổi

Việc giới hạn độ dài khóa và ngăn chặn sự mã hóa nhiều lần là các yêu cầu của những quy định của Mỹ về việc xuất khẩu sản phẩm mật mã

encrypted_data OUT RAW,

which IN PLS_INTEGER DEFAULT TwoKeyMode

Trang 40

iv IN RAW DEFAULT NULL);

DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(

input_string IN VARCHAR2,

key_string IN VARCHAR2,

encrypted_string OUT VARCHAR2,

which IN PLS_INTEGER DEFAULT TwoKeyMode iv_string IN VARCHAR2 DEFAULT NULL);

DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(

input IN RAW,

key IN RAW,

which IN PLS_INTEGER DEFAULT TwoKeyMode

iv IN RAW DEFAULT NULL)

RETURN RAW;

DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt(

input_string IN VARCHAR2,

key_string IN VARCHAR2,

which IN PLS_INTEGER DEFAULT TwoKeyMode

iv_string IN VARCHAR2 DEFAULT NULL)

RETURN VARCHAR2;

Các tham số

input Dữ liệu để mã hóa

encrypted_data Dữ liệu đã mã hóa

which Nếu bằng 0 (mặc định) thì chế độ TwoKeyMode được sử

dụng

Nếu bằng 1 thì chế độ ThreeKeyMode được sử dụng

input_string Chuỗi để mã hóa

key_string Chuỗi khóa mã hóa

encrypted_string Chuỗi đã mã hóa

iv_string Chuỗi vector khởi tạo

Bảng 3.4: Các tham số của hàm và thủ tụcDES3ENCRYPT

Ngày đăng: 09/04/2016, 09:46

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. TS. Nguyễn Nam Hải, “Giáo trình An toàn cơ sở dữ liệu”, Học viện Kỹ thuật mật mã, 2006 Sách, tạp chí
Tiêu đề: Giáo trình An toàn cơ sở dữ liệu
[2]. GS.TS. Nguyễn Bình, TS. Trần Đức Sự, “Giáo trình Cơ sở lý thuyết mật mã”, Học viện Kỹ thuật mật mã, 2006 Sách, tạp chí
Tiêu đề: Giáo trình Cơ sở lý thuyết mật mã
[3]. TS. Trần Văn Trường, giáo trình “Mật mã học nâng cao”, Học viện Kỹ thuật mật mã, 2006 Sách, tạp chí
Tiêu đề: Mật mã học nâng cao
[4]. D.E. Denning, “Cryptography and Data Security”, Addison-Wesley Sách, tạp chí
Tiêu đề: Cryptography and Data Security
[5]. D.R. Stinson, “Cryptography: Theory and pracetise”, CRC Press, 1995 Sách, tạp chí
Tiêu đề: Cryptography: Theory and pracetise
[6]. Oracle Corporation, Database Encryption in Oracle9i, technique white paper, 2001 Khác
[7]. RSA Security company, Securing Data at Rest: Developing a Database Encryption Strategy, whiter paper, 2002 Khác
[8]. Luc Bouganim, Yanli GUO, Database Encryption Khác
[9]. Erez Shmueli, Ronen Vaisenberg, Yuval Elovici, Chanan Glezer, Database Encryption – An Overview of Contemporary Challenges and Design Considerations Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w