Chương 1 trình bày tổng quan về hệ điều hành Android và vấn đề rò rỉ thông tin riêng tƣ trong các ứng dụng chạy trên Android, một số nghiên cứu tiêu biểu liên quan đến bài 2 toán. Chương 2 trình bày kiến thức cơ sở về mô hình SVM và phƣơng pháp áp dụng nó vào giải quyết bài toán đặt ra trong luận văn. Chương 3 trình bày phƣơng pháp cài đặt thử nghiệm và đánh giá. Cuối mỗi chƣơng đều có phần Tiểu kết để tổng kết lại nội dung của chƣơng.
Ngoài các chƣơng chính đã nêu trên, luận văn kết thúc với phần Kết luận và hướng phát triển để tóm tắt những kết quả đạt đƣợc, những vấn đề còn tồn tại và dự kiến hƣớng phát triển tiếp theo của luận văn. TỔNG QUAN VỀ ANDROID VÀ VẤN ĐỀ RÒ RỈ THÔNG TIN RIÊNG TƢ TRONG CÁC ỨNG DỤNG Chương này trình bày, giới thiệu tổng quan về Android, cách hoạt động của các ứng dụng Android. Đồng thời, chương này cũng làm sáng tỏ cơ chế bảo mật của Android, kiến trúc của các ứng dụng chạy trên nó. GIỚI THIỆU Theo International Data Corporation (IDC), hệ điều hành Android là nền tảng điện thoại thông minh phổ biến nhất với 82,2% thị phần điện thoại thông minh, trong khi iOS là 13,9% trong quý 2 năm 2015 [1].
Nói theo thống kê, nó cũng là nền tảng đƣợc nhắm mục tiêu đầu tiên bởi các tác giả phần mềm độc hại đang tìm cách chiếm quyền kiểm soát hàng triệu điện thoại thông minh Android trên thế giới. Do sự phổ biến của điện thoại thông minh Android, bảo mật của ứng dụng chạy trên nó là một vấn đề nghiêm trọng đối với 80% ngƣời dùng điện thoại thông minh. Android là một môi trƣờng phát triển mã nguồn mở cung cấp Bộ công cụ phát triển (SDK – Software Development Kit) phong phú, cho phép các nhà phát triển triển khai các ứng dụng của riêng họ và phân phối chúng thông qua các kho ứng dụng Android. Sự phổ biến của Android là kết quả của việc trở thành nguồn mở, trung tâm phân phối của bên thứ ba, SDK phong phú và sự phổ biến của ngôn ngữ lập trình Java.
Điều quan trọng là do môi trƣờng mở này, các tác giả phần mềm độc hại có thể phát triển các ứng dụng độc hại lạm dụng các tính năng mà nền tảng cung cấp hoặc đóng gói một ứng dụng hợp pháp bằng một đoạn mã độc hại. Bên cạnh đó, khai thác các lỗ hổng trong nền tảng, phần cứng hoặc các ứng dụng đã cài đặt khác để thực hiện các hành vi độc hại. Chủ yếu, các tác giả phần mềm độc hại tìm cách truy cập vào dữ liệu bí mật làm rò rỉ thông tin riêng tƣ của ngƣời dùng thiết bị. Ngay cả 4 các ứng dụng hợp pháp cũng có nguy cơ xâm phạm quyền riêng tƣ.
Các nghiên cứu trong lĩnh vực phát hiện phần mềm độc hại Android hoạt động theo ba cách tiếp cận: phân tích tĩnh, phân tích động hoặc kết hợp. Trong phân tích tĩnh, phần mềm độc hại đƣợc tách rời thành mã nguồn từ nơi các tính năng cụ thể đƣợc trích xuất. Trong phân tích động, phần mềm độc hại đƣợc giám sát tại thời điểm chạy trong môi trƣờng ảo. Trong cả hai cách tiếp cận, các thuật toán học máy đã đƣợc sử dụng để xây dựng các mô hình phân loại bằng cách huấn luyện các bộ phân loại với bộ dữ liệu về các tính năng malware đƣợc thu thập từ phân tích tĩnh hoặc động.
Sau đó, các mô hình phân loại đã học đƣợc sử dụng để phát hiện và phân loại các ứng dụng độc hại. Hầu hết, các nghiên cứu về phát hiện phần mềm độc hại trên Android tập trung vào việc xác định các tính năng của ứng dụng độc hại bằng cách sử dụng các kỹ thuật máy học để nhận ra và mô hình hóa các mẫu độc hại của các tính năng tĩnh và hành vi động của phần mềm độc hại. GIỚI THIỆU TỔNG QUAN VỀ ANDROID 1. Kiến trúc chung của Android Kiến trúc tổng quát của Android bao gồm bốn lớp quản lý toàn bộ hệ thống, bắt đầu từ cảm biến phần cứng đến các ứng dụng cấp cao của ngƣời dùng.
Mỗi lớp cung cấp các dịch vụ cụ thể và các nhóm chƣơng trình chạy các chức năng tƣơng ứng. Kiến trúc chung của Android Các lớp đầu tiên, lớp nhân Linux là lớp quan trọng nhất và nằm ở dƣới cùng; nó đại diện cho trái tim của hệ thống Android. Nó cung cấp các dịch vụ hệ điều hành và quản lý các chức năng của phần cứng nhƣ bộ nhớ, nguồn, trình điều khiển, ngăn xếp mạng, cài đặt bảo mật, thƣ viện đƣợc chia sẻ. Lớp thứ hai, lớp thƣ viện gốc, cung cấp các thƣ viện gốc là một tập hợp các hƣớng dẫn quản lý việc xử lý dữ liệu.
Lớp gốc cung cấp các thƣ viện nguồn mở, chẳng hạn nhƣ trình quản lý giao diện, phƣơng tiện, SQLite, Webkit, OpenGL — ES, FreeType và SSL. Tóm lại, các thƣ viện đó thực hiện các công việc sau: Thƣ viện trình quản lý giao diện để trình bày các cửa sổ trên màn hình; thƣ viện khung phƣơng tiện để xử lý đầu vào và đầu ra của dữ liệu video và âm thanh; Thƣ viện SQLite dành cho các hoạt động cơ sở dữ liệu; Webkit để hỗ trợ các trình duyệt web; OpenGL- ES để hỗ trợ đồ họa 2D và 3D hiệu suất cao; FreeType để hỗ trợ phông chữ; Thƣ viện SSL dành cho việc cung cấp các dịch vụ của giao thức SSL và TLS. 6 Lớp thứ ba, lớp khung ứng dụng (Application framework), bao gồm các API Android. API là các lớp và giao diện để phát triển ứng dụng Android.
Lớp này tƣơng tác với các ứng dụng đang chạy và quản lý các chức năng cơ bản trên thiết bị. Các chƣơng trình quan trọng nhất trong lớp này là trình quản lý hoạt động, nhà cung cấp nội dung, trình quản lý điện thoại, trình quản lý vị trí và trình quản lý tài nguyên. Mỗi trình quản lý chịu trách nhiệm quản lý một chức năng cụ thể. Ví dụ: trình quản lý hoạt động kiểm soát vòng đời của ứng dụng.
Trình cung cấp nội dung quản lý việc chia sẻ dữ liệu giữa các ứng dụng. Trình quản lý điện thoại cung cấp các thiết bị liên quan đến cuộc gọi thoại. Trình quản lý tài nguyên quy định các tài nguyên cần thiết để chạy ứng dụng. Cuối cùng, lớp ứng dụng là lớp trên cùng, nơi các chức năng của điện thoại đƣợc cung cấp cho ngƣời dùng cuối.
Lớp ứng dụng cung cấp các chức năng bao gồm thực hiện cuộc gọi, quản lý danh bạ, gửi tin nhắn và duyệt web. Trong lớp này, Android cung cấp một tập hợp các ứng dụng cốt lõi, chẳng hạn nhƣ ứng dụng email, lịch, trình duyệt, bản đồ, danh bạ, chƣơng trình SMS, thƣ viện. Các thành phần của ứng dụng Android Một ứng dụng Android bao gồm hai thƣ mục và một tệp: Lớp, tài nguyên và AndroidManifest.xml tƣơng ứng. Thành phần ứng dụng Android và các loại tính năng tĩnh Thƣ mục Lớp (class) chứa mã nguồn của ứng dụng; thƣ mục Tài nguyên chứa đa phƣơng tiện của ứng dụng; AndroidManifest.xml là tệp cấu hình của ứng dụng liệt kê thông tin cần thiết về ứng dụng dành cho hệ thống Android.
Thông tin đƣợc liệt kê trong tệp AndroidManifest.xml nhƣ sau: tên gói Java, các thành phần của ứng dụng, các quy trình đƣợc lƣu trữ, quyền, các lớp thiết bị đo và các thƣ viện khác. Trong giai đoạn biên dịch, các thƣ mục và tệp AndroidManifest.xml đƣợc nhóm lại với nhau để tạo tệp thực thi của ứng dụng ở định dạng. Cấu trúc của ứng dụng Android bao gồm bốn thành phần: Activity, Service, BroadCastReceiver và ContentProvider [2]. Tất cả các thành phần đó đƣợc nhà phát triển ứng dụng xác định trong tệp AndroidManifest.
• Activities: Xác định giao diện ngƣời dùng, đƣợc kích hoạt bởi ngƣời 8 dùng khi họ tƣơng tác với các thành phần giao diện của ứng dụng, chẳng hạn nhƣ: nút, menu, biểu tƣợng. • Services: Xác định các tiến trình nền nhƣ tải xuống tệp hoặc phát nhạc sau khi đóng giao diện ứng dụng ngƣời dùng. Bất kỳ thành phần nào cũng có thể bắt đầu một dịch vụ bằng cách gọi một của hai phƣơng pháp: - StartService(): Dịch vụ tiếp tục chạy cho đến khi dừng một cách rõ ràng. - BinService(): Dịch vụ đƣợc liên kết với thành phần.
Nó tiếp tục chạy miễn là thành phần đang chạy và dừng khi thành phần dừng lại. • BroadCastReceiver: đƣợc ứng dụng sử dụng nhƣ một hộp thƣ để nhận và trả lời các tin nhắn quảng bá (intent) của các ứng dụng khác hoặc hệ thống, chẳng hạn nhƣ tin nhắn đƣợc gửi bởi hệ thống khi Pin đạt đến giới hạn thấp. • ContentProvider: đƣợc sử dụng để lƣu trữ dữ liệu của ứng dụng và chia sẻ dữ liệu đó với các ứng dụng khác; nó cung cấp các chức năng chèn, xóa và truy vấn cơ sở dữ liệu. Kiến trúc tệp APK Các phần trƣớc đã trình bày ngắn gọn các thành phần khác nhau của hệ thống Android, cần thiết cho một ứng dụng chạy trên Android.
Phần này cung cấp tổng quan về các thành phần khác nhau của tệp APK. Tệp APK (gói ứng dụng) là định dạng tệp đƣợc sử dụng để phân phối các ứng dụng trong Android. Gói APK bao gồm thành phần chính của ứng dụng Android, là tệp dex đƣợc tạo sau khi biên dịch mã bytecode của tất cả các tệp nguồn Java trong Android. Sau đây là thông tin chi tiết về các thành phần khác xuất hiện trong một tệp APK.
Android Manifest: Tệp kê khai Android trình bày thông tin cần thiết về ứng dụng cho hệ thống Android, thông tin mà hệ thống phải có trƣớc khi có thể chạy bất kỳ mã nào của ứng dụng. Mọi ứng dụng đều đi kèm với tệp AndroidManifest.xml thông báo cho hệ thống về các thành phần của ứng dụng.xml chứa thông tin về gói ứng dụng, bao gồm các thành phần của ứng dụng nhƣ hoạt động, dịch vụ, bộ thu phát sóng, nhà cung cấp nội dung.xml cũng chỉ định các yêu cầu ứng dụng nhƣ yêu cầu phần cứng đặc biệt (ví dụ: truy cập camera hoặc cảm biến GPS ) hoặc phiên bản API tối thiểu cần thiết để chạy một ứng dụng. Để truy cập các thành phần đƣợc bảo vệ (ví dụ: quyền truy cập vị trí hoặc quyền truy cập vào thẻ SD), một ứng dụng cần đƣợc cấp quyền. Tất cả các quyền cần thiết phải đƣợc xác định trong AndroidManifest.xml của ứng dụng.
Bằng cách này, trong quá trình cài đặt, hệ điều hành Android có thể nhắc ngƣời dùng tổng quan về các quyền đã sử dụng mà sau đó ngƣời dùng phải cấp cho ứng dụng quyền truy cập để sử dụng các thành phần này một cách rõ ràng.