Trong số các công nghệ dƠnh cho các loại điện thoại di động thì công nghệ Android lƠ một công nghệ mạnh mẽ, được ng dụng phát triển rộng rưi vƠ chọn lƠm nền tảng phát triển di động cho n
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHệNH VIỄN HÔNG
ịM Ắ LUẬN VĂN HẠC SĨ
HÀ N I - 2013
Trang 2H ỌC VIỆN CÔNG NGHỆ BƯU CHệNH VIỄN HÔNG
Người hướng dẫn khoa học: TS Nguyễn Khanh Văn
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
VƠo lúc: giờ ngƠy tháng năm
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
Trang 3M Đ U
NgƠy nay, điện thoại di động được áp dụng các công nghệ cao vƠ hiện đại phát triển
một cách mạnh mẽ, tăng trư ng một cách không ngừng Điện thoại di động tr thƠnh một
nhu cầu thiết yếu cho con người Điện thoại di động có tính tiện lợi cao, có thể sử dụng mọi lúc mọi n i Điện thoại di động cƠng ngƠy cƠng "thông minh" với nhiều ch c năng vƠ dịch
vụ rất hấp dẫn đư được tích hợp rất nhiều tiện ích để đáp ng cho con người trọng mọi lĩnh
vực Trong số các công nghệ dƠnh cho các loại điện thoại di động thì công nghệ Android lƠ
một công nghệ mạnh mẽ, được ng dụng phát triển rộng rưi vƠ chọn lƠm nền tảng phát triển
di động cho nhiều hưng di động khác nhau Android lƠ hệ điều hƠnh trên điện thoại di động (vƠ hiện nay lƠ cả trên một số đầu phát HD, HD Player, TV) phát triển b i Google vƠ dựa trên nền tảng Linux
Các ng dụng vƠ dịch vụ dƠnh cho điện thoại di động liên tục phát triển vƠ gia tăng không ngừng Do sự dư thừa thông tin vƠ quảng cáo, người sử dụng có thể gặp khó khăn khi
phải chọn lựa, sƠng lọc ra thông tin tốt, hợp lý nhất phục vụ cho công việc hoặc sự giải trí
của mình Để hỗ trợ người sử dụng một cách tốt nhất cần có phần mềm thu thập thu thập tất
cả các hƠnh vi vƠ thói quen của người sử dụng trên các ng dụng, dịch vụ dƠnh cho điện
thoại di động Sau khi thu thập tất cả các hƠnh vi vƠ thói quen của người sử dụng trong các
khoảng thời gian định kì sẽ tiến hƠnh phơn tích các hƠnh vi, thói quen người sử dụng mục đích để nắm bắt nhu cầu sử dụng, s thích, thói quen của người sử dụng để chúng ta có thể
tạo ra các sản phẩm, các dịch vụ, phục vụ cho người sử dụng tốt h n nữa Đồng thời phần
mềm cũng hỗ trợ đưa ra những gợi ý tư vấn cho sự lựa chọn các ng dụng vƠ dịch vụ phù
hợp nhất cho người sử dụng Đơy chính lƠ những lý do để tôi chọn đề tƠi “Thu th p, phơn tích hƠnh vi vƠ thói quen ng i s d ng thi t b di đ ng Android” Nội dung của luận
văn nghiên c u, vƠ phát triển được trình bƠy thông qua bốn chư ng:
- Chư ng 1: Nền tảng công nghệ Android cho thiết bị di động
- Chư ng 2: Một số C s lý thuyết liên quan
- Chư ng 3: Khảo sát các phư ng pháp, công cụ hỗ trợ nhận dạng hƠnh vi, thói quen người sử dụng thiết bị di động Android
- Chư ng 4: Xơy dựng ng dụng thu thập, Phơn tích hƠnh vi vƠ thói quen người sử
dụng thiết bị di động Andriod
Trang 4CH NG 1 N N T NG C ÔNG NGHỆ ANDROID CHO THIẾT
B Ị DI ĐỘNG
1.1 T ng quan công ngh Android
1.1.1. Sơ lược lịch sử công nghệ Android
Android lƠ một hệ điều hƠnh m phát triển dựa trên nền tảng Linux dƠnh cho các
Thiết bị di động cảm ng Công nghệ Android đầu tiên được nghiên c u b i tổng công ty
Android với sự hỗ trợ đầu tư của Google NgƠy 17 tháng 8 năm 2005, Google mua lại tổng công ty Android biến nó thƠnh một bộ phận trực thuộc của mình NgƠy 5 tháng 11 năm
2007, Một hiệp hội các công ty lớn trên thế giới về viễn thông, phần c ng, phần mềm cho
thiết bị di động thƠnh lập ra Liên minh thiết bị cầm tay m (Open Handset Alliance) với
mục đích phát triển các tiêu chuẩn m cho di động Cùng ngƠy nƠy, google cũng ra mắt sản
phẩm đầu tiên lƠ một nền tảng thiết bị di động được xơy dựng trên nhơn Linux 2.6
Hình 1.1: Các thƠnh viên c a “Liên minh di đ ng m ”
(Nguồn: Bài báo “Lịch sử hệ điều hành Android - Trần Quỳnh Hương” [1])
NgƠy 22 tháng 10 năm 2008 Chiếc điện thoại Android đầu tiên HTC Dream được bán ra Từ năm 2008, Hệ điều hƠnh Android đư trải qua nhiều lần cập nhật, sửa các lỗi, bổ xung thêm tính năng mới Mỗi phiên bản đều được đặt tên lần lượt theo th tự bảng chữ cái theo tên các món ăn tráng miệng: phiên bản 1.5 cupcate, phiên bản 4.2 Jelly Bean
Trang 51.2 Khái ni m Android
Android lƠ hệ điều hƠnh m được Google phát triển dƠnh cho thiết bị di động Các nhƠ phát triển có thể sử dụng tất cả tính năng của hệ điều hƠnh Android để tạo ra các ng
dụng di động Android được xơy dựng trên nhơn Linux m H n nữa, nó sử dụng một máy
ảo tuỳ chỉnh được thiết kế để tối ưu hóa bộ nhớ vƠ tƠi nguyên phần c ng trong một môi trường di động Để phục vụ cho việc phát triển vƠ sáng tạo các ng dụng vƠ dịch vụ Google
đư đưa ra bộ công cụ Android SDK cung cấp các công cụ vƠ bộ thư viện các hƠm API cần
thiết để phát triển ng dụng cho nền tảng Android sử dụng ngôn ngữ lập trình java
1.2.1. Kiến trúc Android
Mô hình kiến trúc sau thể hiện các thƠnh phần của hệ điều hƠnh Android:
Hình 1.2: Mô hình ki n trúc n n t ng Android
(Nguồn: Bài báo “Lịch sử hệ điều hành Android - Trần Quỳnh Hương” [1])
- Applications: Tầng nƠy tích hợp sẵn một số ng dụng c bản cần thiết dƠnh cho
thiết bị di động như danh bạ điện thoại, gọi điện thoại, Tin nhắn SMS, trình duyệt
web vƠ một số ng dụng khác Người sử dụng có thể tích hợp các ng dụng của hưng
th 3 viết bằng ngôn ngữ java vƠo tầng nƠy
Trang 6- Application Framwork: Tầng nƠy của hệ điều hƠnh Android cung cấp một nền tảng
phát triển ng dụng m qua đó cho phép nhƠ phát triển ng dụng có khả năng tạo ra các ng dụng vô cùng sáng tạo vƠ phong phú
- Libraries: lƠ lớp ch a các thư viện native Android Các thư viện chia sẻ tất cả được
viết bằng C, C + +, mục đích biên dịch cho các kiến trúc phần c ng đặc biệt được sử
dụng cho điện điện thoại
- Android Runtime: Android bao gồm một tập hợp các thư viện lõi cung cấp hầu hết
các ch c năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java Tất cả các
ng dụng Android sẽ có một thể hiện riêng trên máy ảo Dalvik Máy ảo Dalvik đư được viết để một thiết bị có thể chạy nhiều máy ảo cùng lúc có hiệu quả vƠ nó thực thi các file có định dạng ( dex) mục đích tối ưu hóa cho bộ nhớ vƠ sử dụng tối thiểu
bộ nhớ
- Linux Kernel: Android dựa trên Linux phiên bản 2.6 cho hệ thống cốt lõi dịch vụ
như an ninh, quản lý bộ nhớ, quản lý tiến trình, Network stack, Driver model Kernel cũng hoạt động như một tầng trừu tượng giữa phần c ng vƠ phần còn lại của ngăn
lƠ ng dụng “Viết một lần, chạy mọi n i” nên cần phải có môi trường máy ảo để chạy ng
dụng Google đư tinh chỉnh, cải tiến từ máy ảo JDK để phát triển thƠnh máy ảo Dalvik của
hệ điều hƠnh Android mục đích để biên dịch mư Java với tốc độ biên dịch nhanh h n vƠ nhẹ
h n
1.2.2.2 Môi trường lập trình cho Android
Google cung cấp công cụ phát triển ng dụng Android SDK, lƠ một công cụ giả lập
thiết bị ảo Android hỗ trợ để test vƠ debug các lỗi của ng dụng Android Môi trường lập
trình (IDE) chính th c của Android lƠ Eclipse (từ phiên bản 3.2) với sự hỗ trợ của plugin
Trang 7Android Development Tools (ADT) ng dụng Android được đóng gói thƠnh các file apk
vƠ đuợc lưu trong thư mục /data/app của hệ điều hƠnh Android
1.3 Các thƠnh ph n c b n c a ng d ng Android
1.3.1. Activity
Một Activity lƠ một thƠnh phần ng dụng cung cấp một mƠn hình mƠ người dùng có
thể tư ng tác để lƠm điều gì đó, chẳng hạn như quay số điện thoại, chụp ảnh, gửi email,
hoặc xem bản đồ Mỗi Activity được đưa ra một cửa sổ trong đó vẽ ra giao diện người dùng
của nó Cửa sổ thường lấp đầy mƠn hình, nhưng nó có thể lƠ nhỏ h n so với mƠn hình vƠ
hiển thị lên trên các cửa sổ khác
1.3.1.1 Vòng đời của một Activity
Một Activity có 4 trạng thái:
- Active hay Running: Khi một Activity đang chạy trên mƠn hình [5]
- Paused: Khi một Activity vẫn đang chạy trên mƠn hình nhưng đang bị một Activity
trong suốt (transparent) hay nó bị chiếm toƠn mƠn hình hiển thị phía trên Tuy vẫn lưu trữ dữ liệu, nhưng các paused Activity nƠy sẽ bị hệ thống bắt chấm d t khi đang thiếu bộ nhớ trầm trọng [5]
- Stopped: Khi một Activity bị che khuất hoƠn toƠn b i một Activity khác (Activity
nƠy đang chế độ background) trạng thái Stoped, Activity vẫn tồn tại có nghĩa đối tượng Activity vẫn giữ lại trọng bộ nhớ, duy trì trạng thái vƠ thông tin thƠnh viên của nó Tuy nhiên các stopped Activity nƠy sẽ thường xuyên bị hệ thống bắt chấm d t giải phóng bộ nhớ để cấp bộ nhớ cho các tiến trình khác [5]
- Killed hay Shut down: Khi một Activity đang paused hay stopped, hệ thống sẽ xóa
Activity ấy ra khỏi bộ nhớ NhƠ phát triển ng dụng có cƠi đặt phư ng th c finish() trước khi bị xóa khỏi bộ nhớ [5]
Trang 8thực hiện hoặc trong trường hợp Broadcasts, nó lƠ một mô tả về một cái gì đó đư xảy ra vƠ
đư được công bố
1.3.2. Service
1.3.2.1 Định nghĩa Service
Một Service lƠ một component của ng dụng có thể thực hiện các hoạt động trong một thời gian dƠi chế độ background vƠ không cung cấp một giao diện người dùng Một component ng dụng có thể bắt đầu một Service vƠ nó sẽ tiếp tục chạy chế độ background ngay cả khi người dùng chuyển sang một ng dụng khác NgoƠi ra, một Component có thể liên kết với một Service tư ng tác với nó vƠ thậm chí thực
1.3.2.2 Vòng đời của 1 Service
Một Service có các phư ng th c callback vòng đời mƠ ng dụng có thể thực hiện để theo dõi những thay đổi trong trạng thái của service vƠ ng dụng có thể thực hiện công việc giai đoạn thích hợp
1.3.3. BroadcastReceiver
Broadcast Reciever chỉ đ n giản lƠ phản ng tin nhắn broadcast từ các ng dụng khác hoặc từ hệ thống chính nó Có hai bước quan trọng để tạo ra BroadcastReceiver cho hệ thống Broadcast intent:
- Tạo ra các Broadcast Reciever bằng cách kế thừa BroadcastReciever
- Đăng ký Broadcast Reciever bằng hai cách sử dụng Context.registerReceiver() hay thông qua tag <receiver> trong file AndroidManifest.xml
Trang 91.3.5. Shared preferences
Shared preferences sử dụng key/value hệ thống để save/retrieve dữ liệu Đơy lƠ, tất cả các dữ liệu đ n giản sẽ có một khóa duy nhất trong Shared preferences Bằng cách sử dụng khóa nƠy, giá trị đư lưu trước đó, ngay cả những ng dụng đư bị hủy vƠ kh i động lại một
lần nữa nó sẽ được phục hồi Trong trường hợp giá trị yêu cầu chưa được thiết lập một giá
trị mặc định sẽ được trả lại Nếu dữ liệu có lưu trữ theo cấu trúc với số lượng lớn thì không nên sử dụng nên sử dụng lưu trữ với database (sqlite)
1.3.6. LogCats
LogCats lƠ phư ng pháp được sử dụng trên các thiết bị dựa trên Android để hiển thị các thông điệp hoặc các bản ghi tư ng tự như các cơu lệnh System.out.println() của Java Để
gọi nó, các lập trình viên có thể viết in mư code trong bất kỳ n i mư code tồn tại Điều quan
trọng lƠ đề cập đến những thông báo hoặc các log có thể được chụp vƠ xử lý b i bất kỳ chư ng trình nƠo đang chạy trong Android, b i vì nó lƠ c s của chư ng trình thực hiện
cho dự án nƠy
1.3.7. ửi và nhận messages trong Andriod
Bên cạnh các phư ng pháp broadcast receiver, cách khác để giao tiếp trong Android đang sử dụng các messages vƠ Handlers
Nhận message nƠy phải cƠi đặt các phư ng th c xử lý (handler) Các phư ng th c xử
lý lƠ tiến trình đó liên tục lặp lại kiểm tra các nội dung của hƠng đợi message vƠ bộ lọc
message B i vì sự lặp lại nƠy, khi phư ng th c xử lý không được cƠi đặt trong các Activity
nó đư được cƠi đặt trong thread khác
1.4 ng k t
Android có xơy dựng trên nhơn Linux nên nó thừa hư ng được những đặc tính quý
của Linux, nhất lƠ về độ bảo mật vƠ hiệu năng hoạt động cao Không những thế, nhơn Linux
để phát triển cho Android đư được tối ưu vƠ cải thiện để phù hợp với hệ thống điện thoại nên nó có khả năng tùy biến, tư ng thích cao với nhiều mẫu điện thoại của nhiều hưng khác nhau Android lƠ hệ điều hƠnh đa nhiệm một người dùng Tính đa nhiệm cho phép cùng một
thời gian, người dùng có thể chạy được nhiều ng dụng để lƠm được nhiều việc khác nhau Tuy nhiên, mỗi ng dụng trên Android thì chỉ được phép chạy với một thực thể mƠ thôi
Trang 10CH NG 2 M ỘT S C S Lụ HUYẾ LIÊN QUAN
2.1 B o m t ng d ng Android
Khi Chúng ta phát triển các ng dụng Android, Chúng ta phải giải quyết một số khía cạnh liên quan đến bảo mật, bao gồm cả các quy trình ng dụng vƠ các hộp cát (sandbox - hộp dùng để thử nghiệm vƠ phát triển phần mềm), chia sẻ mư vƠ dữ liệu, bảo vệ hệ thống thông qua việc ký các ng dụng vƠ sử dụng các quyền hạn Hệ điều hƠnh android sử dụng một vƠi phư ng pháp bảo mật cho thiết bị của người sử dụng Chúng ta sẽ miêu tả các tính năng bảo mật ảnh hư ng đến ng dụng một cách trực tiếp
Hình 2.1: Các lĩnh v c b o m t hi n có khi l p trình các ng d ng Android
(Nguồn: Bài báo “Understanding security on Android- IBM” [6])
2.1.1. phân quyền Android
Phơn quyền lƠ một c chế bảo mật của nền tảng Android để cho phép hoặc hạn chế
ng dụng truy cập đến các API vƠ các tƠi nguyên bị hạn chế Theo mặc định, các ng dụng Android không được cấp các phơn quyền nƠo, lƠm cho chúng an toƠn bằng cách không cho phép chúng truy cập vƠo các API được bảo vệ hoặc các tƠi nguyên trên thiết bị ng dụng phải yêu cầu các phơn quyền thông qua manifest.xml file vƠ người dùng cấp hoặc không cấp
các phơn quyền trong khi cƠi đặt Để yêu cầu cấp phơn quyền, hưy khai báo một thuộc tính <user-permission> trong manifest.xml file:
Trang 11<uses-permission android:name="string" />
2.1.1.1 Các quyền hạn của Content provider vƠ của file
Các Content Provider trưng ra một URI chung lƠ URI duy nhất xác định dữ liệu của chúng Để bảo vệ Content Provider như vậy, khi bắt đầu một hoạt động hoặc trả về một kết
lập Intent.FLAG_GRANT_READ_URI_PERMISSION vƠ Intent.FLAG_GRANT_WRITE
_URI_PERMISSION, để cấp quyền cho hoạt động thu nhận truy cập vƠo URI của dữ liệu
cụ thể theo ý định nƠy Các ng dụng có thể cho phép các ng dụng hoặc các tiến trình khác
có quyền truy cập tới các file của mình Sự cho phép nƠy được thực hiện bằng cách chỉ ra
động MODE_WORLD_READABLE vƠ MODE_WORLD_WRITEABLE thích hợp để cho phép quyền truy cập đọc hoặc viết vƠo tệp, hoặc MODE_PRIVATE để m tệp trong chế độ riêng tư
2.1.1.2 Các API Permission thời gian chạy
Android cung cấp các API Permission để kiểm tra, bắt tuơn thủ, cấp vƠ thu hồi các phơn quyền trong thời gian chạy Các API nƠy lƠ một phần của lớp android.content.Context, cung cấp toƠn bộ thông tin về một môi trường ng dụng
2.1.2. Sandbox
Android sử dụng khái niệm về sandbox để bắt buộc tách riêng giữa ng dụng với nhau vƠ các phơn quyền để cho phép hoặc ngăn không cho một ng dụng truy cập vƠo các tƠi nguyên của thiết bị như các file vƠ các thư mục, các mạng, các cảm biến vƠ các API nói
chung Các ng dụng Android chạy trên tiến trình Linux riêng của mình vƠ được gán cho một ID của người dùng duy nhất (UID) Theo mặc định, các ng dụng chạy trong một tiến trình của sandbox c s không được gán cho các phơn quyền, do đó ngăn không cho các
ng dụng như vậy được truy cập vƠo hệ thống hoặc các tƠi nguyên Tuy nhiên, các ng dụng Android có thể yêu cầu các phơn quyền thông qua các manifest.xml file của ng dụng
2.1.3. Ký ng dụng (Application signing)
Tất cả các ng dụng Android phải được ký Việc ký ng dụng hoặc mư lƠ quá trình
ký số một ng dụng cụ thể bằng cách sử dụng một khóa riêng để:
Trang 12 Xác định tác giả của mư
Phát hiện ra nếu các ng dụng đư thay đổi
Xơy dựng sự tin cậy giữa các ng dụng
2.1.4. Loại bỏ từ xa sự chuyển đổi (Remote kill switch)
Các ng dụng Google Play có khả năng loại bỏ từ xa các ng dụng từ thiết bị cầm tay của người sử dụng khi ng dụng được vi phạm việc thỏa thuận phơn phối phát triển hoặc
chính sách chư ng trình phát triển
Tuy nhiên các loại bỏ từ xa chỉ hữu ích đối với các ng dụng cƠi đặt thông qua thị trường Google Play Các ng dụng cƠi đặt thông qua các kênh không chính th c sẽ không bị ảnh hư ng b i tính năng nƠy
2.1.5. Bảo vệ file hệ thống
Android bảo vệ các file hệ thống cốt lõi của hệ điều hƠnh bằng cách lưu trữ chúng trong một phơn vùng chỉ có quyền đọc của ổ đĩa c ng NgoƠi ra, tính năng sandbox đề cập trên ngăn chặn các ng dụng được cƠi đặt trên các thiết bị truy cập các file của nhau trừ khi các file cố ý hoặc vô ý trưng bƠy ra b i các nhƠ phát triển
sẽ thường xuyên không được truy cập với tính năng nƠy trên thiết bị Android, vì nó sẽ được khóa b i nhƠ cung cấp Một ng dụng với quyền truy cập root có thể thay thế, sửa đổi vƠ cƠi đặt các ng dụng như nó muốn
Trang 132.2 Học Máy
2.2.1. Khái niệm về học máy
Học máy (machine learning) lƠ một lĩnh vực của trí tuệ nhơn tạo liên quan đến việc nghiên c u vƠ xơy dựng các kĩ thuật cho phép các hệ thống có thể "học" tự động từ dữ liệu
để giải quyết những vấn đề cụ thể Học máy lƠ tạo ra các phư ng pháp vƠ chư ng trình để cho máy tính có thể giải quyết các vấn đề giống như con người Ví dụ như các hệ thống có
thể "học" cách phơn loại thư điện tử xem có phải thư rác (spam) hay không vƠ tự động xếp thư vƠo thư mục tu ng ng
2.2.2. Thuật toán K-Means
Trong số các thuật toán phơn nhóm tồn tại, thì thuật toán k-means sử dụng rộng rưi
nhất Nó lƠ một thuật toán lặp tổ ch c dữ liệu số trong số k cụm Các dữ liệu số, hoặc tập
huấn luyện, được tổ ch c trong vect với một kích thước bằng với số tính năng được đánh giá Thuật toán K-means phơn tích quá trình phơn cụm đ n giản nên có thể áp dụng đối với
tập dữ liệu lớn Tuy nhiên nhược điểm của thuật toán nƠy lƠ chỉ áp dụng với dữ liệu có
thuộc tính số vƠ khám phá ra các cụm có dạng hình cầu, K-means còn rất nhạy cảm với
nhiễu vƠ các phần tử ngoại lai trong dữ liệu Chất lượng của thuật toán K-means phụ thuộc
nhiều vƠo các tham số đầu vƠo như: số cụm k vƠ k trọng tơm kh i tạo ban đầu
2.3 T ng k t
Android lƠ một nền tảng di động hiện đại được thiết kế để được thực sự m Để bảo
vệ giá trị, nền tảng nƠy phải cung cấp một môi trường ng dụng để đảm bảo sự an toƠn của người sử dụng, dữ liệu, ng dụng, thiết bị, vƠ mạng Đảm bảo một nền tảng m đòi hỏi một kiến trúc bảo mật mạnh mẽ vƠ các chư ng trình an ninh nghiêm ngặt Android được thiết kế với bảo mật đa tầng cung cấp sự linh hoạt cần thiết cho một nền tảng m , trong khi cung cấp bảo vệ cho tất cả người dùng của nền tảng nƠy