11009_Theo dõi các nguồn dữ liệu nhạy cảm trên các thiết bị di động chạy hệ điều hành Android

luanvantotnghiep.com

ơ

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

NGUYỄN NAM CHUNG

THEO DÕI CÁC NGUỒN DỮ LIỆU NHẠY CẢM TRÊN CÁC
THIẾT BỊ DI ĐỘNG CHẠY HỆ ĐIỀU HÀNH ANDROID

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Hà Nội – 2017
ơ

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

NGUYỄN NAM CHUNG

THEO DÕI CÁC NGUỒN DỮ LIỆU NHẠY CẢM
TRÊN CÁC THIẾT BỊ DI ĐỘNG
CHẠY HỆ ĐIỀU HÀNH ANDROID

Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật phần mềm
Mã số: 60480103

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. Nguyễn Đại Thọ

Hà Nội, 2017
i

Lời Cảm Ơn

Trong quá trình học tập cũng như nghiên cứu để hoàn thành đề tài luận văn thạc sĩ
một cách hoàn chỉnh, bên cạnh sự nỗ lực của bản thân còn có sự hướng dẫn nhiệt tình
của quý Thầy Cô, cũng như sự động viên, hỗ trợ của gia đình và đồng nghiệp trong
suốt thời gian học tập nghiên cứu và thực hiện luận văn thạc sĩ.

Tôi xin chân thành gửi lời cảm ơn đến các quý Thầy Cô, các cán bộ nhân viên thuộc
Trường Đại học Công nghệ, ĐHQGHN đã trang bị kiến thức, tạo môi trường điều kiện
thuận lợi nhất cho tôi trong suốt quá trình học tập và thực hiện luận văn này.

Với lòng kính trọng và biết ơn, tôi xin được bày tỏ lời cảm ơn sâu sắc đến tiến sĩ
Nguyễn Đại Thọ, giảng viên khoa CNTT – Trường Đại học Công nghệ, ĐHQGHN đã
trực tiếp hướng dẫn tận tình cho tôi trong suốt quá trình thực hiện nghiên cứu này.

Cuối cùng tôi xin chân thành cảm ơn đến gia đình, các đồng nghiệp đã hỗ trợ cho
tôi rất nhiều trong quá trình học tập, nghiên cứu và thực hiện đề tài luận văn thạc sĩ
một cách hoành chỉnh.

Hà Nội, tháng 6 năm 2017

Học viên thực hiện

Nguyễn Nam Chung

ii

Lời Cam Đoan

Tôi xin cam đoan đây là công trình nghiên cứu khoa học độc lập của riêng tôi. Các
kết quả nghiên cứu trong luận văn do tôi tự tìm hiểu, phân tích một cách trung thực,
khách quan. Các thông tin trích dẫn trong luận văn đã được chỉ rõ nguồn gốc rõ ràng
và được phép công bố.

Nếu có bất kỳ điều gì không đúng như đã nêu trên, tôi xin hoàn toàn chịu trách
nhiệm về luân văn của mình.

Tác giả

Nguyễn Nam Chung

iii

MỤC LỤC

Danh mục các ký hiệu và chữ viết tắt ………………………………………………………………………………………..
v
MỞ ĐẦU
……………………………………………………………………………………………………………………………………
1
Chương 1. Bảo mật riêng tư trên các thiết bị di động
………………………………………………………………..
5
1.1.Bối cảnh chung ……………………………………………………………………………………………………………………
5
1.2.Khái niệm bảo mật riêng tư…………………………………………………………………………………………………
6
1.3.Tầm quan trọng của bảo mật riêng tư
…………………………………………………………………………………
7
1.4.Các phương pháp và công cụ đảm bảo tính riêng tư …………………………………………………………..
7
1.5.Các nguyên lý chung đảm bảo tính tiêng tư ………………………………………………………………………..
8
1.6.Bảo mật riêng tư cho trình duyệt web …………………………………………………………………………………
9
1.6.1.Bảo mật trình duyệt di động
………………………………………………………………………………………..
9
1.6.2.Truy cập lịch sử trình duyệt ………………………………………………………………………………………..
9
1.7.Một số hệ thống an ninh thực tế trên thiết bị di động
………………………………………………………..
11
1.7.1.Samsung Knox
………………………………………………………………………………………………………….
11
1.7.2.BlackBerry Balance ………………………………………………………………………………………………….
12
1.7.3.SCANDAL
………………………………………………………………………………………………………………..
13
1.7.4.IccTA………………………………………………………………………………………………………………………..
14
1.7.5.AndroidLeaks
……………………………………………………………………………………………………………
14
Chương 2. Hệ thống TaintDroid
………………………………………………………………………………………………
15
2.1.Giới thiệu Android
…………………………………………………………………………………………………………….
15
2.2.Giới thiệu TaintDroid
………………………………………………………………………………………………………..
19
2.2.1.Kiến trúc TaintDroid
…………………………………………………………………………………………………
20
2.2.2.Các chức năng ………………………………………………………………………………………………………….
21
2.2.3.Nguyên lý hoạt động …………………………………………………………………………………………………
21
2.2.4.Chính sách can thiệp thay thế
……………………………………………………………………………………
22
2.3.Các thành phần chính ……………………………………………………………………………………………………….
23
2.3.1.Lưu trữ các thẻ Taint ………………………………………………………………………………………………..
23
2.3.2.Phân tán các mã biên dịch taint ………………………………………………………………………………..
24
2.3.3.Phân tán các taint mã nguyên gốc …………………………………………………………………………….
25
2.3.4.Phân tán taint IPC ……………………………………………………………………………………………………
26
2.3.5.Phân tán các taint thiết bị lưu trữ thứ cấp …………………………………………………………………
26
2.3.6.Thư viện giao diện taint
…………………………………………………………………………………………….
26
2.4.Phân tích hệ thống hiện tại ………………………………………………………………………………………………..
27
2.5.Đánh giá hiệu năng ……………………………………………………………………………………………………………
31
Chương 3. Cải tiến theo dõi nguồn dữ liệu nhạy cảm ………………………………………………………………
34
3.1.Giải pháp cải tiến theo dõi truy cập lịch sử trình duyệt …………………………………………………….
36
3.1.1.Lấy thông tin log của hệ thống ………………………………………………………………………………….
37
3.1.2.Tìm kiếm taint lịch sử trình duyệt ……………………………………………………………………………..
38
3.1.3.Xử lý taint
…………………………………………………………………………………………………………………
39
3.1.4.Điều chỉnh và gửi thông báo
……………………………………………………………………………………..
41
iv

