Tải bản đầy đủ (.pdf) (83 trang)

Kiểm tra ứng dụng trên điện thoại di động android bằng kiểm tra mô hình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.64 MB, 83 trang )

ĐẠI HỌC QUỐC GIA TP. HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
--------------------

NGUYỄN THANH HỒNG

KIỂM TRA ỨNG DỤNG TRÊN ĐIỆN THOẠI DI ĐỘNG
ANDROID BẰNG KIỂM TRA MƠ HÌNH
Chun ngành: KHOA HỌC MÁY TÍNH
Mã số: 60.48.01

LUẬN VĂN THẠC SĨ

TP. HỒ CHÍ MINH, tháng 06 năm 2013


CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI
TRƯỜNG ĐẠI HỌC BÁCH KHOA
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Cán bộ hướng dẫn khoa học: .PGS.TS. QUẢN THÀNH THƠ.........................

Cán bộ chấm nhận xét 1: …TS. NGUYỄN CHÁNH THÀNH.......................

Cán bộ chấm nhận xét 2: …TS. BÙI HOÀI THẮNG......................................

Luận văn thạc sĩ được bảo vệ tại trường Đại Học Bách Khoa, ĐHQG
Tp. HCM ngày . 24. . . . tháng .07 . . . năm . 2013. . . .

Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm:
1…TS. HUỲNH TƯỜNG NGUYÊN.. ………
2…TS. NGUYỄN ĐỨC THÁI ……….………


3…TS. NGUYỄN CHÁNH THÀNH….………
4…TS. BÙI HOÀI THẮNG .………….………
5…TS. NGUYỄN THỊ MINH TUYỀN.………
Xác nhận của Chủ tịch Hội đồng đánh giá Luận Văn và Trưởng Khoa quản lý
chuyên ngành sau khi luận văn đã được sửa chữa (nếu có).
CHỦ TỊCH HỘI ĐỒNG

TRƯỞNG KHOA…………


ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc

NHIỆM VỤ LUẬN VĂN THẠC SĨ

Họ tên học viên: NGUYỄN THANH HỒNG............................MSHV:09070438............
Ngày, tháng, năm sinh: 20/11/1982 ...........................................Nơi sinh: TP HCM..........
Chuyên ngành: KHOA HỌC MÁY TÍNH................................. Mã số : 60.48.01...........
I. TÊN ĐỀ TÀI: ................................................................................................................
KIỂM TRA ỨNG DỤNG TRÊN ĐIỆN THOẠI ANDROID BẰNG KIỂM TRA MƠ HÌNH ....

.............................................................................................................................................
II. NHIỆM VỤ VÀ NỘI DUNG: ....................................................................................
1) Hiện thực module kiểm tra một vài tính chất của chương trình Android bằng phương pháp
kiểm tra mơ hình trên cơng cụ PAT
2) So sánh hiệu quả của hai kĩ thuật on-the-fly và không on-the-fly khi thực hiện kiểm tra mơ hình


........................................................................................................................................
.............................................................................................................................................
III. NGÀY GIAO NHIỆM VỤ : 21/01/2013................................................................
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 21/06/2013 ................................................
V. CÁN BỘ HƯỚNG DẪN : PGS.TS. QUẢN THÀNH THƠ........................................
.............................................................................................................................................

Tp. HCM, ngày .21 . . . tháng .06. . . năm 2013....
CÁN BỘ HƯỚNG DẪN

CHỦ NHIỆM BỘ MÔN ĐÀO TẠO

(Họ tên và chữ ký)

(Họ tên và chữ ký)

TRƯỞNG KHOA….………
(Họ tên và chữ ký)

i


LỜI CẢM ƠN
Tôi xin gửi lời cảm ơn chân thành đến PGS TS. Quản Thành Thơ, người thầy đã hướng
dẫn cho tơi hồn thành luận văn này và cũng là người giảng dạy cho tơi trong q trình học
Cao Học.
Tơi xin gửi lời cảm ơn đến TS. Bùi Hoài Thắng, các bạn Hà Xuân Lĩnh, Lê Đình Thuận,
Nguyễn Hữu Vũ, Châu Vĩnh Tuân, những người đã hỗ trợ rất tích cực cho tơi trong q
trình làm luận văn.
Tơi xin gửi lời cảm ơn đến các đồng nghiệp ở công ty Tường Minh và gia đình tơi,

những người đã ủng hộ và tạo điều kiện để tơi có thể hồn thành được luận văn này.

