Kiến trúc Kernelized -Sử dụng một OS tin cậy, có trách nhiệm đối với các truy nhập vật lý vào dữ liệu trong CSDL và có trách nhiệm tuân theo bảo vệ bắt buộc.. Mỗi cơ sở dữ liệu duy trì d
Trang 1BÀI TẬP VỀ NHÀ NHÓM 2
1 TRẦN QUỐC HOÀNG- AT150719
2 HUỲNH HẢI BẰNG- AT150802
3 ĐINH TRỌNG HÒA- AT150717
4 PHẠM NGUYỄN TIẾN ANH- AT150702
5 LÊ ĐỨC THÌN- AT150746
ĐÈ TÀI: DỰ ÁN QUẢN LÝ SINH VIÊN
Phần 1: Xác định kiểu thực thể, kiểu thuộc tính
1 KHÓA HỌC (mã khóa học, tên khóa học, niên khóa)
2 SINH VIÊN (Mã sinh viên, họ và tên, năm sinh, dân tộc, mã lớp, nguyên quán)
3 CHƯƠNG TRÌNH (Mã chương trình, tên chương trình)
4 MÔN HỌC (Mã môn học, tên môn học, mã khoa)
5 KẾT QUẢ (Mã sinh viên, Mã môn học, lần thi, điểm)
6 KẾ HOẠCH ĐÀO TẠO(Mã chương trình, Mã khoa, Mã môn học, năm học, học kỳ, số tiết lý thuyết, số tiết thực hành, số tín chỉ, tên khoa, năm thành lập)
7 LỚP (Mã lớp, mã khóa học, mã khoa, mã chương trình,STT, GVCN, số lượng sinh viên)
Trang 4Phần 3 : Chuẩn hóa dữ liệu
Chuyển đổi ERD mở rộng về ERD kinh điển
Trang 5Chuyển đổi ERD kinh điển về ERD hạn chế.
Trang 6Chuyển đổi ERD hạn chế về MH quan hệ
Trang 7Phần 4 : Bảng đặc tả dữ liệu
KHOAHOC
Khóa Khóa
STT chính ngoài Tên trường Kiểu dữ liệu Diễn giải
Năm bắt đầu - năm kết
SINHVIEN
STT chính ngoài Tên trường Kiểu dữ liệu Diễn giải
Mã quản lý lớp của sinh
LOP
STT chính ngoài Tên trường Kiểu dữ liệu Diễn giải
Mã quản lý lớp của
Giáo viên phụ trách
số lượng sinh viên
Trang 8STT chính ngoài Tên trường Kiểu dữ liệu Diễn giải
KETQUA
CT_KHDT
Khóa Khóa
STT chính ngoài Tên trường Kiểu dữ liệu Diễn giải
CHUONGTRINH
Khóa Khóa
STT chính ngoài Tên trường Kiểu dữ liệu Diễn giải
Tên đầy đủ của
Trang 9Khóa Khóa
STT chính ngoài Tên trường Kiểu dữ liệu Diễn giải
Tên đầy đủ của môn
Mã khoa giảng dạy
CT_KETQUA
STT Khóa Khóa Tên trường Kiểu dữ liệu Diễn giải
chính ngoài
Trang 10Phần 5 Áp dụng mô hình DAC và MAC vào CSDL
Mô hình DAC
Create các lớp user HIEUTRUONG,
HIEUPHO, GIAOVIEN, SINHVIEN
Trang 11Phần 6: Áp dụng an toàn DBMS
Kiến trúc Woods Hole
Các kiến trúc Woods Hole sử dụng DBMS không tin cậy cùng với một
bộ lọc tin cậy và không quan tâm đến OS có tin cậy hay không
-Phần mềm front ends và DBMS đều không tin cậy (Không quan tâm OS có tin cậy hay không)
-Phần mềm untrusted front-end thực hiện các công việc xử lý trước
và sau các câu truy vấn (phân tích, tối ưu hóa, phép chiếu)
-Phần mềm trusted front end (TFE) ở giữa thực thi các chức năng
an toàn và bảo vệ nhiều mức, vì vậy hoạt động như một TCB
(Trusted Computing Base)
Trang 12Kiến trúc Integrity Lock
-Khoá toàn vẹn được đề xuất lần đầu tiên tại Viện nghiên cứu của Lực lượng Không quân về An toàn cơ sở dữ liệu [AF83], được dùng để kiểmsoát tính toàn vẹn và sự truy nhập cho cơ sở dữ liệu
-Kiến trúc Integrity lock đã có trong hệ quản trị thương mại TRUDATA
Đặc điểm:
-TFE thực thi bảo vệ nhiều mức bằng cách gắn các nhãn an toàn vào cácđối tượng CSDL dưới dạng các tem – Stamps
-Một tem là một trường đặc biệt của một đối tượng, lưu thông tin
về nhãn an toàn và các dữ liệu điều khiển liên quan khác
-Tem là dạng mã hóa của các thông tin trên, sử dụng một kỹ thuật niêmphong mật mã gọi là Integrity Lock
Trang 13-TFE có nhiệm vụ tạo và kiểm tra các tem.
-TFE sử dụng mật mã khóa bí mật để tạo tem và giải mã các tem
Các tem này có thể tạo ra dựa vào tổng kiểm tra (checksum)
-Khóa bí mật chỉ có TFE biết
•Insert dữ liệu: khi người dùng muốn insert một mục dữ liệu, TFE sẽtính:
–Tổng kiểm tra = mức nhạy cảm dữ liệu + dữ liệu
–Mã hoá tổng kiểm tra này bằng một khoá bí mật K, tạo ra tem, và lưu vào trong CSDL cùng với mục dữ liệu đó (gắn với mục dữ liệu)
•Đưa ra dữ liệu: Khi đưa ra dữ liệu trả cho người dùng, TFE nhận được
dữ liệu từ DBMS không tin cậy, nó sẽ kiểm tra tem gắn với mục dữ liệuxem có chính xác không:
Trang 14–Giải mã tem gắn với dữ liệu.
–So sánh dữ liệu nhận được với dữ liệu sau khi giải mã tem Nếu không khớp chứng tỏ dữ liệu đã bị sửa đổi
–Lưu ý: nếu dùng hàm băm để tạo tem, thì sau khi DBMS nhận được dữliệu và tem tương ứng, nó sẽ băm dữ liệu này ra và so sánh với tem nhậnđược xem có trung nhau không
Kiến trúc Kernelized
-Sử dụng một OS tin cậy, có trách nhiệm đối với các truy nhập vật lý vào
dữ liệu (trong CSDL) và có trách nhiệm tuân theo bảo vệ bắt buộc
-High User (người dùng làm việc ở mức cao) tương tác với một
High DBMS, thông qua một TFE, Low User (người dùng làm việc ởmức thấp) tương tác với một Low DBMS cũng thông qua một TFE.-Sau đó, các yêu cầu của họ được chuyển cho OS, và OS lấy lại dữ liệuhợp lệ từ CSDL
Trang 15-Đã có trong mẫu thử Sea View và trong hệ quản trị thương mại Oracle.-Quá trình khôi phục: được thực hiện khi OS cần lấy lại dữ liệu được lưugiữ trên các đối tượng của nó để trả về cho người dùng Để từ các quan
hệ đơn mức, sinh ra một khung nhìn đa mức chỉ chứa các dữ liệu mà người dùng yêu cầu,
-Quá trình phân tách: thực hiện chuyển đổi một quan hệ đa mức (đối tượng CSDL) thành một số quan hệ đơn mức, (chỉ chứa dữ liệu ở
một mức an toàn nào đó), được lưu giữ trong các đối tượng OS
-Các đối tượng (có các nhãn an toàn giống nhau) của CSDL được lưugiữ trong các đối tượng của OS tin cậy Vì vậy, OS tin cậy tiến hành kiểm soát an toàn trên các đối tượng lưu giữ này, cần có các quá trìnhphân tách và khôi phục quan hệ nhiều mức
Trang 16-Để tuân theo giải pháp này cần có các thuật toán đồng bộ an toàn
để đảm bảo tính tương thích lặp và chi phí lặp cũng rất lớn
-Dữ liệu mức thấp được lặp trong CSDL
Trang 17Phần 7: Áp dụng an toàn ứng dụng vào cơ sở dữ liệu.
VẤN ĐỀ QUẢN LÝ TẢI KHOẢN VÀ MẬT KHẨU NGƯỜI
DÙNG 1 Lỗ hổng trong quản lý mật khẩu cơ sở dữ liệu.
Mô hình an toàn cơ sở dữ liệu dựa trên các tiến trình xác thực và phân quyền Mỗi cơ sở dữ liệu duy trì danh sách các định danh của người dùng, mỗi khi người dùng truy nhập vào cơ sở dữ liệu, tên và mật khẩu trong danh sách định danh sẽ được sử dụng để xác thực Sau khi quá trình xác thực đã thành công, cơ sở dữ liệu sẽ xác định tập các quyền màngười dùng được phép thực hiện trên cơ sở dữ liệu
Vì vậy, một điều hiển nhiên là để đáp ứng được yêu cầu mô hình an toàn đặt ra, tên và người dùng phải được quản lý một cách an toàn, nếu điều này không được thực hiện tốt thì toàn bộ mô hình sẽ trở nên vô nghĩa.Quy ước đặt tên
- Viết hoa chữ cái đầu
- Loại bỏ dấu, ký tự đặc biệt như: ‘:’, ‘ ‘, ‘/’,
- Đặt theo dạng số ít
Để bảo vệ thì trước tiên chúng ta phải có một mật khẩu hiệu quả Mật khẩu được xem là một mật khẩu hiệu quả thì rất khó xâm phạm, thường
có các đặc điểm sau:
- Thay đổi mật khẩu thường xuyên, ít nhất sáu tháng mỗi lần
- Tránh những từ liên quan đến bản thân, chẳng hạn như tên, ngày tháng năm sinh, nơi sinh, địa chỉ
- Chứa ít nhất 8 kí tự, kết hợp các kí tự số, các kí tự chữ (chữ hoa và chữthường) và các kí đặc biệt, tránh sử dụng các từ chung (tên, chữ của người khác mà có thể được tìm thấy trong từ điển)
Trang 18Lỗ hổng này đề cập đến vấn đề tên và mật khẩu của cơ sở dữ liệu được
sử dụng và lưu trữ không an toàn Có nhiều nguyên nhân dẫn đến lỗhổng này, trong đó một nguyên nhân chính là tên và mật khẩu được lưutrữ dưới dạng rõ trong tệp cấu hình Dẫn đến kẻ tấn công có thể lợi dụng
để làm hại đến các tài nguyên của máy chủ ứng dụng, hoặc có thể đạtđược việc truy nhập vào cơ sở dữ liệu một cách hợp pháp Đây là một lỗhổng bảo mật nghiêm trọng vì định danh được sử dụng bằng ứng dụng
để truy nhập vào trong cơ sở dữ liệu thường có toàn quyền đối với lược
đồ cơ sở dữ liệu thậm trí là toàn quyền với cơ sở dữ liệu
Hoàng
Tiến Anh
Bằng
Để bảo mật tài khoản của người dùng thì ta dùng mật khẩu mã hóa
(encrypted_password)
ở đây dùng mã hoá md5 + salt được tạo ngẫu nhiên
Password được mã hoá như sau hash (password +salt)
Tên nhân Chức User Password_encrypted
Trang 19Phạm Hiệu Pnta003 6abd6a7d4266b2115156b67d35662e65
1.2 KIỂM SOÁT TRUY CẬP VÀO CƠ SỞ DỮ LIỆU.
Bước đầu tiên trong việc giải quyết các lỗ hổng bảo mật về mật khẩuCSDL là giám sát xem ai đang truy nhập vào dữ liệu Bắt đầu bằng việctạo báo cáo về các tải khoản nào đang hoạt động, tài khoản đó đangdùng địa chỉ IP nào kết nối tới CSDL, và ứng dụng nào được dùng đểtruy nhập vào CSDL
Một tùy chọn thêm để tăng cường an toàn là sử dụng tường lửa, nhưtrong hình 4.3, tại đây có hai lựa chọn: (1) sử dụng tường lửa tiêu chuẩn,cho phép thực hiện kiểm soát truy nhập dựa trên IP và Port; (2) sử dụngtường lửa SQL, cho phép việc xây dựng các tập luật không chỉ dựa trên
IP mà còn dựa trên tên truy nhập, ứng dụng truy nhập, đối tượng CSDLđược truy nhập Nó cũng cho phép xác định chính xác tài khoản nào hayứng dụng nào, máy tính nào được phép truy nhập vào CSDL
Ngoài ra chúng ta có thể kết hợp sử dụng thêm một phần mềm cảnh báothời gian thực khi có bất kỳ vi phạm an ninh nào Kẻ tấn công có thể cốgắng kết nối tới CSDL từ máy tính của nó, và khi không thể kết nối được
do bị tường lửa SQL chặn thì nó có thể đoán rằng địa chỉ IP của đang bịchặn(đang có một thiết bị giám sát an ninh tầng 3), nó có thể quay ra thựchiện tấn công từ các máy chủ ứng dụng, hoặc có thể giả mạo địa chỉ IP củamáy chủ ứng dụng thành địa chỉ IP của máy mình và tiếp tục tấn công,
Trang 20quá trình lọc có thể mất thêm thời gian, tuy nhiên nếu việc lọc được thựchiện sử dụng phần mềm cảnh báo thời gian thực thì có thể chặn cuộc tấncông từ sớm, trước khi kẻ tấn công tìm mọi cách để vượt qua các hàngrào bảo vệ.
Anh
Sử dụng Firewall bằng cách kiểm tra các packet đến và so sánh chúngvới một bộ rules Nếu packet đáp ứng các tiêu chuẩn được quy định bởicác rules, thì Firewall sẽ chuyển packet đến TCP / IP protocol để xử lý
bổ sung Nếu packet không đáp ứng các tiêu chuẩn được chỉ định bởicác rules, thì Firewall sẽ loại bỏ packet đó Ngoài ra, logging được bật,firewall sẽ tạo một mục nhập trong file logging của Firewall
Trang 21Danh sách lưu lượng được cho phép theo một trong những cách sau:
Tự động: Khi Firewall được kích hoạt, Firewall sẽ tạo một danh sách đểphản hồi “allowed” (cho phép) Phản hồi này được xem là solicitedtraffic và không có gì cần phải cấu hình
Theo cách thủ công: Admin cấu hình các rules cho Firewall Điều nàyCho phép truy cập vào các chương trình hoặc các port được chỉ định trênmáy tính của bạn Trong trường hợp này, máy tính chấp nhận unsolicitedtraffic khi hoạt động như một server, một listener, hoặc một peer Đây làloại cấu hình phải được hoàn thành để kết nối với SQL Server
XÁO TRỘN MÃ ỨNG DỤNG.
Phân tích điểm yếu mã nguồn và giả mã
Trong nhiều môi trường ứng dụng hiện đại ngày nay, một số mã được đặt trong định dạng mã nguồn hoặc trong định dạng mà có thể dễ dàng được sử dụng cũng như
dễ dàng lấy được Và từ đó kẻ tấn công có thể có được rất nhiều thông tin về các hoạt động bên trong của ứng dụng (đây cũng là một vi phạm về quyền sở hữu trí tuệ, nhưng không được đề cập đến trong chương này) Một kẻ tấn công có thể tìm hiểu các cách thức kết nối trong ứng dụng với CSDL, hay làm thế nào tên tài khoản được mã hóa, cũng như các câu truy vấn tới CSDL mà ứng dụng sử dụng là gì Mã nguồn cũng
có thể bị kẻ tấn công phân tích để tìm ra những lỗ hổng trong ứng dụng.
Một vấn đề khác về mã bảo vệ liên quan đến mã giả hoặc định dạng trung gian.
Cả hai môi trường Java và Microsft Net đểu dựa trên một máy ảo (VM) mẫu, trong
đó mã nguồn được biên dịch thành một định dạng trung gian (hay còn gọi là mã giả)
mà sau đó được sử dụng bởi các máy ảo để chạy ứng dụng Định dạng trung gian này bao gồm các hướng dẫn, chỉ thị cụ thể đối với máy ảo, máy ảo thực hiện những chỉ thị này và đôi khi biên dịch chúng thành mã máy (code on-the-fly / just in time complie) Lợi thế của kiến trúc này là tính di động và khả năng tương tác tốt Ví dụ trong môi trường Java nó cho phép một chương trình chạy trên một hệ điều hành có cài máy ảo Java (JVM - java virtual machine) mà không cần phải sửa đổi hay biên dịch lại code Các lớp (class) trong Java được biên dịch thành các file class chứa các bytecode, chỉ thị, điều khiển máy ảo java (JVM) Nền tảng Net thực hiện các
Trang 22tương tác với Microsoft, trong đó nhiều ngôn ngữ lập trình có thể tương tác tốt và chia
sẻ các tập lệnh dễ dàng bởi tất cả đều được biên dịch theo một định dạng chung trên một cơ sở chung Cơ sở chung này được gọi là Common Library Runtime(CLR), và các định dạng trung gian trong đó tất cả các chương trình được biên dịch được gọi là Common Intermediate Language(CIL) Định dạng CIL bao gồm siêu dữ liệu (metadata) có thể đọc hiểu code và cung cấp nhiều thông tin có giá trị cho hacker.
Trong khi máy ảo và mã giả rất thuận tiện cho việc phát triển và đơn giản hóa việc triển khai phần mềm, thì chính nó cũng là phần dễ bị tổn thương Mã giả gồm những tập lệnh chỉ thị ở mức máy ảo, và máy ảo chạy như một phần mềm thông dịch, nó chuyển dịch mã nguồn của một ngôn ngữ lập trình thành các lệnh cho máy tính thực hiện tính toán, bởi vì những tập lệnh này rất thông dụng, kẻ tấn công
đã xây dựng các chương trình gọi là phần mềm ăn cắp mã giả Các chương trình này đọc biên soạn mã giả và tạo ra mã nguồn Mã nguồn này gần chính xác như
mã gốc.
Khắc phục vấn đề tấn công khai thác lỗ hổng dựa trên phân tích mã nguồn.
để hạn chế các tấn công khai thác lỗ hổng dựa trên phân tích mã nguồn
là sử dụng các kỹ thuật mã hóa ứng dụng gồm:
-Mã hóa giao diện:
Bao gồm làm xáo trộn các nhận dạng, loại bỏ các chú thích câu lệnh, vàđảo vị trí các method
Trang 23là HoseMocha đã gắn thêm các lệnh giả chống lại việc dịch ngược, mà không làm ảnh hưởng đến việc thực thi chương trình.
Trang 24TẤN CÔNG SQL INJECTION.
SQL Injection là một kỹ thuật lợi dụng những lỗ hổng về câu truy vấnlấy dữ liệu của những website không an toàn trên web, đây là một kỹthuật tấn công rất phổ biến và sự thành công của nó cũng tương đối cao
Có thể gây ra những thiệt hại khổng lồ Với SQL Injection, hacker có thểtruy cập một phần hoặc toàn bộ dữ liệu trong hệ thống
Lỗ hổng này rất nổi tiếng, từ developer đến hacker gần như ai cũng biết.Ngoài ra, còn có 1 số tool tấn công SQL Injection cho dân “ngoại đạo”,những người không biết gì về lập trình
Dễ tấn công, phổ biến, gây ra hậu quả nghiêm trọng, đó là lý dó Inject(Không chỉ SQL mà OS và LDAP) nằm chễm chễ ở vị trí đầu bảngtrong top 10 lỗ hỗng bảo mật của OWASP
Cơ chế SQL Injection vô cùng đơn giản Ta thường sử dụng câu lệnhSQL để truy cập dữ liệu Giả sử, muốn tìm đăng nhập user, ta thườngviết code như sau:
var username = request.username; // Tqh001
var password = request.password; // Tqh123@123
var sql = "SELECT * FROM Users WHERE Username = '" + username + "' AND Password = '" + password + "'";
/ SELECT * FROM Users WHERE Username = ' Tqh001' AND
Password = ' Tqh123@123'
Đoạn code trên đọc thông tin nhập vào từ user và cộng chuỗi để thànhcâu lệnh SQL Để thực hiện tấn công, Hacker có thể thay đổi thôngtin nhập vào, từ đó thay đổi câu lệnh SQL
var password = request.password; // ' OR '' = ''
var sql = "SELECT * FROM Users WHERE Username = '" + username + "' AND Password = '" + password + "'";
Trang 25/ SELECT * FROM Users WHERE Username = ' Tqh001' AND
Password = '' OR '' = ''
Hacker có thể thông qua SQL Injection để dò tìm cấu trúc dữ liệu (Gồmnhững table nào, có những column gì), sau đó bắt đầu khai thác dữ liệubằng cách sử dụng các câu lệnh như UNION, SELECT TOP 1…
• Các lệnh SQL được sử dụng để truy nhập cơ sử dữ liệu từ mã lệnhtrong phần mềm ứng dụng không được tạo ra bằng cách sử dụng cácchuỗi ghép nối
• Các tham số có kiểu mạnh (thường kết hợp với các Store
procedure) phải được sử dụng bất kỳ nơi nào có thể
• Việc đăng nhập vào ứng dụng phải sử dụng một Store procedure chức năng được thực hiện với một Store procedure xác nhận tốt
• Dữ liệu nhập vào của tất cả người dùng phải được cho vào trong dấu ngoặc kép, kể cả dữ liệu số