3.2.Giải pháp cải tiến tổng quát ………………………………………………………………………………………………
44
3.2.1.Phân tích taint
………………………………………………………………………………………………………….
46
3.2.2.Phân tích luật
……………………………………………………………………………………………………………
48
3.2.3.Tạo bản ghi chính sách can thiệp………………………………………………………………………………
50
3.3.Các vấn đề trong quá trình cải tiến
……………………………………………………………………………………
51
3.3.1.Các lưu ý trong quá trình cài đặt
……………………………………………………………………………….
51
3.3.2.Các lỗi thường gặp khi xây dựng hệ thống ………………………………………………………………..
52
3.4.Đóng góp trong cải tiến ……………………………………………………………………………………………………..
53
Chương 4. Kết quả thử nghiệm ……………………………………………………………………………………………….
55
4.1.Môi trường thử nghiệm
……………………………………………………………………………………………………..
55
4.2.Thiết bị thử nghiệm …………………………………………………………………………………………………………..
55
4.3.Chạy ứng dụng ………………………………………………………………………………………………………………….
55
4.4.Đánh giá cải tiến
………………………………………………………………………………………………………………..
59
4.4.1.MacrobenchMarks ……………………………………………………………………………………………………
59
4.4.2.Java MacrobenchMark
……………………………………………………………………………………………..
60
4.4.3.IPC MacrobenchMark …………………………………………………………………………………………….
61
4.5.Thảo luận
…………………………………………………………………………………………………………………………..
61
4.6.Định hướng tiếp theo …………………………………………………………………………………………………………
62
KẾT LUẬN ……………………………………………………………………………………………………………………………..
64
TÀI LIỆU THAM KHẢO………………………………………………………………………………………………………..
65
PHỤ LỤC ………………………………………………………………………………………………………………………………..
67
1.Hướng dẫn xây dựng hệ thống
……………………………………………………………………………………………..
67
2.Các bước thực hiện xây dựng hệ thống ………………………………………………………………………………..
69
3.Mã nguồn cải tiến truy cập trình duyệt
………………………………………………………………………………..
72
4.Mã nguồn cải tiến tổng quát
…………………………………………………………………………………………………
76

v

Danh mục các ký hiệu và chữ viết tắt

STT Ký hiệu/viết tắt
Ý nghĩa
1
CFG
Control Flow Graph: Biểu đồ luồng điều khiển
2
DEX
Định dạng mã code Dalvik Executable được thiết kết cho
các hệ thống hạn chế về dung lượng bộ nhớ và tốc độ bộ vi
xử lý. Các chương trình việt bằng ngôn ngữ Java thường
được dịch ra mã chạy cho máy ảo Java, nó được chuyển
sang mã Dalvik và lưu trữ dưới dạng tệp DEX
3
GPU
Graphics Processing Unit: Đơn vị xử lý đồ họa (),
thường sử dụng cho các hệ thống nhúng, điện thoại di
động, máy tính cá nhân và các thiết bị game. Nó hỗ trợ
hiệu quả trong đồ họa máy tính và xử lý ảnh
4
HĐH
Hệ điều hành, hệ thống phần mềm quản lý tài nguyên
phân cứng và phần mềm của thiết bị
5
IPC
Inter-Processing Communication: Kết nối liên xử lý
6
JVM
Java Virtual Machine: Máy ảo Java
7
Native code
Mã nguyên gốc, như các mã của trình biên dịch, mã máy
8
Native method
Phương thức nguyên gốc, như các hàm nguyên thủy của 1
hệ thống, hệ điều hành do nhà phát triển hệ thống viết sẵn
9
Taint
Thông tin kiểm tra được định danh
10
TBDĐ
Thiết bị di động
11
VM
Virtual Machine: Một hệ thống máy tính giả lập dựa trên
các kiến trúc máy tính và cũng cấp các chức năng như
một máy tính vật lý. Nó được cài đặt trên máy tính thật
thông qua các chương trình quản lý máy ảo như HyperV,
VMware, VirtualBox, Virtual PC …

1

MỞ ĐẦU

Các thiết bị di động (TBDĐ) hiện nay có rất nhiều các cảm biến và dịch vụ
bên trong không gian riêng tư của người dùng. Vậy nên chúng có khả năng giám
sát rất nhiều khía cạnh nhạy cảm trong cuộc sống người sử dụng (ví dụ: vị trí,
sức khỏe hay giao thiệp). Người dùng thường giao dịch thanh toán trực tuyến,
trong nhiều tình huống họ không đánh giá đầy đủ về bản chất cũng như mức độ
thông tin sẽ được khaithác bởi các ứng dụng bên thứ 3. Sự gia tăng nhanh chóng
của các TBDĐ khiến chúng trở thành không thể thiếu với cuộc sống của nhiều
người. Thật vậy, các thiết bị cung cấp cho người dùng một loạt các dịch vụ thiết
yếu (ví dụ: định vị, liên lạc và kết nối Internet) cùng các chức năng hữu ích (ví
dụ: nghe nhạc, nhiếp ảnh, xem truyền hình, mua sắm trực tuyến). Để đáp ứng
các dịch vụ này, các TBDĐ hiện đại đã được trang bị rất nhiều cảm biến, khả
năng thu thập thông tin và môi trường xung quanh về người dùng vô cùng phong
phú. Người dùng và nhà phát triển cũng đã chấp nhận các công nghệ thu thập
thông tin để đổi lấy rất nhiều tính năng công nghệ cao mà chúng mang lại. Trên
thực tế, rất nhiều ứng dụng mời chào các dịch vụ hoàn toàn miễn phí với sự
đánh đổi ẩn dấu về việc thu thập dữ liệu mà hầu hết sẽ được dùng cho việc
quảng cáo.
Có rất nhiều nghiên cứu đã chỉ ra, người dùng thường hành động mà không
hiểu mức độ thông tin của họ có thể được trích ra từ các thông tin được thu thập
này. Ví dụ trong một nghiên cứu gần đây về hành vi quảng cáo đã chỉ ra rằng
người dùng đã không hiểu cách quảng cáo hoạt động và tìm kiếm thông tin mà
các nhà quảng cáo có về họ là đáng sợ và rùng mình. Ngay cả khi người dùng ý
thức việc thu thập dữ liệu, họ không thể hoàn toàn nhận ra những hàm ý không
trực quan về việc chia sẻ dữ liệu của họ. Các nhà nghiên cứu đã chỉ ra các cảm
biến trên các thiết bị có thể được dùng bí mật để bắt các phím bấm, chạm trên
điện thoại để dò tìm vị trí, ghi âm giọng nói hay các hoạt động thường ngày của
người dùng. Phần lớn các thiết bị được chạy trên hệ điều hành (HĐH) Android 1
và iOS2. Cùng với sự bùng nổ của thị trường TBDĐ sử dụng HĐH nguồn mở thì
Android đã trở thành HĐH phổ biến nhất hiện nay với kho ứng dụng lên đến
hơn 2,5 triệu ứng dụng. Có thể dự đoán, có hàng triệu người dùng đang mang
theo các công nghệ thu thập dữ liệu tập trung về quyền riêng tư. Dữ liệu thu thập
được có thể được truy xuất bởi rất nhiều bên và thường không có sự cho phép rõ

1 Android: Hệ điều hành cho TBDĐ mã nguồn mở của Google, website chính thức tại địa chỉ
https://www.android.com
2 iOS: Hệ điều hành cho TBDĐ độc quyền của Apple, website chính thức tại địa chỉ https://www.apple.com/ios
2