ii


TĨM TẮT LUẬN VĂN
Các ứng dụng trên Android có nhiều lỗi bảo mật. Những rắc rối cho người dùng như thông tin cá
nhân của họ bị chuyển cho các nhà quảng cáo, cuộc gọi bị nghe lén, điện thoại tự động gửi nhiều
tin nhắn dẫn đến thiệt hại về tài chính cho người dùng,… là những vấn đề khá phổ biến.
Một trong những nguyên nhân cơ bản của những lỗi bảo mật đó được cho là người phát triển ứng
dụng đã không áp dụng cơ chế bảo mật dựa trên phân quyền của hệ điều hành Android một cách
đầy đủ và chính xác.
Đề tài này nhằm kiểm tra lỗi rị rỉ chức năng (capability leaks) của ứng dụng, bằng cách áp dụng
phương pháp kiểm tra mơ hình.
Chúng tơi cũng thử nghiệm và nhận thấy rằng kết quả khi thực hiện kiểm tra mơ hình bằng phương
pháp on-the-fly tốt hơn phương pháp kiểm tra mơ hình thơng thường.

iii


ABSTRACT
Android applications have been found to contain many kinds of security holes, which may be
serious to leave smartphone users at risks of various attacks, such as privacy loss (user’s
information is passed to adversories), eavesdropping, financial loss (SMS messages are sent out
uncontrolledly which financially impacts to users)...
Among various root causes of these attacks, that Android security mechanism is not correctly
enforced and results in some kinds of leaks in the application, is supposed to be one of the basic
root causes.
Our thesis proposes the on-the-fly LTL model checking approach to verify capability leaks in
Android application.

We also performed experiments and found that on-the-fly approach results in better performance
than normal approaches.

iv


LỜI CAM ĐOAN
Tôi cam đoan rằng, ngoại trừ các kết quả tham khảo từ các cơng trình khác như đã ghi rõ
trong luận văn, các cơng việc trình bày trong luận văn là do chính tơi thực hiện và chưa có
phần nội dung nào của luận văn này được nộp để lấy một bằng cấp ở trường này hoặc
trường khác.
Ngày….21….tháng…06…năm…2013…
Nguyễn Thanh Hồng

v


MỤC LỤC
NHIỆM VỤ LUẬN VĂN THẠC SĨ............................................................................................... i
LỜI CẢM ƠN ................................................................................................................................ ii
TÓM TẮT LUẬN VĂN ............................................................................................................... iii
ABSTRACT .................................................................................................................................. iv
LỜI CAM ĐOAN........................................................................................................................... v
MỤC LỤC..................................................................................................................................... vi
DANH MỤC HÌNH ...................................................................................................................... ix
DANH MỤC BẢNG...................................................................................................................... x
Chương 1: Phát biểu vấn đề ........................................................................................................... 1
1.1 Những vấn đề về bảo mật của điện thoại Android ............................................................... 1
1.2 Các phương pháp giải hiện tại .............................................................................................. 2
1.3 Mục tiêu của luận văn........................................................................................................... 2

1.4 Đóng góp của luận văn ......................................................................................................... 3
1.5 Cấu trúc luận văn.................................................................................................................. 3
Chương 2: Những cơ sở lý thuyết nền tảng ................................................................................... 4
2.1 Tổng quan về Android.......................................................................................................... 4
2.1.1 Cấu trúc hệ điều hành Android ................................................................................... 4
2.1.2 Android Security Framework ..................................................................................... 5
2.2 LTL - Propositional Linear time Temporal Logic................................................................ 8
2.2.1 Kripke structure .......................................................................................................... 8
2.2.2 Cú pháp biểu thức LTL............................................................................................... 9
2.2.3 Ngữ nghĩa biểu thức LTL ........................................................................................... 9
2.3 Tổng quan về On-the-fly LTL Model Checking ................................................................ 10
2.3.1 Nguyên lí của Model Checking ................................................................................ 10
2.3.2 On-the-fly LTL Model Checking.............................................................................. 11
2.4 Kiểm tra mơ hình với cơng cụ PAT.................................................................................... 12
Chương 3: Tổng thuật các cơng trình liên quan........................................................................... 14
3.1 Các hướng nghiên cứu hiện nay ......................................................................................... 14
3.1.1 ScanDroid ................................................................................................................. 14
3.1.2 WoodPecker.............................................................................................................. 15
vi


