Ứng dỤng kỸ thuẬt bẢo mẬt trong microsoft .net vÀo...

78
ĐẠI HC QUC GIA HÀ NI TRƯỜNG ĐẠI HC CÔNG NGHTRN MNH Ứ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à Ni 2019

Upload: others

Post on 17-Nov-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

ĐẠ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

Page 2: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

ĐẠ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

Page 3: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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 quý giá của Thầy trong quá 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 quý báu trong suốt quá 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 để hoà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 hoà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

Page 4: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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 hoàn

toà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

Page 5: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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 toàn ........................................................................................... 22

Page 6: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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 toá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

Page 7: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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

Page 8: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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í Toà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

Server Máy chủ

SSL Secure Socket Layer Bảo mật lớp cổng

TSC Trụ sở chính

TSL Transport Layer Securrity Bảo mật lớp vận chuyển

TT 18/2018 Thông tư số 18/2018/TT-

NHNN ngày 21/08/2018 Quy

định về an toàn hệ thống

thông tin trong hoạt động

Ngân hàng

Page 9: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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ý luân 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

Page 10: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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

Page 11: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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

Page 12: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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 quá

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 toà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 toà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 toà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 toà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

Page 13: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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 toà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 toàn bảo mật hệ

thống ứng dụng. Thêm vào đó, phòng Thanh toá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 toà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

Page 14: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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í. Ngoà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.

Page 15: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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

toà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ụ.

Page 16: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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 soá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 soá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 toà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.

Page 17: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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 nguyên 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.

Page 18: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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, chuyên

độ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

chuyên 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

Page 19: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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 ngoà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.

Page 20: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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ó đoá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ễ đoá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

Page 21: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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. Đoán mật khẩu

Tấn công đoán mật khẩu (Password guessing attack) là một phương pháp mà kẻ

tấn công cố gắng đoá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ể đoá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 toá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

Page 22: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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 quãng, 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 toàn bao

gồm: các thuộc tính bảo mật, lập trình an toà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.

Page 23: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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. Ngoà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. Toà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 toàn vẹn, cần bổ sung một số thông tin để xác

minh tính toà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 toà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ò.

Page 24: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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 ngoà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 toàn

Lập trình an toàn là làm cho chương trình an toàn. Một chương trình nên chạy an

toà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 toà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 toà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 toà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 toà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 toà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 toà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. Ngoà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.

Page 25: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

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

Contruct the system

with secure coding

Identify security

requirements

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 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

bao gồ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.

Page 26: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

24

Để xây dựng bảo mật từ đầu, việc xem xét bảo mật phải bắt đầu ngay tại thời

điểm xác định mục tiêu của hệ thống. Giống như vòng đời phát triển phần mềm tiêu

chuẩn, vòng đời phát triển bảo mật cũng bắt đầu bằng việc xác định mục tiêu của hệ

thống hoặc mục tiêu nghiệp vụ.

3.1.2. Phân tích yêu cầu bảo mật

Một hệ thống bảo mật là một hệ thống mà thông tin được xử lý trên nó phải đảm

bảo được 3 yêu cầu sau đây [3]:

3.1.2.1. Tính bí mật (Confidentialy)

Tính bí mật của thông tin là tính giới hạn về đối tượng được quyền truy xuất đến

thông tin, bảo vệ dữ liệu không bị lộ ra ngoài một cách trái phép. Đối tượng truy xuất

có thể là con người, là máy tính hoặc phần mềm, kể cả phần mềm phá hoại như virus,

worm, spyware, … Ví dụ, trong hệ thống ngân hàng, một khách hàng được phép xem

thông tin số dư tài khoản của mình nhưng không được phép xem thông tin của khách

hàng khác.

Để đảm bảo tính bí mật của thông tin, ngoài các cơ chế và phương tiện vật lý như

thiết bị lưu trữ, nơi đặt thiết bị, dịch vụ bảo vệ,… thì kỹ thuật mật mã hóa

(Cryptography) được xem là công cụ bảo mật thông tin hữu hiệu nhất trong môi

trường máy tính. Ngoài ra, kỹ thuật quản lý truy xuất (Access Control) cũng được thiết

lập để bảo đảm chỉ có những đối tượng được cho phép mới có thể truy xuất thông tin.

3.1.2.2. Tính toàn vẹn (Integrity)

Tính toàn vẹn là đảm bảo sự tồn tại nguyên vẹn của thông tin, dữ liệu, chỉ những

người dùng được ủy quyền mới được phép chỉnh sửa dữ liệu. Tính toàn vẹn được xét

trên hai khía cạnh là tính nguyên vẹn của dữ liệu và tính xác thực của nguồn gốc dữ

liệu. Nói một cách khác, tính toàn vẹn của dữ liệu phải được đánh giá trên hai mặt:

toàn vẹn về nội dung và toàn vẹn về nguồn gốc. Ví dụ, trong hệ thống ngân hàng,

không cho phép khách hàng tự thay đổi thông tin số dư tài khoản của mình.

3.1.2.3. Tính khả dụng (Availability)

Tính khả dụng là tính sẵn sàng của thông tin, dữ liệu đảm bảo dữ liệu luôn sẵn

sàng khi những người dùng hoặc ứng dụng được ủy quyền yêu cầu truy xuất. Ví dụ,

trong hệ thống ngân hàng cần đảm bảo rằng khách hàng có thể truy vấn thông tin số dư

tài khoản bất kỳ lúc nào theo như quy định.

Tính khả dụng là một yêu cầu rất quan trọng của hệ thống, bởi vì một hệ thống

tồn tại nhưng không sẵn sàng cho sử dụng thì cũng giống như không tồn tại một hệ

thống thông tin nào. Một hệ thống khả dụng là một hệ thống làm việc trôi chảy và hiệu

quả, có khả năng phục hồi nhanh chóng nếu có sự cố xảy ra.

Page 27: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

25

3.1.3. Thiết kế bảo mật

Sau khi các yêu cầu được xác định và các nguy cơ bảo mật có thể đã được xác

định, hệ thống cần phải được thiết kế đưa vào các nguy cơ bảo mật. Nội dung của thiết

kế bảo mật bao gồm: các mẫu thiết kế bảo mật, xác thực và chứng thực hệ thống [2].

3.1.3.1. Các mẫu thiết kế bảo mật

Joseph Yoder và Jeffrey Barcalow là những người đầu tiên đưa ra các mẫu thiết

kế bảo mật thông tin. Tuy nhiên, khá khó khăn và đôi khi không thể xác định những gì

một hệ thống không phải làm. Thiết kế bảo mật cho hệ thống cần thực hiện theo các

mẫu thiết kế sau:

a) Điểm truy cập đơn (Single Access Point)

Bất kỳ một hệ thống bảo mật nào cũng khó quản lý khi nó có cửa trước, cửa sau

và cửa phụ. Mẫu thiết kế này khuyến nghị rằng hệ thống chỉ nên có một điểm truy cập

vào hệ thống. Điều này hữu ích khi ta thực hiện quản lý chỉ một điểm truy cập trên hệ

thống.

b) Điểm kiểm tra (Checkpoint)

Đối với một hệ thống máy tính, cần có một điểm kiểm tra là tốt. Mẫu thiết kế này

cho thấy rằng người dùng của một hệ thống nên được xác nhận đăng nhập vào hệ

thống. Kiểm tra này được điều chỉnh bởi chính sách bảo mật của tổ chức. Chính sách

bảo mật có thể là một sự kết hợp của xác thực và có ủy quyền. Để đăng nhập vào hệ

thống thì cần phải có một màn hình đăng nhập để thông qua đó thu thập thông tin về

người dùng như: tên đăng nhập, mật khẩu và có thể một số cài đặt cấu hình. Điểm

kiểm tra này sẽ xác thực thông tin của người dùng (tên đăng nhập, mật khẩu), hệ thống

chỉ ủy quyền cho người dùng sử dụng những tài nguyên được phép sử dụng.

c) Vai trò (Roles)

Trong mẫu thiết kế này, hệ thống cần xác minh người dùng là ai, người dùng đó

có phải là thật hay không. Thông qua xác thực, hệ thống cần xác định người dùng có

đặc quyền gì và quyền truy cập nào mà người dùng có trong hệ thống. Quyền truy cập

được xác định bởi đặc quyền của người dùng theo vai trò của người dùng trong tổ

chức. Trong một tổ chức, mỗi người dùng thường có một số loại vai trò, thông thường

vai trò được xác định theo trách nhiệm và chức danh công việc. Khi trách nhiệm và

chức danh thay đổi thì các vai trò của người dùng trong hệ thống nên được cập nhật

trực tiếp.

d) Phiên (Session)

Một phiên ghi nhớ ngữ cảnh của một giao dịch, nó ghi nhớ người dùng tại bất kỳ

thời điểm nào của giao dịch. Đối với hệ thống ứng dụng, sau khi đăng nhập hệ thống

Page 28: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

26

thành công thì hệ thống cần tạo ra phiên làm việc cho từng người dùng đã đăng nhập

thành công vào hệ thống.

e) Full View with Error

Mẫu này gợi ý rằng người dùng nên được phép nhìn thấy toàn bộ hệ thống. Tuy

nhiên, người dùng sẽ không được phép truy cập vào tài nguyên mà họ không được đặc

quyền sử dụng. Việc hạn chế quyền truy cập này cần phải có thông báo lỗi thích hợp.

Ví dụ, khi bạn vào thư viện, bạn có thể xem toàn bộ danh mục sách có trong thư viện.

Tuy nhiên bạn không thể mượn sách và mang ra khỏi thư viện trừ khi bạn có thẻ thư

viện.

f) Limit View

Mẫu này cho phép người dùng chỉ biết một phần của hệ thống mà người dùng

được phân quyền. Mẫu này được sử dụng rộng rãi trong bảo mật mạng. Khi kẻ tấn

công biết các dịch vụ nào đang chạy trên máy tính, họ có thể sử dụng các công cụ có

liên quan để thực hiện cuộc tấn công. Do đó, chế độ xem có giới hạn của các cấu hình

mô hình và các lựa chọn được cho phép đối với người dùng dựa trên vai trò của mình.

Mẫu này nhận phiên hiện tại với vai trò của người dùng, áp dụng trạng thái hiện tại

của ứng dụng và tự động xây dựng giao diện người dùng giới hạn xem dựa trên các

thuộc tính này.

g) Lớp truy cập an toàn (Secure Access Layer)

Khi thực hiện xây dựng bảo mật ứng dụng, nên xây dựng lớp truy cập an toàn để

giao tiếp trong và ngoài ứng dụng. Điểm quan trọng đối với mẫu này là xây dựng một

lớp để cô lập nhà phát triển khỏi sự thay đổi. Lớp này có thể có nhiều giao thức khác

nhau tùy thuộc vào các loại thông tin liên lạc cần phải thực hiện. Ví dụ, lớp này có thể

có một giao thức truy cập dữ liệu an toàn trong cơ sở dữ liệu Oracle và một giao thức

khác để kết nối an toàn với máy chủ Apache thông qua SSL.

h) Đặc quyền tối thiểu (Least Privilege)

Trong bất kỳ chương trình máy tính nào cũng phải luôn ở trạng thái ít đặc quyền

nhất. Khi có nhu cầu, nó sẽ nâng cao đặc quyền chỉ trong thời gian cần thiết. Một khi

đặc quyền chức năng hoàn thành, nó phải trở về trạng thái đặc quyền tối thiểu.

i) Nhật ký (Journaling)

Trong bất kỳ hệ thống nào cần bảo mật, tất cả chi tiết hoạt động của hệ thống cần

được ghi lại. Tất cả các sự kiện và chi tiết hoạt động của hệ thống cần được ghi lại

thông qua tệp tin nhật ký. Các hành động quan trọng của người dùng như cố gắng truy

cập một số tài nguyên đặc quyền, xóa các tệp hoặc yêu cầu nâng cao đặc quyền cần

phải được ghi lại. Những tệp tin này cũng có thể được sử dụng để xác định chi tiết tài

Page 29: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

27

nguyên sử dụng, và quan trọng hơn tất cả các tệp tin này cần được bảo vệ để chúng

không bị giả mạo.

j) Close Gracefully

Mẫu này đề xuất tất cả các hệ thống nên đóng đúng cách. Bất kỳ tài nguyên được

cấp phát trong suốt quá trình hoạt động của hệ thống cần phải được giải phóng vào

thời điểm đóng hệ thống. Tất cả các tệp tin cần được đóng lại, tất cả các tệp tin lưu trữ

tạm thời trong đĩa và bộ nhớ cần được làm sạch, xóa và đưa trở lại hệ điều hành. Nếu

người dùng đang làm việc ở một đặc quyền nâng cao, đặc quyền cần phải được hạ

xuống trước khi thoát. Không nên để lại bất kỳ dữ liệu nào, bản sao dữ liệu trên bộ nhớ

và trên máy tính người dùng.

3.1.3.2. Các hình thức ngăn chặn hành vi trộm cắp mật khẩu

Hệ thống thực hiện xác thực người dùng thông qua tên đăng nhập và mật khẩu.

Sau khi xác thực thành công, hệ thống sẽ thực hiện xác định quyền truy cập tài nguyên