ràng của người dùng. Thế nên việc giám sát các luồng dữ liệu do các ứng dụng
trao đổi với bên ngoài là hết sức cần thiết. Để đảm bảo tính bảo mật, toàn vẹn và
khả dụng của thông tin mà TBDĐ truy cập, lưu trữ và xử lý là một thách thức
khó khăn. Điều này đặc biệt đúng trong bối cảnh ngày nay môi trường di động
đang phát triển với các loại thông tin phức tạp và phần mềm phải cùng tồn tại
một cách an toàn trên cùng một thiết bị để giữa an toàn dữ liệu. Nhưng hiện nay
việc kiểm soát an ninh vẫn chưa theo kịp với những rủi ro gây ra bởi các TBDĐ.
Các nhà phát triển cũng như các doanh nghiệp vẫn đang nỗ lực đưa ra các giải
pháp an ninh thông tin trên các thiết bị động và hiện nay có một số hệ nổi bật về
cả phần mềm, phần cứng cũng như tích hợp như: Samsung Knox, BlackBerry
Balance, AndroidLeaks, SCANDAL1, IccTAp2, TaintDroid,… và dưới đây là
những phân tích sơ bộ về ưu nhược điểm của các hệ thống này, chi tiết sẽ được
miêu tả ở phần các hệ thống bảo mật trong chương 1.
– Samsung Knox là một nền tảng an ninh cho TBDĐ về cả phần cứng lẫn
phần mềm. Nó cung cấp các tính năng bảo mật cho cả dữ liệu cá nhân cũng như
doanh nghiệp trên cùng một TBDĐ. Có khả năng bảo mật đa lớp và phần vùng
an toàn. Nhưng để sử dụng Knox, thiết bị phải được hỗ trợ công nghệ ảo hóa ở
mức phần cứng và hiện nay chỉ giới hạn ở các thiết bị của Samsung.
– BlackBerry Balance công cụ cho phép quản lý dữ liệu cá nhân chuyên biệt,
độc lập trên TBDĐ. Nó cũng có khả năng phân vùng an toàn, nhưng ưu điểm
nổi bật là khả năng mã hóa dữ liệu ở mức cao với hệ thống khóa phức tạp. Tuy
nhiên hiện nay nó chỉ hỗ trợ cho các thiết bị chạy HĐH Blackberry và chỉ từ
phiên bản 10 trở lên.
– SCANDAL là một bộ phân tích tĩnh có thể phát hiện rò rỉ thông tin cá
nhân trong các ứng dụng chạy HĐH Android. Nhược điểm là trong quá trình xử
lý nó có thể mất nhiều thời gian cũng như không gian nhớ của thiết bị.
– IccTA là một công cụ mã nguồn mở phát hiện rò rỉ thông tin. Nó dùng
chuyển mã Dalvik3 và kết nối trực tiếp đến các thành phần để xử lý luồng dữ
liệu giữa giữa chúng. Nhưng hiện tại nó chỉ xử lý hiệu quả được các lời gọi với
các tham số là chuỗi cố định.
– AndroidLeaks là một hệ thống thực hiện xử lý luồng dữ liệu để xác định
xem thông tin cá nhân có bị truy xuất không. Hệ thống còn một vài giới hạn về
độ chính xác và sai số và không hỗ trợ xử lý luồng điều.
TaintDroid là một hệ thống có khả năng kiểm tra truy cập thông tin nhạy

1 SCANDAL: Static Analyzer for Detecting Privacy Leaks in Android Applications
2 IccTA: Detecting Inter-Component Privacy Leaks in Android Apps
3 Dalvik: Xây dựng riêng cho máy ảo, đặc biệt cho phát triển Android
3

cảm của người dùng ở mức thời gian thực. Nó kiểm tra luồng thông tin trên các
TBDĐ chạy HĐH Android rất hiệu quả. Tuy còn hạn chế khi không kiểm tra
được dưới dạng luồng điều khiển, nhưng đây không phải định hướng mức kiến
trúc khi ban đầu khi xây dựng. TaintDroid có thể chạy trên các thiết bị chạy
HĐH Android từ phiên bản 2.1 trở đi. Nó hỗ trợ kiểm tra dấu vết (taint1) thông
tin cá nhân nhạy cảm của người dùng bị các ứng dụng truy cập. Mục tiêu chính
của hệ thống là rò tìm khi nào dữ liệu nhạy cảm bị gửi đi từ những ứng dụng
không tin cậy. TaintDroid hiện tại có thể kiểm tra nhiều loại thông tin như: vị trí,
số điện thoại, máy ảnh, số IMEI, lịch sử trình duyệt. Chính vì các ưu điểm nối
bật của nó so với các hệ thống khác về theo dõi truy cập thông tin nhạy cảm mà
nó được chọn làm đề tài nghiên cứu và cải tiến trong khuôn khổ luận văn. Tuy
hệ thống đã có khả năng kiểm soát và cảnh báo truy cập trái phép các nhóm
thông tin kể trên, nhưng chỉ cảnh báo chung ở mức loại thông tin theo taint. Việc
này chỉ hỗ trợ người dùng kiểm soát chung nhất việc truy cập thông tin nhạy
cảm mà chưa biết được chính xác những thông tin gì trong đó bị truy cập và gửi
đi trái phép.
Hướng cải tiến trong khuôn khổ luận văn là bổ sung cho hệ thống
TaintDroid tính năng cảnh báo người dùng khi ứng dụng truy cập thông tin nhạy
cảm trong lịch sử trình duyệt. Mục tiêu chính của cải tiến là sẽ thông báo cho
người dùng khi có ứng dụng không tin cậy truy cập đến tên đăng nhập, mật khẩu
hay mã số thẻ tín dụng. Với nhu cầu và thói quen của người dùng điện thoại
thông minh (Smartphone) hiện nay, việc truy cập Internet là thường xuyên và
cùng với đó là việc sử dụng các ứng dụng truy Internet như FaceBook, Twitter,
Chrome, … để làm việc và giải trí. Như chúng ta thấy, với cơ chế hoạt động của
trình duyệt web cũng như các ứng dụng hoạt động trên nền web thì có rất nhiều
thông tin được trình duyệt lưu lại trong quá trình sử dụng. Các thông tin đó được
lưu lại thành dữ liệu lịch sử của trình duyệt (browser history), trong đó chứa
nhiều thông tin nhạy cảm.
Cải tiến đã hoàn thành với kết quả đạt được cụ thể và rõ ràng như định
hướng đề ra. Hệ thống đã có thể kiểm tra được chính xác các taint chứa thông tin
nhạy cảm trong lịch sử trình duyệt bị các ứng dụng không tin cậy truy cập. Việc
cải tiến cũng không làm ảnh hưởng đến các luồng xử lý cũng như hiệu năng của
hệ thống hiện tại. Cụ thể khi thông tin về tên truy cập, mật khẩu hay mã số thẻ
tín dụng bị truy cập, hệ thống sẽ hiện thông báo riêng so với các thông báo sẵn
có bằng hình thức thay đổi đèn LED và tần suất nhấp nháy. Việc cải tiến được

