Mã hóa cơ sở dữ liệu trong oracle
Trang 1MỤ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 23.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 3DANH 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 4DANH 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 5DANH 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 6LỜ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 7cơ 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 8Quá 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 9Ngà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 101.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 12dụ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 14bằ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 15Vai 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 16Chươ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 17Do 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 182.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 19Mỗ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 20cô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 21soá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 222.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 232.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 24nê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 25tá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 26tin 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 27Hì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 28Trong 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 29Chươ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 32Cơ 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 33Gó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 34Hiệ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 35mã 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
mã
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 37Chươ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 38DBMS_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 39input 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 40iv 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