của người dùng trên hệ thống. Nếu mật khẩu người dùng bị đánh cắp, kẻ tấn công có

thể đánh lừa máy tính và truy cập vào tài khoản của người dùng. Để ngăn chặn hành vi

trộm cắp mật khẩu, có thể áp dụng một số kỹ thuật bảo mật sau đây [2]:

a) Delay authentication prompt

Trong ứng dụng, nếu trường hợp mật khẩu không chính xác, hệ thống sẽ đưa ra

thông báo lỗi. Vì vậy, trong chương trình cần đặt độ trễ một khoảng thời gian nhất

định trước khi thông báo xác thực. Ngoài ra, cần thêm một số thời gian trễ trước khi

đưa ra thông báo tiếp theo. Thời gian trễ cần được đồng bộ hóa với thời gian của người

dùng. Các thiết lập trên nhằm hạn chế cuộc tấn công thực hiện dò mật khẩu đăng nhập

hệ thống.

b) Encrypt the Password

Mật khẩu không nên gửi dưới dạng cleartext vì tin tặc có thể sử dụng công cụ để

đánh cắp tên đăng nhập và mật khẩu dễ dàng. Để ngăn chặn lỗ hổng này, thông tin

đăng nhập như tên đăng nhập hoặc mật khẩu phải được mã hóa để ngăn ngừa bị đánh

cắp thông tin đăng nhập hệ thống.

c) Strong Password

Mật khẩu mạnh là mật khẩu có khả năng chống lại các cuộc tấn công như đoán

mật khẩu, tấn công brute-force hoặc tấn công dictionary. Một mật khẩu mạnh là mật

khẩu có độ dài từ 8 ký tự trở lên bao gồm chữ cái in hoa, chữ cái in thường, số và các

ký tự đặc biệt.

d) One-Time Password

Trong cuộc tấn công phát lại, tin tặc có thể sử dụng dữ liệu tên đăng nhập và mật

khẩu được thu thập từ phiên trước đó. Do vậy, để ngăn chặn lỗ hổng loại này trong

Page 30: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

28

thiết kế, chúng ta sử dụng mật khẩu một lần. Mật khẩu một lần được sinh ra ngẫu

nhiên dựa theo công thức để xác minh giao dịch xảy ra tại một thời điểm. Mục đích là

chống giả mạo giao dịch.

e) Storing the Password

Mật khẩu không bao giờ được lưu trữ dưới dạng bản gốc (plainttext), nó luôn

phải được lưu trữ dưới hình thức được mã hóa. Nếu tin tặc biết được khóa thì tin tặc có

thể sử dụng chức năng giải mã để khôi phục mật khẩu. Vì vậy, trong ứng dụng mật

khẩu nên được lưu trữ bằng cách sử dụng thuật toán băm một chiều như MD5 hoặc

thuật toán SHA. Lợi thế của các thuật toán băm một chiều là không thể khôi phục mật

khẩu gốc.

3.1.3.3. Chứng thực

Chứng thực là để xác định vai trò của người dùng được sử dụng tài nguyên của

hệ thống. Chứng thực còn được gọi là kiểm soát truy cập dựa trên vai trò [2].

Trong bảo mật dựa trên vai trò (role-based security), chúng ta sử dụng vai trò của

người dùng để xác định đặc quyền mà người dùng có thể có quyền truy cập vào tài

nguyên. Việc kiểm soát như vậy gọi là Kiểm soát truy cập dựa trên vai trò (Role-base

Access Control - RBAC). Trong RBAC các chính sách bảo mật và quyền truy cập phụ

thuộc và ràng buộc với vai trò của người dùng. Vai trò thường liên quan đến chính

sách phân cấp sử dụng hệ thống trong một tổ chức.

Hình 3.2: Xác định quyền dựa trên vai trò của người dùng.

Page 31: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

29

3.1.4. Đánh giá bảo mật

Trong suốt vòng đời phát triển bảo mật, chúng ta cần luôn ghi nhớ rằng kẻ tấn

công sẽ cố gắng khai thác những lỗ hổng trong chương trình của chúng ta. Do đó, sau

khi viết code chúng ta cần đánh giá lại code đối với các rủi ro bảo mật. Để thực hiện

đánh giá code thì chúng ta cần một nhóm các thành viên có kiến thức về lỗ hổng bảo

mật và yêu cầu bảo mật để có thể tìm ra lỗ hổng cần khắc phục. Microsoft đã đề xuất

thực hiện đánh giá code theo 4 bước như sau [2]:

3.1.4.1. Bước 1: Xác định các mục tiêu đánh giá bảo mật code

Bước đầu tiên là đặt mục tiêu và các ràng buộc cho đánh giá. Khi chúng ta đặt

mục tiêu cho đánh giá bảo mật, chúng ta cần biết các vấn đề bảo mật phổ biến đối với

bất kỳ ứng dụng nào cũng như mọi thay đổi code cụ thể cần được xem xét. Các nội

dung cần đánh giá bao gồm:

Xác thực các dữ liệu đầu vào

Xác thực, ủy quyền, nhật ký, tài khoản

Các dữ liệu nhạy cảm

Các thông số cấu hình

Các đoạn mã không an toàn, quản lý các ngoại lệ

Mức truy cập dữ liệu

Tiêm mã, cross-site scripting

Quản lý đặc quyền và đặc quyền nâng cao

3.1.4.2. Bước 2: Rà soát sơ bộ

Việc thực hiện rà soát sơ bộ cần được thực hiện theo 2 cách thức là tự động và

thông thường. Đối với việc đánh giá code nên đặt các câu hỏi hoặc các tình huống như

sau:

Xác định vùng tin tưởng: tất cả các đối tượng trong đó có thể tin cậy được.

Xác định dữ liệu đầu vào: cần xác nhận từng dữ liệu đầu vào hợp lệ cho

chương trình và loại bỏ các dữ liệu không hợp lệ.

Code xác thực người dùng: Chương trình có xác thực người dùng không? Kỹ

thuật xác thực nào đã sử dụng? Mã xác thực có được chỉnh sửa không?

Code ủy quyền người dùng: Người dùng được tin cậy nhưng có được phép

thực hiện các nhiệm vụ đặc quyền không? Vai trò nào được cho phép và làm

thế nào để chúng tương tác?

Mã hóa: Ứng dụng có sử dụng mã hóa không? Loại thuật toán nào hệ thống

sử dụng, đối xứng hoặc không đối xứng? Kích thước khóa nào đang sử dụng.

Các đoạn mã xử lý ngoại lệ: Chương trình có một kiến trúc xử lý lỗi nhất

quán? Chương trình có bắt và đưa ra ngoại lệ có cấu trúc.

Page 32: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

30

Độ đặc quyền sử dụng các chức năng: Có phần nào của chương trình cần

được thực thi đặc trong quyền nâng cao không? Nếu có, nó được xử lý như

thế nào?

Thư viện bên ngoài: Chương trình có sử dụng thư viện bên ngoài không?

Nếu có, nó đáng tin đến mức nào?

3.1.4.3. Bước 3: Đánh giá các vấn đề bảo mật code

Đây là bước quan trọng nhất của tất cả, bước này sử dụng kết quả của bước 2 để

phân tích. Đối với việc đánh giá các vấn đề bảo mật code, cần thực hiện:

Đánh giá các vùng tin cậy: Đánh giá mức độ tin cậy của nguồn đầu vào đến

từ các nguồn nội bộ hoặc từ code được viết trong tổ chức, không nên tin

tưởng bất kỳ đầu vào nào đến từ bên ngoài các thành phần của ứng dụng.

Phân tích luồng thực hiện chức năng: Thực hiện phân tích luồng điều khiển

các bước thông qua các điều kiện logic bên trong code.

Phân tích luồng lưu trữ dữ liệu: Thực hiện phân tích luồng dữ liệu để theo

dõi vòng đời của dữ liệu từ các điểm đầu vào đến các điểm đầu ra.

Đầu vào/đầu ra: Trong quá trình phân tích luồng dữ liệu, cần thực hiện đánh

giá danh sách đầu vào và đầu ra.

Đặc điểm của các ngôn ngữ lập trình: Vẫn có thể có rủi ro bảo mật từ các

phân đoạn code và thư viện khác nhau. Các thư viện hoặc code đã được

chứng nhận là đáng tin cậy nhưng cũng trở nên không đáng tin cậy do những

thay đổi từ môi trường bên ngoài.

3.1.4.4. Bước 4: Đánh giá các vấn đề bảo mật duy nhất trong kiến trúc

Sau khi đã hoàn thành bước 1, 2 và 3, cần thực hiện bước cuối cùng là tìm kiếm

các vấn đề bảo mật liên quan đến kiến trúc duy nhất của ứng dụng. Đây là bước cuối

cùng xác minh các tính năng bảo mật duy nhất cho kiến trúc ứng dụng.

3.1.5. Kiểm thử bảo mật

Kiểm thử phần mềm là một chức năng quan trọng trong vòng đời phát triển phần

mềm. Tất cả các phần mềm cần phải được kiểm tra trước khi đưa vào sử dụng. Nội

dung kiểm thử bảo mật bao gồm [2]:

3.1.5.1. Đánh giá lỗ hổng (Vulnerability Assessment)

Quá trình đánh giá lỗ hổng là tiến hành các phân tích và kiểm thử khác nhau trên

một hệ thống cụ thể để đánh giá sự hiện diện của lỗ hổng bảo mật. Đánh giá lỗ hổng

được chia thành 2 loại: đánh giá lỗ hổng bên ngoài và bên trong.

a) Đánh giá lỗ hổng bên ngoài

Nhóm đánh giá này xác định sự hiện diện của lỗ hổng bảo mật trong hệ thống khi

sử dụng từ môi trường bên ngoài như một số mạng bên ngoài hoặc môi trường không

Page 33: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

31

tin cậy, đặc biệt là môi trường Internet. Các lỗ hổng có thể liên quan đến các bộ định

tuyến, máy chủ, modem và tường lửa hoặc trong các hệ điều hành và các ứng dụng

máy chủ.

b) Đánh giá lỗ hổng bên trong

Nhóm đánh giá này thực hiện từ bên trong mạng tổ chức, mạng LAN, mạng tin

cậy. Đánh giá lỗ hổng nội bộ sẽ cung cấp cho tổ chức những dữ liệu đưa ra cho các

nhân viên trong tổ chức. Các lỗ hổng bên trong bao gồm các lỗ hổng liên quan đến ứng

dụng, cơ sở dữ liệu và hệ điều hành của các thành phần mạng, các ứng dụng máy chủ

trung gian của riêng tổ chức.

c) Công cụ đánh giá lỗ hổng

Có khá nhiều công cụ có thể được sử dụng để phân tích các hệ thống và xác định

lỗ hổng. Có khá nhiều công cụ miễn phí và mở, các công cụ này có thể download tại

trang web Insecure.org và Sectools.org. Một số công cụ phổ biến là Nessus, Snort và

Tcpdump.

3.1.5.2. Công cụ phủ sóng mã

Đây là một loại công cụ xác nhận mã (code) lúc chạy và cho biết liệu người viết

code đã đảm bảo độ bao phủ của code chưa. Bạn cần phải xác định điểm quan trọng

của code để thực hiện kiểm tra.

Công cụ này sau đó sẽ chạy mã, phân tích các kết quả và cho biết liệu bạn đã

kiểm tra hết các code chưa. Nếu một phần bảo mật quan trọng của code không được

kiểm tra, bạn cần thực hiện kiểm tra lại.

3.1.5.3. Kiểm thử tính hợp lệ hoặc không hoạt động

Kiểm thử tính hợp lệ là kiểm tra xem hệ thống có đang làm một cái gì đó mà nó

không phải làm hay không.

Kiểm thử không hoạt động là một phương pháp kiểm thử sử dụng các hồ sơ kiểm

thử không tương ứng với các hồ sơ hoạt động dự kiến.

3.1.5.4. Kiểm thử thâm nhập

Kiểm thử xâm nhập giúp chúng ta hiểu được bảo mật bên ngoài của một hệ

thống. Nó giúp đánh giá các lỗ hổng an ninh, các vấn đề về xác thực và việc phân

quyền. Một số công cụ miễn phí như Nessus, Nmap và Tcpdump có thể giúp bạn trong

quá trình kiểm tra này.

3.1.5.5. Hacker mũ trắng

Hacker mũ trắng gần giống như kiểm thử thâm nhập, tuy nhiên trong thực tế có

một số khác biệt giữa hai khái niệm này:

Page 34: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

32

Hacker mũ trắng hay còn gọi là hacker tốt, người được kiểm thử hệ thống

nhưng không hack hệ thống cho mục đích xấu.

Trong kiểm thử thâm nhập, người kiểm thử có thể sử dụng một số công cụ

kiểm tra thâm nhập và kiểm tra các lỗ hổng bảo mật. Hacker mũ trắng đòi

hỏi một mức độ kỹ năng cao hơn so với kiểm thử thâm nhập.

Hacker mũ trắng sẽ kiểm tra cả sự an toàn và các vấn đề bảo mật của một

chương trình, trong khi kiểm thử thâm nhập chủ yếu sẽ giải quyết vấn đề bảo

mật.

3.1.5.6. Kiểm thử mờ (Fuzz Testing)

Kiểm thử mờ (Fuzz Testing) là một kỹ thuật kiểm thử phần mềm đối với việc

cung cấp dữ liệu ngẫu nhiên cho đầu vào của một chương trình máy tính. Sau đó,

chương trình sẽ được giám sát các trường hợp ngoại lệ như treo máy, lỗi code không

được thực thi, tài nguyên bộ nhớ thất thoát nhằm để xác định các hành vi bất thường,

phát hiện các lỗ hổng bảo mật tiềm ẩn của chương trình. Kiểm thử mờ thường được sử

dụng để kiểm tra bảo mật chính cho việc phát hiện các lỗ hổng bảo mật nghiêm trọng

ở các phần mềm lớn hoặc hệ thống máy tính.

3.1.5.7. Chèn lỗi (Fault Injection)

Chèn lỗi [2] là phương pháp lỗi được chèn tương tự như một lỗi trong môi trường

ứng dụng để xem cách hệ thống phản ứng và liệu sẽ có một sự vi phạm bảo mật nào.

Nếu không, hệ thống được coi là an toàn.

Có nhiều công cụ chèn lỗi mà có thể được sử dụng liên quan đến bảo mật như

CECIUM, DOCTOR, ORCHESTRA, NTHAPE, và LOKI.

3.2. Bảo mật trong .NET

3.2.1. .NET Framework

3.2.1.1. Tổng quan về .NET Framework

.NET Framework là một nền tảng phát triển để xây dựng các ứng dụng cho web,

Windows, Windows Phone, Windows Server và Microsoft Azure [6]. Nó bao gồm

Common Language Runtime (CLR) và thư viện lớp .NET Framework, thư viện này

bao gồm một loạt các chức năng và hỗ trợ cho nhiều tiêu chuẩn.

.NET Framework cung cấp nhiều dịch vụ, bao gồm quản lý bộ nhớ, kiểu và bộ

nhớ an toàn, bảo mật, kết nối mạng và triển khai ứng dụng. Nó cung cấp các cấu trúc

dữ liệu và API dễ sử dụng để trừu tượng hóa hệ điều hành Windows cấp thấp hơn. Bạn

có thể sử dụng các ngôn ngữ lập trình khác nhau với .NET Framework, bao gồm C#,

F# và Visual Basic.

Page 35: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

33

3.2.1.2. Common Language Runtime (CLR)

CLR cung cấp nền tảng cho các nhà phát triển ứng dụng để xây dựng một ứng

dụng tích hợp bao gồm các thành phần khác nhau đã được xây dựng bằng các nền tảng

phát triển khác nhau. Nó cung cấp một hệ thống loại chung và ngôn ngữ trung gian

(Intermediate Language - IL) để thực hiện các chương trình được viết bằng nhiều ngôn

ngữ khác nhau và để tạo điều kiện cho khả năng tương tác giữa các ngôn ngữ đó. Nó

mô tả việc sắp xếp dữ liệu thông qua định nghĩa giao diện ngôn ngữ (Interface

Definition Language - IDL) cần thiết cho khả năng tương tác ngôn ngữ [2].

CLR được thực hiện thông qua một cơ chế gọi là cơ sở hạ tầng ngôn ngữ chung

(Common Language Infrastructure - CLI). CLI cung cấp các lợi ích sau cho các nhà

phát triển ứng dụng [5]:

Cải tiến hiệu suất.

Khả năng dễ dàng sử dụng các thành phần được phát triển trong các ngôn

ngữ khác.

Các kiểu mở rộng được cung cấp bởi một thư viện lớp.

Các tính năng của ngôn ngữ như kế thừa, interface và overload cho lập trình

hướng đối tượng.

Hỗ trợ phân luồng rõ ràng cho phép tạo các ứng dụng đa luồng, có thể mở

rộng.

Hỗ trợ xử lý ngoại lệ có cấu trúc.

Hỗ trợ cho các thuộc tính tùy chỉnh.

Thu gom rác.

Sử dụng các đại diện thay cho các con trỏ hàm để tăng độ an toàn và bảo

mật.

CLR giúp dễ dàng thiết kế các thành phần và ứng dụng có đối tượng tương tác

qua các ngôn ngữ. Các đối tượng được viết bằng các ngôn ngữ khác nhau có thể giao

tiếp với nhau một cách dễ dàng và hành vi của chúng có thể được tích hợp chặt chẽ. Ví

dụ: bạn có thể định nghĩa một lớp trong C# và sau đó sử dụng ngôn ngữ Visual Basic

để lấy một lớp từ lớp C# ban đầu của bạn hoặc gọi một phương thức trên lớp gốc. Bạn

cũng có thể truyền một thể hiện của một lớp cho một phương thức của một lớp khác

được viết bằng một ngôn ngữ khác.

CLR cung cấp hạ tầng cho phép thực hiện quản lý thực thi, nó cũng cung cấp các

dịch vụ khác nhau được sử dụng trong quá trình thực thi. Trước khi một phương thức

hoặc một chức năng có thể chạy được, mã nguồn phải được biên dịch để tạo mã thực

thi dành riêng cho bộ xử lý. Môi trường phát triển dịch mã nguồn thành mã quản lý

(managed code) dưới dạng ngôn ngữ trung gian MSIL (Microsoft Intermediate

Language) hay IL (Intermediate Language). Khi thực thi mã ứng dụng, tuỳ thuộc vào

Page 36: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

34

chỉ thị người dùng trình biên dịch tức thời JIT (Just In Time) của CLR cung cấp sẽ

chuyển đổi mã quản lý (managed code) thành mã máy (native code) và JIT cất giữ mã

máy phát sinh vào bộ nhớ đệm cho các thao tác tương tự.

3.2.2. .NET Runtime security

Runtime loader thực hiện tải cả Managed code và Unmanaged code và hướng

dẫn bộ xử lý thực thi chúng [2]. Managed code thực thi dưới sự kiểm soát của runtime

và do đó có quyền truy cập tới các dịch vụ được cung cấp bởi môi trường runtime như

quản lý bộ nhớ, biên dịch JIT và quan trọng nhất là các dịch vụ bảo mật như hệ thống

chính sách bảo mật và xác minh. Unmanaged code là code đã được biên dịch để chạy

trên nền tảng phần cứng cụ thể và không thể sử dụng trực tiếp môi trường thực thi

runtime. Khi trình biên dịch ngôn ngữ tạo ra managed code được biểu diễn dưới dạng

MSIL, nó sẽ được JIT biên dịch thành mã gốc trước khi thực thi.

Có 2 hình thức xác minh trong quá trình runtime là MSIL verified và Assembly

metadata validated.

MSIL verified

Managed code được xác minh trong quá trình runtime. Unmanaged code không

thể xác minh trong quá trình runtime vì vậy nó phải được an toàn. MSIL được phân

thành 4 loại như sau:

MSIL không hợp lệ (Invalid MSIL) là MSIL mà trình biên dịch JIT không

thể tạo ra biểu diễn gốc.

MSIL hợp lệ (Valid MSIL) là tất cả các MSIL thỏa mãn ngữ pháp MSIL.

MSIL kiểu an toàn (Type-safe MSIL) loại chỉ tương tác với các loại khác

thông qua các contract được công khai.

MSIL có thể kiểm chứng (Verifiable MSIL) là một loại MSIL an toàn có thể

được chứng minh là loại an toàn bằng thuật toán xác minh.

Assembly metadata verified

Assembly metadata được verified khi một assembly được nạp vào trong Global

Assembly Cache (GAC), hoặc tải xuống bộ đệm, hoặc khi nó được đọc từ ổ đĩa nếu nó

không nạp vào GAC. GAC là trung tâm lưu trữ cho các assemplies. Bộ đệm tải xuống

lưu giữ các assemplies được tải xuống từ các vị trí khác, ví dụ từ Internet. Metadata

loại bỏ lỗi tràn bộ đệm khi không thể kiểm tra metadata token.

3.2.3. Kiến trúc bảo mật .NET

.NET Framework kết hợp với CLR và runtime cung cấp nhiều lớp và dịch vụ hữu

ích cho phép các nhà phát triển dễ dàng viết code bảo mật và an toàn [2]. Các lớp và

dịch vụ này cũng cho phép quản trị viên hệ thống để tùy chỉnh quyền truy cập mà code

có thể truy cập tài nguyên được bảo vệ. Ngoài ra, runtime và .NET Framework cung

Page 37: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

35

cấp các lớp và dịch vụ hữu ích tạo điều kiện thuận lợi cho việc sử dụng mật mã và bảo

mật dựa trên vai trò.

.NET Framework cung cấp bảo mật truy cập code và bảo mật dựa trên vai trò để

giải quyết các mối lo ngại về bảo mật về code di động và để cung cấp hỗ trợ cho phép

các thành phần để xác định những gì người dùng có quyền thực hiện. Cả bảo mật truy

cập code và bảo mật dựa trên vai trò đều được triển khai bằng cách sử một cơ sở hạ

tầng chung được cung cấp bởi CLR.

3.2.3.1. Bảo mật ứng dụng Web .NET

Bảo mật ứng dụng Web .NET bao gồm bảo mật tầng web server, application

server và database server. Hình 3.3 mô tả kiến trúc bảo mật ứng dụng web .NET [2]

Hình 3.3: Bảo mật ứng dụng web .NET.

3.2.3.1. Bảo mật trong web server IIS (Internet Information Services)

IIS là một máy chủ web Windows có sẵn trên hầu hết các các phiên bản hệ điều

hành Microsoft Windows và nó chiếm vị trí thứ hai về mức độ sử dụng chung sau

Apache HTTP server trên internet. Nó sẽ lưu trữ các trang web, ứng dụng web và dịch

vụ cần thiết bởi người dùng hoặc các nhà phát triển. IIS hỗ trợ các cơ chế xác thực

quyền truy cập sau:

Ẩn danh (Anonymous): Anonymous không yêu cầu bất kỳ xác thực nào từ

phía client, cơ chế này được kích hoạt mặc định trong hệ thống. Một khi đã

Page 38: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

36

kích hoạt xác thực Anonymous thì IIS sẽ không sử dụng bất cứ cơ chế xác

thực nào khác trừ cơ chế phân quyền NTFS.

Ưu điểm:

Đơn giản, hiệu năng cao do không phải thực hiện các thao tác xác thực

người dùng.

Không cần phải quản lý thông tin cá nhân của người dùng.

Nếu IIS không kiểm soát mật khẩu, có thể truy cập tài nguyên mạng.

Nhược điểm: Không xác thực được thông tin của người dùng hệ thống.

Basic: Kỹ thuật xác thực này là một phần của đặc tả giao thức HTTP 1.0, sử

dụng tài khoản người dùng Windows làm tài khoản xác thực. Khi sử dụng

xác thực Basic, trình duyệt sẽ yêu cầu người dùng cung cấp tên đăng nhập

(username) và mật khẩu (password). Thông tin người dùng nhập sẽ được mã

hóa ở Base64 và được truyền qua giao thức HTTP. Khi sử dụng kỹ thuật xác

thực này thì nên kết hợp với SSL, TLS để hỗ trợ mã hóa các phiên làm việc

HTTP.

Ưu điểm:

Do nó là một phần của HTTP 1.0, nên nó là cơ chế xác thực được hỗ trợ

rộng rãi nhất.

Có thể xác thực thông qua một máy chủ proxy.

Có thể sử dụng để theo dõi, lưu vết người dùng.

Nhược điểm:

Không an toàn, trừ khi kết hợp với SSL, TLS.

Đòi hỏi phải tạo tài khoản Window cho mỗi người dùng.

Degest. Cơ chế này thực hiện gửi một tóm tắt của mật khẩu thay vì gửi mật

khẩu qua mạng. Một tóm tắt là một đoạn mã có kích thước cố định, được tạo

ra bằng cách áp dụng hàm băm hoặc thuật toán tạo tóm tắt của mật khẩu.

Client và Server sử dụng cùng 1 thuật toán để xác thực bản tóm tắt mật khẩu

mà client gửi lên server.

Hình 3.4: Cơ chế degest gửi password.

Page 39: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

37

Ưu điểm:

Gửi một tóm tắt của mật khẩu thay vì gửi mật khẩu qua mạng.

Làm việc được với proxy server và firewall.

Không yêu cầu phải sử dụng SSL/TLS để bảo vệ mật khẩu.

Nhược điểm:

Chỉ được hỗ trợ bởi Internet Explorer 5.0 trở lên.

Phải lưu trữ mật khẩu ở dạng rõ ràng.

Integrated Windows Authentication

Sử dụng xác thực bằng NTLM (NT Local Area Network Manager) hoặc

Kerberos V5.

Chỉ hoạt động trên Internet Explorer 2.0 trở lên.

Là cơ chế xác thực tốt nhất trên môi trường Intranet.

Cũng giống như Digest, cơ chế xác thực này không truyền mật khẩu của

người dùng qua mạng, thay vào đó là truyền bản hashed của mật khẩu.

Client Certificate Mapping

Sử dụng giấy chứng thực (certificate) để xác thực người dùng. Giấy

chứng thực là một tài liệu chữ ký số có chứa thông tin về một thực thể và

khóa công khai liên quan đến thực thể đó.

Giấy chứng thực chứa các loại thông tin khác nhau như: tên, số seri của