1 Taint: Thẻ thông tin được truyền giữa HĐH và ứng dụng thời gian thực.
4

kiểm chứng trên môi trường thật, thiết bị được sử dụng là điện thoại di động
Google Nexus 4. Việc xây dựng, cài đặt cũng như chạy thử đều tuân thủ các
bước do nhóm phát triển hệ thống TaintDroid đưa ra. Toàn bộ tài liệu luận văn
được bố trí với bố cục các chương mục tóm tắt như sau:
– Chương 1 – Bảo mật riêng tư trên các thiết bị di động: Chương này giới
thiệu các khái niệm, tầm quan trọng cũng như các phương pháp và nguyên lý
bảo mật riêng tư. Ngoài ra còn giới thiệu chi tiết về bảo mật cho trình duyệt web
và một số hệ thống an ninh cho TBDĐ tiêu biểu.
– Chương 2 – Hệ thống TantDroid: Giới thiệu từ tổng quan đến chi tiết các
thành phần của TaintDroid cũng như phân tích đánh giá hiệu năng của hệ thống.
– Chương 3 – Cải tiến theo dõi nguồn dữ liệu nhạy cảm: Chương này miêu tả
chi tiết việc cải tiến hệ thống TaintDroid, từ giải pháp chi tiết về kiểm soát truy
cập taint lịch sử trình duyệt web đến giải pháp tổng thể để kiểm soát truy cập các
loại taint mà hệ thống hiện có. Ngoài ra cũng nêu nên những vấn đề thực tiễn
trong quá trình cải tiến và đóng góp trong cải tiến cho hệ thống.
– Chương 4 – Kết quả thử nghiệm: Miêu tả chi tiết quá trình thực nghiệm từ
môi trường, thiết bị đến việc chạy ứng dụng trên thiết bị thật. Đưa ra các đánh
giá về cải tiến theo các tiêu chí cụ thể, hướng thảo luận và định hướng tiếp theo.
– Kết luận: Chỉ ra tính ứng dụng của hệ thống cải tiến, các hạn chế còn tồn
tại.
– Tài liệu thao khảo: Liệt kê đầy đủ danh sách các tài liệu tham khảo trong
quá trình thực hiện luận văn.
– Phụ lục: Hướng dẫn chi tiết việc xây dựng hệ thống từ việc cài đặt, cấu
hình HĐH cho đến cách lấy mã nguồn. Cuối phần là toàn bộ mã nguồn của giải
pháp cải tiến chi tiết và giải pháp tổng quát.

5

Chương 1. Bảo mật riêng tư trên các thiết bị di động

1.1. Bối cảnh chung
Trong xã hội ngày nay, nói đến smartphone là nói đến công nghệ mới. Các
smartphone về cơ bản luôn kết nối nhiều dữ liệu cá nhân trong cuộc sống, không
chỉ dữ liệu đơn thuần như danh bạ mà nhiều loại dữ liệu kiểu mới như vị trí, sở
thích mua sắm trực tuyến. Chúng cũng có khả năng tải và chạy các ứng dụng
của bên thứ 3 có kết nối với Internet. Một ví dụ điển hình về ứng dụng hình nền
(Wallpaper) gửi thông tin số điện thoại tới nhà phát triển. Khi một ứng dụng
chạy thường có thể truy cập bất cứ thông tin nào trên thiết bị không tường minh,
ngay cả cách chúng thực hiện việc này. Trong nghiên cứu, nhóm tác giả đã chọn
tên Dynamic Taint Analysis, thỉnh thoảng gọi là Taint Tracking. Ý tưởng cơ bản
là đánh dấu thẻ taint thông tin nhạy cảm tại nguồn và sau đó theo dấu dữ liệu
được chuyển đi qua hệ thống. Trong ngữ cảnh của báo cáo, dữ liệu được đánh
dấu truyền qua giao diện mạng của smartphone khi đó có thể biết thông tin có
nhạy cảm hay không?
Có rất nhiều khó khăn khi xây dựng một hệ thống như vậy trên smartphone .
Mục đích của thiết kế là tạo ra một hệ thống gọn nhẹ, tối ưu về bộ nhớ và kiểm
tra ở mức thực thi (real-time), chạy trực tiếp trên thiết bị thật với các ứng dụng
thật và dưới đây là một số khó khăn khi xây dựng:
– Smartphone rất hạn chế về tài nguyên, bộ nhớ bị giới hạn và mọi xử lý
được thực hiện đều tiêu tốn pin. Nếu hệ thống kiểm tra real-time, phải được cân
nhắc việc người dùng và hệ thống cùng sử dụng nên nó phải thực sự gọn nhẹ.
Ứng dụng bên thứ 3 dưới dạng mã biên dịch nên không thể phân tích mã nguồn.
Chúng không chỉ đơn giản đọc một loại dữ liệu và gửi đi ngay mà sẽ dùng dữ
liệu đó bằng một số cách hoặc kết hợp với dữ liệu khác trước khi gửi đi.
– Các ứng dụng có thể chia sẻ thông tin với các ứng dụng khác, có nghĩa
việc kiểm tra cũng phải xử lý chéo nhiều tiến trình.
– Việc kiểm tra phải thực hiện trên thiết bị thật. Với một hệ thống giả lập thì
việc điều khiển trên phần cứng và bộ nhớ ảo có thể xác định được mọi thứ mà
một ứng dụng làm. Nhưng trên một thiết bị thật, làm cách nào để có thể biết mọi
việc ứng dụng làm ở mức đủ thấp trên hệ thống? Trong quá trình nghiên cứu,
nhóm tác giả đã đưa ra mô hình sơ lược hướng tiếp cận đa mức về kiểm tra hiệu
năng smartphone như sau:
6

Hình 1.1. Mô hình kiểm tra hiệu năng điện thoại di động

1.2. Khái niệm bảo mật riêng tư
Chính sách riêng tư là một tuyên bố pháp lý xác định chủ quyền thương mại
với dữ liệu cá nhân sẽ được thu thập bởi người sử dụng, bao gồm cả việc dữ liệu
được xử lý như thế nào vào ra sao. Từ những năm 1960, Hội đồng châu Âu đã
nghiên cứu về sự mở rộng của Internet và tập trung vào sự ảnh hưởng của công
nghệ đến các quyền con người. Nghiên cứu về các chính sách để bảo vệ dữ liệu
cá nhân. Nó được chúng ta biết đến với tên gọi tiếng Anh “Privacy Policy”. Tên
gọi này chỉ ra thỏa thuận pháp lý về quyền và sự bảo vệ dữ liệu cá nhân một
cách đầy đủ, thỏa thuận này cũng có thể được biết tới dưới các tên sau:
– Cam kết riêng tư
– Thông báo riêng tư
– Thông tin riêng tư
– Trang riêng tư
– Chính sách bảo mật có thể được dùng cho cả các ứng dụng web hay di
động nếu nó bao gồm các nền tảng có hoạt động thương mại bên trong. Các nội
dung của chính sách bảo mật có thể khác nhau tùy vào từng quốc gia, phụ thuộc
vào luật pháp của từng nước nhưng hầu hết đều tuân thủ các điểm mấu chốt đảm
bảo các hoạt động thương mại khi đối xử với dữ liệu cá nhân sau:
– Thông báo: Các dữ liệu được thu thập (bởi cá nhân hay tổ chức) phải minh
bạch trong việc sử dụng thông tin cá nhân trước khi được thu thập.
– Lựu chọn: Các công ty thu thập dữ liệu phải tôn trọng các lựa chọn của
người dùng về những thông tin cá nhân cung cấp ra.
– Truy xuất: Người dùng cũng có thể xem hay kiểm tra tính xác thực của dữ
liệu cá nhân được thu thập bởi các công ty.
– Bảo mật: Các công ty có trách nhiệm hoàn toàn về tính chính xác và bảo
mật (giữ nguyên tác quyền) của thông tin cá nhân được thu tập.
7

