Di tingkat sistem operasi, platform Android menyediakan keamanan kernel Linux, serta fasilitas komunikasi antarproses (IPC) yang aman untuk memungkinkan komunikasi yang aman antara aplikasi yang berjalan di proses yang berbeda. Fitur keamanan ini di tingkat OS memastikan bahwa kode native juga dibatasi oleh Application Sandbox. Baik kode tersebut merupakan hasil dari perilaku aplikasi yang disertakan atau eksploitasi kerentanan aplikasi, sistem dirancang untuk mencegah aplikasi nakal membahayakan aplikasi lain, sistem Android, atau perangkat itu sendiri. Lihat Konfigurasi Kernel untuk mengetahui tindakan yang dapat Anda lakukan untuk memperkuat kernel di perangkat. Lihat Dokumen Definisi Kompatibilitas (CDD) Android untuk mengetahui setelan yang diperlukan.
Keamanan Linux
Fondasi platform Android adalah kernel Linux. Kernel Linux telah digunakan secara luas selama bertahun-tahun, dan digunakan di jutaan lingkungan yang sensitif terhadap keamanan. Melalui sejarahnya yang terus-menerus diteliti, diserang, dan diperbaiki oleh ribuan developer, Linux telah menjadi kernel yang stabil dan aman yang dipercaya oleh banyak perusahaan dan profesional keamanan.
Sebagai dasar untuk lingkungan komputasi seluler, kernel Linux menyediakan beberapa fitur keamanan utama untuk Android, termasuk:
- Model izin berbasis pengguna
- Isolasi proses
- Mekanisme yang dapat diperluas untuk IPC yang aman
- Kemampuan untuk menghapus bagian kernel yang tidak perlu dan berpotensi tidak aman
Sebagai sistem operasi multi-pengguna, tujuan keamanan fundamental kernel Linux adalah mengisolasi resource pengguna satu sama lain. Filosofi keamanan Linux adalah untuk melindungi resource pengguna dari satu sama lain, Linux:
- Mencegah pengguna A membaca file pengguna B
- Memastikan bahwa pengguna A tidak menghabiskan memori pengguna B
- Memastikan pengguna A tidak menghabiskan resource CPU pengguna B
- Memastikan bahwa pengguna A tidak menghabiskan perangkat pengguna B (misalnya, telepon, GPS, dan Bluetooth)
Sandbox Aplikasi
Keamanan aplikasi Android diberlakukan oleh Sandbox Aplikasi, yang mengisolasi aplikasi satu sama lain serta melindungi aplikasi dan sistem dari aplikasi berbahaya. Untuk mengetahui detail selengkapnya, lihat Sandbox Aplikasi.
Partisi sistem dan mode aman
Berbagai partisi yang dilindungi integritas berisi kernel Android serta library sistem operasi, runtime aplikasi, framework aplikasi, dan aplikasi. Partisi ini disetel ke hanya baca. Saat pengguna mem-booting perangkat ke mode aman, aplikasi pihak ketiga dapat diluncurkan secara manual oleh pemilik perangkat, tetapi tidak diluncurkan secara default.
Izin sistem file
Di lingkungan bergaya UNIX, izin sistem file memastikan bahwa satu pengguna tidak dapat mengubah atau membaca file pengguna lain. Dalam kasus Android, setiap aplikasi berjalan sebagai penggunanya sendiri. Kecuali jika developer membagikan file ke aplikasi lain secara eksplisit, file yang dibuat oleh satu aplikasi tidak dapat dibaca atau diubah oleh aplikasi lain.
Security-Enhanced Linux
Android menggunakan Security-Enhanced Linux (SELinux) untuk menerapkan kebijakan kontrol akses dan menetapkan kontrol akses wajib (mac) pada proses. Lihat Linux yang Disempurnakan Keamanan di Android untuk mengetahui detailnya .
Booting Terverifikasi
Android 7.0 dan yang lebih baru mendukung Verified Boot yang diterapkan secara ketat, yang berarti
perangkat yang disusupi tidak dapat melakukan booting. Booting Terverifikasi menjamin integritas
software perangkat mulai dari root of trust hardware hingga partisi
sistem. Selama booting, setiap tahap memverifikasi integritas
dan keaslian tahap berikutnya secara kriptografis sebelum menjalankannya.
Lihat Booting
terverifikasi untuk mengetahui detail selengkapnya.
Kriptografi
Android menyediakan serangkaian API kriptografis untuk digunakan oleh aplikasi. Hal ini mencakup implementasi primitif kriptografis standar dan umum digunakan seperti AES, RSA, DSA, dan SHA. Selain itu, API disediakan untuk protokol level yang lebih tinggi seperti SSL dan HTTPS.
Android 4.0 memperkenalkan class KeyChain untuk memungkinkan aplikasi menggunakan penyimpanan kredensial sistem untuk kunci pribadi dan rantai sertifikat.
Rooting perangkat
Secara default, di Android, hanya kernel dan sebagian kecil layanan inti dijalankan dengan izin root. SELinux masih membatasi proses ruang pengguna yang berjalan sebagai root. Verified Boot mencegah pengguna atau layanan dengan izin root mengubah sistem operasi secara permanen.
Kemampuan untuk mengubah perangkat Android yang mereka miliki penting bagi developer yang menggunakan platform Android. Di banyak perangkat Android, pengguna memiliki kemampuan untuk membuka kunci bootloader agar dapat menginstal sistem operasi alternatif. Sistem operasi alternatif ini dapat memungkinkan pemilik mendapatkan akses root untuk tujuan men-debug aplikasi dan komponen sistem atau mengakses fitur yang tidak ditampilkan ke aplikasi oleh Android API.
Di beberapa perangkat, orang yang memiliki kontrol fisik atas perangkat dan kabel USB dapat menginstal sistem operasi baru yang memberikan hak istimewa root kepada pengguna. Untuk melindungi data pengguna yang ada dari kompromi, mekanisme membuka kunci bootloader mengharuskan bootloader menghapus data pengguna yang ada sebagai bagian dari langkah membuka kunci. Akses root yang diperoleh melalui eksploitasi bug kernel atau celah keamanan dapat mengabaikan perlindungan ini.
Mengenkripsi data dengan kunci yang disimpan di perangkat tidak melindungi data aplikasi dari pengguna root di perangkat yang telah di-root. Aplikasi dapat menambahkan lapisan perlindungan data menggunakan enkripsi dengan kunci yang disimpan di luar perangkat, seperti di server atau sandi pengguna. Pendekatan ini dapat memberikan perlindungan sementara saat kunci tidak ada, tetapi suatu saat kunci harus diberikan ke aplikasi, lalu dapat diakses oleh pengguna root.
Pendekatan yang lebih andal untuk melindungi data dari pengguna root adalah melalui penggunaan solusi hardware. OEM dapat memilih untuk mengimplementasikan solusi hardware yang membatasi akses ke jenis konten tertentu seperti DRM untuk pemutaran video, atau penyimpanan tepercaya terkait NFC untuk Google Wallet. Jika perangkat hilang atau dicuri, enkripsi penyimpanan memastikan bahwa data pengguna tidak dapat diakses tanpa mengetahui kredensial layar kunci pengguna.
Fitur keamanan pengguna
Enkripsi penyimpanan
CDD mewajibkan semua perangkat yang diluncurkan dengan Android 10 atau yang lebih tinggi, dan sebagian besar perangkat yang diluncurkan dengan Android 6.0 atau yang lebih tinggi, mengaktifkan enkripsi penyimpanan secara default.
Implementasi enkripsi penyimpanan Android saat ini adalah enkripsi berbasis file yang dikombinasikan dengan enkripsi metadata. Enkripsi berbasis file mengenkripsi konten dan nama file secara transparan di partisi userdata, menggunakan kunci yang berbeda untuk direktori yang berbeda. Layanan ini menyediakan direktori penyimpanan yang dienkripsi dengan kredensial dan perangkat untuk setiap pengguna, termasuk profil kerja.
Enkripsi metadata melengkapi enkripsi berbasis file. Fitur ini mengenkripsi semua blok di partisi userdata yang belum dienkripsi oleh enkripsi berbasis file, menggunakan kunci yang tidak terikat dengan kredensial layar kunci pengguna, tetapi masih dilindungi oleh Booting Terverifikasi.
Perlindungan kredensial layar kunci
Android dapat dikonfigurasi untuk memverifikasi kredensial layar kunci yang diberikan pengguna (PIN, sandi, atau pola) sebelum memberikan akses ke perangkat. Selain mencegah penggunaan perangkat yang tidak sah, kredensial layar kunci melindungi kunci kriptografis untuk data terenkripsi kredensial. Penggunaan kredensial layar kunci dan/atau aturan kompleksitas kredensial dapat diwajibkan oleh administrator perangkat.
Administrasi perangkat
Android 2.2 dan yang lebih baru menyediakan Android Device Administration API, yang menyediakan fitur administrasi perangkat di tingkat sistem. Misalnya, aplikasi email Android bawaan menggunakan API untuk meningkatkan dukungan Exchange. Melalui aplikasi email, administrator Exchange dapat menerapkan kebijakan kredensial layar kunci — termasuk sandi alfanumerik atau PIN numerik — di seluruh perangkat. Administrator juga dapat menghapus total dari jarak jauh (yaitu, memulihkan setelan default pabrik pada) handset yang hilang atau dicuri.
Selain digunakan dalam aplikasi yang disertakan dengan sistem Android, API ini tersedia untuk penyedia solusi Pengelolaan Perangkat pihak ketiga. Detail tentang API disediakan di Administrasi Perangkat.