3.1.3 Android Model – Type and Effect System ............................................................... 16
3.1.4 Sorbet ........................................................................................................................ 17
3.1.5 Stowaway.................................................................................................................. 18
3.1.6 XmainDroid .............................................................................................................. 19
3.1.7 Crowdroid ................................................................................................................. 20
3.1.8 Taintdroid.................................................................................................................. 21
3.1.9 Scandal...................................................................................................................... 23
3.1.10 ComDroid ............................................................................................................... 23
3.1.11 AndroidLeaks.......................................................................................................... 24

3.1.12 Các hướng khác ...................................................................................................... 25
3.2 Thảo luận về các hướng nghiên cứu................................................................................... 25
3.2.1 Tóm tắt các hướng hiện tại ....................................................................................... 25
3.2.2 Giới thiệu cách tiếp cận On-the-fly LTL Model Checking ...................................... 27
Chương 4: Phương pháp giải quyết vấn đề và hệ thống ứng dụng .............................................. 28
4.1 Đặt vấn đề........................................................................................................................... 28
4.2 Giải quyết vấn đề................................................................................................................ 29
4.2.1 Framework tổng quát ................................................................................................ 29
4.2.2 Đặc tả thành phần Android Model Checker ............................................................. 30
4.2.3 Cấu trúc input file của toàn module.......................................................................... 31
4.2.4 Đặc tả phần chương trình trừu tượng........................................................................ 32
4.2.5 Đặc tả phần assertions............................................................................................... 44
4.2.6 Cách thức xử lí kiểm tra mơ hình ............................................................................. 45
Chương 5: Thực nghiệm .............................................................................................................. 46
5.1 Thực nghiệm 1: kiểm tra lỗi bảo mật của ứng dụng Android ............................................ 46
5.1.1 Phát hiện lỗi rò rỉ tường minh (explicit leak)............................................................ 46
5.1.2 Phát hiện implicit leak .............................................................................................. 53
5.2 Thực nghiệm 2: kiểm tra độ hiệu quả của phương pháp on-the-fly ................................... 61
5.2.1 Nội dung và cách thức thực nghiệm ......................................................................... 61
5.2.2 Kết quả thực nghiệm ................................................................................................. 62
5.2.3 Phân tích kết quả thực nghiệm.................................................................................. 63
vii


Chương 6: Kết luận ...................................................................................................................... 65
6.1 Tổng kết.............................................................................................................................. 65
6.2 Hướng phát triển................................................................................................................. 66
Tài liệu tham khảo........................................................................................................................ 67
PHỤ LỤC A: BẢNG ĐỐI CHIẾU THUẬT NGỮ ANH - VIỆT.................................................. 1
PHỤ LỤC B: LÝ LỊCH TRÍCH NGANG ..................................................................................... 2


viii


DANH MỤC HÌNH
Hình 1 Cấu Trúc Hệ Điều Hành Android .......................................................................................... 4
Hình 2: Cấu trúc manifest file............................................................................................................ 6
Hình 3: Liên hệ giữa các component ................................................................................................. 7
Hình 4: Một ứng dụng Android ......................................................................................................... 8
Hình 5 Một hệ thống chuyển trạng thái ............................................................................................. 8
Hình 6 Ngun lí của Model checking ............................................................................................ 10
Hình 7 Ngun lí của On-the-fly Model Checking ......................................................................... 11
Hình 8 Kiến trúc của PAT ............................................................................................................... 13
Hình 9 Cách thức xử lý của ScanDroid ........................................................................................... 14
Hình 10 Cách thức xử lý của WoodPecker...................................................................................... 15
Hình 11 Cách thức xử lý của Type and Effect System.................................................................... 16
Hình 12 Kiến trúc XmainDroid ....................................................................................................... 20
Hình 13 Quá trình phát hiện Malware của crowdroid ..................................................................... 21
Hình 14 Kiến trúc của TaintDroid ................................................................................................... 22
Hình 15 Quá trình phân tích Android Leaks.................................................................................... 24
Hình 16 Framework kiểm tra chương trình Android....................................................................... 29
Hình 17 Bên trong Adroid Model Checker...................................................................................... 30
Hình 18 Cấu trúc input file .............................................................................................................. 31
Hình 19 Định dạng của chương trình trừu tượng............................................................................. 32
Hình 20 Quá trình kiểm tra mơ hình của Android Module.............................................................. 45
Hình 21 Case Study 1: Lấy thơng tin Contact bằng public API ...................................................... 46
Hình 22 Tóm tắt q trình kiểm tra lỗi rị rỉ tường minh................................................................. 49
Hình 23 Kết quả kiểm tra lỗi rị ri tường mình ................................................................................ 52
Hình 24 Case study 2: Lấy thơng tin contact bằng SharedUserId ................................................... 53
Hình 25 Q trình kiểm tra lỗi rị rỉ ẩn tàng (1)............................................................................... 55