1.3. Tầm quan trọng của bảo mật riêng tư
Chính sách bảo mật là một trong những tài liệu quan trọng nhất của bất kỳ
một ứng dụng web hay di động. Nó miêu tả chi tiết các quan điểm và thủ tục
trong việc thu thập thông tin từ người sử dụng. Các phần chính của một tài liệu
chính sách bảo mật được miêu tả dưới đây.
– Giới thiệu: Là phần miêu tả cho người đọc biết về tổ chức, người sử hữu
và bất cứ thông tin hay chức năng đặc biệt nào mà ứng dụng có. Nếu ứng dụng
có các điều kiện đặc biệt cho việc thu thập thông tin từ trẻ em (dưới 16 tuổi, vv)
thì phải thông báo một cách rõ ràng và in đậm phần này.
– Thu thập thông tin: Người dùng có quyền biết những thông tin gì được thu
thập. Phải tường minh trong việc thu thập chi tiết bằng việc hoàn thành các mẫu
hỏi đáp.
– Phương pháp thu thập: Phần này miêu tả chi tiết các phương pháp được
dùng để thu thập thông tin, có được tự động hóa không? có được thu thập với
việc người dùng điền vào các mẫu không? Tất cả các câu hỏi sẽ giúp cho việc
tạo ra một đặc tả chi tiết về cách thu thập thông tin.
– Lưu trữ thông tin: Làm thế nào để lưu trữ thông tin? Nếu lưu trữ thông tin
trong cơ sở dữ liệu và vùng lưu trữ ở một quốc gia nào thì có thể phải được đăng ký
với tổ chức an ninh dữ liệu của quốc gia đó. Các máy chủ đặt ở quốc gia nào thì
phải được quốc gia đó cấp phép truyền tải dữ liệu ra bên ngoài. Người dùng có
quyền biết việc thông tin của họ được lưu trữ trong môi trường an toàn và bảo mật.
– Thông tin liên hệ: Nó rất quan trọng để đảm bảo tính minh bạch nhất có
thể và cho phép người dùng liên hệ với người sở hữu ứng dụng nếu họ cần. Ứng
dụng cũng phải hỗ trợ liên hệ qua cả thư điện tử cũng như địa chỉ cố định.
1.4. Các phương pháp và công cụ đảm bảo tính riêng tư
Chính sách với người dùng ứng dụng đặc biệt quan trọng, tài liệu chính sách
bảo mật chỉ ra các phương thức cho việc nhận và thu thập thông tin cá nhân bởi
ứng dụng cũng như cách dùng chúng. Dưới đây là các phương pháp và công cụ
điển hình trong việc đảm bảo tính riêng tư:
– Lưu tệp (Log tệp): Thông tin bên trong tệp bao gồm các địa chỉ Internet,
kiểu trình duyệt, nhà cung cấp dịch vụ Internet, ngày tháng, các thông tin nhân
khẩu học.
– Cookie: Lưu trữ thông tin về sở thích người dùng, các bản ghi thông tin
đặc thù của người dùng khi truy cập vào trang web, các nội dung tùy biến dựa
trên kiểu trình duyệt, kiểu ứng dụng hoặc các thông tin người dùng gửi qua trình
duyệt/ứng dụng.
8

– DoubleClick DART1 Cookie: Là một công cụ của Google sử dụng cookie
để phục vụ quảng cáo trên các ứng dụng. Nó được Google sử dụng để quảng cáo
tới người dùng dựa trên những lần truy cập ứng dụng. Người dùng có thể không
dùng DART cookie bằng việc vào trang “chính sách riêng tư”2 của Google để
xác nhận.
– Các Cookie quảng cáo khác: Các máy chủ quảng cáo của bên thứ 3 và các
mạng quảng cáo dùng công nghệ để đưa ra các quảng cáo, liên kết trên ứng dụng
và gửi trực tiếp đến các trình duyệt của người dùng.
– Dữ liệu vùng: Người dùng có thể đưa thông tin về vùng như mã bưu điện
hay địa chỉ, chúng sẽ được lưu trữ bởi các dịch vụ vùng. Các dữ liệu định vị có
thể được lưu trữ để cung cấp các tính năng định vị toàn cầu, kết nối người dùng
theo vùng.
– Google Analytics: Là một công cụ phân tích dùng cookie dưới dạng các
tệp văn bản trên thiết bị để giúp các ứng dụng phân tích cách người dùng sử
dụng ứng dụng đó. Nếu người dùng muốn vô hiệu hóa cookie, họ có thể sử dụng
tùy chọn của trình duyệt.

1.5. Các nguyên lý chung đảm bảo tính tiêng tư
Từ những thập niên 1980, có rất nhiều tổ chức hay quốc gia tiến hành xây
dựng các nguyên lý cho việc đảm bảo tính riêng tư. Các nước Mỹ, Canada,
Australia, Ấn Độ hay liên minh Châu Âu cũng đều đưa ra các nguyên lý chung.
Điển hình là tổ chức hợp tác và phát triển kinh tế Châu Âu đã đưa ra 7 nguyên lý
sau được cho là khá đầy đủ:
– Thông báo: Dữ liệu phải được thông báo khi dữ liệu người dùng được thu thập.
– Mục đích: Dữ liệu chỉ được dùng với mục đích đã quy định mà không
được dùng với bất cứ mục đích khác.
– Chấp nhận: Dữ liệu không được công bố nếu không được sự đồng ý của
người dùng.
– Bảo mật: Dữ liệu thu thập được phải được an toàn trước mọi sự truy cập
trái phép.
– Tiết lộ: Dữ liệu phải được thông báo với người đã thu thập dữ liệu đó.
– Truy cập: Dữ liệu phải được phép truy xuất và đảm bảo tính đúng đắn.
– Trách nhiệm: Dữ liệu phải có một phương pháp sẵn có để những người thu
thập dữ liệu phải có trách nhiệm tuân theo các nguyên tắc.

1 DART: Dynamic Advertising Reporting & Targeting
2 Webite “Google ad and content network privacy policy”, địa chị tại http://www.google.com/privacy_ads.html
9

