1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu phương pháp vượt qua SSL Pinning trên ứng dụng di động sử dụng Flutter Framework

59 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu phương pháp vượt qua SSL Pinning trên ứng dụng di động sử dụng Flutter Framework
Tác giả Vũ Lan Phương
Người hướng dẫn TS. Nguyễn Ngọc Điệp
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành An toàn thông tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 59
Dung lượng 17,74 MB

Nội dung

Tuy nhiên SSL pinning lại phần nào ngăn cản việc các chuyên gia bảo mật đánh giá an toàn cho ứng dụng, đặc biệt đối với các ứng dung Flutter - một trong những Framework tốt nhất, phô biế

Trang 1

HỌC VIEN CÔNG NGHỆ BƯU CHÍNH VIÊN THONG

KHOA AN TOÀN THÔNG TIN

PT,

LA

DE TAI

NGHIEN CUU VE PHUONG PHAP VUOT QUA

SSL PINNING TREN UNG DUNG DI DONG SU

DUNG FLUTTER FRAMEWORK

Vũ Lan Phương

Hà Nội, thang 1 năm 2024

Trang 2

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIÊN THÔNG

KHOA AN TOÀN THÔNG TIN

PT,

LSA

DE TAI

NGHIEN CUU VE PHUONG PHAP VUOT QUA SSL

PINNING TREN UNG DUNG DI DONG SU DUNG

FLUTTER FRAMEWORK

_ Giang viên hướng :TS Nguyễn Ngọc Điệp

dan

Sinh viên thực hiện :Vũ Lan Phương

Mã sinh viên :BI9DCA T142

:DI9CQAT02-B :2019 — 2024

;Đại học chính quy

Hà Nội, tháng 1 năm 2024

Trang 3

Dé án tot nghiệp

LỜI CÁM ƠN

Lời đầu tiên, em xin gửi lời biết ơn sâu sắc tới Thầy giáo TS Nguyễn Ngọc Điệp

đã tận tình chỉ bảo, hướng dẫn em trong không chỉ quá trình thực hiện đồ án này, nhờ

sự giúp đỡ và những chia sẻ của Thầy, em đã có những định hướng riêng cho tương

lai của minh.

Em xin chân thành cảm ơn các Thay, Cô trong Khoa An toàn thông tin nói riêng

và toàn thé các cán bộ của Học viện Công nghệ Bưu chính Viễn thông nói chung đãtạo điều kiện dé em có thé học tập và phát triển bản thân trong một môi trường rất tot

Cảm ơn các Thầy Cô đã cung cấp cho em không chỉ kiến thức mà còn là kỹ năng

sông, đó là những hành trang hữu ích cho em trên chặng đường dài phía trước của

cuộc đời.

Em xin gửi lời cảm on đến anh chị làm việc tại Don vi Cyber Security AssuranceServices (SAS) thuộc Công ty Phần mềm FPT Software đã cung cấp cho em nhữngkiến thức về lập trình, an ninh mạng, kiểm thử xâm nhập và tạo điều kiện cho em hoàn

thiện đồ án này.

Cuôi cùng, em xin cảm ơn gia đình, bạn bẻ, những người đã luôn ở cạnh, quan

tâm, giúp đỡ và ủng hộ dé bản thân em có thé hoàn thành được đồ án nay

Em xin chân thành cảm ơn!

Hà Nội, ngày 31 tháng 12 năm 2023

Sinh viên thực hiện

Vũ Lan Phương

VŨ LAN PHƯƠNG - DI9CQAT02-B

Trang 4

Dé án tốt nghiệp

LỜI CAM ĐOAN

Em xin cam đoan rằng đồ án tốt nghiệp “Nghiên cứu phương pháp vượt qua

SSL Pinning trên ứng dụng di động sử dung Flutter Framework” là công trình

nghiên cứu của bản thân Những phần có sử dụng tài liệu tham khảo có trong đồ án đã

được liệt kê và nêu rõ ra tại phần tài liệu tham khảo Đồng thời những số liệu hay kết

quả trình bày trong đồ án đều mang tính chất trung thực, không sao chép, đạo nhái

Em cũng xin cam đoan giữ vững và tôn trọng vấn đề đạo đức của người nghiên

cứu bảo mật Không phát tán mã khai thác, mã nguồn hay tài liệu hướng dẫn khai thác

dưới mọi hình thức Không dé cá nhân, tổ chức khác lợi dụng làm điều xấu ảnh hưởng

tới bât kì cá nhân, tô chức nào khác.

Em xin hoàn toàn chịu trách nhiệm về tính trung thực và pháp lý của đồ án trước

hội đồng và pháp luật

Hà Nội, ngày 31 tháng 12 năm 2023

Sinh viên thực hiện

Vũ Lan Phương

Trang 5

Dé án tot nghiệp

NHAN XÉT, ĐÁNH GIA, CHO DIEM

(Của Người hướng dẫn)

Điểm: 2-5 ccnctrerrrereu (bằng chữ: 2 ScScctEeErrrkexsei )

Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt

nghiệp?

Hà Nội, ngày tháng năm 20

CÁN BỘ - GIẢNG VIÊN HƯỚNG DẪN

(ky và ghi rõ họ tên)

NHẠN XÉT, DANH GIA, CHO DIEM

(Của Người phản biện)

VŨ LAN PHƯƠNG - DI9CQAT02-B iii

Trang 6

Dé án tot nghiệp

Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt

nghiệp?

Hà Nội, ngày thang năm 20

CÁN BỘ - GIẢNG VIÊN PHẢN BIỆN

(ky và ghi rõ họ tên)

Trang 7

Dé án tot nghiệp

MỤC LỤC

0890.0000777 7Š iNHAN XÉT, DANH GIA, CHO DIEM.L csscsssssssssssessessessesessessssssessssessseeseessseessees iiiDANH MUC HINH VE c.ccsscssssssscsssssssssssssessecscsscsecsocsecsecsessassncsucsucseescscscseeseoeees vii

DANH MỤC CÁC TU VÀ THUẬT NGU VIET TẮTT -5-5- 2 ses<<<¿ ix9)(0089:010089007200777 11Chuong 1 FLUTTER TRONG LAP TRÌNH ứng dung di động 12

1.1 Ngôn Ngữ Lap Trình DaFÍ 0 << G 55G S1 5 59.90 8569941 12

1.1.1 Lich sử hình thành và phát triển của ngôn ngữ lập trình Dart 12

1.1.2 Ngôn ngữ lập trình ÏD4FÉ d 5G G5 G 5S 99.5.9903 50865 98996 12 1.2 Công nghệ Flutter trong lập trình app mobiÌe -< 5 5= 14 1.2.1 Giới thiệu IFlUfeF d5 << 5< 99.9 1.99 95 89565 26 14

1.2.2 Đa nền tang và Mô hình "One Framework"" s-s s -seses<e 151.2.3 Kiến trúc Flutfer -s-s<xsserkseerreserrkerkeerksrrssrre 15

1.3 Mối quan hệ giữa Dart và Fluf(er s 5° ssssesesess=s=sesese 22

1.4 Kết chương -° c5 se SsSsSsEsESeEsEsEsEsesersrsessrsee 23

Chương 2 KY THUAT SSL PINNING -.<5° s©s<ssessesesesessesese 24

2.1 Giới Thiệu Về SSL Pinning .5 5-5 5< s©sess=sesessesesscse 24

2.1.1 Khái niệm SSL PÏnning o ss- < 5s 9x 9 0 5 24

2.1.2 SSL Pinning là sự cần thiẾt 5-5 5s sesesessss=sesesesee 25

2.1.3 Quá Trinh Pinning SSÌ co 5 5S 9 990 190 01 96 26

2.1.4 Mối liên kết giữa chứng chi và Ứng dụng di động 272.1 Ưu Điểm Và Nhược Điểm Của SSL Pinning .- 5-5 <<27

2.1.1 Ưu điểm của SSL Pinning -s s << 5s sesessssesesesessesee 27

2.1.2 Nhược điểm của SSL Pinning .- 5-5 s5 se se << =sesesesesee 28

2.2 SSL Pinning trong các ứng dung EÌU(€ - 5555 < «<s<<< se 29

2.3 Kết chương -« s°©s<ceetveEseEseketserseksrsersetsrsersesee 30Chương 3 © VƯỢT QUA SSL PINNING TREN ứng dung di động 31

3.1 Mục đích vượt qua SSL pÏnniÏng o - <5 5s s65 ssee 31 3.2 Phương pháp vượt qua SSL pinning trên các ứng dụng di động

Android 31

3.2.1 Cơ chế thực hiện 2< se se +seEseseEseseEsrsesersrssrsrseree 31

3.2.2 Những thiết bị và công cụ cần chuẩn bị - 5-5-5 5<32

3.2.3 Quy trình thực hiện vượt qua SSL pỉnning - s<« «<< 35

VU LAN PHƯƠNG - DI9CQAT02-B

Trang 8

Dé án tot nghiệp

3.3 Vượt qua SSL Pinning trên app mobile Android sử dụng Flutter 36

3.3.1 Cac van đề gặp phải -s-sc<cscssessessrsersersersersrrsrrsrsree 36

3.3.2 Đề xuất phương án giải quyẾt . -s- 2-2 s2 se s+sessss+sesseses 38

3.3.3 Phân tích phương án giải quyẾT 5-5 << csess=sesesseses 38

3.4 Phương pháp luận vượt qua SSL pỉnnng - << «««ssss« 44

3.5 Kết chương s-<es se se cseEseseEsEseEtsesersrsersrsessrse 45

Chương 4 Hướng dẫn vượt QUA SSL pinning trên ứng dụng di động 46

4.1 Thue hiện cài đặt các công cụ cần thiẾt 5- 5 5s° 55+46

4.2 Day certificate của Burp Suite vào ứng dung di động 49

4.3 Xác định địa chỉ của ham ssl_crypto_x509_session_verify_cert_chain

và Chỉnh SỬA SCTFÏ[IẮ do 5G SH họ Họ TH TH 04 906 51

4.4 Chèn Script và vượt qua SSL pinnÏng - << «5s «sssssssesss+ 52

4.5 Giám sát được các yêu cầu từ emulaf0F 5 - 5 sss sesesseses53

4.6 Các lưu ý khác co œ5 5< % 9 9 9 00009 600 53

4.7 Kết chương °e°©e< se SsESeEsEseEsEsEseEstsersesrssree 54

4500009010177 55

;©U0EE 10/2012 7 55

Hướng phát triển trong tương lai - s2 5° 5° 5° se se sessessessessesscse 55

DANH MỤC TÀI LIEU THAM KHẢO 2° s° << sseseeeseesse 56

Trang 9

Dé án tot nghiệp

DANH MỤC HÌNH VE

Hình 1.1 Dart đa nền tảng ¿- 2-5259 XE EEE181121121121121121 111111111111 11x 13

Hình 1.2 Mô hình kiến trúc của FÏutf€r cs:55st222xt2ExtttExtrtrrtrrrrrrrrrrrrrrrrkei 16

Hình 1.3 Mô hình kiến trúc của Flutter Frawmwork ccccccscsscessesseesessessessseseeseeseeees 17

Hình 1.4 Sự tăng trưởng mạnh mẽ số lượt tải xuống các ứng dụng di động 19

Hình 1.5 So sánh mô hình Biên dịch ngay lập tức và biên dịch trước thời điểm 20

Hình 1.6 Giao diện ấn tượng và linh hoạt của FÏuffer ¿+ s-ss++++sssseexsss 21

Hinh 1.7 Flutter 89 22

Hình 2.1 Nguyên lý hoạt động của chứng chi SSL.w ee eccceeseceeenteeeeeeteeeeesaeees 24

Hình 2.2 Nguyên lý hoạt động của SSL pinning - . - +23 +ssevreeesesss 25

Hinh 2.3 Qua trinh pinning 4“454Ả 26

Hình 2.4 Mối liên kết giữa chứng chi va ứng dung di động - 2s sec+¿ 27

Hình 2.5 Đội ngũ phát triển Flutter xác nhận thông tin về việc sử dụng chứng chi 29

Hình 2.6 Minh hoạ cuộc tan công MiTM vào ứng dụng di động - : 30

Hình 3.1 Công cụ ETrida (c1 1121112111211121 11101110111 0111011901 1H ng ng key 32

Hình 3.2 Công cụ MagiIsk - - + 3+ 11121112 111111111115 1 111111 TH TH kg key 33

Hình 3.3 Công cụ Burp SUIf€ - c1 12221111211 111111 119 111191111 nen và 34

Hình 3.4 Quy trình thực hiện vượt qua SSL pinnIng - ccsc sec 35

Hình 3.5 Vượt qua SSL pinning thành công và Burp Suite giám sát được yêu cầu từ

Ung dung 915) 0 4 36

Hình 3.6 Vượt qua SSL pinning cua Flutter app không thành công - 37

Hình 3.7 Tạo kết HTTP nối thành công tới ứng dụng Flutter :¿- 2-5: 39

Hình 3.8 Cấu hình mạng thiết Đị St St v1 11 11211111111111112111111111111 11111111111 TteE 39

Hình 3.9 Logcat không thé tao TLS connection với API trên Burp Suite 40

Hình 3.10 Giá trị của biến ret 225:c22 2t HH 40

Hình 3.11 Code xử lý khi verify chứng chi SSL thất bại - 2-5-5 2 s+5z+sccs+2 41

Hình 3.12 Import file libflutter.so vào Ch1dFa - - c1 nghe 42

Hình 3.13 Kết quả tìm kiếm ssl_x5509.cc thu được 2-52 ++s++s++xezxerxerxres 42

Trang 10

Dé án tot nghiệp

Hình 3.14 Xác định hàm liên qua và địa chỉ của function -. -s-cc++scsss+ssss2 43

Hình 3.15 Chỉnh sửa script vượt qua SSL pinning trên Flutter 5: 43

Hình 3.16 Vượt qua SSL Pinning thành công - - c1 vn re 44

Hình 3.17 Quy trình vượt qua SSL pinning trên Flutter app mobile - 45

Hình 4.1 Emulator cài đặt trên Android Stud1o - 55523 +++2££sece+++ee+ze>ssss 46

Hình 4.2 Thực hiện root thành công emulafOr c5 33c 3+ *+*vxseexseereseerrees 47

Hình 4.3 Cài đặt ứng dung sử dung Flutter trên emulator ¿+ + +5 +++++<ss+2 48

Hình 4.4 Liệt kê các tiễn trình đang chạy trên emulafOr - - 5 + + s++s+seex++xs 49

Hình 4.5 Tải xuống chứng chi Burp Suit 2-52 2 S+Et+E+E2E£EEEEEEEEEEkeErkrreree 49

Hình 4.6 Day certificate Burp Suite vào emulator thành công :- :5- 50

Hình 4.7 Cấu hình mạng cho các Ce) Scn cv E1 1211111111111 Ere, 51

Hình 4.8 Import file libflutter.so vào Gh1da - - 3c 1232111131511 reeree 51

Hình 4.9 Kết quả tìm kiếm ssl_x5509.cc thu được - 2 2222+s+x+zxezxerxerxsree 52

Hình 4.10 Xác định hàm liên qua va địa chỉ của function .‹-sss+c<sss++ssss2 52

Hình 4.11 Script vượt qua SSL pInn1ng - - - -c- s1 vn ngư 53

Hình 4.12 Giám sat yêu cầu thành cOng cececsccssessessessessessessessessesestestesesseseeseseeees 53

Hình 4.13 Rxport file app thành apk - ¿c6 2 112111321112 11121 11158111181, 54

Hình 4.14 Thực hiện vượt qua SSL pinning thành công và giám sát được yêu cầu 54

VU LAN PHƯƠNG - DI9CQAT02-B viii

Trang 11

Dé án tot nghiệp

DANH MỤC CÁC TỪ VÀ THUẬT NGỮ VIẾT TẮT

Ký hiệu Tên Tiếng Anh Ý nghĩa Tiếng Việt

adb Android Debug Bridge Công cụ gỡ lỗi Android

AOT Ahead-of-time Trước thời điểm

oo, Phuong thức trung gian kết nối

Application Programming i, l ' „ API các ứng dụng và thư viện khác

Interface

nhau

App mobile Application mobile Ứng dụng di động

Bypass Bypass Vượt qua, tránh né

CA Certificate Authority Cơ quan chứng thực

ECMA European Computer Hiệp hội các nha sản xuất máy

Manufacturers Association tinh chau Au

Emulator Emulator Gia lap

Framework Framework Khung ứng dụng

Google Sở Hà 5 hay tidNgay danh cho nha phat trién

Developer Google Developer Days

Google

Days

Ngôn ngữ đánh dau Siêu văn

HTML Hypertext Markup Language „ ¬

bản phiên bản

Giao thức truyền tải siêu văn

HTTP HyperText Transfer Protocol bả

an

HyperText Transfer Protocol Giao thức truyền tải siêu văn

HTTPS „ l

Security ban an toan

JIT Just-in-time Ngay lập tức

MitM man-in-the-middle Tan công người đứng giữa

Pin Pin Ghim

Trang 12

TLS Transport Layer Security kỹ thuật mã hóa truyền tin

UI User Interface Giao diện người dùng

Wifi wireless fidelity Truyền dan không dây

VU LAN PHƯƠNG - DI9CQAT02-B

Trang 13

Đồ án tốt nghiệp

GIỚI THIỆU DO ÁN

Bảo vệ ứng dụng di động ngày càng trở nên quan trọng trong xã hội hiện đại, khi

mà ứng dụng di động đã trở thành một phần không thể thiếu trong cuộc sống hàng

ngày của chúng ta Tính linh hoạt và tiện ích của các ứng dụng di động đồng nghĩa với

việc chúng ta đang đặt nhiều thông tin quan trọng và cá nhân vào trong các thiết bị di

động của mình.

Ứng dụng di động thường chứa đựng nhiều thông tin cá nhân của người dùng như

tài khoản ngân hàng, thông tin thẻ tin dụng, va dữ liệu cá nhân Bảo vệ ứng dụng la

cách quan trọng dé đảm bảo an toàn cho những thông tin quan trong này khỏi nguy cơ

bị đánh cắp và lạm dụng Các ứng dụng di động thường xuyên đối mặt với rủi ro về

bảo mật như tấn công từ phía tin tặc, mã độc, và lỗ hồng bảo mật Việc triển khai các

biện pháp bảo vệ sẽ giảm thiểu nguy cơ bị tan công và giữ cho hệ thống an toàn

SSL Pinning là biện pháp hữu hiệu ngăn chặn đầu vào dễ dàng triển khai và được

ứng dụng ở hau hết các ứng dụng hiện nay Tuy nhiên SSL pinning lại phần nào ngăn

cản việc các chuyên gia bảo mật đánh giá an toàn cho ứng dụng, đặc biệt đối với các

ứng dung Flutter - một trong những Framework tốt nhất, phô biến nhất cho các lập

trình viên ứng dụng di động.

Đây là lý do em lựa chọn dé tài “Nghiên cứu phương pháp vượt qua SSL Pinning

trên ứng dụng di động sử dụng Flutter Framework” với mục đích tập trung nghiên cứu

về phương pháp vượt qua SSL pinning các ứng dụng di động, giải quyết bài toán vượt

qua lớp phòng ngự đầu tiên của ứng dụng di động dé thực hiện đánh giả an toàn bao

mật thông tin cho các chuyên gia bảo mật.

Với những mục tiêu như trên, bô cục đô án của em sẽ bao gôm 4 chương theo câu

trúc như sau:

® Chương 1: Flutter trong lập trình ứng dung di động

® Chương 2: Kỹ thuật SSL Pinning

® Chương 3: Vượt qua SSL Pinning trên ứng dụng di động

se Chương 4: Hướng dẫn vượt qua SSL pinning trên ứng dụng di động sử

dụng Flutter

e Kết luận

Trang 14

Đồ án tốt nghiệp

CHƯƠNG 1 FLUTTER TRONG LẬP TRÌNH ỨNG DỤNG DI ĐỘNG

1.1 Ngôn Ngữ Lập Trinh Dart

Dart là ngôn ngữ lập trình nên ứng dụng Flutter Đây cũng là nguyên nhân tạo nên

sự khác biệt và vượt trội của Flutter so với các ứng dụng di động khác

1.1.1 Lịch sử hình thành và phát triển của ngôn ngữ lập trình Dart

Ngôn ngữ Dart là một ngôn ngữ lập trình được phát triển bởi Google, được thiết kế

dé xây dựng các ứng dụng web, mobile va máy tính

Tháng 10 năm 2011 Dart được công bó lần đầu tiên tại sự kiện GOTO Conference

ở Aarhus, Đan Mạch Mục tiêu của Dart là giải quyết những hạn chế của JavaScript vàcung cấp một ngôn ngữ hiện đại, an toàn và nhanh chóng cho việc phát triển ứng dụng

web Sau 1 tháng, ngôn ngữ Dart 1.0 được phát hành, đưa ngôn ngữ này từ giai đoạn

thử nghiệm sang một phiên bản ồn định

Năm 2013, Google Chrome trở thành trình duyệt đầu tiên hỗ trợ chính thức Dart

VM (Virtual Machine), cho phép chạy mã Dart trực tiếp trên trình duyệt Cùng năm,

Dart 1.0 SDK (Software Development Kit) được phát hành Điều này là một bước

quan trọng dé cung cấp công cụ và tài liệu cho các nhà phát triển Dart

Năm 2019, Dart 2.5 được phát hành với hỗ trợ cho Flutter, một framework dé xaydựng ứng dung di động va web đa nền tảng Day là một dau mốc quan trong đánh dau

cho sự phô biến của Flutter hiện nay

Hiện tại, Dart tiếp tục phát triển và được sử dụng rộng rãi trong cộng đồng phát

triển đa nền tảng, đặc biệt là khi tích hợp với Flutter dé xây dựng ứng dụng di động và

web [1]

1.1.2 Ngôn ngữ lap trình Dart

1.1.1.1 Co bản về ngôn ngữ lập trình Dart

Dart là ngôn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google và sau

đó được Ecma (ECMA-408) dùng làm tiêu chuẩn Dart được sử dụng để xây dựng các

ứng dụng web, desktop (Windows, MacOS) và thiết bị di động (Android, iOS) Dart là

một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế garbage-collected,

sử dụng cú pháp giống với ngôn ngữ lập trình C dé dich mã tùy ý sang JavaScript Nó

hỗ trợ interface, mixin, abstract, generic, static typing và sound type (2 cái cuối có thể

hiểu là type-safe) Dart là ngôn ngữ mã nguồn mở và miễn phí, được phát triển trên

GitHub [2]

VŨ LAN PHƯƠNG - D19CQAT02-B

Trang 15

Đồ án tốt nghiệp

Ngôn ngữ lập trình Dart là một ngôn ngữ hiện dai được thiết kế chủ yêu dé phát

triển ứng dụng web, đi động và máy tính

Dart là một ngôn ngữ hướng đối tượng (OOP) Nó hỗ trợ các khái niệm cơ bản của

lập trình hướng đối tượng như class, object, inheritance, va encapsulation Dart là một

ngôn ngữ kiểu tinh (statically typed), cần khai báo kiểu dữ liệu của biến trước khi sử

dụng và kiểm tra kiểu tại thời điểm biên dịch

Dart thường được sử dụng chủ yếu trong ngữ cảnh của Flutter, một framework phô

biến để xây dựng giao diện người dùng đa nền tảng Flutter sử dụng Dart làm ngôn

ngữ chính đề viết mã nguồn ứng dụng di động và web

Cú pháp của Dart tương đối đơn giản và dễ đọc, giống với nhiều ngôn ngữ lập

trình khác như JavaScript hoặc Java Điều này giúp người phát triển mới tiếp cận ngôn

ngữ một cách nhanh chóng.

Dart có khả năng chạy trên nhiều nền tảng khác nhau, bao gồm di động, web và

desktop, giúp tối ưu hóa quá trình phát triển ứng dụng đa nên tảng

1.1.1.2 Dart Platform

Công nghệ biên dịch linh hoạt cua Dart cho phép lập trình viên thực thi ma Dart

theo nhiêu cách khác nhau, tùy thuộc vào nên tảng và mục tiêu cụ thê, bao gôm:

Stateful hot reload

EB: ono OO Ff

ARM32 ARM64 x86_64 JavaScript

Dart Native Dart Web

Hinh 1.1 Dart da nén tang

1.1.1.2.1 Native platform (nền tang tự nhiên)

Trong quá trình phát triển, chu kỳ phat triển nhanh là yếu tố quan trong dé có khả

năng thử nghiệm nhanh chóng DartVM cung cấp một trình biên dịch ngay lập tức

VŨ LAN PHƯƠNG - DI9CQAT02-B 13

Trang 16

Đồ án tốt nghiệp

(just-in-time - JIT) với khả năng biên dịch giai đoạn (cho phép hot reload), thu thập sô

liệu trực tuyến (dé hỗ trợ DevTools), và hỗ trợ gỡ lỗi phong phú

Khi ứng dụng sẵn sàng triển khai vào sản xuất - cho dù đang xuất bản vào cửahàng ứng dụng hay triển khai backend - trình biên dịch trước thời điểm (ahead-of-time

- AOT) của Dart có thé biên dịch thành mã máy native ARM hoặc x64 Ứng dụngđược biên dich AOT khởi chạy với thời gian khởi động ngăn và đồng nhất

Mã được biên dịch AOT chạy bên trong một runtime Dart hiệu quả, tuân theo hệ

thống kiểu Dart sound và quản lý bộ nhớ bằng cách sử dụng cơ chế phân phối đối

tượng nhanh chóng và bộ thu gom rác theo thế hệ

1.1.1.2.2 Web platform (nền tang web)

Dart Web cho phép chạy mã Dart trên các nền tảng web duoc hỗ trợ bởi

JavaScript Với Dart Web, lập trình viên biên dịch mã Dart thành mã JavaScript, sau

đó chạy mã đó trong trình duyệt, vi dụ như V8 trong Chrome Dart Web bao gồm hai

chế độ biên dich: Trình biên dich phát triển tăng cường (incremental) cho phép chu kỳphát triển nhanh chóng và Trình biên dịch tối ưu hóa sản xuất biên dịch mã Dart thành

mã JavaScript nhanh, gọn và có thê triển khai [3]

1.2 Công nghệ Flutter trong lập trình app mobile

1.2.1 Giới thiệu Flutter

Flutter là một SDK phát triển ứng dụng di động nguồn mở được phát triển bởiGoogle Nó được sử dụng dé phát triển ứng ứng dụng cho Android va iOS, cũng làphương thức chính dé phát triển ứng dụng cho Google Fuchsia

Phiên bản đầu tiên của Flutter được gọi là "Sky" và chạy trên hệ điều hànhAndroid Flutter được phát triển bởi một nhóm tại Google, được dẫn đầu bởi Kasper

Lund và Erik Ernst, được ccông bồ tại hội nghị nhà phát triển Dart 2015, với dự địnhban đầu để có thé kết xuất ôn định ở mức 120 khung hình trên giây Trong bài phát

biểu chính ở hội nghị Google Developer Days tại Thượng Hai, Google công bố phiênbản Flutter Release Preview 2, đây là phiên bản lớn cuối cùng trước Flutter 1.0 Lúcnay, Flutter chủ yếu tập trung vào ứng dụng di động, đặc biệt là iOS va Android

Vào ngày 4 tháng 12 năm 2018, Flutter 1.0 đã được phát hành tại sự kiện Flutter

Live, là phiên ban Beta release đầu tiên của framework này Sự xuất hiện của các tính

năng mới và sự 6n định của framework đã thu hút sự chú ý của cộng đồng phát trién.Tháng 12 cùng năm đó đánh dấu bước đột phá quan trọng khi Flutter trở thành một

framework ôn định và chính thức, hỗ trợ đa nền tảng và kha năng hot reload giúp tăngcường trải nghiệm phat trién

VŨ LAN PHƯƠNG - D19CQAT02-B

Trang 17

Đồ án tốt nghiệp

Năm 2019 — 2020, Flutter mở rộng hỗ trợ cho nhiêu nên tảng hơn, bao gom web va

desktop (Windows, macOS, Linux) Cộng đồng Flutter phát triển nhanh chóng với sự

tham gia của nhiều công ty và nhà phát triển

Thang 3 năm 2021, Flutter 2.0 được phát hành với nhiều cải tiến đáng kể Trong

đó, đặc biệt phải ké tới Null safety, một tính năng quan trọng, được giới thiệu dé cải

thiện an toàn và sự 6n định trong mã nguồn Flutter [4]

Cho tới hiện tại, Flutter trở thành một trong những framework phổ biến nhất cho

phát triển ứng dụng di động và đa nền tảng Flutter đã phát triển nhanh chóng và trở

thành một lựa chọn quan trọng cho các nhà phát triển khi xây dựng ứng dụng di động

Sự liên tục cập nhật và cải tiễn đã giúp Flutter đáp ứng được nhu cầu ngày càng tăng

của cộng đồng phát triển

1.2.2 Da nền tảng và Mô hình "One Framework"

Flutter được thiết kế dé hỗ trợ phát triển ứng dụng trên nhiều nền tảng khác nhau,

bao gồm di động (Android, iOS), web và máy tính desktop (Windows, macOS,

Linux) Khả năng này giúp nhà phát triển giảm thiểu sự phức tạp của việc duy trì và

phát triển nhiều mã nguồn cho từng nên tang riêng biệt

Mô hình "One Framework" là mô hình sử dụng cùng một framework dé xây dựng

ứng dụng trên tất cả các nền tảng Nhà phát triển có thể viết mã nguồn một lần (write

once) và chạy ứng dụng trên mọi nên tảng mà không cân sửa đôi đáng kê.

Mô hình "One Framework" giúp đảm bảo rằng hiệu suất của ứng dụng không giảm

đi khi chuyển đổi giữa các nền tảng Điều này có ý nghĩa đặc biệt quan trọng khi triển

khai ứng dụng trên nhiều thiết bị Việc đồng bộ hóa phát triển giữa các nhóm làm việc

trên các nền tảng khác nhau trở nên dé dang hơn, giúp tăng cường hiệu suất làm việc

và giảm thiêu lỗi Đồng thời, Flutter cung cấp một loạt các tính năng và widget đồng

nhất trên tất cả các nền tảng, bao gồm cả giao diện người dùng và tương tác Điều này

giúp duy trì một trải nghiệm đồng nhất cho người dùng cuối trên mọi thiết bị

Mô hình "One Framework" trong Flutter là một ưu điểm quan trọng giúp tối ưu

hóa quy trình phát triển và đảm bao rang ứng dụng có khả năng chạy mượt mà và hiệu

quả trên nhiêu nên tảng khác nhau.

12.3 Kiến trúc Flutter

Flutter là một framework dành cho việc lập trình di động Cross-Platform, nó giúp

các lập trình viên có thé tạo ra các ứng dụng chạy trên nhiều nền tảng như Web,

Android, iOS (hiện tai va dự định tương lai Flutter còn có thể build được ứng dụng

chạy trên cả Window, MacOS và Linux nữa) Flutter cho phép các nhà phát triển tối

VŨ LAN PHƯƠNG - D19CQAT02-B 15

Trang 18

Đồ án tốt nghiệp

ưu các ứng dụng hiệu suât cao mang lại cảm giác tự nhiên trên các nên tảng khác

nhau, năm bắt những khác biệt nơi chúng tôn tại trong khi chia sẻ với tư cách nhiêu

mã nhât có thê.

Flutter được thiết kế như một hệ thống linh hoạt, có cấu trúc lớp Nó ton tại dưới

dạng một loạt các thư viện độc lập mà mỗi thư viện phụ thuộc vào lớp dưới Không có

lớp nào có quyền truy cập đặc quyền vào lớp phía dưới, và mọi phần của cấp độ

framework được thiết kế đề có thể thay thế và tuỳ chọn

Dart Runtime Mgmt Frame Scheduling

Embedder : :Platform-specific Render Surface Setup Native Plugins App Packaging

Thread Setup Event Loop Interop

Hình 1.2 Mô hình kiến trúc của Flutter

Đối với hệ điều hành cơ bản, các ứng dụng Flutter được đóng gói trong giống như

những ứng dụng native khác Một Embedder cụ thể cho từng nền tảng cung cấp một

điểm nhập; tương tác với hệ điều hành cơ bản đề truy cập các dịch vụ như bề mặt vẽ,

khả năng tiếp cận, và đầu vào; và quản lý vòng sự kiện thông điệp [5]

1.1.1.1 Embedder

Embedder được viết băng một ngôn ngữ phù hợp với nền tang: hiện tại là Java và

C++ cho Android, Objective-C/Objective-C++ cho iOS và macOS, va C++ cho

VU LAN PHƯƠNG - D19CQAT02-B 16

Trang 19

Đồ án tốt nghiệp

Windows và Linux Sử dụng embedder, mã Flutter có thể được tích hợp vào một ứng

dụng hiện tại như một mô-đun, hoặc mã có thể là toàn bộ nội dung của ứng dụng

Flutter bao gồm một số embedder cho các nền tảng mục tiêu phổ biến, nhưng cũng có

các embedder khác tồn tại [5]

1.1.1.2 Flutter Engine

Cốt lõi của Flutter là Flutter engine, chủ yếu được viết bằng C++ và hỗ trợ các

nguyên tắc cần thiết dé hỗ trợ tất cả các ứng dung Flutter Engine chịu trách nhiệm về

việc tạo ra các cảnh ghép hình mỗi khi cần vẽ một khung mới Nó cung cấp triển khai

cấp thấp của API cốt lõi của Flutter, bao gồm đồ họa, bồ trí văn ban, I/O tệp va mang,

hỗ trợ tiếp cận, kiến trúc plugin, và một hệ thống biên dich va thực thi Dart [5]

Thông thường, những nhà phát triển tương tác với Flutter thông qua framework

Flutter, cung cấp một framework hiện đại được viết bang ngôn ngữ Dart

1.1.1.3 Flutter Framework

Flutter Framework được viết bang ngôn ngữ Dart bao gồm một bộ thư viện day đủ

vệ nên tảng, bô tri, va thư viện cơ bản, được tạo thành từ một loạt các lớp.

Framework

Dart Material Cupertino

Widgets Rendering Animation

Hình 1.3 Mô hình kiến trúc của Flutter Frawmwork

Từ phía dưới lên phía trên, chúng ta có:

- Foundation Layer (Lớp nền tảng): Bao gồm các lớp cơ bản như quản ly

trạng thái, quản lý tài nguyên Đây là nền tảng cơ bản cho việc xây dựng

ứng dung Flutter.

- Service Layer (Lớp dịch vụ) như Animation, Painting, Gestures, v.v : Cac

dich vụ này giúp quan lý các khía cạnh khác nhau của ứng dụng, từ hiệu

ứng chuyền động đến tương tác người dùng

Trang 20

Đồ án tốt nghiệp

- Rendering Layer (Lop render): Cung cap một lớp trừu tượng dé xử lý bố trí

Với lớp này, người dùng có thể xây dựng một cây các đối tượng có thểrender, có thê tương tác với những đối tượng này một cách linh hoạt Bên

cạnh đó, cây đối tượng cũng tự động cập nhật bồ trí dé lưu lại các thay đôi.

- Widgets Layer (Lớp widgets): Được xem là một phan quan trọng của

Flutter, Widgets Layer định nghĩa giao diện người dùng của ứng dụng.

Widget là một khái niệm cơ bản và mạnh mẽ trong Flutter, đại diện cho mọi

thứ từ một package đơn giản đến các phần tử phức tạp như danh sách và

màn hình.

- Thu viện Material và Cupertino (Material and Cupertino Libraries): Cung

cấp các bộ điều khiển toàn diện cho người dùng với nguyên tắc hop nhất

của lớp widgets dé thực hiện các ngôn ngữ thiết kế Material hoặc iOS

Framework Flutter tương đối nhỏ gọn, nhiều tính năng cấp cao mà nhà phát triển

có thé sử dụng được thực hiện dưới dạng các gói, bao gồm các plugin nên tảng như

camera và webview, cũng như các tính năng độc lập nên tảng như characters, HTTP,

và animations xây dựng trên các thư viện Dart và Flutter cốt lõi [5]

1.1.1.4 Đánh giá ưu điển nhược điểm của Flutter Framework

Mặc dù được phát triển trên nhiều nền tảng nhưng ưu thé của Flutter và sự phổ

biến của công nghệ này được thể hiện rõ ràng nhất trong lĩnh vực ứng dụng di động

Theo Báo cáo Tình hình Mobile 2023 được xuất bản bởi data.ai, "dịch vụ di động

đã lập ky lục với 255 tỷ lượt tải xuống - với người tiêu ding toàn cầu tải xuống hơn

485,000 ứng dụng mỗi phút Các thị trường chủ yếu di động đạt đến 5 giờ sử dụng

hàng ngày Đến năm 2023, chi tiêu quảng cáo di động sẽ đạt 362 tỷ đô la, trong khi

người thuộc thế hệ Baby Boomers đang gia tăng, và các thế hệ Millennials và GenZ

đang chỉ tiêu nhiều hơn cho các ứng dụng liên quan đến tài chính, hẹn hò, giao thức

thực phẩm, sức khỏe, thé dục, vv

Trang 21

Đồ án tốt nghiệp

(in billions)

2016 2018 2019 2020 2021 2022

Hình 1.4 Sự tăng trưởng mạnh mẽ số lượt tải xuống các ứng dung di động

Trên phạm vi toàn cầu, số người dùng di động đã đạt 7 tỷ người vào đầu năm

2021, theo Statista Khi nói đến ứng dụng di động, người dùng có các tiêu chuẩn chất

lượng và hiệu suất cực kỳ cao Do đó, sự thành công của một ứng dụng di động phụthuộc vào việc cung cấp nội dung mượt mà trên các kích thước màn hình khác nhau và

một loạt rộng các thiết bị đi động, bao gồm cả Android và iOS [6]

Trên đà phát triển mạnh mẽ, dựa trên thống kê của Strivemindz - một công ty hàngđầu về phát triển ứng dung di động và web của An Độ, Flutter giữ vi tri đầu tiên trong

danh sách Những framework ứng dụng di động tốt nhất năm 2023 Mặc dù chỉ mới ônđịnh từ cuối năm 2018 nhưng Flutter đã giữ cho mình một vị thế đáng ngưỡng mộ so

với các Framework khác.

Flutter sử dụng một phương pháp độc đáo dé cung cấp ứng dụng với giao điện demlại cho người dùng cảm giác giống như ứng dụng gốc, điều này làm nó nổi bật so với

các SDK đa nền tảng khác Bang cách tăng tốc quá trình phát triển, Flutter trở thành là

một framework di động không thé sánh kịp và cực kỳ đáng tin cậy dé tạo ra các ứngdụng ấn tượng một cách nhanh chóng Ngoài các widget, bộ máy render của Flutter,khả năng kiểm thử và tích hop API cũng có thé giúp nhà phát triển xây dung và triển

khai các ứng dụng di động đẹp mắt Flutter đã được sử dụng để phát triển cho các ứngdụng như Google, Alibaba va Abbey Road Studios, cùng với nhiều tổ chức khác

VŨ LAN PHƯƠNG - D19CQAT02-B

Trang 22

Đồ án tốt nghiệp

1.1.1.4.a Uu điểm vượt trội của Flutter Framework

Trong số các ưu điểm của Flutter, phải kế tới đầu tiên là khả năng cập nhật trong

thời gian thực (hot reload) Công cụ hot reload đã trở thành yêu tố quan trọng trongkiến trúc của Flutter và không yêu cầu bất kỳ plugin nào hoạt động Hot reload về cơ

bản cho phép lập trình viên xem các bản cập nhật trong thời gian thực.

Khi gặp lỗi khi chạy một chương trình Trong Flutter, lập trình viên có thể sửa nó

ngay lập tức, tiếp tục từ nơi lập trình viên đã dừng lại mà không cần khởi động lạitoàn bộ Với lập trình thông thường (native code), việc chạy lại ứng dụng mat vài phút

có thé là một cuộc đấu tranh gian khô

Hot reload nâng cao năng suất của lập trình viên, giúp họ tiết kiệm thời gian phát

triển sản pham, kiểm thử mã nguồn (test) va tìm lỗi (debug) nhanh hơn đáng kể Khilập trình viên đã quen thuộc với Hot Reload, đó sẽ là một ưu điểm khó có thê tìm thấy

ở các phân mêm phát triên khác.

Thứ hai, khả năng biên dịch trước thời điểm (AOT)

Development | Development |

1

| Production

1

| App downloaded in Browser

Hình 1.5 So sánh mô hình Biên dịch ngay lập tức và biên dich trước thời điểm [7]

Khi tiễn hành biên dịch dé đóng gói sản phẩm (archive), Dart sẽ sử dụng trình biên

dịch AOT dé có được file thực thi hiệu năng cao Đây là một đặc tính cho phép Dart

vừa có khả năng hot load trong lúc phát triển (development) vừa có tính chất như một

ngôn ngữ static typed.

VŨ LAN PHƯƠNG - D19CQAT02-B

Trang 23

Đồ án tốt nghiệp

Flutter có giao diện ân tượng và linh hoạt

Reflectly

Hình 1.6 Giao diện ấn tượng và linh hoạt cua Flutter [7]

Flutter tách UI khỏi các điều khiến gốc, giảm lỗi không tương thích và tạo sựđồng nhất trên tat cả các phiên bản hệ thống Đây là lý do thúc day Flutter ra đời

Trước đó việc xây dựng các ứng dụng có UI đẹp, animation mượt mà rất phức tạp và

gian nan với hầu hết các nhà phát triển ứng dụng di động

1.1.1.4.b Han chế của Flutter Framework

Mặc dù Flutter có nhiều ưu điểm, nhưng no cũng có những han ché

Flutter vẫn chưa thật hoàn thiện Vì là một ứng dụng mới nên Flutter vẫn chưa đạt

mức hoàn hảo Thực tế, nhiều tính năng nâng cao của Flutter vẫn chưa được hỗ trợ;nhiều thư viện chưa được thử nghiệm chính thức còn tồn tại hạn chế khi so sánh vớicác bản sao gốc (như là Google Maps)

Dart khá "non nớt" Về cơ bản Dart khá giống với Swift và Kotlin, nhưng có ít tính

năng hơn, hoặc những tính năng hiện có chưa được toản diện.

Các ứng dụng Flutter khá "nặng" Chúng chiếm nhiều dung lượng va mat nhiều

thời gian để tải xuống hoặc cập nhật Giao diện không giống 100% so với phiên bản

goc.

Về cơ ban, Flutter không tạo ra các thành phan gốc mà sao chép không hoàn toàn

các thiết kế Material Design của Android và các thành phan riêng của iOS bằng thưviện Cupertino Thư viện này sẽ hiển thị, đặc biệt với các phiên bản hệ thống chứa cáctrường văn bản hoặc các nút - những thành phan biến đôi bên ngoài nhưng không thay

đổi bên trong Flutter

VŨ LAN PHƯƠNG - D19CQAT02-B

Trang 24

Đồ án tốt nghiệp

Hướng dẫn phát triên ứng dụng Flutter chưa được đông nhất, điều này có thê gây

nhiều khó khăn khi xây dựng các phần mềm mang tính phức tạp

Framework cũng thay đổi nhanh chóng gây khó khăn cho việc duy trì mã Thêm

vào đó, Flutter chưa chắc sẽ được ứng dụng trong tương lai khi Google liên tục loại bỏ

các dự án của ứng dụng này.

1.3 Mối quan hệ giữa Dart va Flutter

Những ưu điểm của Dart trở thành điều kiện thuận lợi dé Flutter trở nên phổ biến.

& Flutter

Hinh 1.7 Flutter va Dart

Flutter thu hút được sự chú ý của cộng đồng các nhà phát triển bằng cách giới

thiệu các style cho phép việc xây dựng UI đẹp hơn và biểu cảm hơn vì thế mà việc

code cũng trở nên thú vị hơn nhiêu.

Framework này kết hợp một số khái niệm quen thuộc với những kinh nghiệm phát

triển hiện đại như lập trình reactive va widget composition trong khi sử dụng nền tang

Dart làm cơ sở chính cho các hoạt động đó Nhóm Flutter đã đánh giá nhiều ngôn ngữ

khác nhau và cuối cùng họ chọn Dart vì nó phù hợp với cách mà họ xây dựng giao

diện người dùng.

Việc ngôn ngữ Dart được Flutter lựa chọn để sử dụng đến từ nhiều ưu điểm mà

Dart mang lại Một vai ưu điểm trong đó có thê kê đến:

- Tối ưu giao diện người dùng: Hoạt động bất đồng bộ (như viết cơ sở dit

liệu, đọc dt liệu từ file, ) cho phép chương trình có thé hoàn thành hoàn

toàn công việc trong khi chờ hoạt động khác kết thúc Bên cạnh đó, thay vìchia luồng như hầu hết các ứng dụng khác Mã nguồn của Dart chạy bên

VŨ LAN PHƯƠNG - D19CQAT02-B 22

Trang 25

Đồ án tốt nghiệp

trong từng isolate riêng, đảm bảo rang các trạng thái của isolate không bị

xung đột với nhau.

- Gia tăng năng suất phát triển ứng dung: Flutter có tính năng hot reload giúp

lập trình viên thử nghiệm, xây dựng UI, thêm tính năng và fix bug một cách

nhanh chóng và dé dang hon bằng cách đưa những file source code đã được

update vào máy ảo Virtual Machine (VM) của Dart Cùng với đó, Flutter

cung cấp phân tích tĩnh cho phép lập trình viên phát hiện ra những vấn đề

ngay trước khi dòng code đó được thực thi Các yếu tố trên thực sự là một

công cụ mạnh mẽ có thể giúp các dev tránh việc phát sinh bug và đảm bảo

được code tuân theo các quy tắc của style

- _ Hiệu năng đồng đều ở mọi nền tảng: Ngôn ngữ Dart có trình biên dịch AOT

(Ahead of Time) giúp nó biên dịch nhanh, đúng và native code Điều nàykhông chỉ đảm bảo giúp Flutter nhanh hơn mà còn đảm bảo rằng hầu nhưmọi thứ (bao gồm tất cả các widget) đều có thể được tùy chỉnh Với lý do

đó cho nên hầu hết các phần của Flutter đều được viết bằng ngôn ngữ này

1.4 Kết chương

Chương 1 giới thiệu về công nghệ Flutter, bao gồm các mục như: ngôn ngữ lập

trình Flutter — Dart, sự phát triển của công nghệ Flutter trong thế giới công nghệ hiện

đại, kiến trúc của Flutter và ưu nhược điểm của công nghệ này Đồng thời nêu bật

được những ưu điểm vượt trội mà ngôn ngữ Dart đem tới cho Flutter

Chương kế tiếp sẽ trình bày về phương pháp an ninh “cửa ngõ” dé bảo vệ dit liệu

an toàn cho các ứng dụng di động — phương pháp, kỹ thuật SSL pinning.

Trang 26

Đồ án tốt nghiệp

CHƯƠNG 2 KỸ THUAT SSL PINNING

2.1 Giới Thiệu Về SSL Pinning

2.1.1 Khai niệm SSL Pinning

Chứng chi SSL là đối tượng kỹ thuật số cho phép các hệ thống xác minh danh

tính và sau đó thiết lập kết nỗi mạng được mã hóa với một hệ thống khác bang giao

thức Lớp công bảo mật Các chứng chỉ được sử dụng trong một hệ thống mật mã được

gọi là cơ sở hạ tầng khóa công khai (PKI) PKI cung cấp phương thức dé một bên thiết

lập nhận dạng của một bên khác bằng cách sử dụng các chứng chỉ nếu cả hai đều tin

cậy bên thứ ba - được gọi là cơ quan cấp chứng chỉ Do đó, chứng chỉ SSL/TLS đóng

vai trò là thẻ định danh kỹ thuật số để bảo mật hoạt động giao tiếp mạng, thiết lập

danh tính của các trang web qua Internet cũng như tải nguyên trên các mạng riêng.

Các điểm chính về SSL bao gồm: mã hóa đữ liệu; xác thực đối tác giao tiếp; đảm bảo

truyền dit liệu qua một kênh an toàn, giảm thiểu rủi ro bị đánh cắp hoặc thay đôi trong

quá trình truyền tải, v.v Chứng chỉ SSL chứa các thông tin: tên miền, cơ quan cấp

chứng chỉ, chữ ký số của cơ quan cấp chứng chỉ, ngày cấp, ngày hết hạn, khóa công

khai và phiên ban SSL.

Kỹ thuật SSL pinning, được hiểu đơn giản là ghim chứng chỉ SSL - là một kỹ thuật

được sử dụng dé củng cố bảo mật cho các ứng dụng di động và trình duyệt web khi

kết nối đến các máy chủ web thông qua HTTPS

Khi ứng dụng di động giao tiếp với máy chủ, thông thường, chúng sử dụng SSL dé

bảo vệ đữ liệu truyền qua khỏi nguy cơ nghe lén và can thiệp Theo mặc định, SSL

được sử dụng trong ứng dụng, tin tưởng bất kỳ máy chủ nào có chứng chỉ được hệ

điều hành tin tưởng Hệ thống này là một danh sách các cơ quan chứng chỉ được tin

tưởng đưa theo hệ điều hành

ssL ©

certificate

Hình 2.8 Nguyên lý hoạt động cua chứng chi SSL [8]

Trang 27

Đồ án tốt nghiệp

Tuy nhiên, với SSL pinning, ứng dụng được câu hình dé từ chối tat cả chứng chỉ

ngoại trừ một hoặc một sé chứng chi cu thé duoc dinh nghĩa trước Mỗi khi ứng dụng

kết nối đến một máy chủ, nó so sánh chứng chỉ của máy chủ với các chứng chỉ được

chọn Chỉ khi các chứng chỉ này có các thông tin khớp với nhau, máy chủ được tin

tưởng và kết nối SSL được thiết lập

trusted

root CA's

ssL ©

certificate

Hình 2.9 Nguyên lý hoạt động cua SSL pinning [8]

SSL pinning thêm một tầng bảo mật băng cách chỉ rõ các chứng chỉ mà ứng dụng

tin tưởng, giảm nguy cơ máy chủ không ủy quyền hoặc máy chủ độc hại truy cập vào

dữ liệu nhạy cảm Cơ chế này đặc biệt hữu ích trong các tình huống mà mô hình tintưởng SSL truyền thống có thé bị đe doa [8]

Việc sử dụng SSL pinning có thể giảm thiểu khả năng tấn công giả mạo chứng chỉSSL/TLS và tăng cường bảo mật cho ứng dụng hoặc trình duyệt web Tuy nhiên, cần

lưu ý rằng nó có thê gây khó khăn cho việc quản lý chứng chỉ SSL/TLS của máy chủtrong trường hợp chúng bị thay đồi

2.1.2 SSL Pinning là sự cần thiết

Việc thiết lập và duy trì các phiên SSL thường được ủy quyên cho thư viện hệ

thong Ung dụng có gang thiết lập kết nối không xác định chứng chi nào đáng tin cậy

và chứng chỉ nào không mà hoàn toan dựa vào các chứng chi có trong kho tin cậy của

hệ điều hành [9]

Một kiểm thử viên tạo ra một chứng chỉ tự ký và đưa nó vào trong hệ thống tintưởng của hệ điều hành để có thể thiết lập một cuộc tấn công gián đoạn (man-in-the-

middle) vào bat kỳ ứng dung nao sử dung SSL Điều này cho phép kiểm thử viên đọc

và điều khiển mọi phiên SSL Kẻ tan công có thể sử dụng khả năng nay dé phân tích

ngược giao thức mà ứng dụng sử dung hoặc dé trích xuất các khóa API từ các yêu cầu

Những kẻ tấn công cũng có thể xâm phạm các phiên SSL bằng cách lừa người

dùng cài đặt CA đáng tin cậy thông qua một trang web độc hại Hoặc các CA gốcđược thiết bị tin cậy có thể bị xâm phạm và được sử dụng dé tao chứng chi

VU LAN PHƯƠNG - D19CQAT02-B

Trang 28

Đồ án tốt nghiệp

Việc thu hẹp nhóm chứng chỉ tin cậy thông qua việc trién khai tinh năng ghim SSL

sẽ bảo vệ hiệu quả các ứng dụng khỏi các cuộc tấn công từ xa được mô tả Nó cũng

ngăn các kỹ sư đảo ngược thêm CA gốc tùy chỉnh vào kho lưu trữ trên thiết bị của

chính họ đề phân tích chức năng của ứng dụng và cách giao tiếp với máy chủ

2.1.3 Qua Trinh Pinning SSL

Khi chứng chỉ hoặc key đã được chi định cho host, quá trình này được gọi là qua

trình pinning So với quá trình pinning key, pinning chứng chỉ dễ dàng và thông dụng

hơn cả.

Android App

©) Ứng dụng hiển thị Log In >

Đầu tiên, khi chương trình bắt đầu chạy và thực hiện truy vấn, người dùng sẽ nhận

được một chứng chỉ từ website hoặc server.

Kế tiếp, ứng dụng sẽ thực hiện so sánh với chứng chỉ đã được ghim sẵn ở trongứng dụng Việc so sánh và xác thực này sẽ diễn ra đối với toàn bộ các thông tin có

trong chứng chỉ SSL như tên miễn, cơ quan cấp chứng chỉ, chữ ký số của cơ quan cấp

chứng chỉ, ngày cấp, ngày hết hạn, khóa công khai và phiên bản SSL Nếu hai chứng

chỉ chỉ này trùng nhau thì ứng dụng đồng ý tương tác với web/server

Trang 29

Hình 2.11 Mới liên kết giữa chứng chỉ và ứng dung di động [10]

Chứng chỉ SSL có mối liên hệ chặt chẽ với các ứng dụng di động, đặc biệt khi thực

hiện SSL Pinning, là phương pháp an ninh “cửa ngõ” quan trọng dé dam bao tính toàn

vẹn và an toàn của kết nôi SSL:

Thứ nhất, ứng dụng di động xác minh tính chính xác của chứng chi SSL bằng cách

so sánh thông tin trong chứng chỉ với thông tin mà nó mong đợi Điều này bao gồm

kiểm tra thông tin như tên miền, ngày hết hạn, và quyền phát hành

Thứ hai, thực hiện kỹ thuật SSL Pinning - một co chế xác minh mà ứng dụng diđộng chỉ tin tưởng vào một tập hợp cụ thê các chứng chỉ đã được xác minh Điều nàyngăn chặn ứng dụng từ việc tin tưởng vào bất kỳ chứng chỉ nào khác, ngay cả khi

chúng là hợp lệ.

Thứ ba, thực hiện SSL Pinning giúp bảo vệ ứng dụng khỏi tan công giả mạo chứngchỉ Kẻ tan công sẽ gặp khó khăn khi cố gắng thay thé chứng chỉ đã được xác minh

Cuối cùng, trong quá trình phát triển và triển khai, quản lý danh sách chứng chỉ trở

thành một phần quan trọng Các chứng chỉ mới hoặc thay đổi cần được cập nhật và

Ngày đăng: 08/03/2024, 13:51

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN