5 Kết luận & Hướng phát triển
2.3 Giao diện điều khiển của ứng dụng Bitdefender Anti-Theft
2.5 Hệ điều hành Android
Android là một môi trường hệ điều hành hoàn chỉnh dựa trên hệ điều hành nhân Linux v2.6. Lúc đầu, đích triển khai đối với Android là lĩnh vực điện thoại di động, gồm các loại điện thoại thông minh và các loại thiết bị điện thoại kiểu gập chi phí thấp. Tuy nhiên, phạm vi đầy đủ các dịch vụ điện toán của Android và sự hỗ trợ chức năng phong phú làm cho nó có tiềm năng mở rộng vượt ra ngoài thị trường điện thoại di động. Do đó, Android có thể hữu ích đối với các nền tảng và ứng dụng khác. Trong phần này, khóa luận xin điểm qua khái quát về hệ điều hành này và lý do vì sao tác giả lại chọn Android làm nền tảng đầu tiên để nghiên cứu, phát triển hệ thống quản lý bảo mật.
2.5.1 Sự phát triển của hệ điều hành Android
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) phát triển bởi Google. Trước đây, Android được phát triển bởi công ty liên hợp Android (sau đó được Google mua lại vào năm 2005) [24].
Nền tảng Android được các công ty phần mềm lựa chọn vì chi phí phát triển thấp, tùy chỉnh, hệ thống điều hành nhẹ cho các thiết bị công nghệ cao mà không cần phải phát triển lại từ đầu. Android có một cộng đồng những nhà phát triển rất lớn viết các ứng dụng cho hệ điều hành của mình. Hiện tại có khoảng 700000 ứng dụng và game trên Google Play, số lượt tải ứng dụng đạt ngưỡng 25 tỷ lượt từ khi Android xuất hiện và bình quân có khoảng 1.5 tỷ lượt tải ứng dụng mỗi tháng và không ngừng tăng lên [19]. Những yếu tố này đã giúp cho Android để trở thành nền tảng được sử dụng rộng rãi nhất trên điện thoại thông minh, vượt qua nền tảng Symbian trong quý IV năm 2010 [22]. Trong quý III năm 2012, các thiết bị Android được bán ra chiếm thị phần 75% thị trường điện thoại thông minh toàn thế giới với 136 triệu thiết bị được kích hoạt [6].
2.5.2 Đặc trưng của hệ điều hành Android
Android cung cấp đầy đủ một bộ phần mềm cho các thiết bị điện thoại: một hệ điều hành, các middleware và ứng dụng chủ chốt. Hệ điều hành Android có bốn đặc trưng sau: tính mở, tính ngang hàng giữa các ứng dụng, phá vỡ ranh giới ứng dụng và dễ dàng phát triển ứng dụng [2].
1. Tính mở: Hệ điều hành Android được xây dựng từ cấp độ phần cứng cho phép nhà phát triển xây dựng các ứng dụng sử dụng lợi thế đầy đủ của thiết bị đã cung cấp. Android được xây dựng để thực sự mở. Một ứng dụng có thể gọi tới bất kỳ một chức năng cốt lõi nào của điện thoại như thực hiện cuộc gọi, gửi tin nhắn hay sử dụng máy ảnh, cho phép các nhà phát triển tạo ra những trải nghiệm phong phú và gắn kết hơn cho người sử dụng. Android được xây dựng trên nhân Linux mở. Thêm nữa, nó sử dụng một máy ảo tùy biến đượ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. Android là một mã nguồn mở, nó có thể được mở rộng để kết hợp với các công nghệ tiên tiến mới xuất hiện. Nền tảng này sẽ tiếp tục phát triển bởi cộng đồng các nhà phát triển làm việc với nhau để tạo ra các ứng dụng di động sáng tạo. Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 84 công ty phần cứng, phần mềm và viễn thông nhằm mục đích tạo nên một chuẩn mở cho điện thoại di động trong tương lai.1
2. Tính ngang hàng giữa các ứng dụng: Android không phân biệt giữa các ứng dụng cốt lõi của điện thoại và các ứng dụng của bên thứ ba. Tất cả các ứng dụng đều được xây dựng để có thể truy cập bằng tất cả khả năng của một điện thoại cung cấp cho người dùng. Với các thiết bị được xây dựng trên nền tảng Android, các ứng dụng có thể đáp ứng đầy đủ nhu cầu của người sử dụng. Người dùng có thể tự do tùy biến, cài đặt ứng dụng và tùy chỉnh thiết bị.
3. Phá vỡ ranh giới ứng dụng: Android phá vỡ các rào cản để xây dựng các ứng dụng mới và sáng tạo. Ví dụ, một nhà phát triển có thể kết hợp thông tin từ các trang web với dữ liệu trên điện thoại di động của một cá nhân - ví dụ như địa chỉ liên lạc của người dùng, lịch, hoặc vị trí địa lý - để cung cấp một trải nghiệm người dùng có liên quan hơn. Với Android, một nhà phát triển có thể xây dựng một ứng dụng cho phép người dùng xem vị trí của bạn bè của họ và được cảnh báo khi họ đang có trong vùng phụ cận như một cơ hội để kết nối.
4. Dễ dàng phát triển ứng dụng: Android cung cấp khả năng truy cập vào một loạt các thư viện và các công cụ hữu ích có thể được sử dụng để 1http://www.openhandsetalliance.com/oha_faq.html, Accessed Feb. 16, 2013
xây dựng các ứng dụng hữu ích. Ví dụ, Android cho phép các nhà phát triển lấy được vị trí của điện thoại, cho phép các thiết bị giao tiếp với các mạng xã hội. Ngoài ra, Android còn bao gồm một tập hợp đầy đủ các công cụ đã được xây dựng từ phần cứng cung cấp cho các nhà phát triển hiệu năng cao và cái nhìn sâu vào các ứng dụng của họ.
Với những đặc tính trên của hệ điều hành Android, tác giả quyết định sử dụng nền tảng này là nền tảng đầu tiên để phát triển hệ thống quản lý bảo mật. 2.5.3 Lập trình trên Android
Hiện nay, có nhiều công nghệ được sử dụng để phát triển ứng dụng trên thiết bị di động chạy trên nền tảng Android, có thể kể đến là PhoneGap của Adobe, Mono Android của Xamarin, Android của Google.
Mono Android của Xamarin là một công nghệ mới, sử dụng nền tảng ngôn ngữ lập trình C# để phát triển ứng dụng trên Android, sau đó có thể tùy chỉnh nhanh chóng để có được một ứng dụng chạy trên các nền tảng khác như iOS hay Windows Phone. Tuy nhiên, vì công cụ hỗ trợ lập trình và API phải có bản quyền để phát triển ứng dụng, nên nhóm tác giả đã không chọn giải pháp này. Về PhoneGap, đây là một công nghệ Hybrid sử dụng kết hợp Javascript, HTML5, CSS để xây dựng ứng dụng đa nền tảng. Chúng ta có thể sử dụng lợi thế của HTML5, CSS, Javascript để xây dựng một ứng dụng đẹp, mượt mà, tương tác server tốt. Nhưng vì trong ứng dụng này, đòi hỏi việc tương tác phần cứng thiết bị, các dịch vụ chạy ngầm, các file/thư mục trong hệ thống phần cứng ở mức độ cao và yêu cầu quyền root user thì PhoneGap lại không là một sự lựa chọn hợp lý.
Vì vậy, khi xem xét đến việc sử dụng chính Android API của Google cung cấp để phát triển ứng dụng, nhóm tác giả đã giải quyết được hai vấn đề trên, đồng thời cũng nhận thấy rằng Android API hiện tại đã được phát triển gần như hoàn chỉnh, nên mọi sự hỗ trợ dành cho việc phát triển là đầy đủ. Kết hợp với cộng đồng phát triển lớn, nên có sự hỗ trợ hay thảo luận khi gặp các vấn đề khó giải quyết trong quá trình thực hiện đề tài. Nhóm đã quyết định chọn Android API làm nền tảng chính để xây dựng ứng dụng này.
2.6 Android Forensics
2.6.1 Nhận dạng và vô hiệu hóa điện thoại AndroidTrong thực tế, chúng ta có thể xác định thiết bị điện thoại di động dựa vào Trong thực tế, chúng ta có thể xác định thiết bị điện thoại di động dựa vào hai yếu tố: thiết bị và SIM. Thiết bị được xác định bởi một dãy số gọi là IMEI, ngược lại, thẻ SIM thì được xác định bằng dãy MSISDN. Theo London Taxi 2007, các thiết bị độc lập không thể nhận dạng được nếu thiếu một trong hai thông tin này [16].
Có một vài cách thức bảo mật cơ bản để bảo vệ điện thoại của bạn. Thẻ SIM có chứa một chuỗi password gọi là Personal Identification Number (PIN) thực hiện theo cơ chế ngăn chặn người dùng không được xác thực. Tuy nhiên, việc sử dụng mã PIN chỉ được thực thi khi thẻ SIM được chuyển đổi qua lại giữa các thiết bị. Thẻ SIM vẫn hoạt động bình thường kể cả khi điện thoại hết pin. Người dùng có vẻ như miễn cưỡng sử dụng mã PIN mặc dầu nhà cung cấp dịch vụ có một số biện pháp để ngăn chặn sử dụng SIM của họ một cách trái phép [11]. Theo một khảo sát trên 297 người sử dụng điện thoại di động (thực hiện bởi Clarke and Furnell (2005))[3] có đến 34% người dùng không sử dụng mã PIN và 30% người dùng tin rằng chứng thực mã PIN là phiền phức. Với 66% người dùng còn lại thì: 38% trong số đó quên mã PIN ít nhất một lần và tự khóa thẻ SIM đối với chính mình, 45% sử dụng mã PIN mặc định, 42% thay đổi chúng một lần sau khi mua và chỉ có 13% thay đổi mã PIN nhiều hơn một lần.
Thêm vào đó, tất cả các nhà cung cấp dịch vụ đều có thể vô hiệu hóa thẻ SIM nếu bạn yêu cầu. Ở Việt Nam, người dùng có thể dễ dàng vô hiệu hóa thẻ SIM của mình bằng cách cung cấp một số thông tin cần thiết cho nhà cung cấp dịch vụ. Việc này đặc biệt quan trọng để ngăn chặn kẻ xấu lợi dụng hoặc đọc lén các thông tin trên SIM. Tuy nhiên, việc vô hiệu hóa này không đồng thời khóa thiết bị chứa chúng. Điều này tạo điều kiện cho kẻ xấu có thể gắn thẻ SIM khác vào thiết bị và sử dụng.
Ngoài ra, một số nhà cung cấp cũng có thể vô hiệu hóa thiết bị nếu như người dùng biết số IMEI của thiết bị. Tuy nhiên một vấn đề nghiêm trọng là rất ít người sử dụng biết được số IMEI của chính họ. Vấn đề thứ hai cần chú ý là không phải số IMEI là duy nhất (khoảng 10% hoặc ít hơn [11]). Do đó việc vô hiệu hóa thiết bị theo số IMEI có thể ảnh hưởng đến những người dùng hợp pháp. Hơn nữa với một số thiết bị chuyên dụng, người dùng có thể thay đổi số
IMEI của thiết bị một cách nhanh chóng và hợp lệ.
Rõ ràng, việc vô hiệu hóa thẻ SIM chỉ có thể giảm được nguy cơ mất an toàn thông tin trên thẻ SIM, dữ liệu trên thiết bị vẫn có thể bị đọc lén hoặc sử dụng vào mục đích xấu. Việc vô hiệu hóa thiết bị cũng không khả thi. Thực tế này đặt ra vấn đề làm cách nào để có thể vô hiệu hóa dữ liệu trên thiết bị cũng như cảnh báo khi có hành vi thay thế thẻ SIM của thiết bị?
2.6.2 Tổ chức và lưu trữ dữ liệu của hệ điều hành An-droid droid
Các thiết bị Android lưu trữ một lượng dữ liệu đồ sộ về thông tin cá nhân lẫn công việc. Các ứng dụng là nơi lưu trữ và sản sinh chính của những dữ liệu này và bao gồm các loại sau:
• Các ứng dụng cốt lõi của hệ điều hành Android.
• Các ứng dụng được cài đặt bởi nhà sản xuất thiết bị.
• Các ứng dụng được cài đặt bởi các thiết bị mạng không dây.
• Các ứng dụng thêm vào của Google/Android.
• Các ứng dụng cài đặt bởi người sử dụng, điển hình là từ Google Play (Android Market).
Các ứng dụng này lưu trữ dữ liệu tại một trong hai vị trí: lưu trữ tại bộ nhớ trong của thiết bị hoặc lưu trữ tại bộ nhớ ngoài của thiết bị. Khi lưu trữ ứng dụng ở bộ nhớ ngoài (SD Card hay emulated SD Card), người dùng có thể chỉ định vị trí bất kỳ. Ngược lại, lưu trữ dữ liệu ở bộ nhớ trong của thiết bị phải chịu sự quản lý điều hành của Android APIs. Khi một ứng dụng được cài đặt, dữ liệu của ứng dụng này được lưu trữ trong thư mục con của /data/data và được đặt tên với tên package tương ứng. Ví dụ, ứng dụng Gmail với tên package com.google.android.gm, dữ liệu của ứng dụng này sẽ được lưu trữ tại /data/data/com.google.android.gm. Bên trong thư mục dữ liệu của ứng dụng, Android quy định một chuẩn chung cho các thư mục con.
Bảng 2.2 giới thiệu một số thư mục con chung cần thiết của một ứng dụng lưu trữ tại /data/data.
Tên thư mục Mô tả chi tiết
shared-prefs Thư mục lưu trữ các biến Shared Preferences theo định dạng xml.
lib Thư mục lưu trữ các file thư viện tùy chỉnh cần thiết cho ứng dụng.
files Các files của ứng dụng được tạo bởi nhà phát triển. cache Lưu trữ cache files sinh ra bởi ứng dụng (thường là cache
files của web browser hoặc các ứng dụng sử dụng WebKit engine.
databases Lưu trữ dữ liệu SQLite databases và các journal files. Bảng 2.2: Thư mục con của /data/data/<packageName> Android cung cấp năm phương thức lưu trữ dữ liệu cho các ứng dụng: 1. Shared preferences
Shared preferences cho phép các lập trình viên lưu trữ các cặp khóa-giá trị (key-value) của những kiểu dữ liệu chính (boolean, float, int, long, string). Các dữ liệu đó được lưu trữ trong các file xml và đặt tại thư mục shared- prefs. Ví dụ, ứng dụng Gmail của Google lưu trữ các biến shared preferences trong file Gmail.xml (hình 2.4). Qua hình trên, chúng ta có thể thấy được tên tài khoản Gmail của người sử dụng được lưu tại file xml này.