1.6. Bảo mật riêng tư cho trình duyệt web
Trình duyệt web là một ứng dụng phần mềm dùng để nhận, trình bày và
duyệt các nguồn thông tin trên Internet. Một tài nguyên thông tin được xác định
bởi định danh tài nguyên duy nhất (URI1) và có thể là một trang web, hình ảnh,
video hay một mẩu dữ liệu. Một trình duyệt web có thể định nghĩa như một ứng
dụng phần mềm hay chương trình thiết kế để người dùng có thể truy cập, nhận
xem các tài liệu và các tài nguyên khác trên Internet.
1.6.1. Bảo mật trình duyệt di động
Ngày nay chúng ta ngày càng gắn bó cuộc sống với các TBDĐ nhiều hơn,
chúng là các smartphone hay máy tính bảng. Chúng thật tốt và tiện lợi khi giá cả
không còn là vấn đề. Các nền tảng di động đang bị tấn công với tần suất cao và
các cuộc tấn công thường thông qua các ứng dụng không tin cậy. Hầu hết các
vấn đề xảy ra thông qua sự bùng nổ mạnh mẽ của trình duyệt web. Nó xảy ra với
tất cả các TBDĐ, nhưng đặt biệt với các thiết bị chạy HĐH Android. Điều đó
đặc biệt đúng khi nói về việc xác định xem một trang web có an toàn hay không.
Đã có hơn 20% các vấn đề liên quan đến mua sắm trực tuyến trên các TBDĐ và
con số này vẫn đang ra tăng nhanh chóng. Trình duyệt web có thể bị vi phạm
bởi một trong các cách sau:
– HĐH bị vi phạm và chương trình độc hại sẽ đọc/sửa không gian nhớ của
trình duyệt với chế độ đặc quyền.
– HĐH đang có chương trình độc hại chạy ngầm và nó cũng đọc/sửa không
gian nhớ của trình duyệt với chế độ đặc quyền.
– Trình duyệt chính có thể bị thực thi bởi sự tấn công.
– Các thành phần của trình duyệt có thể bị tấn công.
– Các thành phần đính kèm có thể bị tất công.
1.6.2. Truy cập lịch sử trình duyệt
Bất cứ khi nào truy cập Internet từ máy tính, TBDĐ thì trình duyệt web sẽ lưu
những trang chúng ta đã ghe thăm. Các trình duyệt phổ biến hiện nay như
Chrome, Firefox, Internet Explorer đều lưu nơi bạn vào mạng cũng như lịch sử
những trang đã truy cập. Đây không phải là việc gì mờ ám cần che dấu hoặc xâm
phạm quyền riêng tư. Nó phục vụ cho người dùng được thuận tiện hơn, trừ khi
người dùng đang làm một cái gì đó mà không muốn người khác nhìn thấy. Ứng
dụng trình duyệt được thiết kế để hỗ trợ người dùng biết nơi nào mình đã ghe
thăm các trang web và những gì mình đã đọc hay xem trực tuyến trên Internet. Và
qua thời gian, các tính năng hữu ích đã được thêm vào tính năng lịch sử.

1 URI: Uniform Resource Identifier
10

Tính năng lịch sử trên các trình duyệt để làm đơn giản hóa trải nghiệm trực
tuyến và cung cấp sự tiện lợi cho người dùng. Nhưng ai đó cũng có thể xem lịch
sử trình duyệt, mà hầu hết chúng ta không muốn như vậy. Tuy nhiên, điều đó
không thường xảy ra. Nếu ta quan tâm đến sự riêng tư, bất kể thứ gì thì có thể sử
dụng lựa chọn xóa lịch sử trình duyệt hay duyệt web riêng tư. Tùy theo mỗi
trình duyệt mà việc duyệt web riêng tư được hỗ trợ và bảo mật.
Việc lập trình truy cập lịch sử trình duyệt của thiết bị có thể dùng các thư
viện hàm sẵn có với ngôn ngữ lập trình tương ứng. Ví dụ dưới đây là một đoạn
mã nguyền đọc lịch sử trình duyệt, dùng lớp BookmarkColumns trong gói
android.provider để lấy tất cả các địa chỉ, tiêu để của các đánh dấu (bookmark).

11

Và thêm một ví dụ, đoạn mã nguồn Java dưới đây lấy cookie của trình duyệt
Chrome trên thiết bị chạy HĐH Android. Truy xuất cookie của trình duyệt, lập
trình viên sẽ dùng phương thức getCookie() thuộc lớp CookieManager trong gói
android.webkit.

1.7. Một số hệ thống an ninh thực tế trên thiết bị di động
1.7.1. Samsung Knox
Samsung Knox là một nền tảng an ninh cho TBDĐ phát triển bởi Samsung.
Nó cung cấp các tính năng bảo mật cho cả dữ liệu cá nhân cũng như doanh
nghiệp trên cùng TBDĐ. Người dùng có thể chọn biểu tượng để chuyển đổi từ
không gian cá nhân sang công việc ngay tức thời mà không cần khởi động lại
thiết bị. Tính năng trên tương thích hoàn toàn với HĐH Android.
Nó được xây dựng bên trong các TBDĐ mới chạy HĐH Android. Và đã
được nhận giải thưởng giải pháp cấp chính phủ về đảm bảo an ninh, quản lý và
tùy biến các TBDĐ được thương mại hóa. Nó tạo ra một phân vùng ảo trên thiết
bị để quản lý các ứng dụng và dữ liệu khỏi các tấn công trái phép. Nó có thể tạo
12