Hình 26 Kết quả kiểm tra lỗi rò rỉ ẩn tàng (1) ................................................................................. 57
Hình 27 Q trình kiểm tra lỗi rị rỉ ẩn tàng (2)............................................................................... 57
Hình 28 Kết quả kiểm tra lỗi rị rỉ ẩn tang (2) ................................................................................. 60
Hình 29 So sánh mức độ sử dụng bộ nhớ ........................................................................................ 63
Hình 30 So sánh thời gian chạy ....................................................................................................... 64

ix


DANH MỤC BẢNG
Bảng 1 Smartphone Operating System Market Share 2011 và 2015................................................. 1
Bảng 2 Kết quả thử nghiệm ............................................................................................................. 62

x


Chương 1: Phát biểu vấn đề
1.1 Những vấn đề về bảo mật của điện thoại Android
-

Smartphone ngày càng trở thành phương tiện gần gũi và quan trọng đối với người dùng
vì tính tiện lợi của nó. Smartphone khơng chỉ có chức năng của điện thoại thơng thường,
mà người dùng cịn có thể thực hiện hầu hết các cơng việc cá nhân như kiểm tra email,
tham gia mạng xã hội, giao dịch với ngân hàng (banking),…

-

Hệ điều hành Android hiện đang là hệ điều hành chiếm thị phần cao nhất [7] trong số
các hệ điều hành trên thiết bị di động (Android, iOS, BlackBerry, Windows Phone...).
2011

2015
2015/2011
Market Share
Market Share
Evolution
Android
39.5%
45.4%
23.8%
BlackBerry OS
14.9%
13.7%
17.1%
iOS
15.7%
15.3%
18.8%
Symbian
20.9%
0.2%
-65.0%
Windows mobile 7
5.5%
20.9%
67.9%
Các loại khác
3.5%
4.6%
28.0%
Tổng cộng

100%
100%
19.6%
Bảng 1 Smartphone Operating System Market Share 2011 và 2015
Hệ điều hành

-

Tuy nhiên, người sử dụng Android cũng đứng trước nhiều nguy cơ bị tấn công, như
mất thông tin cá nhân, quá trình sử dụng điện thoại gặp trở ngại, thậm chí là thiệt hại về
tài chính. Một số kiểu tấn công phổ biến như:
9 Nghe lén (Eavesdropping): hacker tìm cách xâm nhập vào cuộc gọi của người
dùng để ghi âm lại cuộc nói chuyện.
9 Availability Attacks: hacker làm tắt nghẽn các dịch vụ của điện thoại khiến cho
các tín hiệu truyền nhận đến các dịch vụ đó bị nghẽn lại.
9 Đánh cắp thông tin cá nhân (Privacy Attacks): hacker đánh cắp các thông tin cá
nhân như địa chỉ liên lạc, email, vị trí hiện tại…và truyền đến các third-party
server cho mục đích quảng cáo hoặc nơi chuyên tạo ra malware.
9 Impersonation attacks : các ứng dụng malware thực hiện các hành động dẫn đến
làm thiệt hại về tài chính cho người dùng như tự động gửi tin nhắn nhiều lần.
9 Tấn công từ chối dịch vụ (Denial of Service Attacks): ứng dụng gây hại làm cho
người dùng không thể sử dụng các chức năng của điện thoại.
9 Botnet: điện thoại nhiễm virus bị điều khiển từ bên ngồi thơng qua các kênh giao
tiếp của điện thoại như Bluetooth, Infrared…
9 Proof-of-concept : mục tiêu của loại tấn công này làm cho người dùng hoảng sợ và
tin rằng điện thoại bị tấn công.
9 Unsolicitated information flow: hacker gửi liên tục ngày càng nhiều tin nhắn đến
điện thoại, có thể dẫn đến từ chối dịch vụ.

1



1.2 Các phương pháp giải hiện tại
-

