ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN MẠNH
ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT
.NET VÀO HỆ THỐNG QUẢN LÝ VÀ LUÂN CHUYỂN VĂN
BẢN NỘI BỘ TẠI GPBANK
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội – 2019
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN MẠNH
ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT
.NET VÀO HỆ THỐNG QUẢN LÝ VÀ LUÂN CHUYỂN VĂN
BẢN NỘI BỘ TẠI GPBANK
Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ Thuật Phần Mềm
Mã số: 8480103.01
LUẬN VĂN THẠC 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 – 2019
1
LỜI CẢM ƠN
Đầu tiên, tơi xin bày tỏ lịng cảm ơn chân thành và sâu sắc nhất đến PGS.TS
Trương Ninh Thuận vì sự hướng dẫn và chỉ bảo tận tình cùng với những định hướng,
những lời khuyên, những kiến thức vơ cùng q giá của Thầy trong q trình em theo
học cũng như làm luận văn tốt nghiệp.
Tôi xin được gửi lời cảm ơn tới các Thầy Cô trong khoa Công nghệ thông tin trường Đại học Công Nghệ - Đại học Quốc gia Hà Nội nói chung cũng như các thầy cơ
trong bộ mơn Cơng nghệ Phần mềm nói riêng đã tận tình giảng dạy, trang bị cho tơi
những kiến thức q báu trong suốt q trình tơi học tập tại khoa. Đây cũng chính là
tiền đề để tơi có được những kiến thức cần thiết để hồn thiện luận văn này.
Cuối cùng, tôi cũng xin được gửi lời cảm ơn chân thành đến các anh chị em đồng
nghiệp cũng như gia đình, bạn bè, người thân đã giúp đỡ tôi cả về vật chất lẫn tinh
thần để tôi hoàn thành được luận văn này.
Mặc dù đã rất cố gắng nhưng luận văn chắc chắn không tránh khỏi những thiếu
sót, tơi rất mong nhận được những ý kiến đánh giá và phê bình từ phía các Thầy Cơ để
luận văn được hồn thiện hơn.
Tơi xin chân thành cảm ơn!
Hà nội, tháng 05 năm 2019
Học viên
Trần Mạnh
2
LỜI CAM ĐOAN
Tôi xin cam đoan luận văn tốt nghiệp với đề tài “Ứng dụng kỹ thuật bảo mật
trong Microsoft .NET vào Hệ thống quản lý và luân chuyển văn bản nội bộ tại
GPBank” này là cơng trình nghiên cứu của riêng tôi dưới sự hướng dẫn của PGS.TS
Trương Ninh Thuận. Các kết quả tơi trình bày trong luận văn là hoàn toàn trung thực
và chưa từng được được nộp như một khóa luận, luận văn hay luận án tại trường Đại
học Công Nghệ - Đại học Quốc Gia Hà Nội hoặc bất kỳ trường đại học nào khác.
Tôi đã trích dẫn đầy đủ các tài liệu tham khảo, các cơng trình nghiên cứu liên
quan ở trong nước và quốc tế trong phần tài liệu tham khảo. Ngoại trừ các tài liệu tham
khảo này, luận văn này hoàn toàn là cơng việc của riêng tơi.
Nếu có bất cứ phát hiện nào về sự gian lận sao chép tài liệu, công trình nghiên
cứu của tác giả khác mà khơng ghi rõ trong phần tài liệu tham khảo, tơi xin chịu hồn
tồn trách nhiệm về kết quả luận văn của mình.
Hà nội, tháng 05 năm 2019
Học viên
Trần Mạnh
3
MỤC LỤC
LỜI CẢM ƠN ..................................................................................................................1
LỜI CAM ĐOAN ............................................................................................................2
MỤC LỤC .......................................................................................................................3
DANH SÁCH KÝ HIỆU, CHỮ VIẾT TẮT ...................................................................6
DANH SÁCH HÌNH VẼ.................................................................................................7
DANH SÁCH BẢNG......................................................................................................9
Chương 1: Giới thiệu .....................................................................................................10
1.1. Tính cấp thiết của đề tài ......................................................................................10
1.2. Mục tiêu và phạm vi nghiên cứu .........................................................................11
1.3. Hướng nghiên cứu và cách giải quyết .................................................................11
1.4. Cấu trúc của luận văn ..........................................................................................12
Chương 2: TỔNG QUAN VỀ BẢO MẬT HỆ THỐNG PHẦN MỀM ........................13
2.1. Sự cần thiết đối với bảo mật máy tính ................................................................13
2.2. Các khái niệm cơ bản ..........................................................................................13
2.2.1. Lỗ hổng bảo mật ...........................................................................................13
2.2.2. Khai thác lỗ hổng ..........................................................................................14
2.2.3. Nguy cơ và rủi ro ..........................................................................................14
2.2.4. Tấn công .......................................................................................................15
2.2.5. Hacker ...........................................................................................................16
2.3. Các lỗ hổng phần mềm quan trọng .....................................................................16
2.3.1. SQL Injection................................................................................................16
2.3.2. OS Command Injection ................................................................................17
2.3.3. Buffer overflow ............................................................................................17
2.4. Các kiểu tấn công ................................................................................................17
2.4.1. Tấn công Brute-Force ...................................................................................17
2.4.2. Tấn công xác thực .........................................................................................18
2.4.3. Tấn công giả mạo..........................................................................................19
2.4.4. Tấn công từ chối dịch vụ ..............................................................................20
2.4.5. Tấn công cuộc gọi thủ tục từ xa (Remote Procedure Call attack) ................20
2.4.6. Tấn công tiêm mã (Code injection) .............................................................20
2.5. Lập trình bảo mật ................................................................................................20
2.5.1. Các thuộc tính bảo mật .................................................................................20
2.5.2. Lập trình an tồn ...........................................................................................22
4
2.6. Kết luận ...............................................................................................................22
Chương 3: BẢO MẬT HỆ THỐNG PHẦN MỀM TRONG .NET ..............................23
3.1. Tổng quan kiến trúc bảo mật hệ thống phần mềm ..............................................23
3.1.1. Vòng đời phát triển .......................................................................................23
3.1.2. Phân tích yêu cầu bảo mật ............................................................................24
3.1.3. Thiết kế bảo mật ...........................................................................................25
3.1.4. Đánh giá bảo mật ..........................................................................................29
3.1.5. Kiểm thử bảo mật .........................................................................................30
3.2. Bảo mật trong .NET ............................................................................................32
3.2.1. .NET Framework ..........................................................................................32
3.2.2. .NET Runtime security .................................................................................34
3.2.3. Kiến trúc bảo mật .NET ................................................................................34
3.2.4. Thư viện bảo mật trong .NET .......................................................................45
3.3. Một số kiểu tấn công ứng dụng Web ..................................................................47
3.3.1. SQL Injection................................................................................................48
3.3.2. Cross-site scripting (XSS) ............................................................................48
3.3.3. HTTP Harvesting ..........................................................................................49
3.4. Kết luận ...............................................................................................................49
Chương 4: MỘT MƠ HÌNH ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG
MICROSOFT .NET TẠI GPBANK .............................................................................50
4.1. Mơ tả bài tốn......................................................................................................50
4.1.1. Mục đích .......................................................................................................50
4.1.2. Phạm vi .........................................................................................................50
4.1.3. Yêu cầu cụ thể ..............................................................................................51
4.1.4. Giải pháp .......................................................................................................52
4.2. Phân tích nghiệp vụ .............................................................................................52
4.2.1. Mơ tả chức năng ...........................................................................................52
4.2.2. Quy trình luân chuyển yêu cầu chuyển tiền .................................................53
4.2.3. Biểu đồ ca sử dụng .......................................................................................56
4.2.4. Biểu đồ lỗ hổng ca sử dụng ..........................................................................60
4.2.5. Các Module chức năng hệ thống ..................................................................60
4.3. Thiết kế hệ thống .................................................................................................61
4.3.1. Mơ hình tổng thể hệ thống ............................................................................61
4.3.2. Mơ hình chức năng .......................................................................................61
4.3.3. Kiến trúc hệ thống ........................................................................................62
5
4.4. Xây dựng hệ thống thử nghiệm ...........................................................................62
4.4.1. Môi trường cài đặt, triển khai .......................................................................62
4.4.2. Màn hình giao diện .......................................................................................62
4.4.3. Đánh giá khả năng an toàn và bảo mật của hệ thống ...................................64
4.4.4. Một số Test case về an toàn và bảo mật của hệ thống ..................................72
4.5. Kết luận ...............................................................................................................74
Chương 5: KẾT LUẬN .................................................................................................75
TÀI LIỆU THAM KHẢO .............................................................................................76
6
DANH SÁCH KÝ HIỆU, CHỮ VIẾT TẮT
Ký hiệu
Thuật ngữ
Ý nghĩa
CNTT
Công nghệ thơng tin
Code
Mã (trong phần mềm)
Client
Máy trạm
CN/PGD
Chi nhánh/Phịng giao dịch
DDoS
Distributed Denial of Service
Tấn công từ chối dịch vụ
DoS
Denial of Service
Từ chối dịch vụ
GPBank
Ngân hàng TM TNHH MTV
Dầu Khí Tồn Cầu
Hacker
Tin tặc
HĐH
Hệ điều hành
HTTP
Hypertext Transfer Protocol
Giao thức truyền siêu văn bản
HTTPS
Hypertext Transfer Protocol
Secure
Bảo mật giao thức truyền siêu
văn bản
NTFS
Window NT File System
Hệ thống file Window
Máy chủ
Server
SSL
Secure Socket Layer
Trụ sở chính
TSC
TSL
TT 18/2018
Bảo mật lớp cổng
Transport Layer Securrity
Bảo mật lớp vận chuyển
Thông tư số 18/2018/TTNHNN ngày 21/08/2018 Quy
định về an tồn hệ thống
thơng tin trong hoạt động
Ngân hàng
7
DANH SÁCH HÌNH VẼ
Hình 2.1: Tấn cơng chủ động. .......................................................................................15
Hình 2.2: Tấn cơng thụ động. ........................................................................................16
Hình 3.1: Các bước xây dựng một hệ thống bảo mật. ...................................................23
Hình 3.2: Xác định quyền dựa trên vai trị của người dùng. .........................................28
Hình 3.3: Bảo mật ứng dụng web .NET. .......................................................................35
Hình 3.4: Cơ chế degest gửi password. .........................................................................36
Hình 3.5: Ví dụ cài đặt file web.config. ........................................................................38
Hình 3.6: Ví dụ về cài đặt xác thực Forms. ...................................................................39
Hình 3.7: Ví dụ về cài đặt chứng thực. ..........................................................................40
Hình 3.8: Các dịch vụ bảo mật ASP.NET. ....................................................................41
Hình 3.9: Cấu hình xác thực Token...............................................................................43
Hình 3.10: Cấu hình xác thực PKI X.509 Certificate. ..................................................43
Hình 3.11: Kiến trúc bảo mật SQL Server. ...................................................................44
Hình 3.12: Mã hóa và giải mã với 1 khóa. ....................................................................45
Hình 3.13a: Mã hóa với Public key và giải mã với Private key. ...................................46
Hình 3.13b: Mã hóa với Private key và giải mã với Public key....................................47
Hình 4.1: Quy trình tạo yêu cầu chuyển tiền. ................................................................54
Hình 4.2: Quy trình kiểm tra, xác nhận yêu cầu............................................................55
Hình 4.3: Ca sử dụng các module trong hệ thống. ........................................................57
Hình 4.4: Ca sử dụng Quản lý phịng ban. ....................................................................57
Hình 4.5: Ca sử dụng Quản lý khóa ký. ........................................................................58
Hình 4.6: Ca sử dụng Quản lý ln chuyển yêu cầu chuyển tiền..................................58
Hình 4.7: Ca sử dụng Thống kê – báo cáo. ...................................................................59
Hình 4.8: Ca sử dụng Quản lý người dùng....................................................................59
Hình 4.9: Ca sử dụng Cấu hình hệ thống. .....................................................................60
Hình 4.10: Lỗ hổng ca sử dụng. ....................................................................................60
Hình 4.11: Mơ hình tổng thể hệ thống. .........................................................................61
Hình 4.12: Mơ hình chức năng. .....................................................................................61
Hình 4.13: Kiến trúc hệ thống. ......................................................................................62
Hình 4.14: Giao diện đăng nhập hệ thống. ....................................................................63
Hình 4.15: Giao diện nhập yêu cầu chuyển tiền............................................................63
Hình 4.16: Giao diện xác nhận yêu cầu chuyển tiền. ....................................................64
Hình 4.17: Thiết kế bảng các tham số hệ thống cấu hình mật khẩu người sử dụng. ....65
Hình 4.18: Thiết kế cấu hình thơng tin User. ................................................................65
8
Hình 4.19: Mã hóa mật khẩu lưu vào Cơ sở dữ liệu. ....................................................66
Hình 4.20: Sử dụng Store procedure xác thực người dùng. ..........................................66
Hình 4.21: Sử dụng Validation control, giới hạn độ dài và hủy bỏ Autocomplete. ......67
Hình 4.22: Thiết lập phịng chống tấn cơng Cross-Site Scripting. ................................67
Hình 4.23: Mã hóa xâu kết nối Cơ sở dữ liệu trong file web.config. ............................68
Hình 4.24: Mã xâu kết nối Cơ sở dữ liệu lưu vào Registry...........................................69
Hình 4.25: Cấu hình bảo mật trong file web.config. .....................................................69
Hình 4.26: Cấu hình ghi nhật ký. ..................................................................................70
Hình 4.27: Tạo mã TestKey với độ dài 8 ký tự. ............................................................70
Hình 4.28a: Mã hóa file sử dụng thư viện Rfc2898DeriveBytes. .................................71
Hình 4.28b: Giải mã file sử dụng thư viện Rfc2898DeriveBytes. ................................71
9
DANH SÁCH BẢNG
Bảng 4.1: Mô tả bảng tham số cấu hình mật khẩu cho User. ........................................64
Bảng 4.2: Mơ tả bảng tham số cấu hình cho User. ........................................................65
Bảng 4.3: Kết quả thực hiện Test lỗ hổng SQL Injection. ............................................72
Bảng 4.4: Kết quả thực hiện Test lỗ hổng Cross-Site Scripting. ...................................73
10
Chương 1: Giới thiệu
1.1. Tính cấp thiết của đề tài
Ngày nay, công nghệ thông tin đang được ứng dụng ngày càng nhiều và ảnh
hưởng sâu sắc đến mọi mặt của đời sống. Chúng ta có thể thấy cơng nghệ thơng tin
được áp dụng trong hầu hết các lĩnh vực của cuộc sống, từ trò chơi điện tử được thiết
kế để đáp ứng nhu cầu giải trí, các ứng dụng soạn thảo văn bản hỗ trợ việc xử lý các
công việc văn phòng, đến các ứng dụng áp dụng trong quá trình quản trị, điều hành các
hoạt động sản xuất kinh doanh của mỗi doanh nghiệp. Với mục đích nâng cao tính
hiệu quả trong hoạt động sản xuất kinh doanh, ứng dụng cơng nghệ thơng tin vào q
trình quản trị, điều hành các hoạt động sản xuất kinh doanh đòi hỏi tính liên tục cao,
hạn chế tối đa những gián đoạn có thể xảy ra, vì chỉ cần một lỗi nhỏ cũng có thể làm
gián đoạn hoạt động sản xuất kinh doanh gây ra thiệt hại về kinh tế cho doanh nghiệp.
Trong thời gian vừa qua, vấn đề an toàn, an ninh thông tin và chủ quyền quốc gia
là vấn đề thời sự cấp bách với Việt Nam khi chúng ta phải đối mặt với hàng loạt các
cuộc tấn công từ quốc tế. Đặc biệt với những hệ thống nhạy cảm như an ninh quốc
phòng, sân bay hay ngân hàng là những hệ thống cần phải được tăng cường bảo đảm
an tồn nếu khơng muốn gây ra những thiệt hại lớn về kinh tế hay an ninh quốc phòng.
Ngày 21/08/2018, Thống đốc Ngân hàng Nhà nước đã ký ban hành Thông tư
18/2018/TT-NHNN quy định về an tồn hệ thống thơng tin trong hoạt động ngân
hàng, thay thế thông tư số 31/2015/TT-NHNN ngày 28/12/2015 quy định về đảm bảo
an toàn, bảo mật hệ thống công nghệ thông tin trong hoạt động ngân hàng. Thông tư
18/2018/TT-NHNN được ban hành nhằm cập nhật các quy định mới của Luật An tồn
thơng tin mạng và các văn bản hướng dẫn đồng thời phản ánh đầy đủ, sát thực hơn các
yêu cầu về an ninh bảo mật trong tình hình mới, phù hợp với thực tế phát triển nhanh
chóng, đa dạng về cơng nghệ thơng tin [1]. Nội dung của TT 18/2018 quy định về an
toàn và bảo mật đối với hệ thống ứng dụng như:
Ghi nhật ký hoạt động của hệ thống thông tin và người sử dụng.
Quản lý truy cập hệ thống thông tin và ứng dụng.
Quy định về quản lý mã khóa bí mật.
Tháng 11/2018, GPBank cũng đã xây dựng và triển khai Quy định an tồn và bảo
mật thơng tin nhằm đáp ứng và tuân thủ các quy định của thông tư 18/2018/TT-NHNN
của Ngân hàng Nhà nước. Nội dung của Quy định cũng quy định liên quan đến an toàn
và bảo mật hệ thống ứng dụng như:
Giám sát và ghi nhật ký hoạt động của hệ thống.
Quản lý truy cập
Quy định đặt mật khẩu
Quy định về đảm bảo an toàn, bảo mật cho hệ thống ứng dụng
11
Quy định về sử dụng các giải thuật trong mã hóa.
Một số hệ thống ứng dụng nghiệp vụ tại GPBank được xây dựng và phát triển từ
cách đây khoảng 12 năm, hiện tại hệ thống không đáp ứng được các yêu cầu quản lý
mới về nghiệp vụ và không tuân thủ đầy đủ các quy định mới nhất về an tồn bảo mật
hệ thống ứng dụng. Do đó, xây dựng và phát triển mới hệ thống ứng dụng nghiệp vụ
đáp ứng được yêu cầu nghiệp vụ mới và tuân thủ các quy định về an toàn bảo mật càng
trở lên cấp thiết.
1.2. Mục tiêu và phạm vi nghiên cứu
Hệ thống TestKey Management System (TMS) là hệ thống thực hiện quản lý các
yêu cầu chuyển tiền thanh toán quốc tế của khách hàng. Hệ thống này được xây dựng
và phát triển từ năm 2006, hiện tại hệ thống không đáp ứng được các yêu cầu quản lý
mới về nghiệp vụ và không tuân thủ các quy định mới nhất về an tồn bảo mật hệ
thống ứng dụng. Thêm vào đó, phịng Thanh tốn quốc tế tại TSC cần xây dựng mới
hệ thống TMS quản lý tâp đáp ứng được yêu cầu mới về nghiệp vụ và tuân thủ các quy
định về an toàn bảo mật của hệ thống ứng dụng theo TT 18/2018 và Quy định an toàn
bảo mật hệ thống thông tin của GPBank.
Mục tiêu của luận văn là nghiên cứu xây dựng và phát triển mới hệ thống
TestKey Management System đáp ứng được yêu cầu mới về nghiệp vụ và tuân thủ các
quy định về an toàn bảo mật. Trong phạm vi luận văn này sẽ tập trung nghiên cứu xây
dựng và phát triển hệ thống TMS dạng ứng dụng web để đảm bảo việc hỗ trợ, vận
hành và quản trị hệ thống tập trung. Luận văn cũng nghiên cứu các kỹ thuật bảo mật
theo yêu cầu của TT 18/2018 và Quy định an tồn bảo mật thơng tin của GPBank để
ứng dụng vào hệ thống TMS.
1.3. Hướng nghiên cứu và cách giải quyết
Việc lựa chọn công nghệ để xây dựng hệ thống ứng dụng cũng được đặt ra để
làm sao đáp ứng được yêu cầu. Xây dựng và phát triển các ứng dụng web là giải pháp
để giải quyết các bài toán yêu cầu xây dựng hệ thống quản lý nghiệp vụ tập trung từ
các phòng ban nghiệp vụ tại TSC của GPBank. Các ứng dụng nghiệp vụ web cho phép
người phát triển ứng dụng và cài đặt các giải pháp bảo mật tập trung đảm bảo tuân thủ
theo quy định của Ngân hàng Nhà nước và GPBank, đồng thời đối với ứng dụng web
thì người dùng khơng cần cài đặt mà chỉ cần sử dụng trình duyệt để đăng nhập và sử
dụng hệ thống.
Hiện nay, có một số ngôn ngữ cho phép các nhà phát triển xây dựng các ứng
dụng web như PHP, NodeJS, Java, .Net,… Tuy nhiên các ứng dụng nghiệp vụ tại
GPBank đa phần được xây dựng và phát triển trên nền tảng Microsoft .NET trong đó
chủ yếu là ASP.NET. Vì vậy, việc lựa chọn công nghệ ASP.NET của Microsoft để xây
dựng hệ thống quản lý và luân chuyển văn bản nội bộ tại GPBank, cụ thể ở đây là xây
12
dựng hệ thống TestKey Management System (TMS). Việc lựa chọn xây dựng ứng
dụng TMS trên nền tảng ASP.NET cũng là để phù hợp với hệ thống hạ tầng hiện tại và
tránh phát sinh thêm chi phí. Ngồi ra, .NET cũng cung cấp đầy đủ công cụ và các thư
viện cho phép xây dựng và ứng dụng nhằm đáp ứng các yêu cầu về an toàn và bảo mật
cho hệ thống ứng dụng.
1.4. Cấu trúc của luận văn
Trong khuôn khổ luận văn này tơi tập trung trình bày những khái niệm tổng quan
về bảo mật phần mềm, kiến trúc bảo mật hệ thống phần mềm, một số lỗ hổng phần
mềm quan trọng và một số kiểu tấn cơng. Trình bày về bảo mật trong Microsoft .NET,
bảo mật ASP.NET, đồng thời ứng dụng các kỹ thuật bảo mật của ASP.NET vào “Hệ
thống Quản lý và luân chuyển văn bản nội bộ tại GPBank”. Luận văn được trình bày
trong 6 chương:
Chương 1: Giới thiệu tổng quan luận văn, lý do chọn đề tài, mục tiêu, phạm vi và
hướng giải quyết của luận văn.
Chương 2: Giới thiệu những khái niệm tổng quan về bảo mật trong hệ thống
phần mềm, các lỗ hổng bảo mật cũng như các kiểu tấn công.
Chương 3: Giới thiệu tổng quan về kiến trúc bảo mật hệ thống phần mềm, tổng
quan về bảo mật trong Microsoft .Net, bảo mật trong ASP.NET.
Chương 4: Một mơ hình ứng dụng kỹ thuật bảo mật trong ASP.NET của
Microsoft tại GPBank.
Chương 5: Tóm tắt kết quả thu được qua luận văn.
13
Chương 2: TỔNG QUAN VỀ BẢO MẬT HỆ THỐNG PHẦN MỀM
2.1. Sự cần thiết đối với bảo mật máy tính
Các máy tính ngày nay được sử dụng để quản lý nhiều chức năng từ các tài
khoản ngân hàng đến các hồ sơ sức khỏe. Chúng ta giữ thẻ tín dụng của chúng ta an
tồn để khơng ai có thể đánh cắp được chúng. Tuy nhiên, với sự ra đời của Thương
mại điện tử, người ta có thể mua hàng hóa mà khơng cần thẻ tín dụng vật lý. Ngày nay,
một tên tội phạm khơng cần đánh cắp thẻ tín dụng vật lý, chúng chỉ cần biết chi tiết
thông tin thẻ tín dụng đó. Do đó, chúng cần đảm bảo rằng máy tính lưu trữ thơng tin
thẻ tín dụng cần được bảo mật.
Các máy tính được sử dụng để quản lý và lưu trữ nhiều thơng tin, từ giải trí đến
thơng tin công ty, từ thông tin cá nhân đến giấy phép lái xe, tất cả đều được duy trì bởi
máy tính. Nếu chúng ta khơng bảo mật và bảo vệ máy tính, chúng ta có nguy cơ bị tấn
cơng và mất mát dữ liệu.
2.2. Các khái niệm cơ bản
Bảo mật (Security) là các biện pháp được thiết lập để bảo vệ một ứng dụng/hệ
thống ứng dụng chống lại các hành động khơng lường trước được cho rằng các hành
động đó sẽ ảnh hưởng hoặc phá hủy ứng dụng/hệ thống ứng dụng. Hành động khơng
lường trước có thể là cố ý hoặc vơ ý.
Trong phần này luận văn trình bày một số khái niệm liên quan đến bảo mật trong
hệ thống phần mềm [2].
2.2.1. Lỗ hổng bảo mật
Các lỗ hổng bảo mật là những điểm yếu trong hệ thống hoặc ẩn chứa trong một
dịch vụ hệ thống đó cung cấp, dựa vào đó tin tặc có thể khai thác xâm nhập trái phép
để thực hiện các hành động phá hoại hoặc chiếm đoạt tài nguyên bất hợp pháp.
Đối với một hệ thống máy tính, lỗ hổng có thể ở bất cứ đâu. Nó có thể trong một
chương trình người dùng, trong một Hệ điều hành (Windows XP, Windows NT,
UNIX), trong cơ sở dữ liệu, hoặc do người quản trị yếu kém không hiểu sâu sắc các
dịch vụ cung cấp và/hoặc do người sử dụng có ý thức bảo mật kém.
Đối với lỗ hổng phần mềm, đây là lỗ hổng liên quan đến lỗi (bug) trong phần
mềm. Bug là lỗi code khiến hệ thống thực hiện một hành động không mong muốn. Các
bug này có thể khiến hệ thống gặp sự cố, kết nối bị lỗi, không đăng nhập được, nâng
cao đặc quyền người dùng hoặc cấp quyền truy cập trái phép vào hệ thống.
Mức độ ảnh hưởng của các lỗ hổng là khác nhau. Có những lỗ hổng chỉ ảnh
hưởng đến chất lượng dịch vụ cung cấp, có những lỗ hổng ảnh hưởng nghiêm trọng
đến toàn bộ hệ thống… các lỗ hổng bảo mật sẽ là các điểm yếu có thể tạo ra sự ngưng
trệ của dịch vụ.
14
2.2.2. Khai thác lỗ hổng
Một khi xác định được lỗ hổng, tin tặc có thể viết ra một chương trình lợi dụng
lỗi để xâm nhập và chiếm quyền kiểm soát thiết bị. Tội phạm mạng tìm điểm yếu trong
các phần mềm bảo vệ hệ thống, có thể là một kết nối mạng không được bảo vệ đúng
cách. Nếu tin tặc có thể tiếp cận máy tính mục tiêu, chúng có thể tìm hiểu về hệ thống
đó. Làm thế giúp chúng xác định các phương pháp tiếp cận riêng - truy cập các tệp tin
cụ thể hay chạy các chương trình nhất định - từ đó chúng có thể kiểm sốt máy tính và
dữ liệu.
Trong những năm gần đây, tin tặc bắt đầu nhắm mục tiêu vào các trình duyệt
web bởi những phần mềm này được phép kết nối Internet và thường được cho phép để
chạy các chương trình nhỏ; do đó tồn tại rất nhiều lỗ hổng có thể bị khai thác. Những
lỗ hổng ban đầu có thể cho phép tin tặc kiểm sốt máy tính mục tiêu, trước khi lấy đó
làm bàn đạp để xâm nhập vào mạng lưới lớn hơn.
Đơi khi các lỗ hổng được chính các nhà phát triển phần mềm phát hiện hoặc do
người dùng hay các nhà nghiên cứu cảnh báo. Có những trường hợp, tin tặc hoặc cơ
quan gián điệp của chính phủ phát hiện cách thức xâm nhập vào hệ thống nhưng
không thông báo với bên phát triển. Do đó, phần mềm hoặc phần cứng sẽ dễ bị xâm
nhập cho đến khi có bản vá hoặc bản sửa lỗi được tạo và phân phối tới người dùng.
2.2.3. Nguy cơ và rủi ro
Nguy cơ
Nguy cơ (threat) là những sự kiện có khả năng ảnh hưởng đến an tồn của hệ
thống [2, 3]. Ví dụ: tấn công từ chối dịch vụ (DoS và DDoS) là một nguy cơ đối với hệ
thống các máy chủ cung cấp dịch vụ trên mạng. Khi nói đến nguy cơ, nghĩa là sự kiện
đó chưa xảy ra, nhưng có khả năng xảy ra và có khả năng gây hại cho hệ thống. Có
những sự kiện có khả năng gây hại, nhưng khơng có khả năng xảy ra đối với hệ thống
thì khơng được xem là nguy cơ.
Rủi ro
Rủi ro (risk) là xác suất xảy ra thiệt hại đối với hệ thống [2, 3]. Rủi ro bao gồm 2
yếu tố: Khả năng xảy ra rủi ro và thiệt hại do rủi ro gây ra. Có những rủi ro có khả
năng xảy ra rất cao nhưng mức độ thiệt hại thì thấp và ngược lại.
Ví dụ: rủi ro mất thơng tin trên hệ thống khơng có cơ chế bảo vệ tập tin, chẳng
hạn như Windows 98. Windows 98 khơng có cơ chế xác thực người sử dụng nên bất
cứ ai cũng có thể sử dụng máy với quyền cao nhất. Nếu trên đó chỉ có chứa các tập tin
văn bản khơng có tính bí mật thì việc mất một tập tin thì thiệt hại gây ra chỉ là mất
công sức đánh máy văn bản đó. Đây là dạng rủi ro có xác suất xảy ra cao nhưng thiệt
hại thấp.
15
Cần chú ý phân biệt giữa nguy cơ và rủi ro. Nguy cơ là những hành vi, những sự
kiện hoặc đối tượng có khả năng gây hại cho hệ thống. Rủi ro là những thiệt hại có khả
năng xảy ra đối với hệ thống.
Ví dụ: Tấn cơng từ chối dịch vụ là một nguy cơ (threat). Đây là một sự kiện có
khả năng xảy ra đối với bất kỳ hệ thống cung cấp dịch vụ nào. Thiệt hại do tấn công
này gây ra là hệ thống bị gián đoạn hoạt động, đây mới là rủi ro (risk). Tuy nhiên,
không phải bất kỳ tấn công từ chối dịch vụ nào xảy ra cũng đều làm cho hệ thống
ngưng hoạt động, và hơn nữa, tấn công từ chối dịch vụ không phải là nguồn gốc duy
nhất gây ra gián đoạn hệ thống; những nguy cơ khác như lỗi hệ thống (do vận hành
sai), lỗi phần mềm (do lập trình), lỗi phần cứng (hư hỏng thiết bị, mất điện, …) cũng
đều có khả năng dẫn đến gián đoạn hệ thống.
2.2.4. Tấn công
Tấn công bảo mật là các cuộc tấn cơng máy tính làm tổn hại đến bảo mật của hệ
thống. Về mặt khái niệm, các cuộc tấn cơng bảo mật có thể được phân thành 2 loại là
các cuộc tấn công chủ động và tấn cơng thụ động [8] trong đó kẻ tấn cơng có quyền
truy cập bất hợp pháp vào tài ngun hệ thống.
2.2.4.1. Tấn công chủ động
Tấn công chủ động là các cuộc tấn cơng trong đó kẻ tấn cơng cố gắng sửa đổi
thông tin hoặc tạo một thông báo sai. Việc ngăn chặn các cuộc tấn công này là khá khó
khăn vì có một loạt các lỗ hổng vật lý, mạng và phần mềm. Chính vì vậy phải có cơ
chế phục hồi khi phát hiện ra hệ thống bị gián đoạn hoặc chậm chễ.
Hình 2.1: Tấn cơng chủ động.
2.2.4.2. Tấn công thụ động
Tấn công thụ động là các cuộc tấn công mà kẻ tấn công thực hiện nghe lén trái
phép, chỉ cần theo dõi việc truyền hoặc thu thập thông tin. Kẻ trộm không thực hiện
bất kỳ thay đổi nào đối với dữ liệu hoặc hệ thống.
16
Hình 2.2: Tấn cơng thụ động.
Tấn cơng thụ động rất khó phát hiện vì nó khơng liên quan đến bất kỳ sự thay đổi
nào trong dữ liệu hoặc tài nguyên hệ thống. Có thể ngăn chặn tấn cơng thụ động bằng
cách sử dụng các phương thức mã hóa trong đó dữ liệu trước tiên được mã hóa đầu
người gửi, sau đó tại đầu người nhận dữ liệu sẽ được giải mã về dữ liệu ban đầu.
2.2.5. Hacker
Tin tặc (Hacker)
Một hacker máy tính là bất kỳ một chuyên gia máy tính nào sử dụng kiến thức kỹ
thuật của họ để khắc phục một vấn đề [10]. Hacker sử dụng các các kiến thức kỹ thuật
của họ khai thác các lỗ hổng bảo mật, các bug để xâm nhập vào hệ thống máy tính.
Mũ đen (Blackhat)
Thuật ngữ blackhat dùng để chỉ một hacker máy tính khơng có đạo đức, chun
đột nhập vào các mạng an toàn để phá hủy, sửa đổi, đánh cắp dữ liệu hoặc làm cho các
mạng không thể sử dụng được đối với người sử dụng có quyền [10].
Mũ trắng (Whitehat)
Thuật ngữ whitehat dùng để chỉ một hacker máy tính có đạo đức hoặc một
chun gia bảo mật máy tính, chuyên kiểm tra việc thâm nhập và các phương pháp
kiểm tra khác đảm bảo cho hệ thống thông tin của tổ chức an toàn.
2.3. Các lỗ hổng phần mềm quan trọng
Để xây dựng phần mềm bảo mật, không thể thiếu sự hiểu biết về các lỗ hổng
phần mềm. Trong phần này, luận văn sẽ trình bày tổng quan ngắn gọn về các lỗ hổng
quan trọng và nguy hiểm [4].
2.3.1. SQL Injection
SQL Injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của
việc kiểm tra dữ liệu đầu vào trong các ứng dụng Web và các thông báo lỗi trả về của
17
hệ quản trị CSDL để tiêm vào (inject) và thi hành các câu lệnh SQL bất hợp pháp bằng
cách sử dụng nối chuỗi. SQL Injection có thể cho phép những kẻ tấn công thực hiện
các thao tác thêm mới, cập nhật, xóa trên CSDL của ứng dụng. SQL Injection là một
công cụ trung gian để tấn công các ứng dụng web có dữ liệu được quản lý bởi các hệ
quản trị CSDL như: MS SQL Server, Oracle, MySQL, DB2.
2.3.2. OS Command Injection
Tiêm dòng lệnh vào hệ điều hành (OS Command Injection) hay còn gọi là tiêm
shell (shell injection) là một lỗ hổng bảo mật web cho phép kẻ tấn công thực thi các
lệnh hệ điều hành tùy ý trên máy chủ đang chạy một ứng dụng.
Các lỗ hổng tiêm dòng lệnh vào hệ điều hành (OS Command Injection) xảy ra
khi phần mềm tích hợp dữ liệu do người dùng quản lý trong một lệnh, được xử lý theo
trình thơng dịch lệnh shell. Nếu dữ liệu không được kiểm tra, tin tặc có thể sử dụng
các siêu ký tự sell để thay đổi lệnh đang được thực thi. Điểm yếu này là ngơn ngữ độc
lập.
2.3.3. Buffer overflow
Trong bảo mật máy tính và lập trình, một lỗi tràn bộ nhớ đệm (buffer overflow)
hay còn gọi tắt là lỗi tràn bộ đệm là một lỗi lập trình có thể gây ra một ngoại lệ truy
cập bộ nhớ máy tính và chương trình bị kết thúc. Nó xảy ra khi một chương trình cố
gắng thêm dữ liệu vào bộ nhớ đệm hơn dung lượng lưu trữ mà nó cho phép.
Việc ghi dữ liệu ra bên ngồi bộ nhớ có thể làm hỏng chương trình, hỏng dữ liệu
và thậm chí có thể gây ra việc thực thi mã độc. Các ngơn ngữ lập trình như Java,
Python, Visual Basic, C# đều có các giới hạn các kiểu dữ liệu gốc để kiểm tra các ràng
buộc của các kiểu dữ liệu này.
2.4. Các kiểu tấn cơng
Có rất nhiều kiểu tấn công bảo mật khác nhau, dưới đây là một số loại tấn cơng
bảo mật điển hình. [2, 10]
2.4.1. Tấn cơng Brute-Force
Tấn cơng Brute-Force là gì?
Tấn cơng Brute-Force (Brute-Force attack) là một phương pháp thực hiện thử
mật khẩu đúng sai. Hacker sẽ sử dụng phần mềm để tự động thử đăng nhập username
và password phổ biến nhằm đăng nhập trái phép vào các tài khoản. Với các hệ thống
phức tạp hơn, việc dị tìm mật khẩu sẽ là lần lượt để nâng cao khả năng thành công,
nhưng đồng nghĩa với việc này là mất nhiều thời gian dò mật khẩu lên không giới hạn.
18
Hậu quả của tấn công Brute-Force
Hậu quả của tấn công Brute-Force là chúng ta bị lộ thông tin đăng nhập vào hệ
thống (username và password). Mức độ nghiêm trọng tùy thuộc vào thơng tin bị rị rỉ.
Cách phịng chống tấn cơng Brute-Force
Để phịng chống tấn cơng Brute-Force chúng ta lên thực hiện như sau:
Đặt tên đăng nhập (username) khó đốn, nên tránh các tên đăng nhập như
admin, administrator.
Mật khẩu dài, mạnh, có ký tự đặc biệt và khơng liên quan đến các thông tin
cá nhân.
Đặt thêm captra cho ô đăng nhập
Hạn chế số lần đăng nhập sai.
2.4.2. Tấn công xác thực
Xác thực là cấp độ bảo mật đầu tiên trong phần lớn các hệ thống. Đây là phương
pháp tấn công sử dụng kỹ thuật xác nhận và phản hồi để xác thực. Đây là cách hệ
thống xác thực người dùng là hợp pháp. Sau khi xác thực thành công, người dùng sẽ
được phép truy cập vào tài nguyên của hệ thống.
2.4.2.1. Tấn cơng từ điển
Tấn cơng từ điển là gì?
Tấn công từ điển (Dictionary attack) là kỹ thuật phá mã hoặc vượt qua một cơ
chế xác thực bằng cách thử các khóa mã hay mật khẩu trong một danh sách dài gọi là
từ điển (danh sách được chuẩn bị trước). Đối với tấn cơng từ điển, khơng gian khóa
được tìm kiếm một cách hệ thống, thử trong vùng có nhiều khả năng thành công nhất.
Nguy cơ tấn công
Người dùng đặt mật khẩu ngắn, 7 ký tự hoặc ít hơn.
Đặt mật khẩu bằng những từ đơn giản, những từ đơn dễ tìm thấy trong từ
điển, dễ đốn các biến thể trên từ (Viết hoa một chữ, thêm 1 số vào chữ).
Cách khắc phục
Mật khẩu dài, mạnh, có ký tự đặc biệt và không liên quan đến các thông tin
cá nhân.
Hạn chế số lần đăng nhập sai.
2.4.2.2. Tấn công phát lại
Tấn công phát lại là gì?
Tấn cơng phát lại (Replay attack) là một hình thức tấn cơng mạng lưới trong đó
các thực thể độc hại chặn và lặp lại việc truyền tải một dữ liệu hợp lệ đi vào trong
19
mạng lưới. Nhờ có tính hợp lệ của dữ liệu ban đầu, các giao thức bảo mật của mạng
lưới sẽ xử lý việc tấn cơng này giống như một hình thức truyền tải dữ liệu thông
thường.
Nguy cơ tấn công
Tấn công phát lại có thể được sử dụng nhằm chiếm quyền truy cập thông tin lưu
trữ trên một mạng lưới được bảo vệ bằng cách chuyển tiếp các thơng tin có vẻ như là
hợp lệ.
Cách khắc phục
Bổ sung thêm mốc thời gian vào chuyển tiếp dữ liệu để phịng chống các
hình thức tấn công phát lại đơn giản.
Các máy chủ cũng có thể lưu trữ cache các đoạn tin nhắn lặp lại và xóa đi sau
một số lần lặp nhất định.
2.4.2.3. Đốn mật khẩu
Tấn cơng đốn mật khẩu (Password guessing attack) là một phương pháp mà kẻ
tấn cơng cố gắng đốn tên đăng nhập và mật khẩu tương ứng. Biết tên đăng nhập
tương đối dễ dàng. Nếu một kẻ tấn công có thể có được danh tính hoặc tên cá nhân của
bạn, họ có thể đốn được tên đăng nhập của bạn vì tên đăng nhập thường là tên của
người dùng hoặc một số từ khóa bắt nguồn từ tên của người dùng. Tin tặc sử dụng các
máy tính và các danh sách từ lớn để thử một số lượng lớn các mật khẩu có khả năng
truy cập vào hệ thống.
2.4.2.4. Đánh hơi mật khẩu
Tấn công đánh hơi mật khẩu (Password sniffing attack) là một cuộc tấn công trên
Internet được sử dụng để đánh cắp tên người dùng và mật khẩu (username và
password) bằng cách sử dụng các công cụ phân tích gói dữ liệu. Tin tặc có thể sử dụng
cơng cụ tcpdump hoặc Ethereal để giám sát lưu lượng mạng. Ví dụ, bây giờ nếu ai đó
trong mạng con của bạn đang sử dụng phần mềm Telnet để truy cập vào máy tính, bạn
có thể thấy tất cả các gói dữ liệu đi qua mạng có tên đăng nhập và mật khẩu. Nếu bạn
biết giao thức Telnet, bạn có thể phân tích tất cả các gói này và tìm ra các gói đăng
nhập.
2.4.3. Tấn cơng giả mạo
Tấn cơng giả mạo (Spoofing attack) là cuộc tấn công mà một người hoặc chương
trình giả mạo thành cơng người khác bằng cách làm sai lệch dữ liệu. Ví dụ, rất dễ che
dấu địa chỉ IP nguồn bằng cách giả mạo IP. Kỹ thuật này được sử dụng trong cuộc tấn
công giả mạo IP. Trong một cuộc tấn công giả mạo IP, số thứ tự và số xác nhận có thể
được đánh hơi để tính tốn một cách chính xác. Nguy cơ giả mạo trong trường hợp này
sẽ là chiếm quyền điều khiển phiên, làm hỏng dữ liệu của một kết nối đã được thiết
20
lập, sau đó thiết lập lại dựa trên số thứ tự và số xác nhận chính xác với với máy tấn
công. Với việc sử dụng kỹ thuật này, kẻ tấn cơng có thể bỏ qua một cách hiệu quả mọi
biện pháp xác thực đang diễn ra để xây dựng kết nối.
2.4.4. Tấn công từ chối dịch vụ
Tấn công từ chối dịch vụ (Denial-of-service attack hoặc viết tắt là DoS) là một
dạng tấn công nhằm gây cạn kiệt tài nguyên hệ thống máy chủ và làm ngập lưu lượng
băng thông Internet, khiến truy cập từ người dùng tới máy chủ bị ngắt qng, truy cập
chập chờn, thậm chí khơng thể truy cập được, làm tê liệt hệ thống, hoặc có thể là hệ
thống mạng nội bộ.
Nếu một phần mềm ứng dụng hoặc hệ thống bị hỏng do một số cuộc tấn công
bảo mật dẫn đến ứng dụng hoặc hệ thống không khả dụng, thì đó cũng là một cuộc tấn
cơng Dos. Bởi đối thủ chỉ quan tâm tới việc gây nhiễu bằng cách làm tăng băng thông
và tài nguyên để người dùng hợp pháp không thể truy cập hệ thống.
2.4.5. Tấn công cuộc gọi thủ tục từ xa (Remote Procedure Call attack)
Tấn công cuộc gọi thủ tục từ xa (Remote Procedure Call - RPC) là một cuộc tấn
công tràn bộ đệm. RPC là một cơng nghệ cho phép một chương trình trong một máy
tính gọi một thủ tục trong một máy tính khác. RPC cho phép một thủ tục hoặc chức
năng gọi hoặc thực hiện một thủ tục hoặc hàm trong cùng một không gian địa chỉ.
Trong tấn công RPC, lỗ hổng tràn bộ đệm được khai thác để kiểm soát RPC và thông
qua RPC kẻ tấn công thực hiện bất cứ điều gì trên máy tính nạn nhân.
2.4.6. Tấn cơng tiêm mã (Code injection)
Tiêm mã (Code injection) là một kỹ thuật khai thác lỗi máy tính gây ra bởi việc
xử lý dữ liệu không hợp lệ. Tiêm được sử dụng bởi kẻ tấn cơng để đưa mã vào một
chương trình máy tính dễ bị tổn thương và thay đổi quá trình thực hiện.
Lỗ hổng tiêm mã xảy ra khi một ứng dụng gửi dữ liệu không đáng tin cậy đến
một trình thơng dịch. Lỗi tiêm thường được tìm thấy trong các truy vấn SQL, LDAP,
XPath hoặc NoSQL; các lệnh của HĐH; XML parser, SMTP header, các tham số
chương trình,…
2.5. Lập trình bảo mật
Lập trình bảo mật là sự kết hợp giữa lập trình bảo mật và lập trình an tồn bao
gồm: các thuộc tính bảo mật, lập trình an tồn và khắc phục lỗ hổng [2].
2.5.1. Các thuộc tính bảo mật
Có nhiều thuộc tính bảo mật rất cần thiết trong lập trình bảo mật. Các thuộc tính
này là sự tin cậy, toàn vẹn, sẵn sàng, xác thực, chứng thực và ẩn danh.
21
2.5.1.1. Tin cậy
Tin cậy là một cơ chế thông qua đó chúng ta giữ bí mật về thơng tin hoặc dữ liệu.
Trong lập trình bảo mật, cần đảm bảo rằng chương trình viết sẽ giữ bí mật dữ liệu để
khơng ai có thể dễ dàng dịch ngược chương trình và truy cập dữ liệu. Nói một cách
khác, khơng ai có thể dễ dàng đảo ngược quá trình xử lý logic của chương trình và truy
cập dữ liệu. Ngồi ra, cần đảm bảo rằng chương trình khơng gặp sự cố, gây ra từ chối
dịch vụ.
2.5.1.2. Tồn vẹn
Đây là một thuộc tính đảm bảo rằng thông điệp hoặc dữ liệu được bảo vệ khỏi
việc chỉnh sửa vơ tình hay cố ý. Điều này rất hữu ích để phát hiện một cuộc tấn cơng
trên dữ liệu của bạn. Để đảm bảo tính tồn vẹn, cần bổ sung một số thông tin để xác
minh tính tồn vẹn của dữ liệu. Ví dụ, khi bạn nhận được dữ liệu từ một chương trình
khác, bạn kiểm tra giá trị checksum của dữ liệu hoặc chữ ký số để đảm bảo tính tồn
vẹn của dữ liệu được duy trì.
2.5.1.3. Sẵn sàng
Sẵn sàng là một thuộc tính của bảo mật trong đó dịch vụ có sẵn với những người
dùng hợp pháp. Nhiều kẻ tấn công sử dụng các hành động tấn công từ chối dịch vụ để
phá hỏng ứng dụng làm cho người dùng hợp pháp không sử dụng được dịch vụ. Ví dụ,
nếu chương trình bạn viết không thể chạy khi được yêu cầu nhiều nhất, hoặc do một số
lỗi, một trong các chức năng trong ứng dụng này đi vào vịng lặp khơng xác định. Tin
tặc biết lỗi này có thể khai thác lỗi này khiến chương trình đi vào vịng lặp và ứng
dụng khơng khả dụng trong một khoảng thời gian.
2.5.1.4. Xác thực
Xác thực trả lời câu hỏi: Bạn là ai?. Xác thực là một tiến trình nhận dạng các
client của các ứng dụng và các dịch vụ. Đó có thể là người dùng cuối, các dịch vụ, các
tiến trình, hoặc là các máy tính. Chữ ký số cũng có thể coi là một cơ chế xác thực.
2.5.1.5. Chứng thực
Chứng thực trả lời câu hỏi: bạn có thể làm gì? Đó là một tiến trình quản lý các tài
nguyên và các hoạt động mà client đã được xác thực được cấp quyền truy cập. Client
chỉ có thể truy cập được vào tài nguyên nhất định được phân quyền trên hệ thống.
Thuộc tính này cũng được gọi là tăng cường kiểm soát truy cập hoặc bảo mật dựa trên
vai trò.
22
2.5.1.6. Ẩn danh
Ẩn danh là một thuộc tính khác của bảo mật. Ẩn danh là một thuộc tính mà thơng
qua đó người dùng ẩn danh với thế giới bên ngồi. Ví dụ, trong một hệ thống bỏ phiếu
điện tử, cử tri cần được ẩn danh để khơng ai có thể tìm ra người bỏ phiếu là ai.
2.5.2. Lập trình an tồn
Lập trình an tồn là làm cho chương trình an tồn. Một chương trình nên chạy an
tồn trên mọi máy tính được thiết kế để chạy chương trình trên đó. Trong khi một
chương trình an tồn đang chạy, nó khơng gây ra bất kỳ thiệt hại nào đến mơi trường
nó đang chạy. Chương trình an tồn là chương trình khơng thể khai thác một số nhiệm
vụ trái phép. Chương trình an tồn là chương trình khơng thể được sử dụng như một lộ
trình tấn cơng một cái gì đó khác. Một chương trình an tồn là chương trình khơng bao
giờ có thể được sử dụng như một đặc quyền cho kẻ tấn cơng. Một chương trình an tồn
sẽ khơng hoạt động như một tác nhân kép hoặc trojan. Một chương trình an tồn sẽ
khơng bao giờ làm bất kỳ các hành động đặc biệt.
Bạn là một lập trình viên thì cần đảm bảo rằng bất kỳ chương trình nào bạn viết
khơng có bất kỳ lỗ hổng bảo mật nào. Lỗ hổng có thể là do một số lỗi trong code của
bạn, nó có thể là do một số lỗ hổng trong các chức năng hệ thống bạn đã sử dụng trong
chương trình của mình hoặc có thể là do các lỗ hổng trong giao giao diện lập trình ứng
dụng (Application Programming Interface - API) mà bạn sử dụng trong code của
mình.
2.6. Kết luận
Như vậy ở chương đầu tiên, luận văn đã mô tả những khái niệm cơ bản về bảo
mật trong hệ thống phần mềm, một số lỗ hổng phần mềm quan trọng cũng như các
kiểu tấn công bảo mật. Ngồi ra lập trình bảo mật cũng là những yếu tố quan trọng
trong bảo mật hệ thống phần mềm.
Ở chương tiếp theo luận văn sẽ đi vào tìm hiểu tổng quan kiến trúc bảo mật hệ
thống phần mềm, tổng quan bảo mật trong .NET và ASP.NET.
23
Chương 3: BẢO MẬT HỆ THỐNG PHẦN MỀM TRONG .NET
Ở chương này luận văn sẽ trình bày tổng quan về kiến trúc bảo mật trong hệ
thống phần mềm, bảo mật trong .NET và ASP.NET.
3.1. Tổng quan kiến trúc bảo mật hệ thống phần mềm
3.1.1. Vòng đời phát triển
Các lỗ hổng chủ yếu là do một số lỗi bảo mật trong phần mềm, có thể là trong
ứng dụng, trong hệ điều hành hoặc CSDL. Do đó, tất cả các chương trình phần mềm
phải được phát triển với việc tích hợp bảo mật. Vòng đời phát triển bảo mật của hệ
thống phần mềm được mơ tả ở hình 3.1. [2]
Identify system
objects
Apply functional
requirement
System testing and
ethical hacking
Identify security
requirements
Contruct the system
with secure coding
Identify threats
Design system with
security
Hình 3.1: Các bước xây dựng một hệ thống bảo mật.
Các
bao gồm:
bước xây dựng trong vòng đời phát triển bảo mật của hệ thống phần mềm
Identify system objectives: định nghĩa đối tượng của hệ thống.
Apply functional requirements: áp dụng các yêu cầu chức năng.
Identify security requirements: định nghĩa các yêu cầu bảo mật của hệ
thống.
Identify threats: định nghĩa các mối nguy hại.
Design system with security: thiết kế hệ thống với yêu cầu bảo mật cao.
Construct the system with secuced coding: khởi tạo hệ thống với các mã bảo
mật.
System testing and ethical hacking: kiểm thử hệ thống và kiểm thử hack.