Đặc trưng của hệ điều hành Android

Một phần của tài liệu Khóa luận tốt nghiệp xây dựng hệ thống quản lý bảo mật trên android smartphones (Trang 30)

2 Khảo sát hiện trạng và các kiến thức liên quan

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. (adsbygoogle = window.adsbygoogle || []).push({});

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.

2. Các file lưu trữ tại bộ nhớ trong

Các ứng dụng có thể lưu trữ dữ liệu trên các files được lưu trữ tại /data/- data/<package-name> và nhà phát triển có thể quản lý, thao tác trên những dữ liệu này. Mặc định, những dữ liệu này chỉ có thể truy xuất bởi ứng dụng sinh ra nó, ngay cả người dùng cũng không thể xem được nội dung của file nếu họ không có quyền root. Các lập trình viên có thể chỉnh sửa tùy chọn bảo mật của hệ điều hành để các tiến trình của ứng dụng khác có thể truy xuất và cập nhật lại các files này. Ví dụ về cấu trúc thư mục dữ liệu của ứng dụng Google Maps /data/data/com.google.android.apps.maps (Hình 2.5).

(a) Cấu trúc thư mục dữ liệu (b) Cấu trúc thư mục databases Hình 2.5: Cấu trúc thư mục dữ liệu của ứng dụng Google Maps

3. Các file lưu trữ tại bộ nhớ ngoài

Phương thức lưu trữ này kém an toàn về bảo mật và vị trí lưu trữ hơn phương thức trên. Ưu điểm về sự thuận tiện có được khi sử dụng SD Cards cũng chính là nguyên nhân gây mất an toàn dữ liệu lớn nhất của phương thức lưu trữ này. Bất kỳ thiết bị nào cũng có thể sử dụng những dữ liệu được lưu trữ tại đây (chẳng hạn như hình ảnh, video, . . . ). Rõ ràng, khách hàng sẽ không hài lòng khi dữ liệu trên SD Cards của họ không sử dụng được giữa các thiết bị.

4. SQLite databases

dụng SQLite để phát triển ứng dụng. Các files SQLite thường được lưu trữ theo đường dẫn /data/data<packageName>/databases. Tuy nhiên, không có sự hạn chế nào về sự lưu trữ các file database này. Hình 2.6 cho thấy cấu trúc thư mục databases của ứng dụng Android Browser.

Hình 2.6: Cấu trúc thư mục database của ứng dụng Android Browser

5. Network

Phương thức lưu trữ này thực sự hữu ích trong thời đại điện toán đám mây ngày nay. Các lập trình viên có thể sử dụng các classes và phương thức trong hai package java.net.* và android.net.* để tương tác với network, web servers. Các ứng dụng tương tác với network cần thiết nhiều mã lệnh, trong khi các dữ liệu có thể không được lưu trữ trên thiết bị. Do đó, thông tin cấu hình và các file database là những thông tin quan trọng cần khai thác nhất đối với các ứng dụng network.

Dropbox hiện tại là một ứng dụng file sharing khá phổ biến trên các nhiều nền tảng khác nhau. Trên Android, ứng dụng được cài đặt khoảng 100 triệu lần với gần 175000 người dùng đánh giá 5 sao.1 Sau khi cài đặt, chúng ta có thể tìm thấy thư mục dữ liệu của ứng dụng tại /data/data/- com.dropbox.android.

Dữ liệu có thể được phát hiện ở ít nhất bốn trong năm phương thức này [12]. Ngoài ra, Linux kernel và Android stack còn cung cấp thông tin thông qua các

file logs, debugging và các services. Tất nhiên, mặc định hầu hết những dữ liệu quan trọng chỉ có thể đọc được khi chúng ta có quyền root user. Tận dụng khai thác những dữ liệu này, chúng ta có thể tìm được nhiều thông tin nhạy cảm của người dùng. Điều này giúp ích cho các cơ quan pháp chứng và hỗ trợ người dùng tìm kiếm thiết bị một cách dễ dàng và chính xác hơn.

2.6.3 Android Rooting và ảnh hưởng của nó đến mobileforensics forensics

Như đã trình bày ở phần trên các thông tin quan trọng và nhạy cảm của người dùng đều được lưu trữ tại bộ nhớ của thiết bị hoặc thẻ nhớ SD Card. Không giống như các hệ điều hành máy tính, mặc định một ứng dụng Android không thể tự động truy cập đến dữ liệu hoặc các files được tạo bởi một ứng dụng Android khác. Bản chất máy ảo Android chỉ cho phép mỗi ứng dụng chạy trên tiến trình riêng của mình. Bảo mật trên nền tảng Android dựa vào các quyền hạn được gán bởi người dùng hoặc định danh nhóm người dùng trên các ứng dụng. Một ứng dụng không thể can thiệp đến dữ liệu của một ứng dụng khác khi mà nó không được cấp quyền để làm thế1[15]. Ngoài ra, các thông tin được ẩn và không thể can thiệp bởi người dùng thiết bị. Tuy nhiên, nếu người dùng thực hiện rooting thiết bị, việc đọc và tìm kiếm những dữ liệu lại trở thành dễ dàng.

Rooting một thiết bị chỉ đơn thuần có nghĩa là cho phép thiết bị đạt được quyền truy cập đến thư mục root (/) và có những quyền hạn của root user. Một số người dùng thích sửa đổi các thiết bị vượt ra ngoài ý định của các nhà sản xuất thiết bị hoặc nhà cung cấp. Họ sử dụng thuật ngữ rooting mang ý nghĩa truy cập được vào thư mục gốc và các quyền hạn để thực hiện chỉnh sửa thiết

Một phần của tài liệu Khóa luận tốt nghiệp xây dựng hệ thống quản lý bảo mật trên android smartphones (Trang 30)