ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN HỒNG GIANG NGHIÊN CỨU GIẢI PHÁP BẢO MẬT CƠ SỞ DỮ LIỆU SQL SERVER 2012 BẰNG PHƯƠNG PHÁP MÃ HÓA Ngành: Công nghệ thông tin Chuyên
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN HỒNG GIANG
NGHIÊN CỨU GIẢI PHÁP BẢO MẬT CƠ SỞ DỮ LIỆU SQL SERVER 2012 BẰNG PHƯƠNG PHÁP MÃ HÓA
Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60480104
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS TS Vương Đạo Vy
Hà Nội - 2015
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan luận văn này là do tôi thực hiện, không sao chép của
ai Các đoạn trích dẫn đƣợc sử dụng trong luận văn đều đƣợc dẫn nguồn và có
độ chính xác cao nhất trong phạm vi hiểu biết của tôi
Học viên
Nguyễn Hồng Giang
Trang 4LỜI CẢM ƠN
Trước hết, em xin chân thành cảm ơn PGS TS Vương Đạo Vy đã trực tiếp hướng dẫn em hoàn thành luận văn này Những định hướng, tài liệu và sự hướng dẫn tận tình của Thầy đã giúp em khắc phục những điểm còn yếu kém trong quá trình thực hiện luận văn
Em cũng xin trân trọng cảm ơn quý thầy cô giáo trong và ngoài Trường Đại học Công nghệ - Đại học Quốc gia Hà Nội đã giảng dạy trong suốt quá trình học tập vừa qua Những kiến thức quý báu thu nhận được đã rất hữu ích
và giúp đỡ em rất nhiều trong quá trình thực hiện luận văn
Mặc dù đã rất cố gắng hoàn thành luận văn trong khả năng của mình nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Kính mong nhận được
sự góp ý, chỉ bảo của các thầy cô giáo!
Học viên
Nguyễn Hồng Giang
Trang 5MỤC LỤC
Trang
Lời cam đoan i
Lời cảm ơn ii
Mục lục iii
Danh mục các từ viết tắt iv
Danh mục các bảng và hình vẽ v
MỞ ĐẦU 1
CHƯƠNG 1 TỔNG QUAN VỀ AN TOÀN CƠ SỞ DỮ LIỆU 2
1.1 Một số khái niệm 3
1.2 Vấn đề an toàn CSDL 5
1.3 Thiết kế CSDL an toàn 7
1.3.1 Phân tích sơ bộ 8
1.3.2 Xây dựng các yêu cầu và chính sách bảo mật 9
1.3.3 Xây dựng khái niệm 11
1.3.4 Thiết kế cấu trúc logic 12
1.3.5 Thiết kế cấu trúc vật lý 13
1.3.6 Cài đặt cơ chế an toàn 13
1.3.7 Kiểm tra 15
CHƯƠNG 2 TÌNH HÌNH TẤN CÔNG CSDL HIỆN NAY VÀ GIẢI PHÁP PHÒNG CHỐNG 17
2.1 Các mối đe dọa tấn công CSDL hàng đầu 17
2.1.1 Lạm dụng các đặc quyền vượt mức và các đặc quyền không còn được dùng 18
2.1.2 Lạm dụng đặc quyền 18
2.1.3 Tấn công Input Injection 19
2.1.4 Mã độc 19
2.1.5 Lợi dụng viết kiểm toán yếu 19
2.1.6 Lợi dụng sự sơ hở để khai thác phương tiện lưu trữ 20
Trang 62.1.7 Khai thác các CSDL có điểm yếu và bị lỗi cấu hình 20
2.1.8 Rò rỉ các dữ liệu nhạy cảm không được quản lý 20
2.1.9 Tấn công từ chối dịch vụ 21
2.1.10 Vấn đề đào tạo và chuyên gia an ninh còn hạn chế 21
2.2 Các giải pháp phòng chống tấn công CSDL 21
2.2.1 Phát hiện và đánh giá 23
2.2.2 Quản lý quyền người dùng 24
2.2.3 Giám sát và ngăn chặn 25
2.2.4 Kiểm toán 26
2.2.5 Bảo vệ dữ liệu 27
2.2.6 An ninh ngoài kỹ thuật 27
2.3 Một số vụ tấn công CSDL gần đây 28
CHƯƠNG 3 CÁC GIẢI PHÁP BẢO VỆ CSDL TRONG SQL SERVER 34
3.1 An toàn dữ liệu mức cài đặt hệ thống 34
3.2 An toàn dữ liệu mức người dùng 38
3.3 An toàn dữ liệu mức phân quyền 41
3.4 An toàn dữ liệu bằng phương pháp mã hóa 43
CHƯƠNG 4 THỰC NGHIỆM BẢO VỆ CƠ SỞ DỮ LIỆU 56
4.1 Thực nghiệm mã hóa dữ liệu mức lưu trữ 56
4.2 Thực nghiệm mã hóa dữ liệu mức CSDL 58
4.3 Demo ứng dụng mã hóa dữ liệu 61
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 65
TÀI LIỆU THAM KHẢO 66
Trang 7DANH MỤC CÁC TỪ VIẾT TẮT
CA Nhà cung cấp chứng nhận số Certificate Authority
DBMS Hệ quản trị cơ sở dữ liệu DataBase Management System
DCL Ngôn ngữ kiểm soát dữ liệu Data Control Language
DDL Ngôn ngữ định nghĩa dữ liệu Data Definition Language
DMK Khóa chủ cơ sở dữ liệu Database Master Key
DML Ngôn ngữ thao tác dữ liệu Data Manipulation Language
HTTP Giao thức truyền tải siêu văn bản HyperText Transfer Protocol
OLEDB Đối tƣợng liên kết và chèn cơ sở
dữ liệu
Object Linking and Embedding Database
QL Ngôn ngữ truy vấn Query Language
SMK Khóa chủ dịch vụ Service Master Key
SID Mã nhân dạng bảo mật Security Identifier
TCP Giao thức kiểm soát truyền tải Transmission Control Protocol
UDP Giao thức không liên kết User Datagram Protocol
Trang 8DANH MỤC CÁC BẢNG VÀ HÌNH VẼ
Trang
Hình 1.1 Kiến trúc của DBMS 4
Hình 1.2 Mô hình tương tác giữa ứng dụng và CSDL 4
Hình 1.3 Các mức mô tả dữ liệu 5
Hình 1.4 Sơ đồ thiết kế CSDL an toàn 16
Bảng 2.1 Các mối de dọa tấn công CSDL hàng đầu năm 2015 17
Bảng 2.2 Bảng xác định giải pháp chống lại tấn công CSDL 22
Bảng 2.3 Tỉ lệ Crypto-ransomware trong Ransomware 31
Hình 3.1 Quy trình mã hóa và giải mã dữ liệu 43
Hình 3.2 Mô tả mã hóa mức lưu trữ 43
Hình 3.3 Mô tả mã hóa mức CSDL 44
Hình 3.4 Mô tả mã hóa mức ứng dụng 45
Hình 3.5 Hệ thống phân cấp khóa 46
Trang 10MỞ ĐẦU Lý do chọn đề tài
Những năm gần đây, vấn đề tấn công mạng, ăn cắp dữ liệu số ngày càng tinh vi, các vụ việc đã gây nhiều thiệt hại không chỉ cho các cá nhân mà cho cả các tổ chức và các công ty lớn xuyên quốc gia Vấn đề an toàn thông tin càng trở nên nghiêm trọng hơn khi các vụ tấn công mang cả động cơ chính trị, nhằm vào cơ quan chính phủ của các nước
Trước tình hình đó, các hệ quản trị cơ sở dữ liệu (CSDL) lưu trữ thông tin đã trở thành mục tiêu tấn công nhằm gây thiệt hại cho các cơ quan, tổ chức, doanh nghiệp và các cá nhân Có thể thấy, vấn đề an toàn CSDL đã và đang trở thành một vấn đề cấp bách và rất cần thiết
Một trong những mục tiêu chính của an toàn CSDL là ngăn chặn việc thông tin bị truy cập và phát tán trái phép Trong các giải pháp để đạt được mục tiêu này, giải pháp mã hóa được lựa chọn tương đối rộng rãi Vì thế tôi
đã lựa chọn đề tài: “Nghiên cứu giải pháp bảo mật CSDL SQL Server 2012 bằng phương pháp mã hóa”
Mục tiêu nghiên cứu
- Nghiên cứu và tìm hiểu tổng quan về an toàn CSDL
- Tìm hiểu tình hình tấn công CSDL hiện nay và giải pháp phòng chống
- Nghiên cứu các giải pháp bảo vệ CSDL trong SQL Server
- Thực nghiệm bảo vệ CSDL
Bố cục của luận văn
Luận văn gồm phần Mở đầu, 4 Chương, Kết luận và Hướng phát triển: Chương 1 Tổng quan về an toàn cơ sở dữ liệu
Chương 2 Tình hình tấn công CSDL hiện nay và giải pháp phòng chống Chương 3 Các giải pháp bảo vệ CSDL trong SQL Server
Chương 4 Thực nghiệm bảo vệ CSDL
Trang 11CHƯƠNG 1 TỔNG QUAN VỀ AN TOÀN CƠ SỞ DỮ LIỆU
Việc lưu trữ và quản lý dữ liệu ngày nay hầu hết được thực hiện trên các hệ thống máy tính Vấn đề đặt ra là phải có phương pháp đảm bảo tính an toàn và toàn vẹn của dữ liệu trên các hệ thống này để phục vụ tốt nhu cầu khai thác dữ liệu của người dùng
Để thể hiện an toàn trong CSDL, thông tin trong CSDL phải đáp ứng các yêu cầu sau[5]:
- Tính bí mật (Confidentiality): Bảo đảm rằng chỉ người dùng được phép mới có thể truy cập vào thông tin
- Tính toàn vẹn (Integrity): Bảo đảm tính nhất quán, sự chính xác và ngăn chặn những sửa đổi do vô tình hay cố ý tới thông tin
- Tính sẵn sàng (Availability): Bảo đảm tính sẵn sàng cung cấp thông tin cho người dùng được cho phép Có thể hiểu rằng, tính sẵn sàng bảo đảm
hệ thống luôn hoạt động hiệu quả, có khả năng khôi phục nhanh chóng, chính xác khi gặp các tấn công từ bên ngoài hoặc bên trong
1.1 Một số khái niệm
Dữ liệu (Data): là thông tin định lượng hoặc đính tính của các sự vật,
hiện tượng trong cuộc sống Trong tin học, dữ liệu được dùng như một cách biểu diễn hình thức hóa của thông tin về các sự kiện, hiện tượng thích ứng với
các yêu cầu truyền nhận, thể hiện và xử lí bằng máy tính[5]
Cơ sở dữ liệu (Database): là một kho dữ liệu được tổ chức theo một
nguyên tắc nào đó Đó là một tập hợp các tập tin có liên quan với nhau, được thiết kế nhằm làm giảm thiểu sự dư thừa dữ liệu, đảm bảo tính tin cậy khi truy xuất dữ liệu Các tập tin này chứa các thông tin biểu diễn các đối tượng trên một ứng dụng trong thế giới thực[5]
Ví dụ: CSDL lưu giữ thông tin của một trường đại học như: khoa, giảng viên, sinh viên, khóa học,…
Hệ quản trị cơ sở dữ liệu (DataBase Management System - DBMS):
là hệ thống chương trình, công cụ cho phép quản lý và tương tác với CSDL Trên đó người dùng có thể định nghĩa, thao tác, và xử lí dữ liệu trong một CSDL để đưa ra những thông tin có ích[5]
Trang 12Ví dụ: một DBMS có thể quản trị CSDL của một trường đại học cũng như những CSDL có ý nghĩa khác như: CSDL phục vụ bảo hiểm xã hội, CSDL về thông tin du lịch quốc gia,…
Các ngôn ngữ dùng trong DBMS bao gồm:
- Ngôn ngữ định nghĩa dữ liệu (Data Definition Language - DDL): là ngôn ngữ dùng để định nghĩa cấu trúc của CSDL, bao gồm định nghĩa các hàng, các cột, các bảng dữ liệu, các chỉ số và một số thuộc tính khác liên quan đến CSDL
- Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML): là ngôn ngữ để thao tác dữ liệu, được người dùng đặc biệt sử dụng (ví dụ như các nhà phát triển) Bao gồm các cú pháp cập nhật, xóa, thêm thông tin
- Ngôn ngữ truy vấn (Query Language - QL): là ngôn ngữ cho phép người sử dụng khai thác dữ liệu, truy vấn thông tin trên CSDL
Hầu hết các hệ quản trị CSDL đều thực hiện các chức năng sau[4]:
- Lưu trữ dữ liệu
- Tạo và duy trì CSDL
- Cho phép nhiều người dùng truy xuất đồng thời
- Hỗ trợ tính bảo mật và riêng tư
- Cho phép xem và xử lý dữ liệu lưu trữ
- Cho phép cập nhật và lưu trữ dữ liệu sau khi cập nhật
- Cung cấp một cơ chế chỉ mục hiệu quả để truy cập nhanh các dữ liệu lựa chọn
- Cung cấp tính nhất quán giữa các bản ghi khác nhau
- Bảo vệ dữ liệu khỏi mất mát bằng các quá trình sao lưu (backup) và phục hồi (recovery)
Một DBMS thông thường bao gồm nhiều modul tương ứng với các chức năng, gồm:
Trang 13- Bộ quản lý tập tin (file)
Tập hợp dữ liệu hỗ trợ các modul này là:
- Các bảng mô tả CSDL
- Các bảng cấp quyền
- Các bảng truy cập đồng thời
Hình 1.1 Kiến trúc của DBMS [4]
Hình 1.2 Mô hình tương tác giữa ứng dụng và CSDL [4]
Trong DBMS có các mức mô tả dữ liệu, ở mỗi mức mô tả dữ liệu cung cấp cái nhìn khác nhau về CSDL Cụ thể:
Trang 14- Lược đồ dữ liệu vật lý: Mức này mô tả cấu trúc lưu trữ dữ liệu trong các tập tin trên bộ nhớ ngoài Dữ liệu được lưu trữ dưới dạng các bản ghi và các con trỏ trỏ tới bản ghi
- Lược đồ dữ liệu logic: ở mức này, mọi dữ liệu trong CSDL được mô
tả bằng mô hình logic của DBMS Các dữ liệu và quan hệ của chúng được mô
tả thông qua DDL của DBMS
- Khung nhìn logic: phụ thuộc các yêu cầu của mô hình logic và các mục đích của ứng dụng Khung nhìn logic mô tả một phần lược đồ CSDL logic Sử dụng DDL để định nghĩa các khung nhìn logic, DML để thao tác trên các khung nhìn này
Hình 1.3 Các mức mô tả dữ liệu [4]
1.2 Vấn đề an toàn CSDL
Hiểm họa xảy ra khi một người dùng hoặc nhóm người dùng sử dụng các kỹ thuật đặc biệt để tiếp cận nhằm khám phá, sửa đổi trái phép thông tin quan trọng trong hệ thống
Các vi phạm an toàn CSDL bao gồm: đọc, sửa, xoá dữ liệu trái phép Hậu quả của việc vi phạm này là:
- Khai thác dữ liệu trái phép, làm lộ, mất thông tin
Trang 151.2.1 Một số nguyên nhân gây mất an toàn CSDL
Các nguyên nhân ngẫu nhiên:
- Các thảm họa trong thiên nhiên, chẳng hạn như: động đất, hỏa hoạn, lụt lội,
- Các lỗi phần cứng hay phần mềm có thể dẫn đến việc áp dụng các chính sách an toàn không đúng
- Các sai phạm vô ý do con người gây ra, chẳng hạn như nhập dữ liệu đầu vào không chính xác hay sử dụng các ứng dụng không đúng
Các nguyên nhân do cố ý:
Là các nguyên nhân liên quan đến hai lớp người dùng sau:
- Người dùng hợp pháp: là người có thể lạm dụng quyền, sử dụng vượt quá quyền hạn được phép của họ
- Người dùng truy cập thông tin trái phép: có thể là những người ở ngoài hay bên trong tổ chức Họ tiến hành các hành vi phá hoại phần mềm CSDL hay phần cứng của hệ thống, hoặc đọc/ghi dữ liệu trái phép
1.2.2 Một số biện pháp bảo vệ an toàn CSDL
Từ những nguyên nhân gây mất an toàn CSDL do ngẫu nhiên và cố ý nêu trên, dẫn đến yêu cầu các biện pháp để bảo vệ CSDL chống lại những nguyên nhân gây tổn hại đó Các biện pháp bảo vệ an toàn CSDL bao gồm:
- Bảo vệ chống truy cập trái phép: là biện pháp bảo vệ an toàn CSDL được quan tâm nhiều nhất Nó đảm bảo việc chỉ trao quyền cho những người dùng hợp pháp Việc kiểm soát truy cập cần được tiến hành trên các đối tượng
dữ liệu mức thấp hơn tập tin như: bản ghi, thuộc tính và giá trị Và kiểm soát truy cập CSDL phức tạp hơn kiểm soát truy cập tập tin
- Bảo vệ chống suy diễn: Suy diễn là khả năng có được các thông tin bí mật từ những thông tin không bí mật Bảo vệ chống suy diễn đảm bảo người dùng không được phép dò xét thông tin của các cá thể khác từ các dữ liệu người dùng đó được biết
- Bảo vệ toàn vẹn CSDL: Bảo vệ CSDL khỏi những người dùng không hợp pháp, tránh sửa đổi nội dung dữ liệu trái phép DBMS đưa ra các kiểm soát bằng các ràng buộc dữ liệu, thủ tục sao lưu, phục hồi và các thủ tục an toàn đặc biệt Hệ thống phục hồi của DBMS sử dụng các tập tin nhật ký, ghi lại tất cả các phép toán được thực hiện trên dữ liệu như: đọc, ghi, xóa, chèn
Trang 16- Toàn vẹn dữ liệu thao tác: đảm bảo tính tương thích của dữ liệu khi có nhiều thao tác thực hiện đồng thời Một thao tác là một loạt các hoạt động xảy
ra được xem như một đơn vị công việc (unit of work) nghĩa là hoặc thành công toàn bộ hoặc không làm gì cả (all or nothing)
- Toàn vẹn ngữ nghĩa của dữ liệu: đảm bảo tính tương thích logic của các dữ liệu bị thay đổi, bằng cách kiểm tra các giá trị dữ liệu có nằm trong khoảng cho phép hay không (đó là các ràng buộc toàn vẹn) Ràng buộc là những thuộc tính mà ta áp đặt lên một bảng hay một cột để tránh việc lưu dữ liệu không chính xác vào CSDL
- Khả năng lưu vết và kiểm tra: là khả năng ghi lại mọi truy cập tới dữ liệu (với các phép toán Read và Write) Khả năng kiểm tra và lưu vết đảm bảo tính toàn vẹn dữ liệu vật lý và trợ giúp cho việc phân tích dãy truy cập vào CSDL
- Xác thực người dùng: biện pháp này để xác định tính duy nhất của người dùng Định danh người dùng làm cơ sở cho việc trao quyền Người dùng được phép truy cập dữ liệu, khi hệ thống xác định được người dùng này
là hợp pháp
- Bảo vệ dữ liệu nhạy cảm: Dữ liệu nhạy cảm là dữ liệu không được để công khai Cần có chế độ kiểm soát người dùng truy cập đến dữ liệu nhạy cảm, chỉ được cấp cho người dùng hợp pháp và hạn chế mức tối đa truy cập không cần thiết
- Bảo vệ nhiều mức: Bao gồm một tập các yêu cầu bảo vệ, dữ liệu được phân loại thành nhiều mức nhạy cảm Mục đích của bảo vệ nhiều mức là phân loại các mục thông tin khác nhau, đồng thời phân quyền cho các mức truy cập khác nhau vào các mục riêng biệt Một yêu cầu đối với bảo vệ nhiều mức là khả năng gán mức cho các thông tin
1.3 Thiết kế CSDL an toàn
Bảo mật CSDL (Database Security): là một hệ thống quy trình hay
thủ tục để bảo vệ CSDL khỏi các tác động ngoài ý muốn như lạm dụng quyền hạn, vô ý hoặc cố ý trong truy cập CSDL.[5]