Hiện tại đã có rất nhiều cơng trình nghiên cứu về vấn đề này với rất nhiều hướng tiếp
cận (xem chi tiết trong phần 3. Tổng thuật các cơng trình liên quan).

-

Về hình thức, các cơng trình hiện tại hoặc ở dạng middleware cho Android platform
(như Sorbet, TaintDroid, XmainDroid..), hoặc là một chương trình riêng để kiểm tra
các chương trình được cài đặt trên điện thoại Android để thông báo thông tin cho người
dùng (Scandal, Android leaks,..), hoặc là chương trình hỗ trợ người phát triển ứng dụng
kiểm tra ứng dụng của họ có đạt tiêu chuẩn nào đó về bảo mật khơng (ScanDroid,
WoodPecker, Stowaway,..).

-

Mục tiêu của các cơng trình là hỗ trợ người dùng phát hiện những bất thường của các
ứng dụng trong quá trình sử dụng điện thoại (kiểm tra động), kiểm tra ứng dụng có phải
là malware, kiểm tra khả năng xảy ra rị rỉ thơng tin cá nhân của người dùng khi các
ứng dụng được chạy thực tế (kiểm tra tĩnh),..

-

Mỗi phương pháp hiện tại đều có những ưu điểm và hạn chế (xem chi tiết trong phần
3.2 Thảo luận về các hướng nghiên cứu). Đối với phương pháp kiểm tra tĩnh, một
trong những điểm hạn chế là tính khả thi khơng cao của các cơng trình đó khi chương
trình ứng dụng có kích thước lớn với nhiều đường thực thi (execution path), vì các

phương pháp này phải tìm ra tất cả các đường thực thi của ứng dụng trước khi bắt đầu
kiểm tra.

1.3 Mục tiêu của luận văn
-

Luận văn này cũng hướng đến cùng mục tiêu với các công trình hiện tại: thực hiện
kiểm tra ứng dụng trên điện thoại, nhằm tìm ra các lỗi bảo mật có thể có.

-

Luận văn muốn giới thiệu một phương pháp khác để giải quyết vấn đề, cũng nằm trong
nhóm kiểm tra tĩnh, chưa được đề cập trong các cơng trình hiện tại và cũng khơng kém
phần hiệu quả, đó là “kiểm tra mơ hình”.

-

Phương pháp kiểm tra mơ hình ngày nay thường được áp dụng với kĩ thuật kiểm tra onthe-fly. Đó là cách kiểm tra mà khơng cần phải tìm ra tất cả các đường thực thi ngay từ
đầu, thay vào đó các trạng thái (hoặc đường thực thi) của ứng dụng được tạo ra và
kiểm tra một cách dần dần, những trạng thái đã xử lí qua rồi có thể giải phóng khỏi bộ
nhớ. Với kĩ thuật này, chúng tơi hi vọng có thể đáp ứng được cho các ứng dụng
Android có kích thước lớn, và khắc phục được một trong những hạn chế nói trên của
các phương pháp hiện tại.

2


1.4 Đóng góp của luận văn
-


Chúng tơi đã áp dụng và thử nghiệm độ hiệu quả của kiểm tra mô hình với kĩ thuật onthe-fly cho ứng dụng end-user trên Android, điều mà hiện tại vẫn chưa được áp dụng
nhiều.
Qua luận văn này chúng tơi đã đóng góp thêm module kiểm tra ứng dụng Android vào
công cụ PAT. Hiện tại chỉ hoàn thành một phần của module, nhưng trong tương lai nếu
tiếp tục phát triển các phần còn lại, PAT sẽ có một module đầy đủ dành cho Android.

1.5 Cấu trúc luận văn
Phần còn lại của luận văn bao gồm các phần như sau : phần 2 trình bày về cơ sở lí thuyết,
phần 3 trình bày về các cơng trình liên quan và những ý kiến thảo luận của chúng tơi, phần
4 trình bày framework của chúng tơi và phần 5 trình bày kết quả thực nghiệm.

3


Chương 2: Những cơ sở lý thuyết nền tảng
2.1 Tổng quan về Android
2.1.1 Cấu trúc hệ điều hành Android

Hình 1 Cấu Trúc Hệ Điều Hành Android
-

Linux kernel: Hệ điều hành Android bao gồm nhiều lớp, trong cùng là Linux kernel
2.6. Phần nhân Linux chịu trách nhiệm tương tác với phần cứng và chứa tất cả các
hardware driver. Tất cả các core functionality của Android như quản lí vùng nhớ, quản
lí process, networking, security setting,… đều xây dựng dựa trên các chức năng tương
ứng trong Linux kernel

-

Libraries: Bao bọc bên ngoài Linux kernel là lớp thư viện. Đây là lớp cho phép các

thiết bị quản lý các lọai dữ liệu đặc trưng riêng. Các thư viện gồm có : surface manager,
media framework, SQLite, WebKit, OpenGL.
4


-

Android Runtime: Bên trên Linux kernel là lớp Android Runtime, chứa Dalvik
Virtual machine và các core java libraries. Dalvik virtual machine là một dạng của
JVM dùng để chạy ứng dụng Android (.dex file) và được tối ưu để ít tốn năng lượng xử
lí và bộ nhớ nhất. Phần core java libraries bao gồm hầu hết các chức năng định nghĩa
trong Java SE libraries, tuy nhiên nó khơng phải là Java SE hay Java ME.

-

Application Framework: chứa các dịch vụ quản lý các chức năng cơ bản của điện
thọai như quản lý tài nguyên, quản lý cuộc gọi, quản lý định vị, quản lý life cycle của
ứng dụng, quản lý việc chia xẻ dữ liệu giữa các ứng dụng …để lớp ứng dụng trên cùng
sử dụng.

-

Applition layer: Đây là lớp ngoài cùng trong cấu trúc của hệ điều hành Android. Nó
bao gồm tất cả các ứng dụng cho người dùng. Một số ứng dụng được cài đặt sẵn cho
người dùng như: SMS client, dialer, web-browser, contact manager…

2.1.2 Android Security Framework
2.1.2.1 Application Sanbox
-


Mỗi ứng có một UID (user ID) duy nhất và được chạy trong một quá trình (process)
tách biệt. Các ứng dụng không được phép truy xuất dữ liệu của nhau và bị hạn chế truy
xuất đến hệ thống.

-

Thí dụ: như một ứng dụng A không thể đọc dữ liệu của ứng dụng B hoặc không được
gọi đến một số điện thọai nào đó nếu khơng được hệ điều hành cấp quyền.

2.1.2.2 Permission
-

-

Do tính chất sandbox, các ứng dụng gần như tách biệt lẫn nhau. Mỗi ứng dụng khai báo
các lọai quyền cần có khi chạy và người dùng sẽ xác nhận việc cấp các quyền này khi
cài đặt ứng dụng.
Android định nghĩa các quyền truy cập tới các tài nguyên chung trong hệ thống. Thí dụ:
android.permission.CALL_EMERGENCY_NUMBERS
android.permission.READ_OWNER_DATA
android.permission.SET_WALLPAPER
android.permission.DEVICE_POWER
Ứng dụng cũng có thể đặc tả các quyền mà ứng dụng khác phải có để truy cập tài
nguyên của nó.
Android cũng hỗ trợ ứng dụng cấp/ thu hồi/ kiểm tra động các quyền trên các tài
nguyên.

5



2.1.2.3 Sơ lược về một ứng dụng trên Android
-

Một ứng dụng trên Android bao gồm các thành phần (component) và một manifest file
chứa các thông tin quan trọng Android cần có để có thể chạy ứng dụng.
Các thành phần giao tiếp với nhau và giao tiếp với hệ thống thông qua thơng điệp
(intent-based)

Manifest file 

Hình 2: Cấu trúc manifest file
-

Một số thành phần cần lưu ý :
¾ <application> : định nghĩa các thành phần (component) trong ứng dụng
¾ <use-permission> : định nghĩa các quyền (permission) ứng dụng cần có để truy
xuất đến system API hay là interface của các ứng dụng khác
¾ :Các quyền mà ứng dụng khác cần có để truy xuất tới các component
bên trong nó.

6


Intent 
-

-

Các thành phần (component) trong ứng dụng và giữa các ứng dụng tương tác với nhau
theo cơ chế trao đổi thông tin (messaging) hoặc gọi là intent.

Intent là một thông điệp thể hiện yêu cầu muốn làm một việc gì đó. Thí dụ, nếu ứng
dụng muốn hiển thị một trang web, nó sẽ thể hiện ý muốn bằng cách tạo ra một intent
gửi đến hệ thống. Hệ thống sẽ tìm đọan code tương ứng (trường hợp này là browser) và
chạy nó.
Intent là một cấu trúc dữ liệu chứa hành động (action) cần thực hiện và các dữ liệu đầu
vào cho hành động đó.
Intent có 2 loại là ẩn tàng (implicit) và và tường minh (explicit). Đối với implicit intent,
nơi gọi đến (tên của component đích) khơng được chỉ định rõ, hệ điều hành sẽ tự suy ra
dựa trên nhữnng ứng dụng cài đặt sẵn trên hệ thống.

Component 
-

Có 4 loại component, mỗi component có một định danh riêng.
¾ Activity : tương ứng với một màn hình trong ứng dụng
¾ Service: các dịch vụ chạy ngầm bên dưới ứng dụng, cung cấp interface cho các ứng
dụng khác giao tiếp.
¾ Content Provider : lưu dữ liệu của ứng dụng (trong database), cho phép chia sẻ dữ
liệu giữa nhiều ứng dụng
¾ Broatcast Receiver: nhận các thơng điệp từ các ứng dụng khác.

Hình 3: Liên hệ giữa các component

7


2.1.2.4 Thí dụ về một ứng dụng Android
Bên dưới là hình ảnh về cấu trúc ứng dụng Music Player

Activities


Services

Receivers

View Song
List Screen

Pause Song
on
incoming
call

Play a Song
in
background
Edit Song
Detail
Screen

Providers

Database of
Songs

Resume
song whe
call end

Hình 4: Một ứng dụng Android


2.2 LTL - Propositional Linear time Temporal Logic
2.2.1 Kripke structure
- Tài liệu tham khảo: [18]
Gọi AP là tập các mệnh đề nguyên tử (atomic propositions)
Một hệ thống chuyển trạng thái A là một bộ M = S , S 0 , →, L trong đó
1. S là một tập những trạng thái.
2. S 0 là tập con của S , chứa các trạng thái bắt đầu.
3. R ⊆ S × S là một quan hệ transition.

4. L : S → P( AP ) là một hàm thông dịch. Chúng ta viết s |= p if p ∈ L(s ) : nghĩa là một

trạng thái s được gọi là thỏa mãn điều kiện p nào đó nếu p thuộc tập đích của L(s )

S0

S1

{a, b}

{a}

S2

{b}

Hình 5 Một hệ thống chuyển trạng thái

8



2.2.2 Cú pháp biểu thức LTL
-

Tài liệu tham khảo: [17] [18]
Cú pháp biểu thức LTL được biểu diễn như sau:
φ ::= p | ¬φ | φ ∧ ψ | Xφ |□φ |◇φ|φ U ψ

-

Với p : mệnh đề
Xφ : φ đúng ở trạng thái kế tiếp
□φ : φ đúng ở mọi trạng thái trên đường thực thi
◇φ : cuối cùng thì φ đúng ở một trạng thái nào đó

φ Uψ : φ phải đúng, ít nhất là cho tới khi ψ đúng

2.2.3 Ngữ nghĩa biểu thức LTL
-

Tài liệu tham khảo: [17] [18]
Công thức LTL φ được dịch thành chuỗi bất định (infinite paths) của các trạng thái
π = s0 s1 s2
Gọi M là transition system (tên gọi khác Kripke structure). Chúng ta viết :
M , π |= φ : nghĩa là φ đúng trên một path π của M

M |= φ : nghĩa là φ đúng trên mọi path π của M
-

Gọi π k là một phần của path π , bắt đầu từ trạng thái s k , π k = sk sk +1 sk + 2 ...


π i |= p

⇔ si |= p

π i |= ¬φ

⇔ ¬(π i |= φ )

π i |= φ ∧ ψ

⇔ π i |= φ ∧ π i |= ψ

π i |= Xφ

⇔ π i +1 |= φ

π i |=□φ

⇔ ∀j ≥ i • π j |= φ

π i |=◇φ

⇔ ∃j ≥ i • π j |= φ

π i |= φ U ψ

⇔ ∃j ≥ i • π j |= ψ ∧ ∀k | i ≤ k ≤ j − 1 • π j |= φ

9



2.3 Tổng quan về On-the-fly LTL Model Checking
-

Phần này trình bày tổng quan về on-the-fly LTL model checking.
Tài liệu tham khảo: [15],[16],[17]

2.3.1 Ngun lí của Model Checking
-

Bình thường, để kiểm tra mơ hình có thỏa mãn tính chất nào đó khơng, các bước thực
hiện gồm có :
¾ Xây dựng automat biểu diễn tất cả trạng thái cho mơ hình
¾ Xây dựng automat biểu diễn tất cả trạng thái cho phần phủ định của tính chất cần
kiểm tra
¾ Lấy tích hai automat. Nếu kết quả khác rỗng, mơ hình được xem là khơng thỏa
mãn tính chất

Hình 6 Ngun lí của Model checking

-

Việc xây dựng tồn bộ các automat cho mơ hình và tính chất cần kiểm tra từ đầu có thể
làm giảm hiệu suất (performance), đặc biệt có thể dẫn đến tình trạng đầy bộ nhớ
(memory exhausted) nếu mơ hình càng phức tạp.

10



2.3.2 On-the-fly LTL Model Checking
-

On-the-fly model checking là cách làm nhằm khắc phục hạn chế của model checking
thơng thường, đó là sử dụng memory ít nhất có thể.
¾ Khơng xây dựng automat đầy đủ cho mơ hình và thuộc tính cần kiểm tra ngay từ
đầu. Việc xây dựng hai automat này và việc lấy tích sẽ được thực hiện song song,
do đó trạng thái mới của 2 automat chỉ được sinh ra dần dần, theo nhu cầu của quá
trình kiểm tra, và cũng không cần phải lưu giữ các đường thực thi (execution path)
như thơng thường.
¾ Trong q trình lấy tích, nếu tìm được counterexamples thì q trình kiểm tra dừng
lại với kết quả là mơ hình khơng thỏa mãn thuộc tính. Như vậy, chỉ trong trường
hợp xấu nhất hoặc là thỏa mãn thì mới phải sinh ra tồn bộ 2 automat.

-

On-the-fly checking cũng có hạn chế, đó là thời gian xử lí có thể tăng cao vì nó dùng
ngun lí depth-first-search, do đó phải sinh lại những trạng thái đã đi qua. Một cách
khắc phục là lưu trữ lại chỉ những trạng thái cần dùng, nhưng điều này vẫn có thể dẫn
đến tình trạng hết bộ nhớ (memory exhausted).

Hình 7 Nguyên lí của On-the-fly Model Checking

11


2.4 Kiểm

tra mơ hình với cơng cụ PAT


-

Phần này giới thiệu công cụ PAT: Process Analysis Toolkit, được dùng trong quá trình
hiện thực của luận văn. Tài liệu tham khảo [28].

-

PAT là một framework hỗ trợ tạo, chạy giả lập, suy diễn/kiểm tra các hệ thống chạy
đồng thời, hệ thống real-time và nhiều hệ thống thuộc các lĩnh vực khác, được xây
dựng bởi nhóm nghiên cứu của PGS. Liu Yang thuộc trường Đại Học Quốc Gia
Singapore, từ năm 2007.

-

PAT hiện thực nhiều kĩ thuật kiểm tra mơ hình như fairness assumptions, refinement
checking, probabilistic model checking. PAT cũng hiện thực nhiều kĩ thuật tối ưu như
partial order reduction, symmetry reduction, process counter abstraction, parallel model
checking để tăng hiệu suất xử lý.

-

PAT hỗ trợ nhiều loại property như deadlock-freeness, divergence-freeness,
reachability, LTL properties.

-

PAT cung cấp công cụ chuyển đổi biểu thức LTL thành Büchi Automata/Rabin
Automata/Streett Automata.

-


PAT được xây dựng theo kiến trúc lớp. Mỗi hệ thống được hỗ trợ sẽ có một module
riêng để xử lý phần cú pháp và ngữ nghĩa của model, và dịch các hành vi của model
sang Labeled Transition System (LTS), Timed Transition System (TTS)…Trong core
của PAT là các giải thuật kiểm tra và giả lập các input là LTS, TTS đó.

12


Hình 8 Kiến trúc của PAT

-

Hiện tại trong PAT đã có rất nhiều module hỗ trợ các hệ thống khác nhau như
Communicating Sequential Processes (CSP) Module, Real-Time System Module,
Probability CSP Module, Probability RTS Module, Labeled Transition System Module,
Timed Automata Module, NesC Module, ORC Module, Stateflow(MDL) Module,
Security Module and Web Service (WS) Module,..

-

Nhóm nghiên cứu PAT đã thực hiện nhiều thử nghiệm và thấy rằng PAT có khả năng
kiểm tra được những hệ thống lớn, và trong nhiều trường hợp công cụ cịn chạy tốt hơn
các cơng cụ kiểm tra mơ hình phổ biến khác.

13


×