ra các giải pháp phần mềm tùy biến phù hợp với các yêu cầu cho công nghiệp.
Việc quản lý di động được dễ dàng hơn với việc hỗ trợ hầu hết các giải pháp
thông dụng như MDN, EMM, SSO và VPN. Và dưới đây là giải pháp bảo mật
tổng thể:
– Bảo mật đa lớp (Multi-layered security): Knox là một công nghệ đa lớp
xây dựng cho cả phần cứng và phần mềm cho các thiết mới mới của Samsung.
Knox liên tục kiểm tra tính toàn vẹn của thiết bị và phát hiện bất kỳ sự giả mạo
nào, đảm bảo dữ liệu được an toàn hơn.
– Cái tiến bảo mật cho Android (Security Enhancements for Android): Cải
tiến bảo mật cho Android bảo vệ các ứng dụng và dữ liệu bằng cách xác định rõ
từng quá trình được phép làm gì và những dữ liệu nào có thể truy cập. Nó giúp
bảo vệ thiết bị bằng cách sử dụng tên miền, quyền, chính sách bảo mật và kiểm
soát truy cập bắt buộc.
– Vùng an toàn (TrustZone): Knox đưa ra một kiến trúc bộ xử lý gọi là
TrustZone, có hai thế giới: Thế giới bình thường và thế giới an toàn. Hầu như tất
cả các phần mềm chạy trên smartphone chúng ta biết ngày nay vẫn chạy trong
Thế giới bình thường. Thế giới an toàn được dành riêng cho tính toán nhạy cảm
mức độ cao và được sử dụng rộng rãi bởi Knox để bảo vệ dữ liệu bí mật của
doanh nghiệp.
– Khởi động an toàn (Secure Boot & Trusted Boot): Khởi động an toàn ngăn
các bộ tải và các nhân không tin cậy nạp vào thiết bị. Điều này có nghĩa là thiết
bị không bị giả mạo và có thể tải được bộ chứa Knox. Nó đảm bảo trình nạp và
nhân của HĐH là bản gốc từ nhà máy. Điều này được thực hiện bằng cách ghi
lại các phép đo thiết bị ban đầu và kiểm tra liên tục thiết bị khi khởi động để
đảm bảo các phép đo này không thay đổi.
– Bảo mật gốc phần cứng (Hardware Root of Trust): Là một bộ cơ chế bảo
mật được tích hợp trong phần cứng thiết bị, bất kể khi nào các điều khiển mặc
định của thiết bị bị thay đổi. Bao gồm khóa bảo mật an toàn và khóa gốc thiết bị,
thực hiện các hoạt động xác thực và mã hóa liên kết với thiết bị. Để sử dụng
Knox, thiết bị phải được hỗ trợ công nghệ ảo hóa ở mức phần cứng và giới hạn
ở các thiết bị của Samsung.
1.7.2. BlackBerry Balance
BlackBerry Blance là một tính năng sẵn có của BlackBerry 10 trở lên. Nó
cho phép quản lý dữ liệu cá nhân hay chuyên biệt một cách độc lập. E-mail, ứng
dụng và các thông tin kinh doanh nhạy cảm có thể được sao chép trên vùng cá
nhân. Quản trị viên có thể xóa toàn bộ dữ liệu kinh doanh từ xa khi thiết bị bị
13

mất hay đánh cắp. Người dùng có thể dễ ràng chuyển giữa chế động công việc
và các nhân. Các ứng dụng dành cho công việc được phát triển bởi một hệ thống
tùy biến doanh nghiệp của BlackBerry (Enterprise-Customized BlackBerry
World). Nó cho phép người dùng chuyển toàn bộ dữ liệu cá nhân trong thiết bị.
Công nghệ này giúp cân bằng các chính sách của dữ liệu cá nhân và an ninh
thông tin kinh doanh.

Hình 1.2. Hệ thống phân vùng mã hóa BlackBerry Balance
Các thiết bị BlackBerry 10 tạo ra khóa bảo mật ngẫu nhiên để mã hóa nội
dung của tệp. Các khóa bảo mật được bảo vệ bởi hệ thống phân phối các khóa
bảo mật. Hệ thống hiện nay vẫn còn hạn chế chỉ hỗ trợ cho các thiết bị chạy
HĐH Blackberry và chỉ từ phiên bản 10 trở lên. Từ hạn chế trên dẫn đến số
lượng người sử dụng không nhiểu nên việc phổ biến cũng như nghiên cứu phát
triển cũng bị giới hạn.
1.7.3. SCANDAL
SCANDAL là một bộ phân tích tĩnh có thể phát hiện rò rỉ thông tin cá nhân
trong các ứng dụng Android. Nó kiểm tra bất cứ luồng dữ liệu từ nguồn thông
tin, có thể kiểm soát tất cả các tình trạng có thế xảy ra khi sử dụng ứng dụng [5,
tr.1-3].
Hạn chế là trong quá trình xử lý nó có thể mất nhiều thời gian cũng như
không gian nhớ của thiết bị. SCANDAL không hỗ trợ các phương thức của Java
gốc (JNI1) [5, tr.8-9]. Các lập trình viên ứng dụng có thể dùng JNI để cùng làm

1 JNI: Java Native Interface
14

việc với các thư viện C/C++ trong ứng dụng. Vì ngôn ngữ gốc là của bộ xử lý
mã nguồn Dalvik VM, nên không thể chạy các thư viện JNI trong xử lý của
SCANDAL.
1.7.4. IccTA
IccTA là một công cụ mã nguồn mở phát hiện rò rỉ thông tin. Dù cho các
ứng dụng Android được lập trình bằng Java, nhưng chúng được biên dịch bằng
mã lệnh Dalvik thay vì các mã Java truyền thống. IccTA dùng Dexpler để
chuyển mã Dalvik ra Jimple [6, tr.5-6] rồi sửa chúng và kết nối trực tiếp đến các
thành phần để xử lý luồng dữ liệu giữa các thành phần đó.
Hạn chế hiện tại là IccTA chỉ xử lý hiệu quả được các lời gọi với các tham
số là chuỗi cố định, nó cũng không xử lý được đa luồng hay các chuỗi phức tạp
(ví dụ dùng StringBuilder) [6, tr.9-10].
1.7.5. AndroidLeaks
AndroidLeaks là công cụ tự động phát hiện việc vi phạm bảo mật thông tin
trong các ứng dụng Android. Trước khi tìm các vi phạm bảo mật, nó thực hiện
một vài bước sau: Trước tiên, chuyển đổi các mã của ứng dụng Android (APK)
từ định dạng DEX sang JAR với việc dùng ded hoặc dex2jar [1, tr.7-8].
AndroidLeaks dùng WALA và xây dựng một biểu đồ lời gọi của mã ứng dụng
và các thư viện bên trong. Nó lặp lại thông qua các lớp của ứng dụng và xác
định các phương thức gọi tài nguyên và kiểm tra các phương thức khác có thể
yêu cầu các quyền. Nếu ứng dụng chứa kết hợp các quyền có thể lấy dữ liệu cá
nhân như đọc trạng thái thiết bị và truy cập Internet, nó sẽ thực hiện xử lý luồng
dữ liệu để xác định xem thông tin cá nhân có bị lấy không.
Hạn chế xuất phát từ những giới hạn sẵn có trong việc xử lý tính toán
thường phát sinh vấn đề giữa tốc độ, độ chính xác và sai số [1, tr.14-15]. Trong
đó hướng tiếp cận xử lý động có thể có độ chính xác cao hơn vì trên thực tế các
thông tin bị rò rỉ tại thời gian chạy. Việc kết hợp AndroidLeaks với một hướng
tiếp cận xử lý động sẽ có triển vọng vì AndroidLeaks có thể xử lý nhanh với số
lượng ứng dùng nhiều và sau đó cung cấp thêm các ứng dụng tiềm năng cho xử
lý động. Nó cũng không hỗ trợ xử lý luồng điều khiển và luồng dữ liệu.
15

Chương 2. Hệ thống TaintDroid

2.1. Giới thiệu Android
Android là một nền tảng di động mã nguồn mở với nhân HĐH Linux, dành
cho các TBDĐ như smartphone và máy tính bảng. Hầu hết các chức năng được
phát triển như các ứng dụng chạy bên trên tầng trung gian. Các ứng dụng được
viết bằng ngôn ngữ Java hoặc C/C++, chúng được dịch thành các mã tùy biến
như định dạng DEX1. Mỗi ứng dụng thực thi các thực thể và biên dịch bên trong
máy ảo Dalik và dưới đây là miêu tả tổng quát kiến trúc của một HĐH Android.

