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
ĐẠ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ỨNG CÁ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ỨNG CÁ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 Ninh 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4. Cấu trúc luận án . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
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
Control
Access Điều khiển truy cập dựa trên thuộc
tính
API
Application Programming Giao diện lập trình ứng dụng
Interface
AST
CFG
DAC
Abstract Syntax Tree
Control Flow Graph
Cây cú pháp trừu tượng
Đồ thị luồng điều khiển
Discretionary Access Con- Điều khiển truy cập tùy ý
trol
FSA
Finite State Automata
Ôtômat hữu hạn trạng thái
HTML
Hypertext Markup Lan- Ngôn ngữ đánh dấu siêu văn bản
guage
IEC
ISO
International Electrotechni- Uỷ ban kỹ thuật điện quốc tế
cal Commission
International Organization Tổ chức tiêu chuẩn hoá quốc tế
for Standardization
MAC
MVC
NIST
Mandatory Access Control
Model-View-Controller
Điều khiển truy cập bắt buộc
Mô hình-Khung nhìn-Bộ điều khiển
National Institute of Stan- Viện Tiêu chuẩn và Kĩ thuật Quốc
dards and Technology
Push Down Automaton
Policy Decision Point
Policy Enforcement Point
gia Mỹ
PDA
PDP
PEP
PDG
PHP
Ôtômat đẩy xuống
Điểm quyết định chính sác
Điểm thực thi chính sách
Program Dependence Graph Đồ thị phụ thuộc chương trình
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
OASIS
Role-Based Access Control
Điều khiển truy cập dựa trên vai trò
Organization for the Ad- Tổ chức cải tiến các tiêu chuẩn
vancement of Structured In- thông tin có cấu trúc
formation Standards
viii
SDG
SoD
System Dependence Graph Đồ thị phụ thuộc hệ thống
Separation of Duties Phân chia nhiệm vụ
SpEL
SQL
Spring Expression Language Ngôn ngữ biểu thức Spring
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
URL
XACML
Unified Modeling Language Ngôn ngữ mô hình hóa thống nhất
Uniform Resource Locator Định vị tài nguyên thống nhất
eXtensible Access Control Ngôn ngữ đánh dấu kiểm soát truy
Markup Language cập mở rộng
XML
Extensible Markup Lan- Ngôn ngữ đánh dấu mở rộng
guage
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ống đã được đặc tả nhất quán và đầy đủ với các yêu cầu của các
tổ chức. Các phương pháp chính được sử dụng trong quá trình thực hiện luận
án là phân tích mã nguồn, mô hình hóa và so sánh. Ngoài mục đích kiểm tra sự
phù hợp của chính sách truy cập được triển khai và đặc tả, các phương pháp đề
xuất của luận án còn cung cấp các thông tin về các quy tắc truy cập đã triển
khai không chính xác (nếu có) để giúp các nhà lập trình có thể lần vết và thực
hiện các điều chỉnh kịp thời.
Đối tượng nghiên cứu của luận án là chính sách điều khiển truy cập của hệ
thống web. Cụ thể là chính sách điều khiển truy cập theo vai trò và chính sách
điều khiển truy cập theo thuộc tính. Đồng thời, luận án quan tâm đến các mô
hình biểu diễn, đặc tả chính sách và các phương pháp triển khai chính sách trong
hệ thống ứng dụng. Từ đó, mã nguồn của ứng dụng được phân tích, tổng hợp
và kiểm chứng.
1.2. Nội dung nghiên cứu
Kiểm soát truy cập đã được chứng minh trong thực tiễn là một trong những
kỹ thuật hiệu quả để ngăn chặn các vi phạm truy cập nhằm đảm bảo các 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. Trong thực
tế, có nhiều mô hình kiểm soát truy cập đã được đề xuất [50, 83, 101] nhưng
điều khiển truy cập theo vai trò (RBAC) và điều khiển truy cập theo thuộc tính
(ABAC) là hai mô hình được triển khai phổ biến và hiệu quả trong các hệ thống
ứng dụng [44]. Tuy nhiên, việc đảm bảo tính chính xác của những chính sách
4
điều khiển truy cập này được triển khai trong các hệ thống ứng dụng ở giai đoạn
lập trình luôn là một thách thức lớn đối với các nhà phát triển phần mềm.
Bên cạnh đó, với nhiều thư viện được tích hợp để hỗ trợ cho việc triển khai
các chính sách điều khiển truy cập được an toàn, ngôn ngữ lập trình Java cũng
được các nhà lập trình thường lựa chọn để phát triển các sản phẩm của họ. Khi
đó, chính sách điều khiển truy cập của hệ thống có thể được triển khai theo
phương pháp an ninh lập trình và/hoặc an ninh khai báo theo kiến trúc MVC,
khung làm việc Spring Security. Vì thế, phạm vi nghiên cứu của luận án là các
hệ thống web được phát triển bởi JavaEE theo kiến trúc MVC, khung làm việc
Spring Security. Để hoàn thành các mục tiêu đã đề ra, luận án tập trung nghiên
cứu các nội dung chính sau:
Nghiên cứu các mô hình biểu diễn các chính sách điều khiển truy cập của
hệ thống phần mềm: điều khiển truy cập theo vai trò, ngôn ngữ mô hình
hóa chính sách an ninh thống nhất (SecureUML), điều khiển truy cập theo
thuộc tính.
Nghiên cứu các phương pháp an ninh lập trình, an ninh khai báo để triển
khai chính sách RBAC, ABAC của các hệ thống web theo mô hình kiến
trúc MVC, khung làm việc Spring Security.
Đề xuất các phương pháp phân tích mã nguồn, biểu diễn chính sách điều
khiển truy cập của hệ thống web.
Đề xuất các thuật toán kiểm tra sự phù hợp của mô hình chính sách điều
khiển truy cập của hệ thống web và đặc tả.
Cài đặt các công cụ theo các phương pháp đã đề xuất để hỗ trợ quá trình
kiểm chứng tự động.
1.3. Đóng góp của luận án
Sau quá trình giải quyết bài toán với mục tiêu, đối tượng và phương pháp
nghiên cứu đã đề ra, luận án có các đóng góp chính sau đây:
(i) Đề xuất 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. Các phương thức khai thác tài nguyên trong ứng
dụng web được trích rút thành danh sách quyền truy cập tài nguyên. Sau
đó kết hợp với thành phần Controller và V iew để xây dựng đồ thị khai
5
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của 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", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
luan_an_mot_so_phuong_phap_kiem_chung_cac_chinh_sach_dieu_kh.pdf

