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 1HỌ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 2HỌ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 3Dé á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 4Dé á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 5Dé á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 6Dé á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 7Dé á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 8Dé á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 9Dé á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 10Dé á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 11Dé á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
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 12TLS 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 29Hì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à