giấy chứng thực, thuật toán được sử dụng để ký số…

Để xác thực Client, Server cung cấp một danh sách các giấy chứng nhận

mong đợi. Máy client sẽ gửi một bản sao của giấy chứng thực tới server

để xác thực. Server sẽ dựa trên danh sách giấy chứng thực nó có để xác

thực.

Windows NT File System (NTFS) permissions

Cài đặt thông qua cơ chế role base access control.

Có thể sử dụng phân quyền NTFS để định nghĩa các cấp độ truy cập tới

người dùng, nhóm người dùng cụ thể.

Có 5 quyền: Read, Write, Read & execute, Modify, Full control.

Internet Protocol address restriction

Thực hiện lọc theo địa chỉ IP để cho phép hoặc không cho phép truy cập

tài nguyên từ những địa chỉ IP xác định nào đó.

Có thể cấu hình Webiste hoặc File transfer protocol (FTP).

Dùng cách này cho phép ngăn chặn các máy tính vô danh truy cập vào

tài nguyên hệ thống.

Page 40: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

38

3.2.3.2. Bảo mật trong ASP.NET

a) Tệp tin Web.config

Web.config là tệp tin lưu giữ cấu hình và điều khiển tất cả các vấn đề bảo mật

trong website với định dạng XML. Mỗi website có duy nhất một file web.config được

lưu trữ tại thư mục gốc. Tuy nhiên có thể thêm các file khác trong thư mục con. Để

thực hiện thay đổi cấu hình, có thể sử dụng bất kỳ trình soạn thảo nào.

Hình 3.5: Ví dụ cài đặt file web.config.

b) Cơ chế xác thực quyền truy cập (Authentication)

Xác thực người dùng trả lời cho câu hỏi: Bạn là ai (Who are you?). ASP.NET hỗ

trợ các cơ chế xác thực bao gồm [2]: Window Base, Form Base, Passport, None.

Windows. Đây là cơ chế xác thực mặc định trong đó nhà cung cấp dựa trên

IIS thực hiện xác thực client. Sau khi IIS thực hiện xác thực một client, nó

gửi đi một thẻ bài bảo mật cho ASP.NET.

Ưu điểm:

Phù hợp cho hệ thống web cục bộ (intranet).

Không cần thông báo xác thực.

Do sử dụng tài khoản window nên không cần viết bất cứ đoạn mã xác

thực nào.

Nhược điểm: Có thể phát sinh yêu cầu quản lý các tài khoản của window.

Forms. Đây là cơ chế xác thực dựa trên cookie. Là cơ chế thu thập thông tin

xác thực từ máy client thông qua form HTML. Client gửi thông tin xác thực

tới ứng dụng ASP.NET để thực hiện xác thực. Sau khi xác thực thành công,

ứng dụng ASP.NET sẽ tạo ra 1 cookie để client sử dụng trong các lần request

tiếp theo. Các thông tin dùng để xác thực có thể được lưu trữ trong file cấu

hình hoặc trong Database server.

Ưu điểm:

Có thể sử dụng để xác nhận hoặc cá nhân.

Không yêu cầu tài khoản phải tương ứng với tài khoản window.

Nhược điểm:

Page 41: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

39

Là đối tượng bị tấn công khi còn trong vòng đời của cookie, trừ khi sử

dụng SSL/TLS.

Chỉ dùng được cho các tài nguyên là các file .asax, .ascx, .aspx, .asmx,

và .config. Không thực hiện bất cứ xử lý nào từ các file .htm, .jpg hoặc

.gif.

Ví dụ về cài đặt:

Hình 3.6: Ví dụ về cài đặt xác thực Forms.

Passport. Microsoft Passport sử dụng kỹ thuật single sign on (SSO). Khi các

thành viên sử dụng site đăng ký với Passport thì dịch vụ Passport sẽ cung cấp

1 khóa để thực hiện mã hóa, giải mã thông tin truy vấn được truyền giữa

thành viên của site và server xác thực Passport. Để sử dụng, cần cài đặt

Passport SDK của Microsoft. Bản quyền miễn phí cho các nhà phát triển, có

phí đối với các doanh nghiệp.

None. Trong cơ chế xác thực này, sử dụng quyền truy cập Anonymous đến

web server. Cơ chế này quản lý bảo mật thông qua ISAPI và sử dụng tài

khoản IUSER_machinename của Windows. Bạn có thể sử dụng cái này nếu

bạn có kế hoạch phát triển mã xác thực tùy chỉnh của riêng bạn.

c) Cơ chế chứng thực quyền sử dụng (Authorization)

Chứng thực quyền sử dụng trả lời cho câu hỏi: Bạn có thể làm gì? (What you can

do?). Cơ chế chứng thực thực hiện xác thực quyền truy cập thư mục, tệp tin của

người dùng. Cơ chế hỗ trợ của ASP.NET bao gồm:

Membership

Role-based Security

Verb-based: GET, POST, HEAD (dựa vào giao thức HTTP)

Anonymous Users (? Users)

Authenticated Users (* Users)

Page 42: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

40

Hình 3.7: Ví dụ về cài đặt chứng thực.

ASP.NET cung cấp 2 cách để cho phép truy cập vào một tài nguyên nhất định:

File authorization. Được thực hiện bởi module FileAuthorizationModule. Nó

kiểm tra danh sách quyền truy cập (access control list - ACL) của file .aspx

hoặc .asmx để xác định xem 1 người dùng có quyền truy cập vào file không.

Quyền ACL được xác minh cho định danh của người dùng Windows (nếu

Windows xác thực được bật) hoặc cho định danh Windows của quy trình

ASP.NET.

URL authorization. Được thực hiện bởi module UrlAuthorizationModule,

ánh xạ người dùng và vai trò đối với Uniform Resource Locators (URLs)

trong các ứng dụng ASP.NET. Mô-đun này có thể được sử dụng để cho phép

có chọn lọc hoặc từ chối truy cập vào các phần tùy ý của ứng dụng (thường

là thư mục) cho người dùng hoặc vai trò cụ thể.

.NET Roles: Chứng thực và bảo mật dựa trên vai trò trong ASP.NET cũng có

thể được thực hiện thông qua .NET roles.

d) Bảo mật cho trang web

Để thực hiện bảo mật cho trang web, thêm thẻ <location> vào file Web.config

<configuration>

<location path=“somepage.aspx”>

<system.web>

<authorization>

</authorization >

</system.web>

</location>

</configuration>

Page 43: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

41

e) Bảo mật cho thư mục web

Để bảo mật cho thư mục web, tạo thêm một file Web.config mới cho thư mục

cần bảo mật. Nội dung file chỉ cần chứa các thông tin sau:

<configuration>

<system.web>

<authorization>

</authorization >

</system.web>

</configuration>

f) Các cơ chế xác thực và chứng thực dịch vụ

Hình 3.8: Các dịch vụ bảo mật ASP.NET.

Hình 3.8 mô tả các cơ chế xác thực và chứng thực được cung cấp bởi IIS và

ASP.NET khi một client gửi yêu cầu dịch vụ Web [2]:

1. Yêu cầu Web HTTP hoặc HTTPS nhận được từ mạng. Nên sử dụng SSL vì

SSL xác thực danh tính máy chủ bằng chứng chỉ máy chủ và định danh

client. SSL cũng cung cấp một kênh an toàn để bảo vệ dữ liệu giữa client và

server với tính bảo mật và toàn vẹn.

2. IIS xác thực người dùng bằng cách sử dụng xác thực Basic, Digest,

Integrated (NTLM or Kerberos) hoặc Certificate.

Page 44: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

42

Nếu IIS được cấu hình để xác thực ẩn danh, IIS sẽ tạo một token truy cập

cho tài khoản người dùng ẩn danh, mặc định là IUSR_MACHINE.

Nếu IIS được cấu hình để xác thực, sau khi xác thực thành công, IIS tạo

ra một token truy cập Windows cho mỗi người dùng được xác thực.

3. Tại thời điểm này, IIS cho phép người gọi truy cập tài nguyên được yêu cầu.

Quyền NTFS được xác định thông qua Access Control List (ACL) được liên

kết với tài nguyên đã được yêu cầu và sử dụng để cấp quyền truy cập. IIS

cũng được cấu hình để chỉ chấp nhận các yêu cầu từ các client này với các

địa chỉ IP riêng.

4. IIS chuyển xác thực token truy cập Windows của người gọi như được tạo ở

bước 2 cho ASP.NET.

5. Ở thời điểm này, các điều khiển chuyển từ IIS sang ASP.NET và ASP.NET

xác thực người gọi.

Nếu ASP.NET được cấu hình để xác thực Windows, không có xác thực

bổ sung nào được thực hiện tại thời điểm này. Để xác thực Windows,

ASP.NET sẽ chấp nhận mọi token mà nó nhận được từ IIS.

Nếu ASP.NET được cấu hình để xác thực Forms, thông tin đăng nhập do

người gọi cung cấp sẽ được xác thực dựa trên dữ liệu lưu trữ. Dữ liệu lưu

trữ có thể là dịch vụ thư mục Active Directory, Giao thức truy cập thư

mục (Lightweight Directory Access Protocol - LDAP) hoặc thậm chí cơ

sở dữ liệu chẳng hạn như SQL Server hoặc Oracle.

Nếu ASP.NET được cấu hình để xác thực Passport, người dùng sẽ được

chuyển hướng đến trang web Passport cho dịch vụ xác thực Passport để

xác thực người dùng.

6. Tại thời điểm này, ASP.NET cho phép truy cập vào tài nguyên hoặc hệ điều

hành theo yêu cầu của người gọi. Với xác thực Windows,

FileAuthorizationModule (một hệ thống được cung cấp bởi module HTTP)

kiểm tra xem người gọi có quyền cần thiết để truy cập tài nguyên được yêu

cầu hay không. Token truy cập của người gọi được khớp với ACL được liên

kết với tài nguyên. UrlAuthorizationModule (một hệ thống khác được cung

cấp bởi module HTTP) sử dụng các quy tắc ủy quyền được định cấu hình

trong Web.config. Có thể sử dụng .NET princial, quyền, role-base security

kết hợp với khai báo và lập trình bảo mật để kiến trúc một hệ thống xác nhận

quyền rất tinh vi để cho phép hoặc cấm truy cập vào tài nguyên được yêu cầu

hoặc thực hiện thao tác được yêu cầu.

7. Nếu cần thiết, mã trong ứng dụng của bạn truy cập tài nguyên cục bộ hoặc từ

xa bằng cách sử dụng một định danh cụ thể.

Page 45: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

43

3.2.3.3. Web Service

Web service đóng gói các chức năng nghiệp vụ có thể từ một câu trả lời yêu cầu

đơn giản đến các tương tác quy trình nghiệp vụ đầy đủ bao quang ứng dụng [2]. Công

nghệ web service là tương tác và trung lập với nhà cung cấp hoặc trung lập nền tảng.

Web service là khép kín, các module ứng dụng và các dịch vụ có thể được mô tả, xuất

bản, phát hiện, định vị và gọi qua mạng đặc biệt là Internet.

Bảo mật web service là cơ chế bảo mật cho các dịch vụ web sử dụng cơ chế xác

thực thẻ bài (token security). Một dịch token security có thể là Kerberos, PKI (Public

Key Infrastructure), hoặc một dịch vụ xác thực username/ password. Thẻ bài sẽ được

gắn vào thông điệp SOAP khi được gửi từ client đến web service. Thẻ bài có thể được

dùng cho một hoặc nhiều gói tin SOAP.

Xác thực (Authentication):

Xác thực thông qua token, tên của token trong trường hợp này là

UsernameToken.

Hình 3.9: Cấu hình xác thực Token.

Xác thực PKI thông qua X.509 Certificates. Tên của Token trong trường hợp

này là BinarySecurityToken.

Hình 3.10: Cấu hình xác thực PKI X.509 Certificate.

Chữ ký (Signatures)

Định danh người dùng theo X.509, UsernameToken hoặc Kerberos được

dùng để ký trên thông điệp.

Các thông điệp là không thể giả mạo vì đã được ký vì web service có thể xác

thực được nguồn gốc nhờ thông tin về chữ ký của các client.

Page 46: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

44

3.2.3.4. Structured Query Language Server

SQL Server

SQL Server cung cấp một một kiến trúc bảo mật cho phép các nhà quản trị và

nhà phát triển CSDL tạo các ứng dụng CSDL an toàn và chống lại các mối đe dọa.

Kiến trúc bảo mật SQL Server được mô tả ở hình 3.11

Hình 3.11: Kiến trúc bảo mật SQL Server.

Các ứng dụng client sử dụng kết nối bảo mật với CSDL.

Định danh truy cập CSDL hỗ trợ SSL hoặc IPSec.

Xác thực đăng nhập bằng user Window và user SQL.

Phân quyền truy cập đến CSDL, đến các bảng, thủ tục, hàm trong CSDL.

3.2.3.5. ActiveX Data Object

Microsoft ActiveX Data Objects (ADO) cho phép ứng dụng client của bạn truy

cập và thao tác dữ liệu từ nhiều datasource khác nhau. ADO.NET là một phần được

tích hợp trong .NET framework cung cấp khả năng truy cập đến các cơ sở dữ liệu quan

hệ như SQL Server, XML và dữ liệu ứng dụng.

ADO gồm một số chức năng như Object Linking and Embedding Database (OLE

DB) Provider, Open Database Connectivity (ODBC) Drivers được sử dụng để theo dõi

dữ liệu và xây dựng các ứng dựng Web-base và ứng dụng client/server. Remote data

service (RDS) cho phép bạn chuyển dữ liệu từ server qua ứng dụng client hoặc web

page. ActiveX Data Objects Extensions (ADOX) là một thư viện đi kèm cho phép tạo

mới, sửa, xóa các đối tượng như bảng hay thủ tục. Nó cũng bao gồm các đối tượng bảo

mật để duy trì người dùng và các nhóm (user and group), gán và bỏ quyền trên đối

tượng.

ActiveX Data Objects Multidimensional (ADO MD) mở rộng thêm tính năng của

ADO bao gồm các đối tượng dữ liệu đa chiều như CubeDef and Cellset objects. Thư

viện ADODB - ADODB Library bao gồm các đối tượng phía server được thêm vào

Page 47: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

45

(Kết nối, câu lệnh, lỗi, biến) được sử dụng trong các thành phần phía server để giao

tiếp với cơ sở dữ liệu. ADOR (ADO Recordset) Library là một dạng thu nhỏ sử dụng

trên phía client, cho phép thao tác trên các bản ghi tồn tại ở phía client. ADOR không

bao gồm (Kết nối, câu lệnh, lỗi, biến).

3.2.4. Thư viện bảo mật trong .NET

.NET Framework cung cấp triển khai nhiều thuật toán mã hóa tiêu chuẩn, nó

được chia thành hai nhóm chính [2, 7]:

3.2.4.1. Mã hóa

Trong mật mã học, mã hóa là quá trình mã hóa thông điệp hoặc thông tin sang

dạng hiển thị khác sử dụng thuật toán + khóa, do vậy chỉ các bên được ủy quyền mới

có thể giải mã và những người không được ủy quyền thì không thể giải mã. Các dạng

mã hóa bao gồm: hàm băm, mã hóa khóa đối xứng, mã hóa khóa khóa công khai.

a) Hàm băm (Hash)

Sử dụng thuật toán Hash để đưa ra một chuỗi cố định từ một thông điệp có độ dài

bất kỳ. Khi sử dụng thuật toán này, xung đột giá trị băm rất hiếm khi xảy ra, chuỗi mã

hóa không thể giải mã thành chuỗi ban đầu do không sử dụng khóa.

Các thuật toán mã hóa bao gồm: MD5, SHA-1, SHA256, SHA512,… Các thư

viện trong .NET hỗ trợ các thuật toán trên:

MD5CryptoServiceProvider

SHA1CryptoServiceProvider

SHA356CryptoServiceProvider

SHA512CryptoServiceProvider

b) Mã hóa khóa đối xứng

Trong mã khóa đối xứng, sử dụng 1 khóa dùng chung để mã hóa và giải mã.

Trong loại mã hóa này, khóa được giữ bí mật và chỉ được biết đến với các bên mã hóa

(người gửi) và giải mã (người nhận).

Hình 3.12: Mã hóa và giải mã với 1 khóa.

Page 48: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

46

Trong mật mã khóa đối xứng có 5 thành phần (Hình 3.12), đó là

Plainttext: Bản rõ

Ciphertext: Bản mã

Encryption algorithm: Thuật toán mã hóa

Decription algorithm: Thuật toán giải mã

KEY: Khóa bí mật

Các thuật toán mã hóa bao gồm: 3DES, Rijndael (AES), blowfish,… Các thư

viện trong .NET hỗ trợ các thuật toán trên:

AesCryptoServiceProvider

AesManaged

DESCryptoServiceProvider

RC2CryptoServiceProvider

RijndaelManaged

TripleDESCryptoServiceProvider

Các lưu ý khi thực hiện tạo khóa mật mã hóa khóa đối xứng an toàn:

Khóa tốt nhất là một số nguyên tố ngẫu nhiên.

Sử dụng thuật toán hàm băm (MD5, SHA) để tạo khóa.

Sử dụng khóa băm HMAC để sinh khóa.

b) Mã hóa khóa công khai (Mã hóa bất đối xứng)

Trong mã khóa công khai, sử dụng hai khóa để cùng tạo nên một cặp chìa khóa

(public key và private key). Một trong những khóa này từ cặp được sử dụng để mã hóa

và khóa còn lại để giải mã. Một trong những khóa này được giữ bí mật và khóa còn lại

được công khai cho mọi người sử dụng, đây là lý do tại sao nó được đặt tên là mật mã

khóa công khai. Vì có hai khóa khác nhau được sử dụng, đây còn được gọi là mật mã

khóa bất đối xứng.

Hình 3.13a: Mã hóa với Public key và giải mã với Private key.

Page 49: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

47

Hình 3.13b: Mã hóa với Private key và giải mã với Public key.

Trong mật mã khóa công khai có 6 thành phần (Hình 2.5a và 2.5b), đó là:

Plaintext: Bản rõ

Ciphertext: Bản mã

Encryption algorithm: Thuật toán mã hóa

Decryption algorithm: Thuật toán giải mã

Public key: khóa công khai, khóa này có thể dùng để mã hóa và giải mã

Private key: khóa bí mật, khóa này có thể dùng để mã hóa và giải mã

Các thuật toán mã hóa bao gồm: RSA, DSA. Các thư viện trong .NET hỗ trợ các

thuật toán trên:

DSACryptoServiceProvider

RSACryptoServiceProvider

ECDiffieHellmanCng

ECDsaCng

Các giải thuật tiêu biểu của mật mã hóa khóa công khai:

Thuật toán mã hóa RSA

Các kỹ thuật mã hóa đường cong Elliptic

Lưu ý khi thực hiện tạo khóa mật mã khóa công khai an toàn, sử dụng số nguyên tố

ngẫu nhiên đủ lớn để tạo ra cặp khóa công khai và bí mật.

3.2.3.5. Chữ ký số

Chữ ký số là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video…) nhằm

mục đích xác định người chủ của dữ liệu đó. Chữ ký số mang một số ích lợi:

Khả năng xác định nguồn gốc của dữ liệu.

Tính toàn vẹn dữ liệu.

Tính không thể phủ nhận của dữ liệu.

3.3. Một số kiểu tấn công ứng dụng Web

Các lỗi bảo mật ứng dụng web là nguyên nhân chủ yếu gây ra các lỗi đối với

website đang vận hành. Sau khi xác định các lỗi này, tin tặc sẽ sử dụng các kỹ thuật

Page 50: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

48

khác nhau để tiến hành khai thác hệ thống đích. Một số kỹ thuật thường được sử dụng:

Buffer Overflows, SQL Injection, và Cross-site Scripting…Việc phân loại các kiểu tấn

công thành các nhóm khác nhau sẽ giúp cho người quản trị dễ dàng xác định các nguy

cơ cũng như biên pháp đối phó hơn.

3.3.1. SQL Injection

Tấn công SQL Injection được thực thi bằng cách chèn các câu truy vấn SQL vào

dữ liệu tương tác giữa máy khách và trình ứng dụng. Quá trình khai thác lỗi SQL

Injection thành công có thể giúp tin tặc lấy được các dữ liệu nhạy cảm trong cở sở dữ

liệu, thay đổi cơ sở dữ liệu (Insert/Update/Delete), thực thi các hành động với quyền

của người quản trị và cao hơn có thể điều khiển được hệ điều hành máy chủ.

Đặc điểm của tấn công SQL Injection

Tấn công SQL Injection dựa vào cách thức hoạt động của trang web.

Sử dụng nguồn dữ liệu nhập vào: Textbox, QueryString.

Sử dụng kỹ thuật chèn các “mã độc SQL” vào lệnh SQL: chức năng tìm

kiếm, phân trang, xác thực người dùng. Ví dụ: string sql = "select * from Users

where user=' ' or 1=1 --' and pwd=''";

Chiếm quyền kiểm soát hệ thống, có thể thực hiện các lệnh hệ thống như:

;xp_cmdshell 'format c: /q /yes'; drop database myDB; --. Ví dụ: select * from

tabelle where id=1; xp_cmdshell 'format c: /q /yes '; drop database myDB; --

Biện pháp đối phó:

Không sử dụng quyền “sa”.

Chuỗi kết nối (connection string) lưu có mã hóa.

Sử dụng Store Procedure để thực hiện truy vấn dữ liệu.

Sử dụng tham số (đối tượng Parameter) trong lệnh SQL.

string sql = "select * from Users where user = @user and pwd = @pwd";

SqlCommand cmd = new SqlCommand(sql,con);

cmd.Parameters.Add("@user",User.Text);

cmd.Parameters.Add("@pwd",Password.Text);

3.3.2. Cross-site scripting (XSS)

Cross-site scripting là một trong những kĩ thuật tấn công phổ biến nhất hiện nay,

đồng thời nó cũng là một trong những vấn đề bảo mật quan trọng đối với các nhà phát

triển web và cả những người sử dụng web. Bất kì một website nào cho phép người sử

dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các đoạn mã nguy hiểm thì đều

có thể tiềm ẩn các lỗi XSS.

Tin tặc tấn công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP …)

những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những

Page 51: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

49

người sử dụng khác. Trong đó, những đoạn mã nguy hiểm đựơc chèn vào hầu hết được

viết bằng các Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là cả

các thẻ HTML

Giải pháp:

Chỉ cho phép những dữ liệu hợp lệ, từ chối nhận các dữ liệu sai, thường

xuyên kiểm tra và lọc dữ liệu đầu vào.

Sử dụng Validation controls, Regexp.

Sử dụng Server.HtmlEncode/ Server.HtmlDecode.

3.3.3. HTTP Harvesting

Tấn công HTTP Harvesting cũng là một kỹ thuật tấn công ứng dụng web, tin tặc

tấn công bằng cách lợi dụng:

Trang web điều khiển cơ sở dữ liệu

Hiển thị kết kết quả dựa vào: Textbox, QueryString, Cookie.

Sử dụng các lệnh SQL.

Sử dụng tham số phân trang: Detail.aspx?id=1

Địa chỉ email để gửi thư rác.

Giải pháp:

Mã hóa QueryString.

Kết hợp dữ liệu đầu vào người dùng với Textbox

Sử dụng System.Drawing.

Theo dõi quá trình khai thác web của người dùng.

Đánh giá của bên thứ ba.

3.4. Kết luận

Như vậy ở chương này luận văn đã cung cấp một cái nhìn tổng quan về kiến trúc

bảo mật hệ thống thông qua vòng đời phát triển bảo mật, kỹ thuật về phân tích yêu cầu

bảo mật, thiết kế bảo mật, đánh giá bảo mật cũng như kiểm thử bảo mật. Luận văn

cũng cung cấp một cái nhìn tổng quan về .NET Framwork, kỹ thuật bảo mật từ web

server IIS, ứng dụng web ASP.NET, công cụ hỗ trợ kết nối tới CSDL ADO.NET, cơ

sở dữ liệu SQL Server. Ngoài ra còn cung cấp các thư viện mã hóa trong .NET và một

số kiểu tấn công ứng dụng web.

Page 52: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

50

Chương 4: MỘT MÔ HÌNH ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG

MICROSOFT .NET TẠI GPBANK

Trên cơ sở lý thuyết về các kiểu tấn công trong chương 2 và chương 3, kiến trúc

bảo mật hệ thống phần mềm trong chương 3, bảo mật trong Microsoft .NET,

ASP.NET và các thư viện mã hóa trong .NET trong chương 3, trong chương này tôi

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. Hệ thống xây

dựng trong chương này cụ thể là thống TestKey Management System (TMS). Đây là

hệ thống quản lý các yêu cầu và chứng từ chuyển tiền thanh toán quốc tế từ các

PGD/CN chuyển lên phòng Thanh toán Quốc tế tại TSC ứng dụng các kỹ thuật bảo

mật trong Microsoft .NET, ứng dụng giải pháp hạn chế lỗ hổng bảo mật và tấn công

ứng dụng web.

4.1. Mô tả bài toán

4.1.1. Mục đích

Xây dựng hệ thống TMS (TestKey Management System) quản lý mã Testkey

và mã hóa một phần văn bản, có chức năng sinh và xác thực mã Testkey, mã

hóa và giải mã văn bản, đảm bảo tính đúng đắn cho các văn bản cần lưu

chuyển trong nội bộ GPBank.

Tên đăng nhập, mật khẩu đăng nhập hệ thống phải đảm bảo tuân thủ đúng

theo yêu cầu của TT18/2018 và Quy định an toàn bảo mật hệ thống CNTT

của GPBank.

Đảm bảo được tính logic của thuật toán sinh mã xác thực Testkey, thuật toán

mã hóa và giải mã văn bản.

Đảm bảo được việc quản lý truy cập hệ thống; giám sát và ghi nhật ký hoạt

động của hệ thống; yêu cầu về an toàn và bảo mật hệ thống theo quy định

của TT 18/2018.

Cho phép người dùng in ra bản cứng Testkey.

4.1.2. Phạm vi

Xây dựng hệ thống TMS quản lý mã Testkey và mã hóa thông tin chuyển

tiền, có chức năng sinh và xác thực mã Testkey, mã hóa và giải mã văn bản,

đảm bảo tính đúng đắn cho các yêu cầu và chứng từ chuyển tiền thanh toán

Quốc tế của khách hàng chuyển từ các CN/PGD lên phòng Thanh toán Quốc

tế tại TSC.

Xây dựng ứng dụ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.

Người sử dụng hệ thống là người dùng cuối tại các CN/PGD, cán bộ phòng

HTVH, cán bộ phòng TTQT tại TSC.

Page 53: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

51

Thông tin cập nhật hệ thống là các thông tin liên quan đến yêu cầu chuyển

tiền thanh toán quốc tế của khách hàng và các file scan màu (file .PDF)

chứng từ kèm theo.

4.1.3. Yêu cầu cụ thể

4.1.3.1. Yêu cầu chức năng

a) Module thực hiện nghiệp vụ

Chức năng nhập yêu cầu bao gồm: thông tin chuyển tiền, tạo mã Testkey và

ký vào thông tin chuyển tiền.

Chức năng xác nhận yêu cầu bao gồm: kiểm tra Testkey, kiểm tra chữ ký

thông tin chuyển tiền.

b) Module Thống kê, Báo cáo

Thống kê các giao dịch theo thời gian, loại tiền, đơn vị.

c) Module quản trị Admin

Cho phép admin có quyền quản trị người dùng: thêm mới, sửa, xóa, phân

quyền.

Cho phép admin có quyền quản trị thông tin phòng/ban, quản trị khóa ký (sử

dụng để mã hóa và giải mã).

Cho phép thay đổi thông tin cấu hình hệ thống.

4.1.3.2. Yêu cầu phi chức năng

a) Hiệu suất

Đảm bảo thời gian thực hiện nghiệp vụ nhanh chóng.

Đảm bảo thời gian truy xuất, tìm kiếm thông tin chính xác.

b) Bảo mật

Thực hiện yêu cầu bảo mật cho hệ thống tuân thủ theo yêu cầu của TT18/2018 và

Quy định an toàn bảo mật hệ thống CNTT của GPBank như:

Mật khẩu người dùng phải tuân thủ các nguyên tắc sau:

o Chứa cả các ký tự viết hoa và viết thường (Ví dụ: a – z, A - Z)

o Có các con số, các ký tự đặc biệt (Ví dụ: 0 – 9,

|@#!%&*()_+=\’{}[]:”;<>?/)

o Có ít nhất 8 ký tự cả chữ và số.

Thời hạn sử dụng mật khẩu: Mật khẩu phải được thay đổi định kỳ 45

ngày/lần.

Quản lý người sử dụng hệ thống:

o Giới hạn thời gian truy cập hệ thống: từ 07h00 đến 19h00

Page 54: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

52

o Giới hạn số lần đăng nhập sai: 3 lần

o Giới hạn phiên làm việc: 1 lần

o Mã hóa mật khẩu của người dùng lưu trữ trong Cơ sở dữ liệu

o Khóa người dùng nếu đăng nhập sai quá số lần quy định.

Mã hóa thông tin yêu cầu chuyển tiền, mã hóa file chứng từ yêu cầu.

Độ dài TestKey tối thiểu là 8 ký tự và không trùng với các TestKey đã tồn tại

trên hệ thống.

Ghi nhật ký hoạt động của hệ thống.

Mã hóa thông tin kết nối tới CSDL

Phòng chống các cuộc tấn công ứng dụng web, áp dụng giải pháp khắc phục

lỗ hổng bảo mật.

c) Môi trường

Tương thích với môi trường các máy chủ Window và các ứng dụng phát triển sử

dụng Microsoft .Net hiện tại, tránh phát sinh thêm chi phí.

4.1.4. Giải pháp

Xây dựng ứng dụng Web sử dụng ASP.NET và Bootrap, cơ sở dữ liệu MS

SQL Server.

Sử dụng các thư viện mã hóa của Microsoft .NET để thực hiện mã hóa mật

khẩu, mã hóa/giải mã file PDF, mã hóa/giải mã thông tin yêu cầu chuyển

tiền, tạo/xác thực mã Testkey.

Áp dụng một số giải pháp để hạn chế tấn công ứng dụng web.

Sử dụng cấu hình của IIS, ASP.NET để thực hiện cấu hình đáp ứng các yêu

cầu bảo mật.

4.2. Phân tích nghiệp vụ

4.2.1. Mô tả chức năng

a) Quản lý luân chuyển yêu cầu chuyển tiền

Thông tin yêu cầu chuyển tiền của khách hàng cần được người dùng tại đơn vị

yêu cầu thu thập đủ.

Thông tin cơ bản yêu cầu chuyển tiền bao gồm: Ngày yêu cầu, đơn vị yêu cầu

(phòng/ban), đơn vị nhận yêu cầu, người yêu cầu, mã khách hàng, tên khách

hàng, số tiền, loại tiền, số tham chiếu, số trang văn bản (gửi kèm), ghi chú,…

b) Quản lý khóa ký

Việc sử dụng khóa để ký được người dùng thực hiện khi tạo yêu cầu.

Việc sử dụng khóa để kiểm tra được người dùng thực hiện khi tiếp nhận yêu

cầu.

Page 55: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

53

Khóa được tạo thành từng cặp bao gồm đơn vị gửi yêu cầu và đơn vị nhận yêu

cầu.

c) Thống kê, báo cáo

Thực hiện thống kê các giao dịch theo ngày, đơn vị, loại tiền.

d) Quản trị hệ thống

Quản lý thông tin về người dùng, thông tin về đơn vị,…

4.2.2. Quy trình luân chuyển yêu cầu chuyển tiền

4.2.2.1. Mô tả

Khi khách hàng có nhu cầu chuyển tiền thanh toán quốc tế, các PGD/CN trong

hệ thống thực hiện tiếp nhận yêu cầu của khách hàng và lập chứng từ cần thiết. Sau khi

có đầy đủ thông tin PGD/CN thực hiện gửi yêu cầu cho phòng thanh toán Quốc tế tại

TSC để thực hiện giao dịch cho khách hàng. Quy trình luân chuyển yêu cầu chuyển

tiền thực hiện trong hệ thống bao gồm 2 bước:

Bước 1: PGD/CN thực hiện tạo yêu cầu và gửi thông tin cho phòng Thanh

toán quốc tế tại TSC.

Bước 2: Thanh toán quốc tế tại TSC sau khi nhận được yêu cầu thực hiện

kiểm tra xác thực thông tin yêu cầu của PGD/CN.

4.2.2.2. Quy trình tạo yêu cầu chuyển tiền

a) Mô hình quy trình xử lý

Việc tạo yêu cầu được thực hiện tại PGD/CN khi có yêu cầu từ khách hàng.

Thông tin về yêu cầu chuyển tiền sẽ được cập nhật vào CSDL sau khi người dùng thực

hiện xong việc tạo yêu cầu.

Page 56: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

54

Bắt đầu

Kết thúc

Nhập thông tin chuyển tiền

của khách hàng

Ký vào yêu cầu chuyển tiền

Gửi yêu cầu

1

2

4

Tạo Testkey

3

Hình 4.1: Quy trình tạo yêu cầu chuyển tiền.

b) Mô tả các bước thực hiện trong quy trình

Nhập thông tin chuyển tiền của khách hàng (bước 1)

Đối tượng thực hiện: Người dùng cuối tại PGD/CN

Đầu vào: ngày yêu cầu, đơn vị yêu cầu (phòng/ban), người yêu cầu, mã

khách hàng, tên khách hàng, số tiền, loại tiền, số tham chiếu, số trang

văn bản (gửi kèm), ghi chú, file scan PDF chứng từ.

Đầu ra: Thông tin yêu cầu chuyển tiền

Mô tả: Hệ thống kiểm tra và cập nhật thông tin vào CSDL

Tạo Testkey (bước 2)

Đối tượng thực hiện: Người dùng cuối tại PGD/CN

Đầu vào: Khóa bí mật, ngày yêu cầu, đơn vị yêu cầu (phòng/ban), người

yêu cầu, mã khách hàng, số tiền, loại tiền, số trang văn bản.

Đầu ra: Mã Testkey độ dài 10 ký tự.

Mô tả: Hệ thống sử dụng hàm băm để mã hóa 1 chiều thông tin và lấy ra

10 ký tự ở các vị trí xác định trong chuỗi băm.

Ký vào yêu cầu chuyển tiền (bước 3)

Đối tượng thực hiện: Người dùng cuối tại PGD/CN

Đầu vào: Thông tin yêu cầu chuyển tiền và chữ ký (Public key) của đơn

vị đã được cung cấp.

Đầu ra: Thông tin chuyển tiền đã được mã hóa và ký, chứng từ đính kèm

(file PDF) được mã hóa.

Page 57: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

55

Mô tả: Hệ thống thực hiện mã hóa thông tin chuyển tiền bằng public key

của đơn vị và mã hóa file PDF.

Gửi yêu cầu (bước 4)

Đối tượng thực hiện: Người dùng cuối tại PGD/CN

Đầu vào: Thông tin chuyển tiền đã được mã hóa và ký

Đầu ra: Trạng thái bản ghi Thông tin chuyển tiền đã được mã hóa và ký.

Mô tả: Hệ thống thay đổi trạng thái bản ghi và cập nhật thông tin ngày

giờ chuyển thông tin.

4.2.2.3. Quy trình tiếp nhận, kiểm tra và xử lý

a) Mô hình quy trình xử lý

Việc tiếp nhận và xử lý yêu cầu được thực hiện bởi cán bộ tại phòng Thanh toán

Quốc tế tại TSC.

Bắt đầu

Kết thúc

Nhận yêu cầu

Kiểm tra chữ ký

Xác nhận

Yes

Đúng chữ ký

1

3

4

Phản hồi lại cho PGD/CNNo

Kiểm tra Testkey

Đúng Testkey No

Yes

2

Hình 4.2: Quy trình kiểm tra, xác nhận yêu cầu.

b) Mô tả các bước thực hiện trong quy trình

Nhận yêu cầu (bước 1)

Đối tượng thực hiện: Người dùng cuối tại Phòng thanh toán Quốc tế.

Page 58: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

56

Đầu vào: Ngày yêu cầu, đơn vị yêu cầu (phòng/ban), người yêu cầu, mã

khách hàng, tên khách hàng.

Đầu ra: Thông tin yêu cầu chuyển tiền từ đơn vị yêu cầu.

Mô tả: Hệ thống tìm kiếm và hiển thị thông tin yêu cầu trên CSDL.

Kiểm tra Testkey (bước 2)

Đối tượng thực hiện: Người dùng cuối tại Phòng thanh toán Quốc tế.

Đầu vào: Thông tin yêu cầu chuyển tiền và mã Testkey in/ghi trên bản

cứng.

Đầu ra: Mã Testkey hợp lệ/không hợp lệ.

Mô tả: Hệ thống thực hiện kiểm tra mã Testkey nhập vào trên hệ thống

căn cứ thông tin yêu cầu.

Kiểm tra chữ ký (bước 3)

Đối tượng thực hiện: Người dùng cuối tại Phòng thanh toán Quốc tế.

Đầu vào: Thông tin yêu cầu chuyển tiền và chữ ký (Private key) tương

ứng với đơn vị yêu cầu.

Đầu ra: Thông tin chuyển tiền, chứng từ đính kèm (file PDF) được giải

mã và/hoặc chữ ký không hợp lệ.

Mô tả: Hệ thống thực hiện sử dụng chữ ký Private key tương ứng với

đơn vị gửi yêu cầu thực hiện giải mã thông tin yêu cầu chuyển tiền và

file chứng từ PDF gửi kèm theo.

Xác nhận (bước 4)

Đối tượng thực hiện: Người dùng cuối tại Phòng thanh toán Quốc tế.

Đầu vào: Thông tin chuyển tiền.

Đầu ra: Trạng thái bản ghi Thông tin chuyển tiền đã được xác nhận.

Mô tả: Hệ thống thay đổi trạng thái bản ghi và cập nhật thông tin ngày

giờ nhận thông tin.

4.2.3. Biểu đồ ca sử dụng

Tác động vào hệ thống bao gồm 3 nhóm chính là: Quản trị hệ thống, Hỗ trợ vận

hành, Người dùng cuối. Người dùng thuộc nhóm Quản trị hệ thống sẽ có quyền thực

hiện tất cả các chức năng trong hệ thống. Người dùng thuộc nhóm Hỗ trợ vận hành sẽ

có quyền thực hiện trên module Quản trị người dùng và Quản lý khóa ký. Người dùng

cuối chỉ có quyền thực hiện các chức năng trên module Quản lý luân chuyển văn bản.

Page 59: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

57

Trường hợp sử dụng tổng quan các module trong hệ thống:

Quản lý Phòng ban

Thống kê, báo cáo

Quản lý người dùng

Quản lý khóa ký

Quản lý luân chuyển

yêu cầu chuyển tiền

Quản trị hệ thống

Người dùng cuối

Hỗ trợ vận hành

Cấu hình hệ thống

Hình 4.3: Ca sử dụng các module trong hệ thống.

Trong trường hợp tổng quan, người Quản trị hệ thống có thể thực hiện các chức

năng: Quản lý thông tin phòng ban, Quản lý khóa, Quản lý người dùng, Quản lý luân

chuyển thông tin chuyển tiền, Thống kê báo cáo.

Một số trường hợp sử dụng cụ thể:

Quản lý Phòng ban

Quản trị hệ thống

Thêm mới phòng ban

Xem thông tin phòng ban

Chỉnh sửa phòng ban

Xóa phòng ban

Hỗ trợ vận hành

Quản lý phòng ban

<<include>>

<<include>>

<<include>>

<<include>>

Hình 4.4: Ca sử dụng Quản lý phòng ban.

Page 60: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

58

Ca sử dụng này thực hiện Quản lý thông tin phòng ban. Người dùng thuộc nhóm

Quản trị hệ thống, Hỗ trợ vận hành có thể thực hiện các chức năng: Thêm mới, chỉnh

sửa, xem và xóa thông tin phòng ban.

Quản lý khóa ký

Quản trị hệ thống

Tạo mới khóa ký

Cập nhật khóa ký

Xóa khóa ký

Hỗ trợ vận hành

Quản lý khóa ký

<<include>>

<<include>>

<<include>>

Hình 4.5: Ca sử dụng Quản lý khóa ký.

Ca sử dụng này thực hiện quản lý thông tin khóa ký. Người dùng thuộc nhóm

Quản trị hệ thống, Hỗ trợ vận hành có thể thực hiện các chức năng: Tạo mới, cập nhật,

và xóa thông tin khóa ký.

Quản lý luân chuyển yêu cầu chuyển tiền

Quản trị hệ thống

Tạo mới yêu cầu

Xác nhận yêu cầu

Xem thông tin yêu cầu

Người dùng cuối

Quản lý yêu cầu chuyển tiền

<<include>>

<<include>>

<<include>>

Hình 4.6: Ca sử dụng Quản lý luân chuyển yêu cầu chuyển tiền.

Page 61: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

59

Ca sử dụng này thực hiện chức năng Tạo mới yêu cầu, Xác nhận yêu cầu và xem

thông tin yêu cầu chuyển tiền. Người dùng thuộc nhóm Quản trị hệ thống, Người dùng

cuối có thể thực hiện các chức năng: Tạo yêu cầu, xác nhận yêu cầu và xem yêu cầu.

Thống kê, báo cáo

Quản trị hệ thống

Thống kê số giao dịch theo đơn vị gửi

Thống kê số giao dịch theo loại tiền

Thống kê số giao dịch theo ngày

Người dùng cuối

Thống kê

<<include>>

<<include>>

<<include>>

Hình 4.7: Ca sử dụng Thống kê – báo cáo.

Người dùng thuộc nhóm Người dùng cuối, Quản trị hệ thống có thể xem được

thống kê các giao dịch theo đơn vị gửi, theo loại tiền, theo ngày gửi.

Quản lý người dùng

Quản trị hệ thống

Đăng ký người dùng

Tra cứu người dùng

Cập nhật người dùng

Xóa người dùng

Quản lý người dùng

<<include>>

<<include>>

<<include>>

<<include>>

Đăng nhập hệ thống

Đăng xuất hệ thống

Phân quyền người dùng

<<include>>

<<include>>

<<include>>

Hỗ trợ vận hành

Hình 4.8: Ca sử dụng Quản lý người dùng.

Page 62: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

60

Người dùng thuộc nhóm Quản trị hệ thống, Hỗ trợ vận hành có thể tạo mới người

dùng trong hệ thống, cấp quyền cho người dùng vào các chức năng trong hệ thống.

Đồng thời người quản trị, Người hỗ trợ vận hành cũng có thể chỉnh sửa thông tin

người dùng, khóa người dùng cũng như xóa người dùng trong trường hợp không sử

dụng.

Cấu hình hệ thống

Quản trị hệ thống

Cấu hình thông tin kết nối

Cấu hình thông tin Người dùng

Cấu hình hệ thống

<<include>>

<<include>>

Hình 4.9: Ca sử dụng Cấu hình hệ thống.

4.2.4. Biểu đồ lỗ hổng ca sử dụng

Quản lý Phòng ban

Thống kê, báo cáo

Quản lý người dùng

Quản lý khóa ký

Quản lý luân chuyển

yêu cầu chuyển tiền

Người sử dụng

Kẻ trộm/Hacker

Đăng nhập hệ thống

Thay đổi mật khẩu

Lấy được mật khẩu

Tấn công SQL

Injection

Tấn công Cross site-

scripting

Hình 4.10: Lỗ hổng ca sử dụng.

4.2.5. Các Module chức năng hệ thống

Hệ thống cần phải có các khối chức năng chính sau đây:

Quản lý phòng ban.

Page 63: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

61

Quản lý khóa ký.

Quản lý luân chuyển yêu cầu chuyển tiền.

Thống kê, báo cáo.

Quản trị hệ thống: cấu hình hệ thống, quản lý người dùng.

4.3. Thiết kế hệ thống

4.3.1. Mô hình tổng thể hệ thống

Quản lý

phòng ban

Quản lý khóa

Quản lý

người dùng

Quản lý luân chuyển

yêu cầu chuyển tiền

Thống kê,

báo cáo

Cấu hình hệ

thống

Hình 4.11: Mô hình tổng thể hệ thống.

4.3.2. Mô hình chức năng

HỆ THỐNG QUẢN LÝ LUÂN CHUYỂN

YÊU CẦU CHUYỂN TIỀN

Quản lý phòng

ban

Quản lý khóa

Quản lý người

dùngQuản lý luân

chuyển yêu cầu

chuyển tiền

Thống kê, báo

cáo

Danh sách

phòng ban

Thêm mới

phòng ban

Chỉnh sửa

phòng ban

Xóa phòng

ban

Danh sách

khóa ký

Tạo mới

khóa ký

Chỉnh sửa

khóa ký

Xóa khóa

Phân quyền

người dùng

Tạo mới

người dùng

Chỉnh sửa

người dùng

Xóa người

dùng

Tra cứu

người dùng

Thống kê

theo loại

tiền

Thống kê

theo ngày

Thống kê

theo đơn vị

gửi Tạo mới

yêu cầu

Xác nhận

yêu cầu

Tra cứu

thông tin

Cấu hình hệ

thống

Cấu hình thông

tin kết nối

Cấu hình thông

tin người dùng

Hình 4.12: Mô hình chức năng.

Page 64: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

62

4.3.3. Kiến trúc hệ thống

SQL ServerWeb

ApplicationNgười sử

dụng

Hình 4.13: Kiến trúc hệ thống.

Các thành phần trong hệ thống:

Người sử dụng: Người sử dụng trong hệ thống.

Web Application: triển khai các trang frontend của hệ thống được viết bằng

ASP.NET sử dụng web server IIS.

SQL Server: Lưu trữ cơ sở dữ liệu của hệ thống

4.4. Xây dựng hệ thống thử nghiệm

4.4.1. Môi trường cài đặt, triển khai

Hệ thống luân chuyển yêu cầu chuyển tiền quốc tế của khách hàng được xây

dựng và triển khai trên nền tảng công nghệ Microsoft .NET, cụ thể các công nghệ và

môi trường cài đặt như sau:

Hệ điều hành: Window Server 2012

Hệ quản trị cơ sở dữ liệu: MS SQL Server 2014

Công nghệ lập trình ứng dụng web: ASP.Net, Entity Framework, Bootrap

Nền tảng công nghệ: .NET

Máy chủ web: IIS

Công cụ lập trình: Visual Studio 2017

4.4.2. Màn hình giao diện

a) Giao diện đăng nhập hệ thống (dành cho Quản trị viên và người dùng)

Để có thể vào giao diện quản lý, giao diện thực hiện nghiệp vụ thì người dùng

phải thực hiện đăng nhập vào hệ thống. Việc này đảm bảo chỉ người được cấp quyền

mới có thể truy cập và sử dụng các tính năng của hệ thống.

Page 65: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

63

Hình 4.14: Giao diện đăng nhập hệ thống.

b) Giao diện nhập yêu cầu chuyển tiền

Giao diện hiển thị các thông tin cần nhập cho yêu cầu chuyển tiền cho người dùng tại

các CN/PGD

Hình 4.15: Giao diện nhập yêu cầu chuyển tiền.

c) Giao diện xác nhận yêu cầu chuyển tiền

Giao diện hiển thị các thông tin xác nhận yêu cầu chuyển tiền từ các CN/PGD cho

người dùng tại phòng Thanh toán quốc tế.

Page 66: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

64

Hình 4.16: Giao diện xác nhận yêu cầu chuyển tiền.

4.4.3. Đánh giá khả năng an toàn và bảo mật của hệ thống

Đánh giá khả năng an toàn và bảo mật cũng là một nhiệm vụ vô cùng quan trọng

đối với các ứng dụng. Hệ thống TMS đã ứng dụng và cài đặt một số kỹ thuật bảo mật

trong Microsoft .NET để đáp ứng một số yêu cầu liên quan đến an toàn và bảo mật hệ

thống trong TT 18/2018 và Quy định an toàn bảo mật hệ thống CNTT của GPBank.

Dưới đây là kết quả của việc ứng dụng và cài đặt:

4.4.3.1. Thiết kế cơ sở dữ liệu đảm bảo yêu cầu bảo mật về người dùng

a) Thiết kế bảng tham số hệ thống cấu hình mật khẩu cho User

Bảng 4.1 mô tả chi tiết các tham số đáp ứng yêu cầu bảo mật liên quan đến mật

khẩu của người dùng. Thiết kế này đáp ứng được yêu cầu của bài toán. Hình 4.17 mô

tả thiết kế và lưu trữ bảng tham số trong cơ sở dữ liệu.

Bảng 4.1: Mô tả bảng tham số cấu hình mật khẩu cho User.

Tên tham số Giá trị Diễn giải

USER_NUMBER_INPUT_INCORRECT_PASWORD 3 Số lần nhập sai mật

khẩu

USER_NUMBER_DÁY_CHANGE_PASSWORD 45 Thời hạn sử dụng

mật khẩu

USER_PASSWORD_MIN_LENGTH 8 Độ dài tối thiểu của

mật khẩu

USER_PASSWORD_MAX_LENGTH 15 Độ dài tối đa của

mật khẩu

USER_PASSWORD_VALID_POLICY True/False Áp dụng chính sách

mật khẩu hay khống

Page 67: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

65

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.

b) Thiết kế bảng cấu hình thông tin User

Bảng 4.2 mô tả chi tiết các thông tin đáp ứng yêu cầu bảo mật liên quan đến

người dùng như cho phép khai báo thời gian sử dụng trong ngày, khóa user nếu đăng

nhập sai mật khẩu, đăng nhập với 1 phiên làm việc. Thiết kế này đáp ứng được yêu

cầu của bài toán. Hình 4.18 minh họa lưu trữ thông tin User trong cơ sở dữ liệu.

Bảng 4.2: Mô tả bảng tham số cấu hình cho User.

Tên tham số Kiểu giá trị Diễn giải

USER_ID varchar Tên đăng nhập

USER_NAME varchar Tên người dùng

PASSWORD varchar Mật khẩu được lưu dưới

dạng mã hóa

IS_LOCK Bit User bị khóa/không khóa

IS_LOGIN Bit User đã đăng nhập/chưa

đăng nhập

IS_USED Bit User có sử dung/không

sử dụng

LAST_CHANGE_PASSWORD Datetime Thời gian đổi mật khẩu

cuối cùng

START_TIME Time Thời gian bắt đầu của

ngày làm việc

END_TIME Time Thời gian kết thúc của

ngày làm việc

Hình 4.18: Thiết kế cấu hình thông tin User.

Page 68: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

66

Kết quả thực hiện cho thấy các thiết kế về user và thiết kế các tham số cấu hình

mật khẩu người dùng đã đáp ứng được yêu cầu của bài toán và yêu cầu Quản lý truy

cập trong TT 18/2018 và Quy định an toàn bảo mật hệ thống CNTT của GPBank.

4.4.3.2. Các thiết lập đảm bảo an toàn cho ứng dụng

a) Mã hóa mật khẩu người dùng

Hình 4.19 mô tả hàm thực hiện cập nhật mật khẩu đã được mã hóa sử dụng thuật

toán SHA1 trước khi lưu vào cơ sở dữ liệu, tránh việc lộ mật khẩu nếu lưu dưới dạng

cleartext.

Hình 4.19: Mã hóa mật khẩu lưu vào Cơ sở dữ liệu.

b) Sử dụng Store Procedure

Hình 4.20 mô tả hàm thực hiện xác thực người dùng đăng nhập sử dụng Store

Procedure, tránh được kiểu tấn công SQL Injection trên ứng dụng web

Hình 4.20: Sử dụng Store procedure xác thực người dùng.

c) Sử dụng các cấu hình đảm bảo an toàn

Cấu hình các trường dữ liệu đầu vào

Hình 4.21 mô tả sử dụng cấu hình các control nhập dữ liệu đầu vào cho chức

năng đăng nhập: sử dụng Validation control, đặt giới hạn độ dài dữ liệu nhập vào, hủy

tính năng Autocomplete đối với tên đăng nhập và mật khẩu đăng nhập.

Page 69: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

67

Hình 4.21: Sử dụng Validation control, giới hạn độ dài và hủy bỏ Autocomplete.

Cấu hình chống tấn công Cross-Site Scripting

Hình 4.22 mô tả cấu hình trên các trang Master Page và ASPX để đảm bảo hệ

thống an toàn trước tấn công Cross-Site Scripting.

Hình 4.22: Thiết lập phòng chống tấn công Cross-Site Scripting.

Cấu hình thời gian tương tác với hệ thống

Để thực hiện ngắt kết nối khi người sử dụng không tương tác với ứng dụng trong

một khoảng thời gian nhất định, sử dụng config như sau:

<script Language="JavaScript">

window.setTimeout("window.navigate('Logout.asp')", 900000); </script>

Kết quả thực hiện cho thấy các thiết lập đã đáp ứng được yêu cầu của bài toán là

chống được tấn công SQL Injection và Cross-Site Scripting, mã hóa mật khẩu trước

khi lưu vào cơ sở dữ liệu.

4.4.3.3. Các thiết lập đảm bảo bảo mật cho ứng dụng

a) Xây dựng hệ thống thành các lớp riêng biệt

TMS: Các lớp giao diện người dùng

TMS.DataModel.dll: Thư viện chứa các lớp thực hiện truy suất dữ liệu.

TMS.Security.dll: Thư viện chứa các lớp thực hiện tăng cường an ninh, bảo

mật.

TMS.Common.dll: Thư viện chứa các lớp tiện ích và sử dụng chung.

Page 70: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

68

b) Mã hóa xâu kết nối cơ sở dữ liệu

Sử dụng giải pháp mã hóa RSA để mã hóa xâu kết nối cơ sở dữ liệu trong trong

file Web.config và thuật toán SHA1 mã hóa lưu trong Registry.

Trong Web.config:

Hình 4.23 mô tả sử dụng mã hóa RSA để mã hóa xâu kết nối cơ sở dữ liệu

Hình 4.23: Mã hóa xâu kết nối Cơ sở dữ liệu trong file web.config.

Page 71: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

69

Trong Registry:

Mã hóa dựa trên thuật toán mã hóa một chiều SHA1. Sau khi mã hóa sử dụng

thuật toán encode Base64 để lưu dưới dạng text. Hình 4.24 mô tả lưu mật khẩu đã mã

hóa vào registry.

Hình 4.24: Mã xâu kết nối Cơ sở dữ liệu lưu vào Registry.

c) Cấu hình bảo mật web.config

Hình 4.25 mô tả cấu hình bảo mật cho ứng dụng trong file web.config bao gồm:

cơ chế xác thực Form, thời gian timeout của một phiên làm việc.

Hình 4.25: Cấu hình bảo mật trong file web.config.

Page 72: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

70

d) Cấu hình ghi nhật ký hoạt động của hệ thống

Hình 4.26 mô tả cấu hình sử dụng log4net trong file web.config để ghi lại các

hoạt động của hệ thống ra file.

Hình 4.26: Cấu hình ghi nhật ký.

e) Tạo mã TestKey

Hình 4.27 mô tả hàm thực hiện tạo mã TestKey 8 ký tự từ việc sinh ngẫu nhiên

key và sử dụng thuật toán mã hóa một chiều SHA256 key sinh ngẫu nhiên và dữ liệu

đầu vào. Hàm sinh TeskKey đảm bảo không trùng với key đã có trên hệ thống.

Hình 4.27: Tạo mã TestKey với độ dài 8 ký tự.

f) Mã hóa và giải mã file PDF

Hình 4.28a mô tả hàm thực hiện mã hóa file chứng từ PDF sử dụng thư viện

Rfc2898DeriveBytes, đảm bảo nếu không được giải mã thì không thể đọc được nội

dung file.

Page 73: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

71

Hình 4.28b mô tả hàm thực hiện giải mã file chứng từ PDF sử dụng thư viện

Rfc2898DeriveBytes, đảm bảo nếu không đúng khóa thì không thể giải mã thành công

file đã được mã hóa trước đó.

Hình 4.28a: Mã hóa file sử dụng thư viện Rfc2898DeriveBytes.

Hình 4.28b: Giải mã file sử dụng thư viện Rfc2898DeriveBytes.

Kết quả thực hiện cho thấy các thiết lập đã đáp ứng được yêu cầu của bài toán:

mã hõa chuỗi kết nối cơ sở dữ liệu, tạo mã TestKey, mã hóa/giải mã file chứng từ

PDF, ghi nhật ký hoạt động của hệ thống.

Page 74: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

72

4.4.4. Một số Test case về an toàn và bảo mật của hệ thống

a) Các Test case SQL Injection với chức năng đăng nhập

Bảng 4.3: Kết quả thực hiện Test lỗ hổng SQL Injection.

Test

Case

ID

Kịch bản

kiểm thử

Các bước

kiểm thử

Dữ liệu kiểm thử Kết quả

dự kiến

Kết quả

thực tế

Pass/

Fail

TU01 Kiểm thử

đăng nhập

với dữ liệu

hợp lệ

B1: Truy cập

đường link

B2: Nhập tên

người dùng

và mật khẩu

B3: Click

vào nút

“Đăng nhập”

User: manhtr

Pass: manh2019

Người

dùng đăng

nhập thành

công

Như

mong

đợi

Pass

TU02 Kiểm thử

đăng nhập

với dữ liệu

không hợp lệ

B1: Truy cập

đường link

B2: Nhập tên

người dùng

và mật khẩu

B3: Click

vào nút

“Đăng nhập”

User: 1' or '1' = '1

Pass: 1' or '1' = '1

Người

dùng đăng

nhập không

thành công

Như

mong

đợi

Pass

TU03 Kiểm thử

đăng nhập

với dữ liệu

không hợp lệ

B1: Truy cập

đường link

B2: Nhập tên

người dùng

và mật khẩu

B3: Click

vào nút

“Đăng nhập”

User: 1' or '1' = '1'))/*

Pass: foo

Người

dùng đăng

nhập không

thành công

Như

mong

đợi

Pass

TU04 Kiểm thử

đăng nhập

với dữ liệu

không hợp lệ

B1: Truy cập

đường link

B2: Nhập tên

người dùng

và mật khẩu

B3: Click

vào nút

“Đăng nhập”

User: 1' or '1' = '1'))/*

Pass: foo

Người

dùng đăng

nhập không

thành công

Như

mong

đợi

Pass

Page 75: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

73

b) Các Test case Cross-Site Cripting

Bảng 4.4: Kết quả thực hiện Test lỗ hổng Cross-Site Scripting.

Test

Case

ID

Kịch bản

kiểm thử

Các bước

kiểm thử

Dữ liệu kiểm thử Kết quả

dự kiến

Kết

quả

thực tế

Pass/

Fail

TU01 Kiểm thử

đăng nhập

với dữ liệu

hợp lệ

B1: Truy

cập đường

link

B2: Nhập

tên người

dùng và mật

khẩu

B3: Click

vào nút

“Đăng

nhập”

User: manhtr

Pass: manh2019

Người

dùng đăng

nhập thành

công

Như

mong

đợi

Pass

TU02 Kiểm thử

đăng nhập

với dữ liệu

không hợp

lệ

B1: Truy

cập đường

link

B2: Nhập

tên người

dùng và mật

khẩu

B3: Click

vào nút

“Đăng

nhập”

User:

<script>alert("Hacked")

</script>

Pass: manh2019

Người

dùng đăng

nhập

không

thành công

Như

mong

đợi

Pass

TU03 Kiểm thử

với thay đổi

dữ liệu

không hợp

lệ trên

đường link

B1; Đăng

nhập hệ

thống

B2: Sửa dữ

liệu

Link: http://localhost:20817/

DepartmentManagement

/ListDepartmanet?

Info=<script>alert(‘HACK’)

</script>

Hệ thống

không báo

lỗi

Như

mong

đợi

Pass

Page 76: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

74

4.5. Kết luận

Như vậy chương này đã giới thiệu về bài toán luân chuyển yêu cầu chuyển tiền

quốc tể của khách hàng từ các PGD/CN đến phòng Thanh toán quốc tế tại GPBank

ứng dụng kỹ thuật bảo mật trong Microsoft .Net và quá trình triển khai ứng dụng trên

môi trường Microsoft .Net, thử nghiệm quy trình hệ thống với các tính năng như lập

yêu cầu chuyển tiền, ký vào yêu cầu chuyển tiền, mã hóa file chứng từ PDF, kiểm tra

và xác nhận yêu cầu, giải mã file PDF đã mã hóa, thống kê khối lượng giao dịch theo

đơn vị gửi, theo thời gian gửi và theo loại tiền. Hệ thống hiện đang được triển khai tại

GPBank nhằm đáp ứng yêu cầu từ phòng Thanh toán quốc tế khi thực hiện nghiệp vụ

chuyển tiền ra nước ngoài.

Chương này cũng đã thực hiện thử nghiệm áp dụng các kỹ thuật bảo mật .NET

nhằm đáp ứng một phần yêu cầu bảo mật của bài toán, yêu cầu bảo mật của TT

18/2018 và Quy định an toàn bảo mật hệ thống CNTT của GPBank. Các thử nghiệm

đã được thực hiện bao gồm: thiết kế cài đặt cấu hình mật khẩu người dùng, thiết kế cài

đặt thông tin người dùng để đáp ứng yêu cầu về quản lý truy cập, thực hiện các thiết

lập chống tấn công SQL Injection và Cross-Site Scripting, mã hóa mật khẩu trước khi

lưu vào cơ sở dữ liệu, mã hóa chuỗi kết nối cở sở dữ liệu trong file web.config, tạo mã

TestKey, mã hóa/giải mã file chứng từ PDF, ghi nhật ký hoạt động của hệ thống.

Page 77: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

75

Chương 5: KẾT LUẬN

Việc triển khai các ứng dụng các kỹ thuật bảo mật trong Microsoft .NET hiện đã

được áp dụng nhiều nhằm đáp ứng yêu cầu về ứng dụng CNTT trong sản xuất kinh

doanh. Microsoft .NET cung cấp đầy đủ các công cụ và kỹ thuật trong đó có kỹ thuật

bảo mật nhằm đáp ứng các yêu cầu về xây dựng hệ thống ứng dụng cho doanh nghiệp.

Sau thời gian tìm hiểu, nghiên cứu tài liệu, tôi đã hoàn thành luận văn 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”. Luận văn đã đạt được kết quả sau:

Tìm hiểu, nghiên cứu những lý thuyết tổng quan bảo mật trong hệ thống

phần mềm, các lỗ hổng bảo mật phần mềm cũng như các kiểu tấn công bảo

mật và lập trình bảo mật.

Tìm hiểu kiến trúc bảo mật trong hệ thống phần mềm.

Tìm hiểu kiến trúc bảo mật và kỹ thuật bảo mật trong Microsoft .NET

Áp dụng kỹ thuật bảo mật trong Microsoft .NET để đặc tả và 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”.

Kết quả nghiên cứu của luận văn có thể áp dụng cho việc triển khai các ứng dụng

sử dụng công nghệ bảo mật của Microsoft .NET tại GPBank.

Hướng phát triển trong tương lai của đề tài:

- Tích hợp với hệ thống Corebank để kiểm tra thông tin khách hàng.

- Tích hợp với hệ thống email nội bộ để xác thực người dùng là cán bộ đang

làm việc tại GPBank.

- Phát triển thêm các chức năng quản lý luân chuyển cho các loại hồ sơ theo

yêu cầu từ các phòng ban nghiệp vụ tại TSC tuân thủ yêu cầu bảo mật theo

TT 18/2018-TT-NHNN và Quy định An toàn bảo mật hệ thống CNTT của

GPBank.

Page 78: ỨNG DỤNG KỸ THUẬT BẢO MẬT TRONG MICROSOFT .NET VÀO …lib.uet.vnu.edu.vn/bitstream/123456789/1006/1/LVTS_Tran... · 2019. 6. 24. · 2 LỜI CAM ĐOAN Tôi xin cam đoan

76

TÀI LIỆU THAM KHẢO

Tiếng Việt

[1] Cổng thông tin điện tử chính phủ, Nội dung Thông tư 18/2018/TT-NHNN,

http://congbao.chinhphu.vn/noi-dung-van-ban-so-18-2018-tt-nhnn-27195

Tiếng Anh

[2] Asoke K.Talukder, Manish Chaitanya (2009), Architecting Secuce Software

System, CRC, New York.

[3] Matt Bishop (2004), Introduction to Computer Security, Addison-Wesley, New

York.

[4] Somesh Mohanty, 5 Important Software Vulnerabilities,

https://dzone.com/articles/5-important-software-vulnerability-and-attacks-tha

[5] .Net Guide, https://docs.microsoft.com/en-us/dotnet/standard/

[6] .Net framework Guide, https://docs.microsoft.com/en-us/dotnet/framework/

[7] .NET Framework Cryptography Model https://docs.microsoft.com/en-

us/dotnet/standard/security/cryptography-model

[8] Difference Between Active and Passive Attacks,

https://techdifferences.com/difference-between-active-and-passive-attacks.html

[9] OS command injection, https://portswigger.net/web-security/os-command-

injection

[10] Wikipedia - the Free Encyclopedia, http://www.wikipedia.org