ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
LƯƠNG THANH NHẠN
MỘT SỐ PHƯƠNG PHÁP KIỂM CHỨNGCÁC
CHÍNH SÁCH ĐIỀU KHIỂN TRUY CẬP
CHO HỆ THỐNG PHẦN MỀM
LUẬN ÁN TIẾN SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội - 2021
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
LƯƠNG THANH NHẠN
MỘT SỐ PHƯƠNG PHÁP KIỂM CHỨNGCÁC
CHÍNH SÁCH ĐIỀU KHIỂN TRUY CẬP
CHO HỆ THỐNG PHẦN MỀM
Chuyên ngành: Kỹ thuật phần mềm
Mã số: 9480103.01
LUẬN ÁN TIẾN SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS.TS. Trương N
137 trang |
Chia sẻ: huong20 | Ngày: 07/01/2022 | Lượt xem: 369 | Lượt tải: 0
Tóm tắt tài liệu Luận án Một số phương pháp kiểm chứng các chính sách điều khiển truy cập cho hệ thống phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
inh Thuận
Hà Nội - 2021
Lời cam đoan
Tôi xin cam đoan luận án “Một số phương pháp kiểm chứng các
chính sách điều khiển truy cập cho hệ thống phần mềm” là công trình
nghiên cứu của riêng tôi. Các số liệu, kết quả được trình bày trong luận án là
hoàn toàn trung thực và chưa từng được công bố trong bất kỳ một công trình
nào khác.
Tôi đã trích dẫn đầy đủ các tài liệu tham khảo, công trình nghiên cứu liên
quan ở trong nước và quốc tế. Ngoại trừ các tài liệu tham khảo này, luận
án hoàn toàn là công việc của riêng tôi.
Trong các công trình khoa học được công bố trong luận án, tôi đã thể hiện
rõ ràng và chính xác đóng góp của các đồng tác giả và những gì do tôi đã
đóng góp.
Luận án được hoàn thành trong thời gian tôi làm Nghiên cứu sinh tại Bộ
môn Công nghệ phần mềm, Khoa Công nghệ Thông tin, Trường Đại học
Công nghệ, Đại học Quốc gia Hà Nội.
Tác giả:
Hà Nội:
i
Lời cảm ơn
Trước hết, tôi muốn bày tỏ sự biết ơn đến PGS.TS. Trương Ninh Thuận, cán
bộ hướng dẫn, người đã trực tiếp giảng dạy và định hướng tôi trong suốt thời
gian học cao học, thực hiện luận văn thạc sĩ cũng như luận án này. Thầy đã
hướng dẫn cho tôi nhiều kiến thức trong học thuật và nghiên cứu. Một vinh dự
lớn cho tôi khi được học tập, nghiên cứu dưới sự hướng dẫn của Thầy.
Tôi xin bày tỏ sự biết ơn sâu sắc đến các Thầy, Cô trong Bộ môn Công nghệ
phần mềm vì sự tận tâm, giúp đỡ của các Thầy Cô và các đóng góp rất hữu ích
cho luận án.
Tôi xin trân trọng cảm ơn Khoa Công nghệ thông tin, Phòng Đào tạo và Ban
Giám hiệu trường Đại học Công nghệ đã tạo điều kiện thuận lợi cho tôi trong
suốt quá trình học tập và nghiên cứu tại Trường.
Tôi cũng bày tỏ sự biết ơn đến Ban Giám hiệu, các Phòng, Ban, Bộ môn liên
quan trong Trường Đại học Y Dược Hải Phòng đã tạo điều kiện về thời gian và
tài chính cho tôi thực hiện luận án này. Tôi muốn cảm ơn đến các đồng nghiệp
trong Bộ môn Tin học, Trường Đại học Y Dược Hải Phòng đã giúp đỡ, động
viên và sát cánh bên tôi trong suốt quá trình nghiên cứu.
Tôi muốn cảm ơn đến tất cả những người bạn của tôi, các anh/chị/em nghiên
cứu sinh - những người luôn chia sẻ, động viên tôi bất cứ khi nào tôi cần và tôi
luôn ghi nhớ những điều đó.
Cuối cùng, tôi xin bày tỏ lòng biết ơn vô hạn đối với cha, mẹ, chồng, con đã
luôn ủng hộ và yêu thương tôi vô điều kiện. Nếu không có sự ủng hộ của gia
đình tôi không thể hoàn thành được luận án này.
NCS. Lương Thanh Nhạn
ii
Tóm tắt
Các hệ thống phần mềm hiện được sử dụng sâu rộng trong hầu hết mọi lĩnh
vực. Bên cạnh những lợi ích mà phần mềm mang lại cho con người thì các vấn
đề vi phạm an ninh phần mềm cũng xuất hiện ngày càng đa dạng và phức tạp,
đặc biệt là với các hệ thống web. Trong thực tế, điều khiển truy cập là một trong
những biện pháp hiệu quả để thực thi chính sách an ninh của các hệ thống phần
mềm nhằm ngăn chặn các vi phạm truy cập. Tuy nhiên, quá trình triển khai
chính sách điều khiển truy cập của các hệ thống ứng dụng luôn tiềm ẩn các
lỗi, nhất là ở giai đoạn lập trình. Nếu những lỗi này được phát hiện càng muộn
thì chi phí sửa chữa hệ thống càng lớn và hậu quả càng phức tạp. Đây cũng là
vấn đề luôn được quan tâm bởi cả cộng đồng phát triển phần mềm. Chính vì
thế, trong quá trình xây dựng và phát triển phần mềm, việc kiểm chứng từ mã
nguồn của ứng dụng để đảm bảo chính sách điều khiển truy cập được triển khai
chính xác ở giai đoạn lập trình sẽ mang lại hiệu quả kinh tế và gia tăng chất
lượng của phần mềm.
Dựa trên nền tảng của kỹ thuật phân tích tĩnh, luận án đề xuất một số
phương pháp kiểm chứng chính sách điều khiển truy cập của các hệ thống web.
Cụ thể, các hệ thống web mà luận án hướng đến phân tích đều được xây dựng
bởi ngôn ngữ lập trình Java theo kiến trúc MVC (Model-View-Controller) và có
chính sách điều khiển truy cập theo vai trò hoặc chính sách điều khiển truy cập
theo thuộc tính được triển khai theo phương pháp an ninh lập trình, an ninh
khai báo. Các đóng góp chính của luận án bao gồm:
(i) Đề xuất phương pháp kiểm chứng chính sách điều khiển truy cập theo vai
trò triển khai theo phương pháp an ninh lập trình. Chính sách điều khiển
truy cập theo vai trò của ứng dụng web được trích rút thông qua việc phân
tích các phương thức khai thác tài nguyên, xây dựng danh sách các quyền
và đồ thị khai thác tài nguyên. Một ma trận kiểm soát truy cập tài nguyên
theo vai trò được giới thiệu để biểu diễn các quy tắc truy cập của hệ thống
web. Từ đó, luận án đề xuất thuật toán kiểm tra sự phù hợp giữa ma trận
kiểm soát truy cập theo vai trò và chính sách truy cập đã đặc tả. Bên cạnh
đó, một công cụ tên là CheckingRBAC được xây dựng để hỗ trợ quá trình
kiểm chứng theo phương pháp đã đề xuất.
iii
(ii) Đề xuất phương pháp kiểm chứng chính sách điều khiển truy cập theo vai
trò kết hợp ràng buộc cấp quyền triển khai theo phương pháp an ninh khai
báo. Chính sách điều khiển truy cập và các ràng buộc cấp quyền của các
hệ thống web được kiểm tra thông qua phép gán vai trò - người dùng và
phép gán vai trò - quyền. Với phép gán thứ nhất, phương pháp được tiến
hành dựa trên việc phân tích cơ sở dữ liệu của hệ thống ứng dụng. Ở phép
gán thứ hai, các quy tắc truy cập của hệ thống web được phân tích và biểu
diễn thành cây phân tích quy tắc truy cập tài nguyên theo vai trò. Sau đó,
các thuật toán được đề xuất để kiểm tra tính chính xác của các phép gán
đã triển khai trong các hệ thống web. Phương pháp đề xuất đã được triển
khai thành công cụ VeRA để kiểm chứng tự động các hệ thống web.
(iii) Đề xuất phương pháp kiểm chứng chính sách điều khiển truy cập theo thuộc
tính. Đầu tiên, tiến trình kiểm chứng được thực hiện bằng việc trích rút,
phân tích các quy tắc truy cập được triển khai trong hệ thống web. Tiếp
theo, sự phù hợp giữa chính sách điều khiển truy cập của ứng dụng và đặc
tả được tiến hành thông qua các định nghĩa hình thức và các thuật toán
kiểm tra tính bảo mật, tính toàn vẹn và tính sẵn sàng chính sách truy cập
của hệ thống. Cuối cùng, công cụ kiểm chứng APVer đã được phát triển
từ phương pháp đề xuất để thực hiện quá trình kiểm chứng tự động.
Ngoài ra, các công cụ phát triển từ các phương pháp đề xuất cũng đã được
tiến hành thực nghiệm với hệ thống quản lý hồ sơ y tế. Bước đầu, phương pháp
và công cụ đề xuất đã cho các kết quả kiểm chứng chính xác như dự kiến.
Từ khóa: kiểm chứng, điều khiển truy cập, RBAC, ABAC, an ninh phần
mềm, phân tích tĩnh.
iv
Mục lục
Lời cam đoan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
Lời cảm ơn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
Tóm tắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii
Mục lục . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv
Danh mục các từ viết tắt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Danh mục các hình vẽ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Danh mục các thuật toán. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Danh mục các đặc tả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii
Chương 1. GIỚI THIỆU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1. Đặt vấn đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Nội dung nghiên cứu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Đóng góp của luận án . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4. Cấu trúc luận án . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Chương 2. KIẾN THỨC CƠ SỞ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1. An ninh phần mềm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1. Một số tính chất an ninh của phần mềm . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.2. Chính sách điều khiển truy cập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2. Một số mô hình chính sách điều khiển truy cập . . . . . . . . . . . . . . . . . . . . 14
2.2.1. Điều khiển truy cập theo vai trò . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2. Ngôn ngữ mô hình hóa chính sách an ninh thống nhất . . . . . . . . . 17
2.2.3. Điều khiển truy cập theo thuộc tính . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3. Triển khai chính sách điều khiển truy cập trong JavaEE . . . . . . . . . . . 23
2.3.1. An ninh truy cập trong JavaEE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.2. Một số kiến trúc thiết kế phần mềm trong JavaEE . . . . . . . . . . . . . 24
2.4. Phân tích và biểu diễn chương trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.1. Phân tích chương trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.2. Một số phương pháp biểu diễn chương trình . . . . . . . . . . . . . . . . . . . 34
2.5. Tóm tắt chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
v
Chương 3. KIỂM CHỨNG CHÍNH SÁCH RBAC TRIỂN KHAI
THEO PHƯƠNG PHÁP AN NINH LẬP TRÌNH . . . . . . . . . . . . . 39
3.1. Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2. Các nghiên cứu liên quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3. Phương pháp kiểm chứng chính sách RBAC triển khai theo phương pháp
an ninh lập trình. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3.1. Tập quy tắc truy cập đặc tả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3.2. Danh sách các quyền . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3.3. Đồ thị khai thác tài nguyên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3.4. Ma trận kiểm soát truy cập theo vai trò . . . . . . . . . . . . . . . . . . . . . . . 49
3.3.5. Thuật toán kiểm tra sự phù hợp của ma trận kiểm soát truy cập theo
vai trò và chính sách RBAC đã đặc tả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4. Công cụ kiểm chứng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.4.1. Giao diện công cụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.4.2. Thực nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.5. Thảo luận và đánh giá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.6. Tóm tắt chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Chương 4. KIỂM CHỨNG CHÍNH SÁCH RBAC KẾT HỢP RÀNG
BUỘC CẤP QUYỀN TRIỂN KHAI THEO PHƯƠNG PHÁP AN
NINH KHAI BÁO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.1. Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2. Các nghiên cứu liên quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.3. Phương pháp kiểm chứng chính sách RBAC kết hợp ràng buộc cấp quyền
triển khai theo phương pháp an ninh khai báo . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.3.1. Kiểm tra phép gán người dùng - vai trò . . . . . . . . . . . . . . . . . . . . . . . . 68
4.3.2. Kiểm tra phép gán vai trò - quyền . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.4. Công cụ kiểm chứng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.4.1. Kiến trúc của công cụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.4.2. Giao diện đồ họa của công cụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.4.3. Thực nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.5. Thảo luận và đánh giá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.6. Tóm tắt chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
vi
Chương 5. KIỂM CHỨNG CHÍNH SÁCH ĐIỀU KHIỂN TRUY
CẬP THEO THUỘC TÍNH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.1. Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.2. Các nghiên cứu liên quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.3. Phương pháp kiểm chứng chính sách điều khiển truy cập theo thuộc
tính. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3.1. Chính sách ABAC đặc tả của hệ thống . . . . . . . . . . . . . . . . . . . . . . . . 90
5.3.2. Chính sách ABAC triển khai trong ứng dụng . . . . . . . . . . . . . . . . . . 91
5.3.3. Các thuật toán kiểm chứng chính sách ABAC. . . . . . . . . . . . . . . . . . 92
5.4. Công cụ kiểm chứng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.4.1. Xây dựng công cụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.4.2. Thực nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.5. Thảo luận và đánh giá. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.6. Tóm tắt chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Chương 6. KẾT LUẬN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.1. Kết luận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.2. Hướng phát triển . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Danh mục các công trình khoa học. . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Tài liệu tham khảo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
vii
Danh mục các từ viết tắt
Từ viết
tắt
Từ gốc Giải nghĩa - Tạm dịch
ABAC Attribute-Based Access
Control
Điều khiển truy cập dựa trên thuộc
tính
API Application Programming
Interface
Giao diện lập trình ứng dụng
AST Abstract Syntax Tree Cây cú pháp trừu tượng
CFG Control Flow Graph Đồ thị luồng điều khiển
DAC Discretionary Access Con-
trol
Điều khiển truy cập tùy ý
FSA Finite State Automata Ôtômat hữu hạn trạng thái
HTML Hypertext Markup Lan-
guage
Ngôn ngữ đánh dấu siêu văn bản
IEC International Electrotechni-
cal Commission
Uỷ ban kỹ thuật điện quốc tế
ISO International Organization
for Standardization
Tổ chức tiêu chuẩn hoá quốc tế
MAC Mandatory Access Control Điều khiển truy cập bắt buộc
MVC Model-View-Controller Mô hình-Khung nhìn-Bộ điều khiển
NIST National Institute of Stan-
dards and Technology
Viện Tiêu chuẩn và Kĩ thuật Quốc
gia Mỹ
PDA Push Down Automaton Ôtômat đẩy xuống
PDP Policy Decision Point Điểm quyết định chính sác
PEP Policy Enforcement Point Điểm thực thi chính sách
PDG Program Dependence Graph Đồ thị phụ thuộc chương trình
PHP Hypertext Preprocessor Mộ xử lý siêu văn bản - một ngôn
ngữ lập trình kịch bản
RBAC Role-Based Access Control Điều khiển truy cập dựa trên vai trò
OASIS Organization for the Ad-
vancement of Structured In-
formation Standards
Tổ chức cải tiến các tiêu chuẩn
thông tin có cấu trúc
viii
SDG System Dependence Graph Đồ thị phụ thuộc hệ thống
SoD Separation of Duties Phân chia nhiệm vụ
SpEL Spring Expression Language Ngôn ngữ biểu thức Spring
SQL Structured Query Language Ngôn ngữ truy vấn có cấu trúc
SSL Secure Sockets Layer Lớp socket bảo mật
TLS Transport Layer Security Bảo mật tầng giao vận
UML Unified Modeling Language Ngôn ngữ mô hình hóa thống nhất
URL Uniform Resource Locator Định vị tài nguyên thống nhất
XACML eXtensible Access Control
Markup Language
Ngôn ngữ đánh dấu kiểm soát truy
cập mở rộng
XML Extensible Markup Lan-
guage
Ngôn ngữ đánh dấu mở rộng
ix
Danh mục các hình vẽ
1.1 Cấu trúc của luận án. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1 Một số tính chất an ninh của phần mềm. . . . . . . . . . . . . . . . . 11
2.2 Điều khiển truy cập và một số dịch vụ an ninh. . . . . . . . . . . . . . 13
2.3 Mô hình RBAC cơ bản. . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Siêu mô hình SecureUML. . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5 Chính sách điều khiển truy cập của hệ thống quản lý hồ sơ y tế
bằng SecureUML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6 Cơ chế điều khiển truy cập theo thuộc tính. . . . . . . . . . . . . . . . 20
2.7 Kiến trúc MVC trong JavaEE. . . . . . . . . . . . . . . . . . . . . . . 25
2.8 Kiến trúc tổng quát của Spring Security. . . . . . . . . . . . . . . . . . 27
2.9 Kiến trúc Spring triển khai ABAC trong JavaEE. . . . . . . . . . . . 27
2.10 Các hoạt động đảm bảo chính sách an ninh phần mềm. . . . . . . . . 29
2.11 Cây cú pháp trừu tượng biểu diễn đoạn mã của giải thuật tìm
ước số chung lớn nhất. . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.12 Minh họa đồ thị gọi một chương trình phần mềm. . . . . . . . . . . . 37
2.13 Một số ví dụ đồ thị luồng điều khiển. . . . . . . . . . . . . . . . . . . . 37
2.14 Đồ thị luồng điều khiển mô tả mức độ chi tiết của chương trình con. 38
3.1 Quy trình kiểm chứng chính sách RBAC triển khai theo phương
pháp an ninh lập trình. . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.2 Giao diện của công cụ kiểm chứng chính sách RBAC. . . . . . . . . . 55
3.3 Mô hình triển khai chính sách RBAC trong hệ thống quản lý hồ
sơ y tế. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.4 Đồ thị khai thác tài nguyên của hệ thống quản lý hồ sơ y tế. . . . . . 59
3.5 Ma trận kiểm soát truy cập theo vai trò của hệ thống quản lý hồ
sơ y tế. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.1 Quy trình kiểm chứng chính sách RBAC kết hợp ràng buộc cấp
quyền triển khai theo phương pháp an ninh khai báo. . . . . . . . . . 68
4.2 Cấu trúc cây phân tích truy cập theo vai trò. . . . . . . . . . . . . . . 71
4.3 Tiến trình xây dựng cây phân tích truy cập theo vai trò của các
ứng dụng web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
x
4.4 Kiến trúc của công cụ kiểm chứng chính sách RBAC kết hợp ràng
buộc cấp quyền. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.5 Giao diện của công cụ kiểm chứng chính sách RBAC kết hợp ràng
buộc cấp quyền. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.6 Cơ sở dữ liệu của phép gán vai trò - người dùng. . . . . . . . . . . . . 79
4.7 Cây phân tích truy cập theo vai trò của hệ thống quản lý hồ sơ y tế. 80
5.1 Quy trình kiểm chứng chính sách điều khiển truy cập theo thuộc tính.90
5.2 Giao diện đồ họa của công cụ APVer. . . . . . . . . . . . . . . . . . . 98
5.3 Kết quả kiểm chứng tính bảo mật khi lễ tân có thêm quyền đọc
hồ sơ y tế. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.4 Kết quả kiểm chứng tính toàn vẹn khi y tá có thêm quyền cập
nhật hồ sơ y tế. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.5 Kết quả kiểm chứng tính sẵn sàng khi lễ tân thiếu quyền tạo hồ
sơ y tế. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
xi
Danh mục các thuật toán
3.1 Xây dựng ma trận kiểm soát truy cập theo vai trò. . . . . . . . . . . . 51
3.2 Kiểm tra ma trận kiểm soát truy cập theo vai trò và chính sách
RBAC đã đặc tả. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1 Kiểm tra phép gán người dùng - vai trò . . . . . . . . . . . . . . . . . 69
4.2 Kiểm tra phép gán vai trò - quyền . . . . . . . . . . . . . . . . . . . . 75
5.1 Kiểm tra tính bảo mật chính sách truy cập. . . . . . . . . . . . . . . . 94
5.2 Kiểm tra tính toàn vẹn chính sách truy cập. . . . . . . . . . . . . . . . 96
5.3 Kiểm tra tính sẵn sàng chính sách truy cập. . . . . . . . . . . . . . . . 97
xii
Danh mục các đặc tả
2.1 Mã nguồn của hàm hasPermission . . . . . . . . . . . . . . . . . . . . 27
2.2 Mã nguồn của hàm checkPermission . . . . . . . . . . . . . . . . . . . 28
3.1 Cấu trúc tệp đặc tả chính sách RBAC của hệ thống . . . . . . . . . . 45
3.2 Đặc tả chính sách RBAC của hệ thống quản lý hồ sơ y tế . . . . . . . 56
4.1 Cấu trúc của một quy tắc truy cập đặc tả chính sách hệ thống. . . . 74
4.2 Truy vấn SQL lấy thông tin vai trò - người dùng trong cơ sở dữ
liệu của hệ thống quản lý hồ sơ y tế . . . . . . . . . . . . . . . . . . . 79
5.1 Cấu trúc tệp đặc tả chính sách ABAC của hệ thống . . . . . . . . . . 90
5.2 Đoạn mã biểu diễn chính sách ABAC đã đặc tả. . . . . . . . . . . . . 99
5.3 Chính sách ABAC được triển khai. . . . . . . . . . . . . . . . . . . . . 100
5.4 Lễ tân có thể đọc hồ sơ bệnh nhân. . . . . . . . . . . . . . . . . . . . . 101
5.5 Y tá có thể cập nhật hồ sơ bệnh nhân. . . . . . . . . . . . . . . . . . . 103
xiii
Chương 1
GIỚI THIỆU
1.1. Đặt vấn đề
Các hệ thống phần mềm hiện đang được tích hợp sâu rộng trong nhiều lĩnh
vực của đời sống xã hội. Một số lĩnh vực quan trọng như quân sự, kinh tế, y tế,
giáo dục, v.v cũng đều sử dụng phần mềm trong các công việc của họ. Vì vậy,
chất lượng của phần mềm có ảnh hưởng trực tiếp hoặc gián tiếp đến người dùng
hệ thống. Lợi ích của việc sử dụng phần mềm trong thực tế là không thể phủ
nhận, nó giúp con người tiết kiệm thời gian, tiền bạc và công sức. Tuy nhiên,
phần mềm hiện nay không chỉ dừng lại ở việc sử dụng trên một máy tính cá
nhân mà còn chạy trên các hệ thống có kết nối mạng. Do đó, các hệ thống phần
mềm, đặc biệt là các hệ thống web luôn tiềm ẩn các nguy cơ bị tấn công an ninh
và khai thác tài nguyên trái phép [99, 102].
Một số lượng lớn các biện pháp, kỹ thuật đã được nghiên cứu ở các giai đoạn
để chống lại các cuộc tấn công và bảo vệ các ứng dụng web [54]. Dựa trên nguyên
tắc thiết kế và các tính chất an ninh, các kỹ thuật hiện có được chia thành ba
nhóm chính:
(i) Xây dựng các ứng dụng web an toàn để đảm bảo rằng không có lỗ hổng
tiềm ẩn nào tồn tại trong các ứng dụng [11, 25, 51, 81, 82, 105]. Do đó, tài
nguyên của hệ thống được bảo vệ và không bị khai thác trái phép. Những
nghiên cứu này thường xây dựng các ngôn ngữ lập trình hoặc khung làm
việc mới với cơ chế bảo mật, tự động thực thi các tính chất an ninh mong
muốn. Các kỹ thuật này giải quyết các vấn đề bảo mật từ gốc và do đó
mạnh mẽ nhất. Tuy nhiên, chúng phù hợp nhất để phát triển ứng dụng
web mới.
(ii) Kiểm chứng các tính chất an ninh mong muốn của ứng dụng web có được
đảm bảo hay không và xác định các lỗ hổng tiềm ẩn trong ứng dụng [2,
5, 22, 28, 32, 38, 47, 48, 49, 53, 62, 70, 76, 79, 84, 88, 98, 104]. Với hướng
nghiên cứu này, các kỹ thuật phân tích và kiểm tra chương trình thường
được áp dụng. Cụ thể, phân tích chương trình bao gồm phân tích tĩnh
1
(kiểm tra/xem xét được thực hiện trên mã nguồn mà không thực thi) và
phân tích động (quan sát hành vi thời gian chạy thông qua thực thi). Tuy
nhiên, phân tích tĩnh có khả năng trong việc xác định tất cả các lỗ hổng
tiềm ẩn nhưng có thể đưa ra các cảnh báo sai. Mặt khác, phân tích động
đảm bảo tính đúng đắn của các lỗ hổng được xác định trong không gian
được khám phá, nhưng không thể đảm bảo tính đầy đủ. Các kỹ thuật trong
hướng này có thể được áp dụng cho cả ứng dụng web mới và cũ.
(iii) Bảo vệ một ứng dụng web có khả năng dễ bị tấn công khỏi bị khai thác
bằng cách xây dựng một môi trường thực thi an toàn [16, 55, 71, 85]. Các
nghiên cứu này thường hướng đến việc sắp đặt các biện pháp bảo vệ (proxy,
v.v.) để tách ứng dụng web khỏi các thành phần khác trong hệ sinh thái
web, hoặc thiết đặt các thành phần cơ sở hạ tầng (thời gian chạy, trình
duyệt web, v.v.) để giám sát hành vi của nó và xác định/cô lập các khai
thác tiềm năng. Những kỹ thuật này có thể độc lập với ngôn ngữ lập trình
hoặc nền tảng, do đó có thể mở rộng quy mô tốt. Tuy nhiên, chi phí hiệu
suất thời gian chạy cần được xem xét.
Bên cạnh đó, theo ISO/IEC 27002:20131, để bảo vệ tài nguyên của các hệ
thống phần mềm trước các nguy cơ tấn công an ninh, các nhà phát triển thường
phải xây dựng các hệ thống chính sách an ninh cho các phần mềm của họ. Một
số biện pháp được thực thi phổ biến gồm: mật mã để đảm bảo sự an toàn và
bảo mật thông tin; điều khiển truy cập để hạn chế các vi phạm truy cập đến
các tài nguyên của hệ thống; truyền thông an toàn để bảo vệ thông tin trước
các nguy cơ đánh chặn hoặc thay thế làm rò rỉ hoặc sai lệch thông tin trong quá
trình gửi nhận. Trong thực tế, điều khiển truy cập là một biện pháp cần được
thực hiện để đảm bảo tính bảo mật, tính toàn vẹn và tính sẵn sàng của các hệ
thống phần mềm [101]. Tuy nhiên, việc triển khai chính sách điều khiển truy
cập ở mỗi giai đoạn phát triển phần mềm luôn có khả năng tiềm ẩn các lỗ hổng
an ninh. Một trong các nguyên nhân dẫn đến các lỗ hổng an ninh là việc không
tuân thủ hoặc bỏ sót các yêu cầu an ninh. Sự không tuân thủ đơn giản nhất
có thể là một lỗi hoặc thiếu sót trong lập trình. Điều này rất dễ xảy ra, bởi vì
tại giai đoạn lập trình, một hệ thống phần mềm thường có sự kết hợp phức tạp
từ nhiều thành phần và thư viện, do đó có thể phát sinh các lỗi tiềm ẩn ngoài
mong đợi. Thêm vào đó, người lập trình có thể không phải là người thiết kế và
tính biểu đạt cao của ngôn ngữ đặc tả trong bản thiết kế cũng có thể dẫn đến
1https://www.iso.org/standard/54533.html
2
việc người lập trình hiểu không đầy đủ các yêu cầu đã đặc tả. Tất cả những vấn
đề này đều có thể là nguyên nhân dẫn đến việc các hệ thống ứng dụng sẽ không
tuân thủ các đặc tả của chúng [56, 9]. Thực tế cho thấy, phần mềm với quy mô
càng lớn thì việc triển khai chính sách điều khiển truy cập càng phức tạp và khả
năng chứa lỗi càng cao.
Bởi vậy, quá trình triển khai chính sách truy cập cần phải được tiến hành, rà
soát một cách thận trọng. Do đó, việc kiểm chứng chính sách điều khiển truy
cập giữa triển khai và đặc tả của các hệ thống phần mềm là một nhiệm vụ quan
trọng, giúp phát hiện sớm các sai sót, đảm bảo các tính chất an ninh của hệ
thống và góp phần gia tăng chất lượng của các sản phẩm phần mềm [3, 46].
Các nghiên cứu nhằm giải quyết bài toán này được thực hiện rất đa dạng, phức
tạp theo nhiều hướng tiếp cận khác nhau, từ việc xây dựng các mô hình, đặc
tả các tính chất an ninh [15, 29, 40] cho đến việc phân tích, thẩm định chính
sách điều khiển truy cập ở nhiều giai đoạn trong tiến trình phát triển phần
mềm [6, 19, 24, 26, 27, 28, 37, 62, 78, 88]. Ngoài ra, một số phương pháp cũng
xây dựng các công cụ phân tích để phát hiện tự động các lỗ hổng bảo mật từ
mã nguồn, giúp nhà phát triển hệ thống thực hiện các sửa đổi cần thiết trước
khi phần mềm được phát hành [23, 30, 31, 48, 106]. Với bài toán kiểm chứng
chính sách điều khiển truy cập theo vai trò, các nghiên cứu [6, 24, 48, 62, 78, 88]
chủ yếu tiến hành kiểm tra phép gán giữa các quyền và các vai trò trong hệ
thống ở giai đoạn thiết kế hoặc bằng cả kỹ thuật phân tích tĩnh và động từ mã
nguồn. Trong khi đó, với điều khiển truy cập theo thuộc tính, một số nghiên
cứu [11, 28, 37, 51] đã tập trung đặc tả, triển khai, kiểm thử chính sách điều
khiển truy cập của các hệ thống ứng dụng trong thực tế với khung làm việc
Spring Security. Tuy nhiên, các nghiên cứu này chưa xác minh tính bảo mật,
tính toàn vẹn và tính sẵn sàng của chính sách truy cập được triển khai trong
ứng dụng web chỉ bằng phân tích mã nguồn [75, 107].
Vì vậy, luận án “Một số phương pháp kiểm chứng các chính sách
điều khiển truy cập cho hệ thống phần mềm” đề ra hai mục tiêu chung
để nghiên cứu: (i) Xây dựng các phương pháp phân tích, biểu diễn chính sách
điều khiển truy cập từ mã nguồn của các hệ thống web và các thuật toán kiểm tra
sự phù hợp của mô hình biểu diễn chính sách so với đặc tả ; (ii) Phát triển các
công cụ để hỗ trợ quá trình kiểm chứng tự động. Trong khuôn khổ nghiên cứu,
luận án tập trung giải quyết bài toán kiểm tra sự phù hợp giữa triển khai và đặc
tả theo hai kịch bản là (i) ứng dụng web có chứa các quy tắc truy cập không có
3
trong đặc tả và (ii) một số quy tắc truy cập đã đặc tả nhưng không được triển
khai trong ứng dụng web. Trường hợp vi phạm thứ nhất được hiểu tương đương
là người dùng có thừa các chức năng trong hệ thống ứng dụng. Điều này dẫn
đến việc người dùng có thể thực hiện nhiều thao tác với tài nguyên hơn so với
quy định của tổ chức. Trường hợp vi phạm thứ hai xảy ra khi người dùng không
có đủ chức năng trong hệ thống ứng dụng để thực hiện các công việc được giao.
Trong hai trường hợp vi phạm truy cập kể trên, trường hợp đầu có ảnh hưởng
nghiêm trọng đến tài nguyên của hệ thống. Bởi vì, khi đó tính bảo mật, tính
toàn vẹn của hệ thống sẽ không được đảm bảo. Ở trường hợp vi phạm thứ hai,
tuy không dẫn đến nguy cơ rò rỉ hoặc làm sai lệch tài nguyên của hệ thống,
nhưng khi đó người dùng không hoàn thành được các công việc được giao theo
quy định. Do đó, kiểu vi phạm này sẽ làm mất tính sẵn sàng của hệ thống.
Để giải quyết bài toán này, luận án giả sử rằng chính sách điều khiển truy
cập của hệ th...c cấp quyền của hệ thống này được mô tả trực
quan như trong Hình 2.5.
Dễ thấy rằng, với SecureUML chính sách điều khiển truy cập theo vai trò đã
được mở rộng hơn khi được bổ sung các ràng buộc cấp quyền. Tuy nhiên, với
các hệ thống phần mềm, khi mà tiêu chí cấp quyền cho người dùng không chỉ
phụ thuộc vào vai trò của họ mà còn phụ thuộc vào các thông tin khác như trình
độ chuyên môn hay địa chỉ vật lý mạng của người dùng, thì việc biểu diễn chính
sách truy cập của hệ thống với SecureUML rất cồng kềnh và phức tạp. Hoặc với
những hệ thống lớn, có sự liên kết giữa nhiều tổ chức, thì mô hình RBAC không
thể diễn tả được chính sách điều khiển truy cập của hệ thống. Bởi vì, những
18
>
Receptionists
>
PatientMR
actiontype: read
>
PatientRecord
- mrID: String
- pID: String
- dID: String
- contents: String
...
+ getMrID()
+ getPID()
+ getDID()
+ getContents()
+ setContents()
...
>
Patient
>
ReceptionistMR
actiontype: create
>
User11
>
Doctor
>
User1N
>
Owner
Caller.ID = CalledResource.pID
>
DoctorMR
actiontype1: read
actiontype2: update
>
User2M
>
User31
>
User21
>
User3K
>
Treatment
Caller.ID = CalledResource.dID
Hình 2.5: Chính sách điều khiển truy cập của hệ thống quản lý hồ sơ y tế
bằng SecureUML.
người dùng của tổ chức liên kết sẽ không truy cập được tới tài nguyên hệ thống
vì họ không có vai trò trong tổ chức đó. Trong những trường hợp này, mô hình
điều khiển truy cập theo thuộc tính sẽ biểu diễn chính sách điều khiển truy cập
của hệ thống hiệu quả và linh hoạt hơn.
2.2.3. Điều khiển truy cập theo thuộc tính
Điều khiển truy cập theo thuộc tính (ABAC) [41, 42, 45] là mô hình điều
khiển truy cập rất linh hoạt và hiệu quả. Trong đó, quyết định truy cập đối
với tài nguyên của hệ thống được thực hiện dựa trên các thuộc tính của người
dùng, thuộc tính của đối tượng và thuộc tính của môi trường được yêu cầu.
NIST (National Institute of Standards and Technology) định nghĩa ABAC là
một phương thức điều khiển truy cập, trong đó chủ thể yêu cầu thực hiện các
thao tác trên các đối tượng được cấp quyền hoặc từ chối dựa trên các thuộc tính
được gán của chủ thể, các thuộc tính được gán của đối tượng, các điều kiện môi
trường và một bộ chính sách được xác định đối với các thuộc tính và điều kiện
đó.
Các thuộc tính là các thông tin về các đặc điểm của chủ thể, đối tượng hoặc
điều kiện môi trường. Chúng được cung cấp bởi một cặp tên - giá trị.
19
Chủ thể là người dùng hoặc thực thể không phải là người (ví dụ như một
thiết bị) đưa ra các yêu cầu truy cập để thực hiện các thao tác trên các đối
tượng. Các chủ thể được gán một hoặc nhiều thuộc tính. Đối với nghiên
cứu này này, chủ thể và người dùng được hiểu đồng nghĩa.
Đối tượng được hiểu là các tài nguyên của hệ thống. Ví dụ như thiết bị, tệp,
bản ghi, bảng, quy trình, chương trình, mạng hoặc miền chứa/nhận thông
tin. Nó có thể là thực thể được yêu cầu, cũng như mọi thứ mà một hoạt
động có thể được thực hiện bởi một chủ thể bao gồm dữ liệu, ứng dụng,
dịch vụ, thiết bị và mạng.
Một phép toán là việc thực hiện một hoạt động nào đó theo yêu cầu của
một chủ thể trên một đối tượng. Các hoạt động thường bao gồm đọc, viết,
chỉnh sửa, xóa, sao chép, thực hiện và sửa đổi.
Chính sách là sự thể hiện của các quy tắc hoặc các mối quan hệ giúp xác
định một yêu cầu truy cập có nên được phép hay không, với các giá trị của
các thuộc tính của chủ thể, đối tượng và có thể cả các điều kiện môi trường.
Điều kiện môi trường là bối cảnh hoạt động hoặc tình huống, trong đó yêu
cầu truy cập xảy ra. Điều kiện môi trường là đặc điểm môi trường độc lập
với chủ thể, đối tượng và có thể bao gồm thời gian hiện tại, ngày trong
tuần, vị trí của người dùng hoặc mức độ đe dọa hiện tại.
Cơ chế ABAC được mô tả trong Hình 2.6. Trong đó: điểm thực thi chính sách
(Policy Enforcement Point - PEP) là nơi thực thi quyết định ủy quyền để đáp
Subject
Policy Enforcement
Point
(PEP)
Policy Decision
Point
(PDP)
Subject
Attribute
Object
Attribute
Object
Hình 2.6: Cơ chế điều khiển truy cập theo thuộc tính.
20
ứng các yêu cầu từ các chủ thể; điểm quyết định chính sách (Policy Decision
Point - PDP) chịu trách nhiệm đánh giá các yêu cầu của các chủ thể theo các
thuộc tính của chủ thể, các thuộc tính của đối tượng và điều kiện môi trường
cùng chính sách hiện hành để đưa ra quyết định cấp phép hoặc từ chối yêu cầu
của chủ thể. Các thành phần và chính sách cấp quyền trong mô hình ABAC
được mô tả hình thức như Định nghĩa 2.2.
Định nghĩa 2.2 Mô hình ABAC là một bộ có tám thành phần MABAC =
〈S,RS,E,As,Ars,Ae,OP,P〉. Trong đó:
1. S, RS và E là tập các chủ thể, tài nguyên và môi trường.
2. OP là tập các phép toán có thể được thực hiện trên tài nguyên bởi các chủ
thể như: create, read,modify, delete.
3. As, Ars, Ae là tập các thuộc tính của chủ thể s, tài nguyên rs và môi trường
e.
4. Một quy tắc truy cập R là một hàm Boolean trên tập các thuộc tính của chủ
thể s ∈ S, phép toán op ∈ OP, và tài nguyên rs ∈ RS trong môi trường e ∈ E.
R(s, op, rs, e)← f(As, op.name,Ars,Ae) .
5. Chính sách P là tập các quy tắc truy cập được lưu trữ trong kho lưu trữ
trung tâm (ví dụ: tệp tin).
P = {R1, R2, ..., Rn}
Ví dụ: Trong một hệ thống quản lý hồ sơ y tế (hệ thống này sẽ được sử dụng
trong phần thực nghiệm của Chương 5), chính sách điều khiển truy cập của hệ
thống được phát biểu như sau: Bệnh nhân chỉ được đọc hồ sơ bệnh án của họ;
Các bác sĩ chỉ chịu trách nhiệm điều trị cho các bệnh nhân đã được phân công
tại chuyên khoa của họ trong bệnh viện. Do đó, các bác sĩ chỉ có quyền đọc và
sửa đổi hồ sơ y tế của bệnh nhân mà họ điều trị. Bên cạnh đó, họ cũng có quyền
đọc các hồ sơ y tế của bệnh nhân mà họ đang điều trị trong những bệnh viện liên
kết; Y tá chỉ có thể đọc hồ sơ các bệnh nhân trong khoa, bệnh viện họ làm việc;
Lễ tân có quyền tạo hồ sơ y tế cho những bệnh nhân trong bệnh viện của họ.
Mỗi bệnh viện thường có nhiều chuyên khoa để điều trị cho nhiều đối tượng
bệnh nhân khác nhau như khoa tim mạch, khoa thần kinh, khoa tai mũi họng,
v.v. Các bác sĩ thường làm việc cho một bệnh viện và chịu trách nhiệm điều trị
cho một số bệnh nhân trong khoa họ làm việc. Bên cạnh đó, giữa một số bệnh
21
viện thường có sự kết hợp trong khám và điều trị y khoa bằng các thỏa thuận
trong việc chia sẻ hồ sơ y tế.
Giả sử rằng, mỗi bệnh nhân trong hệ thống chăm sóc sức khỏe này chỉ có một
mã định danh và có thể khám nhiều lần tại cùng hoặc khác bệnh viện trong hệ
thống liên kết ở các thời điểm khác nhau. Tuy nhiên tại một thời điểm, một bệnh
nhân chỉ có một hồ sơ bệnh án và được điều trị tại một bệnh viện. Các thông
tin liên quan đến bệnh nhân được mô tả trong hồ sơ bệnh nhân (tài nguyên của
hệ thống). Mỗi bác sĩ chỉ làm việc cho một khoa trong một bệnh viện và một
bác sĩ có thể điều trị cho nhiều bệnh nhân. Tất cả người dùng tham gia vào hệ
thống ứng dụng trong các cơ sở y tế phải tuân thủ chính sách truy cập này. Bên
cạnh đó, hệ thống ứng dụng minh họa cho bài toán này có sự kết hợp của hai
bệnh viện A và B. Họ có một thỏa thuận hợp tác trong việc chia sẻ thông tin y
tế là “Các bác sĩ có thể đọc các hồ sơ y tế của bệnh nhân mà họ đang điều trị ở
các bệnh viện liên kết (nếu có)”.
Áp dụng Định nghĩa 2.2, mô hình chính sách ABAC của hệ thống quản lý hồ
sơ y tếM = 〈S,RS,E,As,Ars,Ae,OP,P〉 được trình bày như sau:
S = {Patients, Doctors, Nurses, Receptionists}
RS = {PatientRecords};
E = {∅};
OP = {Create, Read, Update, Delete}.
As = {id, role, department, hospital}.
Ars = {mrId, pId, dId, department, hospital}.
Ae = {∅};
P = {R1, R2, R3, R4, R5, R6}, trong đó:
R1 = (s.role =
′Patient′) ∧ (op = ′Read′) ∧ (rs = ′PatientRecords′) ∧
(s.Id = rs.pId)
R2 = (s.role = ′Doctor′) ∧ (op = ′Read′) ∧ (rs = ′PatientRecords′) ∧
(s.Id = rs.pId) ∧ (s.department = rs.department) ∧ (s.hospital = rs.hospital)
R3 = (s.role = ′Doctor′) ∧ (op = ′Update′) ∧ (rs = ′PatientRecords′) ∧
(s.Id = rs.dId)∧ (s.department = rs.department)∧ (s.hospital = rs.hospital)
R4 = (s.role = ′Doctor′) ∧ (op = ′Read′) ∧ (rs = ′PatientRecords′) ∧
(rs.hospital s.hospital) ∧ (∃ r ∈ rs : ((rs.pID = r.pID) ∧ (r.hospital =
s.hospital) ∧ (r.dId = s.Id)))
22
R5 = (s.role = ′Nurse′) ∧ (op = ′Read′) ∧ (rs = ′PatientRecords′) ∧
(s.department = rs.department) ∧ (s.hospital = rs.hospital),
R6 = (s.role = ′Receptionist′)∧ (op = ′Create′)∧ (rs = ′PatientRecords′)∧
(s.hospital = rs.hospital)
Điều khiển truy cập theo thuộc tính (ABAC) là một thế hệ kỹ thuật điều
khiển truy cập mới, được ra đời trong những năm gần đây. Mô hình này cho
phép điều khiển truy cập tài nguyên một cách chi tiết hơn bằng cách sử dụng
các thuộc tính khác nhau của các phần tử ủy quyền, tạo thuận lợi cho sự hợp
tác chính sách trong một doanh nghiệp lớn hoặc giữa nhiều tổ chức, đồng thời
cũng cho phép tách rời các chính sách điều khiển truy cập khỏi lôgic ứng dụng.
Do đó, mô hình ABAC đặc biệt hiệu quả và phù hợp với các hệ thống ứng dụng
lớn, phức tạp.
2.3. Triển khai chính sách điều khiển truy cập trong JavaEE
Phương pháp và kiến trúc được sử dụng để triển khai chính sách điều khiển
truy cập đã đặc tả vào các ứng dụng web đóng vai trò quan trọng trong việc
rà soát mã nguồn để phát hiện các sai sót. Bởi vì, chúng quyết định vị trí và
ngữ nghĩa của các mã an ninh truy cập. Bên cạnh đó, có rất nhiều ngôn ngữ lập
trình, kiến trúc thiết kế và thư viện hỗ trợ để lập trình các hệ thống web. Tuy
nhiên, với ưu thế đa nền tảng (multi platform), Java được sử dụng phổ biến để
tạo các ứng dụng desktop, mobile và web. Java có khối lượng thư viện hỗ trợ
lớn giúp việc lập trình trở nên dễ dàng hơn. Trong một số thống kê, ngôn ngữ
lập trình Java là một trong những ngôn ngữ phổ biến nhất để phát triển các
sản phẩm phần mềm [21]. Do đó, mục này sẽ trình bày về phương pháp an ninh
lập trình và an ninh khai báo, kiến trúc MVC và Spring Security được sử dụng
trong các đề xuất của luận án.
2.3.1. An ninh truy cập trong JavaEE
Các tài nguyên cần được bảo vệ của các hệ thống phần mềm thường được
lưu trữ trong các hệ thống cơ sở dữ liệu. Vì thế, có ba yếu tố đe dọa đến sự an
toàn của hệ thống cơ sở dữ liệu là sự không an toàn của nơi đặt cơ sở dữ liệu,
sử dụng trái phép các chức năng của ứng dụng để thực hiện các thao tác với cơ
sở dữ liệu nhằm sao chép, thay đổi các tài nguyên trong cơ sở dữ liệu và điểm
yếu của hệ quản trị cơ sở dữ liệu [59]. Để bảo vệ hệ thống cơ sở dữ liệu khỏi các
mối đe dọa trên, các nhà phát triển có thể sử dụng các phương pháp như chọn
23
nơi an toàn để đặt hệ thống cơ sở dữ liệu, dùng mã (code) để điều khiển truy
cập đến cơ sở dữ liệu, hoặc mã hóa dữ liệu để tránh rò rỉ thông tin.
An ninh với mã truy cập (code access security) là một giải pháp quan trọng
trong các hệ thống cơ sở dữ liệu. Bởi vì, một số vấn đề có thể xảy ra khi người
dùng ở máy khách đăng nhập hệ thống bằng cách sử dụng mã được ủy quyền
là mã nguồn phía máy khách có thể không đáng tin cậy, có lỗi hoặc bao gồm
mã độc. Với giải pháp này, chính sách an ninh của các ứng dụng JavaEE có thể
được triển khai theo hai phương pháp là An ninh khai báo, An ninh lập trình
hoặc cả hai.
An ninh khai báo (Declarative Security): thể hiện các yêu cầu an ninh
của một thành phần ứng dụng bằng các chú thích (annotation) hoặc mã
triển khai (deployment descriptor). Mã triển khai có thể được biểu diễn
trong tệp *.xml ở bên ngoài ứng dụng để đại diện cho cấu trúc an ninh của
ứng dụng. Cấu trúc này bao gồm các thông tin an ninh như vai trò, điều
khiển truy cập và các yêu cầu xác thực. Các chú thích được sử dụng để xác
định thông tin an ninh trong một tệp tin chứa lớp (file class). Chúng có thể
được sử dụng hoặc ghi đè (overwritten) bởi các mã triển khai. Để triển khai
theo cách này, người lập trình thường sử dụng các khung làm việc được tích
hợp thêm trong các ngôn ngữ lập trình. Các khung làm việc này đã được
xác minh về tính chính xác, đúng đắn và dễ sử dụng. Tuy nhiên nó không
giải quyết được tất cả mọi nhu cầu về an ninh thực tế. Với nền tảng Java,
Spring Security là một trong những khung làm việc cung cấp các tính năng
xác thực, ủy quyền và các tính năng an ninh khác cho các ứng dụng doanh
nghiệp.
An ninh lập trình (Programmatic Security): được nhúng trong một ứng
dụng và được sử dụng để đưa ra quyết định an ninh trong trường hợp an
ninh khai báo không đủ để mô tả các mô hình chính sách an ninh của hệ
thống. Phương pháp này được sử dụng thông qua ngữ nghĩa của ngôn ngữ
lập trình. Tuy nhiên, cách triển khai này thường phức tạp hơn việc sử dụng
các chú thích như trong an ninh khai báo nhưng nó đáp ứng được mọi yêu
cầu về an ninh.
2.3.2. Một số kiến trúc thiết kế phần mềm trong JavaEE
Hiện có nhiều ngôn ngữ lập trình khác nhau được sử dụng để triển khai các
ứng dụng web cho các tổ chức như Java, PHP, HTML, v.v. Trong thực tế, Java
24
là một ngôn ngữ mang lại nhiều lợi ích cho các nhà phát triển. Một trong những
tính năng quan trọng là tính độc lập nền tảng giúp tiết kiệm nhiều thời gian
và công sức. Các ứng dụng được viết bởi Java có thể chạy tự động và linh hoạt
trên nhiều hệ điều hành hoặc các thiết bị. Ngoài ra, ngôn ngữ Java còn có mức
độ bảo mật cao và được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau [12].
Thêm vào đó là có nhiều thư viện bên thứ ba cung cấp các dịch vụ hữu hiệu
trong quá trình xây dựng, phát triển và phân tích phần mềm.
2.3.2.1. Kiến trúc Model-View-Controller
Model-View-Controller (MVC) được giới thiệu lần đầu tiên trong Smalltalk’80
bởi Krasner và Pope. Kiến trúc MVC [77, 90] là một mẫu thiết kế phần mềm
được sử dụng phổ biến khi phát triển các ứng dụng web với nhiều ngôn ngữ khác
nhau (Hình 2.7 mô tả kiến trúc MVC với JavaEE). Những ứng dụng được thiết
kế theo kiến trúc MVC có khả năng tái sử dụng mã và phát triển song song một
cách hiệu quả. Mục đích của mẫu thiết kế phần mềm này là đạt được sự phân
tách giữa ba thành phần Model, View và Controller của một ứng dụng bất kỳ.
Controller
(servlet)
Model
(java class) View
(.JSP)
Database
Request
Response
Hình 2.7: Kiến trúc MVC trong JavaEE.
Model mô tả các bản ghi cơ sở dữ liệu, quản lý dữ liệu ứng dụng. Về cơ bản
nó chứa dữ liệu ứng dụng, định nghĩa lôgic, đặc tả chức năng. Model có thể
là một đối tượng đơn lẻ hoặc là một số thành phần của các đối tượng quản
lý dữ liệu và cho phép giao tiếp cơ sở dữ liệu. Trong các ứng dụng, Model
là các lớp ∗.java chứa các phương thức kết nối với cơ sở dữ liệu và tương
tác với nguồn dữ liệu.
View gồm các mã như là ∗.jsp chịu trách nhiệm hiển thị các kết quả của dữ
liệu được chứa trong Model dưới dạng giao diện đồ họa của người dùng. Nó
quy định dạng thức dữ liệu được hiển thị và giao tiếp với Controller. Thêm
vào đó, nó cũng cung cấp cách thức để tập hợp dữ liệu từ đầu vào.
25
Controller là sự kết nối giữa người dùng và hệ thống. Nó điều khiển cả
Model và View bằng việc kiểm soát cách dữ liệu phát sinh trong Model và
cập nhật View ngay sau khi dữ liệu được thay đổi. Nói cách khác, Controller
có chức năng tạo sự đồng bộ giữa Model và View, nó tương tác với Model
và lấy dữ liệu để tạo View.
Trong một ứng dụng được phát triển bởi J2EE, kiến trúc MVC có thể được
sử dụng để tách các chức năng lớp nghiệp vụ được diễn tả bởi Model khỏi chức
năng lớp trình diễn được mô tả bởi View bằng việc sử dụng một bộ điều khiển
dựa trên một servlet trung gian. Tuy nhiên, một thiết kế Controller phải chứa
đầu vào từ các kiểu máy khách khác nhau bao gồm các yêu cầu HTTP từ trang
web của máy khách và các tài liệu dựa trên XML từ nhà cung cấp và các bên
tham gia. Với mô hình Yêu cầu/Phản hồi HTTP, các yêu cầu từ HTTP đến,
được định tuyến tới một bộ điều khiển trung tâm để thông dịch và ủy quyền
cho yêu cầu đến các trình xử lý yêu cầu thích hợp. Các trình xử lý yêu cầu được
móc vào khung làm việc đã cung cấp cho các nhà phát triển để thực hiện các
yêu cầu lôgic cụ thể tương tác với mô hình. Phụ thuộc vào kết quả của tương
tác này, bộ điều khiển có thể quyết định View tiếp theo để tạo phản hồi một
cách chính xác.
2.3.2.2. Kiến trúc Spring Security
Spring Security5 là một khung làm việc hỗ trợ một số cơ chế điều khiển truy
cập để bảo đảm các chính sách truy cập cho các ứng dụng phần mềm doanh
nghiệp dựa trên nền tảng JavaEE [7, 68, 86]. Kiến trúc tổng quát của Spring
Security6 được mô tả trong Hình 2.8, bao gồm các hệ thống con có nhiệm vụ xác
thực và ủy quyền. Xác thực có trách nhiệm kiểm tra tính hợp pháp của người
dùng và ủy quyền sẽ quyết định quyền truy cập tài nguyên cho người dùng hợp
pháp thông qua vai trò của họ.
Spring Security cho phép người lập trình cấu hình cả với Java và XML. Do
đó, chính sách truy cập của hệ thống có thể được thực thi theo các quy tắc điều
khiển truy cập dựa trên URL trong môi trường web hoặc ở cấp độ của phương
thức Java. Điều này có nghĩa là các nhà phát triển có thể chọn lựa giữa các cấu
hình an ninh dựa trên XML, Java hoặc kết hợp cả hai. Cấu hình dựa trên XML
thực thi các yêu cầu an ninh với các mã triển khai và mã nguồn, trong khi các
5https://spring.io/projects/spring-security
6https://cms.einnovator.org/publication/spring-security
26
Hình 2.8: Kiến trúc tổng quát của Spring Security.
phương thức dựa trên Java được thực hiện với các chú thích và mã.
Bởi vì, Spring Security chỉ hỗ trợ trực tiếp việc triển khai chính sách RBAC
cho nên chính sách ABAC sẽ được triển khai theo cả phương pháp an ninh lập
trình và an ninh khai báo. Hình 2.9 mô tả khung làm việc của Spring khi triển
khai mô hình điều khiển truy cập theo thuộc tính trong các ứng dụng được lập
trình từ JavaEE [11]. Trong đó, chính sách ABAC của ứng dụng web được biểu
diễn dưới dạng tập quy tắc truy cập viết bằng ngôn ngữ biểu thức Spring và lưu
trữ trong tệp tin *.json. Với kiến trúc này, người lập trình ứng dụng phải cài
đặt thêm các hàm hasPermission như Đặc tả 2.1 và CheckPermission như Đặc
tả 2.2 để tạo ra một bộ lọc cho Spring nhằm đánh giá quyền của các vai trò khi
thực thi chính sách.
Security
Context
Resources
@PreAuthorize(“can_do()”)
Method
call
Security Interceptor
Security
Context
Handler
Authentication
Manager
Authorization
Manager
User Customized
Spring Security
SpEL evaluator
ABAC
Policy
SecurityMetadata
(ConfigAttribute)
Authorization
Object
Hình 2.9: Kiến trúc Spring triển khai ABAC trong JavaEE.
27
Đặc tả 2.1: Mã nguồn của hàm hasPermission
public boolean hasPermission(Authentication authentication , Object
targetDomainObject, Object permission) {
User user = userRepository.findByUsername(authentication.getName());
Map environment = new HashMap();
ronment.put("time", new Date());
logger.debug("hasPersmission({}, {}, {})", user, targetDomainObject,
permission);
return policy.check(user, targetDomainObject, permission, environment);
}
@Override
public boolean hasPermission(Authentication authentication,
Serializable targetId, String targetType, Object permission) {
return false;
}
Đặc tả 2.2: Mã nguồn của hàm checkPermission
public class ContextAwarePolicyEnforcement {
@Autowired
protected PolicyEnforcement policy;
@Autowired
private UserRepository userRepository;
public void checkPermission(Object resource, String permission) {
Authentication auth =
SecurityContextHolder.getContext().getAuthentication();
User user = userRepository.findByUsername(auth.getName());
Map environment = new HashMap();
environment.put("time", new Date());
if(!policy.check(user, resource, permission, environment))
throw new AccessDeniedException("Access is denied");
}
}
Trong đoạn mã nguồn trên, hai hàm hasPermission có đầu vào khác nhau
và đều thuộc lớp AbacPermissionEvaluator được triển khai (implements) từ lớp
PermissionEvaluator. Vì chỉ cần sử dụng hàm hasPermission(Authentication
authentication , Object targetDomainObject, Object permission) trong quá trình
28
triển khai chính sách ABAC nên hàm này được cài đặt lại còn hàm hasPer-
mission(Authentication authentication, Serializable targetId, String targetType,
Object permission) luôn được trả về giá trị false. Cả hai hàm hasPermission và
checkPermission đều có lời gọi đến policy.check() để đối chiếu thông tin từ yêu
cầu tài nguyên của các chủ thể với các quy tắc truy cập ABAC được lưu trữ
trong tệp .json.
2.4. Phân tích và biểu diễn chương trình
Kiểm soát truy cập là biện pháp hiệu quả để hạn chế các vi phạm truy cập.
Tuy nhiên, nó không phải là một giải pháp hoàn chỉnh để bảo vệ tài nguyên
hệ thống. Bởi vì, nếu chính sách truy cập của hệ thống không được triển khai
chính xác trong từng giai đoạn phát triển phần mềm thì vẫn phát sinh các lỗ
hổng an ninh trong các sản phẩm phần mềm và xảy ra các vi phạm truy cập tài
nguyên. Thực tế là, khoảng một nửa các khiếm khuyết dẫn đến các lỗ hổng an
ninh được tìm thấy trong phần mềm hiện nay thực sự là do các lỗ hổng trong
kiến trúc, thiết kế và lập trình [52, 64]. Các sai sót có thể xuất hiện trong suốt
vòng đời phát triển của phần mềm. Nếu sai sót không được phát hiện, nó có thể
trở thành các lỗ hổng an ninh ở thời điểm thực thi và có thể bị những kẻ tấn
công khai thác các tài nguyên quan trọng hoặc phá hoại hệ thống dẫn đến hàng
loạt tổn thất nghiêm trọng. Do đó, điều khiển truy cập cần phải được kết hợp
với các công việc kiểm tra, rà soát.
Trong nghiên cứu [64], với mục tiêu làm giảm số lượng các sai sót càng sớm
càng tốt đồng thời giảm thiểu sự nhập nhằng và những điểm yếu khác, tác giả
McGraw đã giới thiệu một số hoạt động áp dụng tốt nhất để đảm bảo chính
sách an ninh phần mềm tại các giai đoạn của vòng đời phát triển phần mềm
(Software Development Life Cycle) theo thứ tự hiệu quả của chúng, được chỉ ra
trong Hình 2.10.
Code
Review
Risk
Analysis
2
Design Test Plans
Requirements
and use cases
Code
Test results
Field
feedback
1
Risk
Analysis
2
Penetration
Testing
3
Risk - Based
Security
Tests
4
Abuse
Cases
5 Security
Requirements
6
Security
Operations
7
Hình 2.10: Các hoạt động đảm bảo chính sách an ninh phần mềm.
29
Rà soát mã nguồn (Code review): Hoạt động được thực hiện ở giai đoạn
lập trình bằng kỹ thuật phân tích tĩnh. Phương pháp tập trung vào các lỗi
triển khai đặc biệt là các lỗ hổng phổ biến.
Phân tích rủi ro kiến trúc (Architectural risk analysis): Hoạt động được
thực hiện ở giai đoạn thiết kế và kiến trúc. Hệ thống phải được kết hợp và
thể hiện ở một hình thái thống nhất. Nhà thiết kế, kiến trúc sư và nhà phân
tích cần ghi chép rõ ràng các giả định và xác định các cuộc tấn công có thể
xảy ra để tránh các lỗi thiết kế.
Kiểm thử thâm nhập (Penetration testing): Hoạt động này là cực kỳ hữu
ích, đặc biệt nếu là một phân tích rủi ro kiến trúc. Phương pháp mang lại
sự hiểu biết tốt về phần mềm trong môi trường thực.
Kiểm thử an ninh dựa trên rủi ro (Risk-based security tests): Một kế hoạch
kiểm tra an ninh tốt phải bao gồm cả hai chiến lược (i) kiểm thử chức năng
an ninh với các kỹ thuật kiểm thử chức năng chuẩn và (ii) kiểm thử rủi
ro an ninh dựa trên các mô hình tấn công, kết quả phân tích rủi ro và các
trường hợp lạm dụng.
Các trường hợp lạm dụng (Abuse cases): Xây dựng các trường hợp lạm
dụng là một cách hữu ích vì các trường hợp lạm dụng mô tả hành vi của
hệ thống đang bị tấn công. Tuy nhiên, hoạt động cần có sự tham gia của
chuyên gia an ninh nhiều kinh nghiệm vì nó đòi hỏi phải hiểu rõ về những
gì cần được bảo vệ, từ ai và trong bao lâu.
Các yêu cầu an ninh (Security requirements): Các yêu cầu an ninh phải
được thể hiện rõ ràng, chi tiết. Bao gồm cả an ninh chức năng (ví dụ cách
sử dụng mật mã được áp dụng) và các đặc điểm nổi bật (ví dụ các trường
hợp lạm dụng và mô hình tấn công).
Các hoạt động an ninh (Security operations): Sử dụng kinh nghiệm của các
chuyên gia để phòng ngừa các các tấn công an ninh.
2.4.1. Phân tích chương trình
Phân tích chương trình là một trong những phương pháp để hiểu chương
trình và phát hiện các lỗi ở giai đoạn lập trình. Một số lỗi lập trình có thể được
phát hiện bằng trình biên dịch, khi đó trình biên dịch cung cấp các thông tin
liên quan đến lỗi được phát hiện để người lập trình khắc phục và tiến trình phát
30
triển được tiếp tục. Tuy nhiên, việc phát hiện lỗi bằng trình biên dịch không
thể áp dụng với hầu hết các lỗ hổng an ninh. Phân tích chương trình là phương
pháp phổ biến được sử dụng để kiểm tra việc triển khai chính sách an ninh của
các hệ thống phần mềm ở giai đoạn lập trình. Có hai kỹ thuật phân tích chương
trình là phân tích tĩnh và phân tích động.
Sức mạnh của các phân tích động nằm ở khả năng nắm bắt hành động hiện
có của các đầu vào động. Kiểu phân tích này sẽ xem xét chương trình ở
mức tổng quát. Do đó, nó cần đến các phương pháp khác nhau để phân tích
hành vi của chương trình tại thời điểm thực thi và thường không có bất cứ
truy cập nào tới mã nguồn. Phương pháp này cần đủ lượng ca kiểm thử và
tốn khá nhiều thời gian, mà không thể đảm bảo kiểm chứng tự động hay
bao quát đầy đủ không gian ca kiểm thử của chương trình được phân tích.
Phân tích động báo cáo các lỗi tại trường hợp nó xảy ra, và cung cấp các
thông tin chi tiết cho phép người phát triển/người kiểm thử thực hiện các
sửa chửa cần thiết.
Phân tích tĩnh đảm bảo bao quát đầy đủ các nhánh của chương trình, sự
phụ thuộc chương trình, hoặc các tệp cấu hình được khai thác. Phân tích
tĩnh cung cấp các phương pháp luận khác nhau, bao gồm kiểm chứng mô
hình, chứng minh mô hình, để xác định các đường thực thi của một chương
trình mà không phải thực hiện nó thực sự. Không giống như rà soát thủ
công, các bộ phân tích mã tĩnh có thể nắm bắt toàn diện và chính xác các
mô hình của phần mềm, ví dụ như một biểu diễn trừu tượng của tất cả các
đường thực thi.
Nhiều nhà phát triển dựa vào kiểm thử để đảm bảo sự an toàn của các chương
trình của họ nhưng không đảm bảo các tính chất an ninh cho phần mềm đã phát
triển. Bởi vì, việc kiểm thử chỉ đáp ứng được các yêu cầu chức năng ở giai đoạn
cuối của tiến trình phát triển phần mềm khi phần mềm có thể thực thi chứ
không phải ở dạng mã nguồn hay byte-code. Không giống như kiểm thử, phân
tích mã tĩnh có thể được áp dụng với các tệp đơn lẻ hoặc toàn bộ mã nguồn và
không phải đợi khi hoàn thành sản phầm do đó kỹ thuật này có thể sử dụng ở
giai đoạn sớm của quá trình phát triển [58].
2.4.1.1. Một số phương pháp phân tích tĩnh
Các bộ phân tích tĩnh được sử dụng cho nhiều mục đích khác nhau như là dò
tìm các lỗ hổng an ninh, phát hiện lỗi, kiểm chứng các tính chất an ninh cũng
31
như để hiểu chương trình. Sau đây là một số phương pháp hình thức phổ biến
để biểu diễn chương trình và được sử dụng trong phân tích tĩnh.
Phân tích luồng điều khiển (Control Flow Analysis): là một trong các
kỹ thuật được sử dụng phổ biến để phân tích mã tĩnh. Luồng điều khiển
chương trình được mô hình hóa thành một đồ thị luồng điều khiển (Control
Flow Graph - CFG), được giới thiệu đầu tiên bởi Frances E. Allen năm
1970. Đồ thị luồng điều khiển là đồ thị có hướng được sử dụng để biển diễn
các khối mã dưới dạng các nút, sự phụ thuộc điều khiển tạo thành các cạnh
có hướng, bắt đầu với một nút vào và kết thúc với điểm cuối của chương
trình. Việc xây dựng đồ thị luồng điều khiển có thể được thực hiện dựa vào
đồ thị cú pháp trừu tượng như là cây cú pháp trừu tượng (Abstract Syntax
Tree - AST) [94, 93]. Đặc trưng chính của kỹ thuật này là xác định các thủ
tục trong một chương trình gọi lẫn nhau như thế nào cũng như xác định
hàm nào được gọi một cách hiệu quả.
Phân tích luồng dữ liệu (Data Flow Analysis): dựa trên biểu diễn trừu
tượng của ngữ nghĩa chương trình được phân tích, và tập trung vào trích
rút các giá trị có thể của dữ liệu nhằm biểu diễn sự phụ thuộc của dữ liệu
trong mã nguồn, và cho phép theo dõi hiệu ứng của dữ liệu vào. Phân tích
luồng dữ liệu có mục tiêu dự đoán tĩnh hành vi động của chương trình được
phân tích [36].
2.4.1.2. Một số công cụ phân tích tĩnh
Các công cụ phân tích tĩnh được sử dụng chủ yếu trong mục tiêu phát hiện
các lỗ hổng an ninh từ mã nguồn, do đó nhà phát triển có thể thực hiện các sửa
đổi cần thiết đối với các lỗ hổng an ninh được xác định trước khi phần mềm
được phát hành cho khách hàng. Một số công cụ phân tích mã tĩnh là MOPS,
SPlint, GraphMatch, Fortify.
MOPS (Model checking Program for Security Properties) [23]: sử dụng kỹ
thuật kiểm chứng mô hình để kiểm tra sự vi phạm các quy tắc an ninh được
định nghĩa như các tính chất an toàn theo thời gian. Nó dựa trên phương
pháp mô hình hóa hình thức cho cả chương trình và các tính chất an ninh,
sau đó tiến hành phân tích các mô hình đã triển khai. MOPS mô hình
hóa chương trình thành dạng ôtômat đẩy xuống (Push Down Automaton -
PDA) chứa tất cả các đường thực thi có thể. PDA được sử dụng như công
32
cụ để phân tích các chương trình. MOPS sử dụng phương pháp này để mô
hình các tính chất an ninh thành ôtômat hữu hạn trạng thái (Finite State
Automata - FSA) để sắp xếp trật tự chuỗi các thao tác liên quan đến an
ninh. Phương pháp này phân chia các tính chất an ninh phức tạp thành các
đơn vị nhỏ hơn và có thể sử dụng lại các tính chất an ninh cơ bản, điều này
để dễ dàng mô hình hóa và mở rộng. MOPS xác minh rằng các tính chất an
ninh được thực hiện chính xác trong tất cả các đường thực thi của chương
trình được phân tích, sử dụng kiểm chứng mô hình trên PDA và kiểm tra
liệu các trạng thái rủi ro có thể xảy ra trong PDA.
SPlint (Secure Programming LINT) [31] là một bộ phân tích mã tĩnh luồng
dữ liệu dựa trên chú thích cho các lỗ hổng an ninh và phát hiện lỗi lập trình
của ngôn ngữ C. Nó sử dụng các chú thích (giải nghĩa) đã đưa vào bởi người
phát triển. Các chú thích nhằm đặc tả các ràng buộc (tính chất) về một
thư viện, một biến, một hàm hoặc một kiểu. Các chú thích biểu diễn tiền
điều kiện và hậu điều kiện bên trong thủ tục về các tài nguyên. Sự thực
hiện SPlint là một quá trình lặp giúp người phát...ng pháp an ninh khai báo. Sự phù hợp của chính
sách điều khiển truy cập và các ràng buộc cấp quyền trong các ứng dụng
web được kiểm tra thông qua phép gán vai trò - người dùng và phép gán
vai trò - quyền. Với phép gán thứ nhất, phương pháp được tiến hành dựa
trên việc phân tích cơ sở dữ liệu. Việc kiểm tra phép gán còn lại, các quy
tắc truy cập của ứng dụng web được phân tích và biểu diễn thành cây phân
tích quy tắc truy cập tài nguyên của ứng dụng. Cuối cùng, hai thuật toán
được đề xuất để thực hiện kiểm tra tính chính xác của các phép gán đã
được triển khai trong ứng dụng. Một công cụ đã được phát triển để hỗ trợ
quá trình kiểm chứng tự động với hệ thống quản lý hồ sơ y tế theo phương
pháp đã đề xuất.
(iii) Đề xuất phương pháp kiểm chứng chính sách điều khiển truy cập theo thuộc
tính. Quá trình kiểm chứng được thực hiện từ việc trích rút, phân tích các
quy tắc truy cập của ứng dụng web. Chính sách điều khiển truy cập theo
thuộc tính trong các ứng dụng web được kiểm chứng thông qua các định
nghĩa hình thức và các thuật toán kiểm tra tính bảo mật, tính toàn vẹn và
tính sẵn sàng của chính sách truy cập. Từ phương pháp đề xuất, một công
cụ kiểm chứng đã được phát triển để thực hiện quá trình kiểm chứng tự
động và thực nghiệm với hệ thống quản lý hồ sơ y tế.
Như vậy, luận án đã tập trung giải quyết bài toán kiểm chứng chính sách điều
khiển truy cập cho các hệ thống web được phát triển bởi J2EE theo kiến trúc
MVC và thư viện Spring Security. Trong đó, chính sách RBAC, ABAC của hệ
thống được triển khai theo phương pháp an ninh lập trình, an ninh khai báo.
Các đóng góp đạt được ở trên cho thấy các phương pháp đề xuất đã đáp ứng
đầy đủ các mục tiêu nghiên cứu của luận án và góp phần bổ sung và hoàn thiện
các phương pháp phân tích, biểu diễn, kiểm tra chính sách truy cập của các ứng
dụng web và làm tăng tính tin cậy của hệ thống. Bên cạnh đó, các phương pháp
đã được đề xuất trong luận án đều được triển khai thành các công cụ và thực
109
nghiệm với hệ thống quản lý hồ sơ y tế và bước đầu cho các kết quả đúng như
dự kiến.
Dựa trên các tính chất an ninh, kỹ thuật phân tích được sử dụng và đặc điểm
của các hệ thống web mà các phương pháp đề xuất đã thực hiện, khả năng của
các phương pháp và công cụ mà luận án đề xuất được tổng hợp, so sánh với các
nghiên cứu hiện có trong bảng tổng hợp sau:
Bảng 6.1: Bảng so sánh các phương pháp đề xuất và một số nghiên cứu khác.
Phương
pháp
kiểm
chứng
Tiêu chí
Phương pháp đề xuất Một số phương pháp hiện có
R
B
A
C
C
h
eck
in
g
V
eR
A
A
P
V
er
P
isto
ia2
0
0
7
R
o
le
[7
6
]
A
lalfi2
0
1
2
A
u
to
m
ated
[5
]
S
erg
eev
2
0
1
7
A
p
p
ro
ach
[8
8
]
Jh
a2
0
1
8
S
p
ecificatio
n
[4
9
]
Mô hình chính
sách điều khiển
truy cập
RBAC SecureUML ABAC RBAC SecureUML SecureUML ABAC
Phương pháp
thực hiện
Phân tích
tĩnh
Phân tích
tĩnh
Phân tích
tĩnh
Phân tích
tĩnh
Phân tích tĩnh
+ Động
Phân tích
tĩnh
Kiểm
chứng mô
hình
Phương pháp
triển khai chính
sách truy cập
An ninh
lập trình
An ninh
khai báo
An ninh
lập trình
+ An ninh
khai báo
An ninh
lập trình
An ninh lập
trình
An ninh
khai báo
Kiến trúc, thư
viện phát triển
hệ thống
MVC
MVC,
Spring
Security
MVC,
Spring
Security
Spring
Security
Ngôn ngữ phát
triển hệ thống
Java EE Java EE Java EE Java EE Java EE Java EE
Mô hình biểu
diễn chính sách
truy cập triển
khai
Ma trận Cây Tập hợp
Đồ thị lời
gọi
Biểu đồ Biểu đồ
Dữ liệu đầu
vào
Mã nguồn
Mã nguồn,
Cơ sở dữ
liệu
Mã nguồn Mã nguồn
Mã nguồn, Cơ
sở dữ liệu
Mã nguồn
Trạng thái
ABAC,
chính
sách SoD
Kết quả đầu ra
Kiểm tra
thừa, thiếu
quyền
được gán
cho các vai
trò
Kiểm tra
thừa, thiếu
người dùng,
vai trò và
quyền của
các vai trò
Kiểm tra
tính bảo
mật, tính
toàn vẹn
và tính
sẵn sàng
Kiểm tra
tính thiếu,
tính dư
thừa, tính
phá vỡ
Kiểm tra truy
cập trái phép,
Bảo trì ứng
dụng web, Tái
cấu trúc ứng
dụng web
Mô hình
SecureUML
Kiểm tra
các sửa
đổi trong
thực thi
SoD
Ngoài ra các phương pháp đề xuất trong luận án cũng tiến hành thực nghiệm
với hệ thống quản lý hồ sơ y tế và đo đạc với máy tính xách tay có dung lượng
RAM 8 GB, vi xử lý Intel Core i5 - 6300U 2.4GHz. Một số kết quả thống kê
được ghi nhận như bảng sau:
110
Bảng 6.2: Bảng kết quả thực nghiệm của các công cụ đề xuất.
Phương pháp
đề xuất
Khả năng phát hiện
sai sót
Số vai trò,
quyền, tài
nguyên
Kích thước hệ thống web
Thời gian kiểm chứng
khi không có sai sót
(s)
RBACChecking
- Thừa, thiếu quyền
của các vai trò.
3, 3, 1
40,47 MB (40.689.622 bytes)
81 Files, 22 Folders
4
VerRA
- Thừa , thiếu người
dùng/vai trò.
- Thừa, thiếu quyền
của các vai trò.
3, 3, 1
71,7 MB (75.282.117 bytes),
162 Files, 57 Folders
4
APVer
- Thừa, thiếu quyền
theo các thuộc tính.
4, 3, 1
75,0 MB (78.746.748 bytes),
167 Files, 57 Folders
3
Các kết quả của luận án đã được công bố trong ba hội nghị trong và ngoài
nước, đã gửi và được chấp nhận bởi một tạp chí chuyên ngành trong nước và
một tạp chí quốc tế.
6.2. Hướng phát triển
Thực tế cho thấy, việc áp dụng các kỹ thuật, phương pháp để đảm bảo chính
sách điều khiển truy cập được triển khai chính xác trong các giai đoạn phát triển
của phần mềm là vấn đề rất quan trọng. Bước đầu, luận án mới tập trung giải
quyết bài toán mà chính sách của hệ thống được biểu diễn bằng mô hình RBAC,
SecureUML, ABAC. Các tính chất an ninh mà luận án thực hiện được mới chỉ
bao gồm tính bảo mật, tính toàn vẹn và tính sẵn sàng. Luận án đã đề xuất được
một số phương pháp để biểu diễn hình thức, phân tích, kiểm tra các chính sách
truy cập từ mã nguồn của một số ứng dụng web. Tuy nhiên, các phương pháp
phân tích đã đề xuất còn phụ thuộc vào kiến trúc thiết kế, thư viện sử dụng,
phương pháp triển khai chính sách truy cập cũng như ngôn ngữ lập trình khi
xây dựng các ứng dụng web,... Vì vậy, đối với mỗi bài toán đã nghiên cứu vẫn
còn một số hướng có thể xem xét và phát triển. Một số hướng nghiên cứu tiếp
theo của luận án có thể tiến hành là:
(i) Quy mô của các hệ thống quản lý hồ sơ y tế được sử dụng trong các thực
nghiệm còn đơn giản và chưa phải là các hệ thống thực tế đang được sử
dụng trong các tổ chức. Do đó, các hệ thống ứng dụng có khả năng chưa
bao quát được hết các tình huống có thể xảy ra vi phạm truy cập tài nguyên
trong thực tế. Các số liệu trong quá trình thực nghiệm chưa được tập hợp,
so sánh và đánh giá một cách chi tiết. Vì vậy, cần tiếp tục tiến hành các
thực nghiệm và đo đạc với các hệ thống khác, lớn hơn có cùng kiến trúc,
111
từ đó có thể xem xét và cải tiến các phương pháp đề xuất để phù hợp với
một lớp các bài toán lớn hơn.
(ii) Các phương pháp đề xuất trong luận án đều chưa giải quyết các vấn đề
liên quan đến truy vết và lưu trữ các hoạt động của người dùng trong các
ứng dụng web. Vì thế, các tính chất an ninh mà luận án đã đề cập và giải
quyết được mới chỉ dừng lại ở tính bảo mật, tính toàn vẹn và tính sẵn sàng.
Do đó, trong các nghiên cứu tiếp theo, luận án có thể tiếp tục mở rộng để
triển khai với các tính chất an ninh khác như tính trách nhiệm, tính chống
chối bỏ, v.v.
(iii) Trong các phương pháp kiểm chứng chính sách RBAC, luận án chưa giải
quyết được các vấn đề liên quan đến thừa kế vai trò và cấp phát động các
quyền, vai trò cho người dùng được triển khai trong ứng dụng web. Ngoài
ra, vấn đề xung đột các quyền theo các phương pháp triển khai chính sách
khác nhau cũng chưa được luận án xem xét giải quyết. Vì thế, các phương
pháp đề xuất cần được tiếp tục xem xét, mở rộng để giải quyết những vấn
đề này trong tương lai.
(iv) Tính tối ưu của các thuật toán, dung lượng bộ nhớ cần sử dụng trong các
phương pháp đề xuất chưa được xem xét. Tính đúng đắn của các phương
pháp đề xuất mới chỉ được thực hiện thông qua các thực nghiệm mà chưa
được chứng minh bằng các phương pháp hình thức. Vì vậy, các nghiên cứu
tiếp theo có thể xem xét và hoàn thiện các vấn đề này.
(v) Hiệu quả của các phương pháp kiểm chứng đã đề xuất phụ thuộc chủ yếu
vào các bước phát hiện và xây dựng mô hình chính sách điều khiển truy
cập từ mã nguồn ứng dụng. Do đó, việc xây dựng các phương pháp để đánh
giá thực nghiệm chi tiết hơn về bước này với các độ đo định lượng là cần
thiết trong các nghiên cứu tiếp theo.
(vi) Các phương pháp kiểm chứng đề xuất chỉ áp dụng với những hệ thống
web mà chính sách RBAC, ABAC của chúng được triển khai theo phương
pháp an ninh lập trình, an ninh khai báo với kiến trúc MVC, khung làm
việc Spring Security. Điều này làm hạn chế khả năng áp dụng của luận
án. Để khả năng áp dụng của các phương pháp đề xuất được tốt hơn, việc
xây dựng các bộ ánh xạ để chuyển đổi tương đương giữa các ngôn ngữ lập
trình, khung làm việc của các thư viện và kiến trúc thiết kế là cần thiết
trong tương lai.
112
Danh mục các công trình khoa học
1. Thanh-Nhan Luong, Van-Khanh To, and Ninh-Thuan Truong, Checking
Compliance of Program with SecureUML Model, Advanced Topics in Intelligent
Information and Database Systems, Springer, pp. 489-498, (2017).
2. Thanh-Nhan Luong, Dinh-Hieu Vo, Van-Khanh To, and Ninh-Thuan
Truong, On the Compliance of Access Control Policies in Web Applications,
ICCASA 2018/ICTCC 2018, LNICST 266, pp. 58-69, (2018).
3. Thanh-Nhan Luong, Dinh-Hieu Vo, and Ninh-Thuan Truong, An ap-
proach to analyze software security requirements in ABAC model, 2019 6th
NAFOSTED Conference on Information and Computer Science (NICS), IEEE,
pp. 184-189, (2019).
4. Thanh-Nhan Luong, and Ninh-Thuan Truong, VeRA: Verifying RBAC
and authorization constraints models of web applications, International Journal
of Software Engineering and Knowledge Engineering (accepted), ISI index.
5.Thanh-Nhan Luong, Thi-Dao Vu, Dinh-Hieu Vo, and Ninh-Thuan Truong,
A Tool Support for Checking ABAC Policies in Web Applications, VNU Journal
of Science: Computer Science and Communication Engineering (accepted).
Danh mục này gồm 05 công trình.
113
Tài liệu tham khảo
[1] Abdallah, A.E., Khayat, E.J.: A formal model for parameterized role-based
access control. In: IFIP World Computer Congress, TC 1. pp. 233–246.
Springer (2004)
[2] Ahmadi, H., Small, D.: Graph Model Implementation of Attribute-Based
Access Control Policies. arXiv preprint arXiv:1909.09904 (2019)
[3] Alalfi, M.H., Cordy, J.R., Dean, T.R.: A survey of analysis models and
methods in website verification and testing. In: International Conference
on Web Engineering. pp. 306–311. Springer (2007)
[4] Alalfi, M.H., Cordy, J.R., Dean, T.R.: A verification framework for access
control in dynamic web applications. In: Proceedings of the 2nd Canadian
Conference on Computer Science and Software Engineering. pp. 109–113.
ACM (2009)
[5] Alalfi, M.H., Cordy, J.R., Dean, T.R.: Automated verification of role-based
access control security models recovered from dynamic web applications. In:
Web Systems Evolution (WSE), 2012 14th IEEE International Symposium
on. pp. 1–10. IEEE (2012)
[6] Alalfi, M.H., Cordy, J.R., Dean, T.R.: Recovering role-based access control
security models from dynamic web applications. In: International Confer-
ence on Web Engineering. pp. 121–136. Springer (2012)
[7] Alex, B., Taylor, L.: Spring Security Reference Documentation 3.2.0 (2013)
[8] Ali, K., Lhoták, O.: Application-only call graph construction. In: Euro-
pean Conference on Object-Oriented Programming. pp. 688–712. Springer
(2012)
[9] Anand, P.: Overview of root causes of software vulnerabilities-technical and
user-side perspectives. In: 2016 International Conference on Software Se-
curity and Assurance (ICSSA). pp. 70–74. IEEE (2016)
[10] Andronick, J., Chetali, B., Paulin-Mohring, C.: Formal verification of se-
curity properties of smart card embedded source code. FM 3582, 302–317
(2005)
[11] Armando, A., Carbone, R., Chekole, E.G., Ranise, S.: Attribute based ac-
cess control for APIs in spring security. In: Proceedings of the 19th ACM
symposium on Access control models and technologies. pp. 85–88. ACM
(2014)
[12] Arnold, K., Gosling, J., Holmes, D.: The Java programming language. Ad-
dison Wesley Professional (2005)
114
[13] Basin, D., Clavel, M., Doser, J., Egea, M.: A metamodel-based approach for
analyzing security-design models. In: International Conference on Model
Driven Engineering Languages and Systems. pp. 420–435. Springer (2007)
[14] Basin, D., Doser, J., Lodderstedt, T.: Model driven security: From UML
models to access control infrastructures. ACM Transactions on Software
Engineering and Methodology (TOSEM) 15(1), 39–91 (2006)
[15] Besson, F., Jensen, T., Le Métayer, D., Thorn, T.: Model checking security
properties of control flow graphs. Journal of computer security 9(3), 217–
250 (2001)
[16] Bisht, P., Sistla, A.P., Venkatakrishnan, V.: Automatically preparing safe
SQL queries. In: International Conference on Financial Cryptography and
Data Security. pp. 272–288. Springer (2010)
[17] Biswas, P., Sandhu, R., Krishnan, R.: Attribute transformation for
attribute-based access control. In: Proceedings of the 2nd ACM Workshop
on Attribute-Based Access Control. pp. 1–8 (2017)
[18] Boadu, E.O., Armah, G.K.: Role-Based Access Control (Rbac) Based In
Hospital Management. International Journal of Software Engineering and
Knowledge Engineering 3, 53–67 (2014)
[19] Castelluccia, D., Mongiello, M., Ruta, M., Totaro, R.: Waver: A model
checking-based tool to verify web application design. Electronic notes in
theoretical Computer Science 157(1), 61–76 (2006)
[20] Charles, P., Pfleeger, S.L.: Analyzing Computer Security: A Threat/vul-
nerability/countermeasure Approach. Prentice Hall (2012)
[21] Chatley, R., Donaldson, A., Mycroft, A.: The next 7000 programming lan-
guages. In: Computing and Software Science, pp. 250–282. Springer (2019)
[22] Chaudhuri, A., Foster, J.S.: Symbolic security analysis of ruby-on-rails web
applications. In: Proceedings of the 17th ACM conference on Computer and
communications security. pp. 585–594 (2010)
[23] Chen, H., Wagner, D.: MOPS: an infrastructure for examining security
properties of software. In: Proceedings of the 9th ACM conference on Com-
puter and communications security. pp. 235–244. ACM (2002)
[24] Choi, E.H., Watanabe, H.: Model checking class specifications for web ap-
plications. In: Software Engineering Conference, 2005. APSEC’05. 12th
Asia-Pacific. pp. 9–pp. IEEE (2005)
[25] Chong, S., Vikram, K., Myers, A.C., et al.: SIF: Enforcing Confidentiality
and Integrity in Web Applications. In: USENIX Security Symposium. pp.
1–16 (2007)
115
[26] Di Sciascio, E., Donini, F.M., Mongiello, M., Piscitelli, G.: AnWeb: a sys-
tem for automatic support to web application verification. In: Proceedings
of the 14th international conference on Software engineering and knowledge
engineering. pp. 609–616. ACM (2002)
[27] Di Sciascio, E., Donini, F.M., Mongiello, M., Totaro, R., Castelluccia, D.:
Design verification of web applications using symbolic model checking. In:
International Conference on Web Engineering. pp. 69–74. Springer (2005)
[28] Dikanski, A., Steinegger, R., Abeck, S.: Identification and Implementa-
tion of Authentication and Authorization Patterns in the Spring Security
Framework. In: The Sixth International Conference on Emerging Security
Information, Systems and Technologies (SECURWARE 2012) (2012)
[29] Drouineaud, M., Bortin, M., Torrini, P., Sohr, K.: A first step towards
formal verification of security policy properties for RBAC. In: Fourth In-
ternational Conference onQuality Software, 2004. QSIC 2004. Proceedings.
pp. 60–67. IEEE (2004)
[30] D’Souza, D., Kim, Y.P., Kral, T., Ranade, T., Sasalatti, S.: Tool evaluation
report: Fortify (2014)
[31] Evans, D., Larochelle, D.: Improving security using extensible lightweight
static analysis. IEEE software 19(1), 42–51 (2002)
[32] Felmetsger, V., Cavedon, L., Kruegel, C., Vigna, G.: Toward automated
detection of logic vulnerabilities in web applications. In: USENIX Security
Symposium. vol. 58 (2010)
[33] Ferraiolo, D., Kuhn, D.R., Chandramouli, R.: Role-based access control.
Artech House (2003)
[34] Ferraiolo, D.F., Sandhu, R., Gavrila, S., Kuhn, D.R., Chandramouli, R.:
Proposed NIST standard for role-based access control. ACM Transactions
on Information and System Security (TISSEC) 4(3), 224–274 (2001)
[35] Fisler, K., Krishnamurthi, S., Meyerovich, L.A., Tschantz, M.C.: Verifica-
tion and change-impact analysis of access-control policies. In: Proceedings
of the 27th international conference on Software engineering. pp. 196–205.
ACM (2005)
[36] Fosdick, L.D., Osterweil, L.J.: Data flow analysis in software reliability. In:
Engineering of Software, pp. 49–85. Springer (2011)
[37] Gouglidis, A., Hu, V.C., Busby, J.S., Hutchison, D.: Verification of re-
silience policies that assist attribute based access control. In: Proceedings
of the 2nd ACM Workshop on Attribute-Based Access Control. pp. 43–52
(2017)
[38] Haldar, V., Chandra, D., Franz, M.: Dynamic taint propagation for Java.
In: 21st Annual Computer Security Applications Conference (ACSAC’05).
pp. 9–pp. IEEE (2005)
116
[39] Hall, A.A., Wright, C.S.: Data Security: A review of major security
breaches between 2014 and 2018. Federation of Business Disciplines Journal
pp. 50–63 (2018)
[40] Hansen, F., Oleshchuk, V.: Conformance checking of RBAC policy and
its implementation. In: International Conference on Information Security
Practice and Experience. pp. 144–155. Springer (2005)
[41] Hu, C.T., Ferraiolo, D.F., Kuhn, D.R., Schnitzer, A., Sandlin, K., Miller,
R., Scarfone, K.: Guide to Attribute Based Access Control (ABAC) Defi-
nition and Considerations [includes updates as of 02-25-2019]. Tech. rep.
(2019)
[42] Hu, V.: Attribute based access control (ABAC) definition and considera-
tions. Tech. rep., National Institute of Standards and Technology (2014)
[43] Hu, V.C., Ferraiolo, D., Kuhn, D.R.: Assessment of access control sys-
tems. US Department of Commerce, National Institute of Standards and
Technology (2006)
[44] Hu, V.C., Ferraiolo, D., Kuhn, R., Friedman, A.R., Lang, A.J., Cogdell,
M.M., Schnitzer, A., Sandlin, K., Miller, R., Scarfone, K., et al.: Guide to
attribute based access control (abac) definition and considerations (draft).
NIST special publication 800(162) (2013)
[45] Hu, V.C., Kuhn, D.R., Ferraiolo, D.F., Voas, J.: Attribute-based access
control. Computer 48(2), 85–88 (2015)
[46] Hu, V.C., Kuhn, R., Yaga, D.: Verification and test methods for access
control policies/models. NIST Special Publication 800, 192 (2017)
[47] Hughes, G., Bultan, T.: Automated verification of access control policies
using a sat solver. International Journal on Software Tools for Technology
Transfer (STTT) 10(6), 503–520 (2008)
[48] Idani, A.: Model driven secure web applications: the SeWAT platform.
In: Proceedings of the Fifth European Conference on the Engineering of
Computer-Based Systems. p. 3. ACM (2017)
[49] Jha, S., Sural, S., Atluri, V., Vaidya, J.: Specification and verification
of separation of duty constraints in attribute-based access control. IEEE
Transactions on Information Forensics and Security 13(4), 897–911 (2018)
[50] Jin, X., Krishnan, R., Sandhu, R.: A unified attribute-based access control
model covering DAC, MAC and RBAC. In: IFIP Annual Conference on
Data and Applications Security and Privacy. pp. 41–55. Springer (2012)
[51] Kauser, S., Rahman, A., Khan, A.M., Ahmad, T.: Attribute-Based Ac-
cess Control in Web Applications. In: Applications of Artificial Intelligence
Techniques in Engineering, pp. 385–393. Springer (2019)
117
[52] Kumar, I.R., SreeRam, N., Tech, J.R.K.M.: Enhancing The Development
Life Cycle To Produce Secure Software (2012)
[53] Lam, M.S., Martin, M., Livshits, B., Whaley, J.: Securing web applications
with static and dynamic information flow tracking. In: Proceedings of the
2008 ACM SIGPLAN symposium on Partial evaluation and semantics-
based program manipulation. pp. 3–12 (2008)
[54] Li, X., Xue, Y.: A survey on web application security. Nashville, TN USA
25(5), 1–14 (2011)
[55] Li, X., Xue, Y.: Block: a black-box approach for detection of state viola-
tion attacks towards web applications. In: Proceedings of the 27th Annual
Computer Security Applications Conference. pp. 247–256 (2011)
[56] Livshits, V.B., Lam, M.S.: Finding Security Vulnerabilities in Java Appli-
cations with Static Analysis. In: USENIX Security Symposium. vol. 14, pp.
18–18 (2005)
[57] Lodderstedt, T., Basin, D., Doser, J.: SecureUML: A UML-based modeling
language for model-driven security. In: International Conference on the
Unified Modeling Language. pp. 426–441. Springer (2002)
[58] Louridas, P.: Static code analysis. IEEE Software 23(4), 58–61 (2006)
[59] Ma, H., Xie, C.: A Design of Multi-level Structure Security Architecture
on Database Ap-plication System. Open Automation and Control Systems
Journal 6, 1510–1514 (2014)
[60] MacIntyre, C.R., Engells, T.E., Scotch, M., Heslop, D.J., Gumel, A.B.,
Poste, G., Chen, X., Herche, W., Steinho¨fel, K., Lim, S., et al.: Converging
and emerging threats to health security. Environment Systems and Deci-
sions 38(2), 198–207 (2018)
[61] Martin, E., Hwang, J., Xie, T., Hu, V.: Assessing quality of policy prop-
erties in verification of access control policies. In: 2008 Annual Computer
Security Applications Conference (ACSAC). pp. 163–172. IEEE (2008)
[62] Martínez, S., Cosentino, V., Cabot, J.: Model-based analysis of Java EE
web security configurations. In: 2016 IEEE/ACM 8th International Work-
shop on Modeling in Software Engineering (MiSE). pp. 55–61. IEEE (2016)
[63] Matulevicˇius, R., Dumas, M.: A Comparison of SecureUML and UMLsec
for Rolebased Access Control. In: Proceedings of the 9th Conference on
Databases and Information Systems. pp. 171–185 (2010)
[64] McGraw, G.: Software security: building security in, vol. 1. Addison-Wesley
Professional (2006)
[65] Mead, N.R., Allen, J.H., Barnum, S., Ellison, R.J., McGraw, G.: Software
Security Engineering: A Guide for Project Managers. Addison-Wesley Pro-
fessional (2004)
118
[66] Meng, N., Nagy, S., Yao, D., Zhuang, W., Arango-Argoty, G.: Secure coding
practices in java: Challenges and vulnerabilities. In: 2018 IEEE/ACM 40th
International Conference on Software Engineering (ICSE). pp. 372–383.
IEEE (2018)
[67] Mogensen, T.Æ.: Basics of compiler design. Torben Ægidius Mogensen
(2009)
[68] Mularien, P.: Spring Security 3. Packt Publishing Ltd (2010)
[69] Murthy, P.K.: Constructing a control flow graph for a software program
(Feb 3 2015), uS Patent 8,949,811
[70] Nabil, D., Slimani, H., Nacer, H., Aissani, D., Bey, K.B.: ABAC Conceptual
Graph Model for Composite Web Services. In: 2018 IEEE 5th International
Congress on Information Science and Technology (CiSt). pp. 36–41. IEEE
(2018)
[71] Nadji, Y., Saxena, P., Song, D.: Document Structure Integrity: A Robust
Basis for Cross-site Scripting Defense. In: NDSS. vol. 20 (2009)
[72] Parducci, B., Lockhart, H., Rissanen, E.: Extensible access control markup
language (XACML) version 3.0. OASIS Standard pp. 1–154 (2013)
[73] Patel, R.R.: Finding Security Vulnerabilities in Java Application with
Static Taint Analysis. Ph.D. thesis, Texas A&M University-Kingsville
(2018)
[74] Perrin, C.: The CIA triad. Dostopno na: techrepublic.
com/blog/security/the-cia-triad/488 (2008)
[75] Pistoia, M., Chandra, S., Fink, S.J., Yahav, E.: A survey of static analysis
methods for identifying security vulnerabilities in software systems. IBM
Systems Journal 46(2), 265–288 (2007)
[76] Pistoia, M., Fink, S.J., Flynn, R.J., Yahav, E.: When role models have
flaws: Static validation of enterprise security policies. In: 29th International
Conference on Software Engineering (ICSE’07). pp. 478–488. IEEE (2007)
[77] Principe, M., Yoon, D.: A Web Application Using MVC Framework. In:
Proceedings of the International Conference on e-Learning, e-Business, En-
terprise Information Systems, and e-Government (EEE). p. 10 (2015)
[78] Qamar, N., Faber, J., Ledru, Y., Liu, Z.: Automated reviewing of healthcare
security policies. In: International Symposium on Foundations of Health
Informatics Engineering and Systems. pp. 176–193. Springer (2012)
[79] Qamar, N., Ledru, Y., Idani, A.: Validation of security-design models using
Z. In: International Conference on Formal Engineering Methods. pp. 259–
274. Springer (2011)
119
[80] Rashid, F.Y.: Library misuse exposes leading java platforms to at-
tack (2017), https://www.infoworld.com/article/3003197/security/
library-misuse-exposes-leading-java-platforms-to-attack.html
[81] Robertson, W.K., Vigna, G.: Static Enforcement of Web Application In-
tegrity Through Strong Typing. In: USENIX Security Symposium. vol. 9,
pp. 283–298 (2009)
[82] Samuel, M., Saxena, P., Song, D.: Context-sensitive auto-sanitization in
web templating languages using type qualifiers. In: Proceedings of the 18th
ACM conference on Computer and communications security. pp. 587–600
(2011)
[83] Sandhu, R., Coyne, E., Feinstein, H., Role-Based, C.Y.: Access Control
Models. IEEE computer 29(2), 38–47 (2013)
[84] Saxena, P., Hanna, S., Poosankam, P., Song, D.: FLAX: Systematic Dis-
covery of Client-side Validation Vulnerabilities in Rich Web Applications.
In: NDss (2010)
[85] Saxena, P., Molnar, D., Livshits, B.: SCRIPTGARD: automatic context-
sensitive sanitization for large-scale legacy web applications. In: Proceed-
ings of the 18th ACM conference on Computer and communications secu-
rity. pp. 601–614 (2011)
[86] Scarioni, C.: Pro Spring Security. Apress (2013)
[87] Sergeev, A.: Role Based Access Control as SecureUML Model in Web Ap-
plications Development with Spring Security. Ph.D. thesis, Master thesis,
University of Tartu (2016)
[88] Sergeev, A., Matulevicius, R.: An Approach to Capture Role-Based Access
Control Models from Spring Web Applications. In: 2017 IEEE 21st Inter-
national Enterprise Distributed Object Computing Conference (EDOC).
pp. 159–164. IEEE (2017)
[89] Sharma, N.K., Joshi, A.: Representing attribute based access control poli-
cies in owl. In: 2016 IEEE Tenth International Conference on Semantic
Computing (ICSC). pp. 333–336. IEEE (2016)
[90] Shklar, L., Rosen, R.: Web application architecture. John Wiley & Sons
(2009)
[91] Shrestha, N., Alsadoon, A., Prasad, P., Hourany, L., Elchouemi, A.: En-
hanced e-health framework for security and privacy in healthcare system.
In: 2016 Sixth International Conference on Digital Information Processing
and Communications (ICDIPC). pp. 75–79. IEEE (2016)
[92] Shu, C.c., Yang, E.Y., Arenas, A.E.: Detecting conflicts in abac policies
with rule-reduction and binary-search techniques. In: 2009 IEEE Interna-
tional Symposium on Policies for Distributed Systems and Networks. pp.
182–185. IEEE (2009)
120
[93] Smelik, R., Rensink, A., Kastenberg, H.: Specification and construction of
control flow semantics. In: Visual Languages and Human-Centric Comput-
ing, 2006. VL/HCC 2006. IEEE Symposium on. pp. 65–72. IEEE (2006)
[94] So¨derberg, E., Ekman, T., Hedin, G., Magnusson, E.: Extensible intrapro-
cedural flow analysis at the abstract syntax tree level. Science of Computer
Programming 78(10), 1809–1827 (2013)
[95] Sohr, K., Drouineaud, M., Ahn, G.J.: Formal specification of role-based
security policies for clinical information systems. In: Proceedings of the
2005 ACM symposium on Applied computing. pp. 332–339 (2005)
[96] for Standardization, I.O.: Information Technology, Z Formal Specification
Notation: Syntax, Type System and Semantics. ISO/IEC (2002)
[97] Sui, L., Dietrich, J., Tahir, A., Fourtounis, G.: On the recall of static call
graph construction in practice. In: 2020 IEEE/ACM 42nd International
Conference on Software Engineering (ICSE). pp. 1049–1060. IEEE (2020)
[98] Sun, F., Xu, L., Su, Z.: Static Detection of Access Control Vulnerabilities
in Web Applications. In: USENIX Security Symposium. vol. 64 (2011)
[99] Symantec, C.: Internet security threat report 2019 (2014)
[100] Touseef, P., Ashraf, M.A., Rafiq, A.: Analysis of Risks against Web Appli-
cations in MVC. NFC IEFR Journal of Engineering and Scientific Research
5 (2017)
[101] Ubale Swapnaja, A., Modani Dattatray, G., Apte Sulabha, S.: Analysis of
dac mac rbac access control based models for security. International Journal
of Computer Applications 104(5), 6–13 (2014)
[102] Vaidya, R.: Cyber security breaches survey 2019 (2019)
[103] Wang, L., Wijesekera, D., Jajodia, S.: A logic-based framework for attribute
based access control. In: Proceedings of the 2004 ACM workshop on Formal
methods in security engineering. pp. 45–55 (2004)
[104] Wang, T., Li, W.h., Liu, Z.: RBAC Permission Consistency Static Analysis
Framework. In: 2010 International Conference on Multimedia Information
Networking and Security. pp. 506–510. IEEE (2010)
[105] Weinberger, J., Saxena, P., Akhawe, D., Finifter, M., Shin, R., Song, D.:
A systematic analysis of XSS sanitization in web application frameworks.
In: European Symposium on Research in Computer Security. pp. 150–171.
Springer (2011)
[106] Wilander, J., et al.: Pattern matching security properties of code using
dependence graphs. In: Proceedings of the First International Workshop
on Code Based Software Security Assessments. Citeseer (2005)
121
[107] Wo¨gerer, W.: A survey of static program analysis techniques. Tech. rep.,
Tech. rep., Technische Universita¨t Wien (2005)
[108] Xu, D., Zhang, Y.: Specification and analysis of attribute-based access con-
trol policies: An overview. In: 2014 IEEE Eighth International Conference
on Software Security and Reliability-Companion. pp. 41–49. IEEE (2014)
122
Các file đính kèm theo tài liệu này:
- luan_an_mot_so_phuong_phap_kiem_chung_cac_chinh_sach_dieu_kh.pdf