Hình 2.1. Kiến trúc HĐH Android

– Linux Kernel (Nhân Linux): Nhân Linux được phát triển từ HĐH mã
nguồn mở GNU, do vậy chúng ta có thể sử dụng trên điện thoại của mình như
phần mềm miễn phí và nó đã có sẵn các trình điều khiển cho phần cứng. Nhân
Linux là phần quản lý việc điểu khiển chương trình, người dùng, tài nguyên, yêu
cầu vào/ra, xử lý bên trong máy tính.
– Hardware Abstraction (Tầng phần cứng trừu tượng): Là một bộ các định
tuyến trong phần mềm giả lập một số chi tiết nền tảng, cumg cấp việc truy nhập
trực tiếp cho các ứng dụng tới các tài nguyên phần cứng.
– Libraries (Tầng thư viện): Là một thư viện hỗ trợ cho việc lập trình hiệu

1 DEX – Dalvik EXecutable byte-code format: Định dạng mã thự thi Dalvik
16

quả hơn. Nói gồm các thư viện như: thư viện đồ họa, các thư viện đa phương
tiện (âm thanh, hình ảnh và video), trình duyệt, kết nối bảo mật, font chữ, cơ sở
dữ liệu và các thư viện khác. Môi trường chạy Android làm cho việc sử dụng
máy ảo như môi trường chạy các tập APK của ứng dụng Android. Ưu điểm của
việc dùng máy ảo là mã ứng dụng được tách biệt với HĐH lõi, đảm bảo lỗi xảy
ra không ảnh hướng đến HĐH chính.
– Application Framework (Tầng nền ứng dụng): Hỗ trợ các tính năng cho
việc sử dụng và giải trí của các ứng dụng với nhiều nhu cầu sử dụng khác nhau
và dưới đây là một vài tính năng chính:
 Trình duyệt web giữa trên nền Webkit
 Xứ lý đồ họa được hỗ trợ bởi các thư viện đồ họa tiên tiến
 Lưu trữ cơ sở dữ liệu bằng SQL
 Hỗ trợ rất nhiều loại âm thanh, video và ảnh
 Thiết bị giả lập, các công cụ để gỡ rối (debug), …
– Application (Tầng ứng dụng): Là tầng cao nhất, hầu hết các người dùng
thiết bị sẽ giao tiếp với tầng này (cho các chức năng chính: gọi điện, duyệt web,
vv). Dưới đây là danh mục các ứng dụng đang đã được phát triển trên nền tảng
Android tính tới thời điểm hiện tại.

Hình 2.2. Danh mục ứng dụng Android

Các thành phần của chương trình: Trước khi phát triển hay cải tiến một ứng
dụng Android, điều thiết yếu là chúng ta cần phải hiểu về các thành phần chính
của ứng dụng. Các thành phần của ứng dụng là các khối xây dựng cho ứng dụng,
mỗi thành phần là một điểm riêng biệt mà hệ thống có thể truy xuất ứng dụng.
17

Hình 2.3. Các Thành Phần Chương Trình Android

– Activities (Hoạt động): Là thành phần thực thi một màn hình đơn với một
giao diện người dùng. Ví dụ một ứng dụng thư điện thử (e-mail) có thể có một
hành động hiển thị một danh sách các email mới, các hoạt động khác như soạn
hay đọc e-mail. Dù cho với người dùng thì các hoạt động trên làm việc cùng
nhau trong mô hình sử dụng một ứng dụng e-mail thông thường. Nhưng một
ứng dụng có thể khởi tạo bất cứ hoạt động nào trong các hoạt động trên. Ví dụ
một ứng dụng chụp ảnh có thể khởi tạo hoạt động soạn e-mail với việc đính kèm
hình ảnh vừa chụp.
– Services (Dịch vụ): Một dịch vụ là một thành phân chạy phía dưới của ứng
dụng và chạy với thời gian dài và không có giao diện người dùng. Ví dụ một
dịch vụ có thể chơi nhạc trong khi người dùng đang sử dụng một ứng dụng khác.
 Content Providers (Phân phối nội dung): Một thành phần phân phối nội
dung quản lý một bộ chia sẻ dữ liệu của ứng dụng. Bạn có thể lưu trũ dữ liệu
trong hệ thống tệp, một CSDL SQLLite, trên website hay bất cứ vùng lưu trữ
nào mà ứng dụng có thể truy cập. Các ứng dụng có thể truy cập, sửa đổi dữ liệu
nếu nó cho phép.
– Broadcast Receivers (Bộ tiếp nhận): Một bộ tiếp nhận là một thành phần xử
lý các thông báo được truyền ở mức hệ thống. Có rất nhiều thông báo sẵn của hệ
thống như thông báo tắt màn hình, pin yếu hoặc một ảnh được chụp. Các ứng
dụng cũng có thể khởi tạo các broadcast của riêng mình như báo cho các ứng
18

dụng khác khi dữ liệu đã tải xong và sẵn sàng để chạy hay cài đặt. Tuy thành
phần này không hiện nên giao diện người nhưng nó có thể tạo ra các thông báo
trên thanh trạng thái để báo cho người dùng khi một broadcast xảy ra.
– Intent: Là một thành phần miêu tả trừu tượng của một hoạt động đã được
thực thi. Nó có thể dùng để khởi tạo hoạt động và một chương trình sẽ được hoạt
động theo một chu trình như miêu tả ở hình 2.4 dưới đây.

Hình 2.4. Chu Trình Hoạt Động Chương Trình Android

– Started Activity: Không như các mô hình lập trình với việc ứng dụng được
chạy với một phương thức main(), hệ thống Android khởi tạo mã trong một thực
thể hoạt động bởi việc gọi các phương thức triệu hồi (callback) xác định để đồng
thời xử lý các kịch bản xác định của chu kỳ.
– Paused Activity: Các ứng dụng thường thỉnh thoảng cần dừng hoạt động ví
dụ khi các ứng dụng chạy ở chế độ nhiều cửa sổ, chỉ một trong số các ứng dụng
ở trạng thái kích hoạt trong một thời điểm, hệ thống sẽ dừng các ứng dụng khác.
Khi ứng dụng về trạng thái dừng, hệ thống gọi phương thức onPause(), nó cho
phép dừng các hành động xử lý với bên ngoài trong lúc dừng hoặc cấm mọi
thông tin được lưu trong khi người dùng chưa tiếp tục chạy.
– Resumed Activity: Khi người dùng khôi phục hoạt động từ trạng thái dừng,
hệ thống sẽ gọi phương thức onResume(). Hệ thống sẽ gọi phương thức này mỗi
khi hoạt động được thực hiện trở lại, kể cả khi nó được khởi tạo lần đầu.
– Stopped Activity: Khi hoạt động nhận được một lời gọi phương thức
onStop(), nó không được hiện thị trong thời gian lâu và phải được giải phóng

Đánh giá post

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *