Android platformu, işletim sistemi düzeyinde Linux çekirdeğinin güvenliğini sağlar ve farklı işlemlerde çalışan uygulamalar arasında güvenli iletişimi etkinleştirmek için güvenli bir işlemler arası iletişim (IPC) olanağı sunar. OS düzeyindeki bu güvenlik özellikleri, yerel kodun bile Uygulama Korumalı Alanı tarafından kısıtlanmasını sağlar. Bu kod, dahil edilen uygulama davranışının sonucu veya bir uygulama güvenlik açığının istismarından kaynaklanıyor olsun, sistem, kötü amaçlı uygulamanın diğer uygulamalara, Android sistemine veya cihaza zarar vermesini önlemek için tasarlanmıştır. Gerekli ayarlar için Android Uyumluluk Tanımlama Belgesi'ne (CDD) bakın.
Linux güvenliği
Android platformunun temeli Linux çekirdeğidir. Linux çekirdeği yıllardır yaygın olarak kullanılıyor ve güvenlik açısından hassas milyonlarca ortamda kullanılıyor. Linux, binlerce geliştirici tarafından sürekli olarak araştırılıp saldırıya uğrayıp düzeltilen bir geçmişe sahip olduğundan birçok şirket ve güvenlik uzmanının güvendiği kararlı ve güvenli bir çekirdek haline geldi.
Mobil bilgi işlem ortamının temeli olan Linux çekirdeği, Android'e aşağıdakiler dahil olmak üzere çeşitli önemli güvenlik özellikleri sağlar:
- Kullanıcıya dayalı izin modeli
- İşlem yalıtımı
- Güvenli IPC için genişletilebilir mekanizma
- Çekirdeğin gereksiz ve güvenli olmayabilecek bölümlerini kaldırma
Çok kullanıcılı bir işletim sistemi olarak Linux çekirdeğinin temel güvenlik hedeflerinden biri, kullanıcı kaynaklarını birbirinden ayırmaktır. Linux güvenlik felsefesinin temelinde, kullanıcı kaynaklarını birbirinden korumak vardır. Linux:
- A kullanıcısının B kullanıcısının dosyalarını okumasını engeller
- A kullanıcısının B kullanıcısının belleğini tüketmesini önler
- A kullanıcısının B kullanıcısının CPU kaynaklarını tüketmemesini sağlar
- A kullanıcısının B kullanıcısının cihazlarını (ör. telefon, GPS ve Bluetooth) aşırı kullanmamasını sağlar
Uygulama Korumalı Alanı
Android'in uygulama güvenliği, uygulamaları birbirinden izole eden ve uygulamaları ile sistemi kötü amaçlı uygulamalardan koruyan Uygulama Korumalı Alanı tarafından zorunlu kılınmıştır. Daha fazla bilgi için Uygulama korumalı alanı başlıklı makaleyi inceleyin.
Sistem bölümü ve güvenli mod
Bütünlük korumalı çeşitli bölümlerde Android'in çekirdeği, işletim sistemi kitaplıkları, uygulama çalışma zamanı, uygulama çerçevesi ve uygulamalar bulunur. Bu bölüm salt okunur olarak ayarlanmıştır. Kullanıcı cihazı güvenli modda başlattığında üçüncü taraf uygulamaları cihaz sahibi tarafından manuel olarak başlatılabilir ancak varsayılan olarak başlatılmaz.
Dosya sistemi izinleri
UNIX tarzı bir ortamda dosya sistemi izinleri, bir kullanıcının başka bir kullanıcının dosyalarını değiştirememesini veya okuyamamasını sağlar. Android'de her uygulama kendi kullanıcısı olarak çalışır. Geliştirici dosyaları diğer uygulamalarla açıkça paylaşmadığı sürece, bir uygulama tarafından oluşturulan dosyalar başka bir uygulama tarafından okunamaz veya değiştirilemez.
Güvenlik Geliştirilmiş Linux
Android, erişim denetimi politikalarını uygulamak ve işlemlerde zorunlu erişim denetimi (mac) oluşturmak için Güvenlik Gelişmiş Linux'u (SELinux) kullanır. Ayrıntılar için Android'de Güvenliği Artırılmış Linux başlıklı makaleyi inceleyin.
Doğrulanmış Başlatma
Android 7.0 ve sonraki sürümler, güvenliği ihlal edilmiş cihazların önyükleme yapamayacağı anlamına gelen, sıkı şekilde uygulanan Doğrulanmış Önyükleme özelliğini destekler. Doğrulanmış Başlatma, donanım kök güven kaynağından sistem bölümüne kadar cihaz yazılımının bütünlüğünü garanti eder. Her aşama, başlatma sırasında bir sonraki aşamayı yürütmeden önce onun bütünlüğünü ve özgünlüğünü kriptografik olarak doğrular.
Daha fazla bilgi için Doğrulanmış
başlatma başlıklı makaleyi inceleyin.
Kriptografi
Android, uygulamaların kullanabileceği bir dizi kriptografik API sağlar. Bunlara AES, RSA, DSA ve SHA gibi standart ve yaygın olarak kullanılan kriptografik temel öğelerin uygulamaları dahildir. Ayrıca, SSL ve HTTPS gibi daha yüksek seviyeli protokoller için API'ler sağlanır.
Android 4.0, uygulamaların özel anahtarlar ve sertifika zincirleri için sistem kimlik bilgisi depolama alanını kullanmasına izin vermek amacıyla KeyChain sınıfını kullanıma sundu.
Cihazın root erişimi
Android'de varsayılan olarak yalnızca çekirdek ve temel hizmetlerin küçük bir alt kümesi kök izinleriyle çalışır. SELinux, root olarak çalışan kullanıcı alanı işlemlerini kısıtlamaya devam eder. Doğrulanmış Başlatma, root izinlerine sahip bir kullanıcının veya hizmetin işletim sistemini kalıcı olarak değiştirmesini önler.
Android platformuyla çalışan geliştiriciler, sahip oldukları Android cihazları değiştirme olanağına sahip olmalıdır. Birçok Android cihazda kullanıcılar, alternatif bir işletim sisteminin yüklenmesine izin vermek için önyükleyicinin kilidini açabilir. Bu alternatif işletim sistemleri, sahiplere uygulama ve sistem bileşenlerinde hata ayıklama amacıyla veya Android API'leri tarafından uygulamalara sunulmayan özelliklere erişmek için root erişimi elde etme olanağı tanıyabilir.
Bazı cihazlarda, cihazın fiziksel kontrolüne sahip ve USB kablosuna sahip bir kullanıcı, kullanıcıya root ayrıcalıkları sağlayan yeni bir işletim sistemi yükleyebilir. Mevcut kullanıcı verilerinin güvenliğini sağlamak için önyükleyicinin kilit açma mekanizması, önyükleyicinin kilit açma adımı kapsamında mevcut kullanıcı verilerini silmesini gerektirir. Çekirdek hatası veya güvenlik açığından yararlanarak elde edilen kök erişim bu korumayı atlayabilir.
Verileri cihaz üzerinde depolanan bir anahtarla şifrelemek, uygulama verilerini rootlanmış cihazlardaki root kullanıcılara karşı korumaz. Uygulamalar, cihaz dışında depolanan bir anahtarla (ör. sunucu veya kullanıcı şifresi) şifreleme kullanarak veri koruma katmanı ekleyebilir. Bu yaklaşım, anahtar mevcut değilken geçici koruma sağlayabilir ancak bir noktada anahtar uygulamaya sağlanmalıdır ve ardından kök kullanıcılar tarafından erişilebilir hale gelir.
Verileri kök kullanıcılara karşı korumanın daha güçlü bir yolu, donanım çözümlerini kullanmaktır. OEM'ler, video oynatma için DRM veya Google Cüzdan için NFC ile ilgili güvenilir depolama gibi belirli içerik türlerine erişimi sınırlayan donanım çözümleri uygulamayı tercih edebilir. Depolama alanı şifrelemesi, kaybolan veya çalınan bir cihazda kullanıcının kilit ekranı kimlik bilgisi bilinmeden kullanıcı verilerine erişilememesini sağlar.
Kullanıcı güvenliği özellikleri
Depolama alanı şifreleme
CDD, Android 10 veya sonraki sürümlerle kullanıma sunulan tüm cihazların ve Android 6.0 veya sonraki sürümlerle kullanıma sunulan çoğu cihazın depolama alanı şifrelemesini kutudan çıktığı anda etkinleştirmesini zorunlu kılar.
Android'in mevcut depolama alanı şifreleme uygulaması, meta veri şifrelemesiyle birlikte dosya tabanlı şifrelemedir. Dosya tabanlı şifreleme, farklı dizinler için farklı anahtarlar kullanarak userdata bölümündeki dosya içeriklerini ve adlarını şeffaf bir şekilde şifreler. İş profilleri dahil her kullanıcı için kimlik bilgisi şifrelenmiş ve cihaz şifrelenmiş depolama dizinleri sağlar.
Meta veri şifrelemesi, dosya tabanlı şifrelemeyi tamamlar. Veri kullanıcısı bölümünde, dosya tabanlı şifreleme ile şifrelenmemiş tüm blokları, herhangi bir kullanıcının kilit ekranı kimlik bilgisine bağlı olmayan ancak Doğrulanmış Önyükleme tarafından korunan bir anahtar kullanarak şifreler.
Kilit ekranı kimlik bilgisi koruması
Android, cihaza erişim sağlamadan önce kullanıcı tarafından sağlanan kilit ekranı kimlik bilgilerini (PIN, şifre veya desen) doğrulayacak şekilde yapılandırılabilir. Kilit ekranı kimlik bilgileri, cihazın yetkisiz kullanımını önlemenin yanı sıra kimlik bilgileriyle şifrelenmiş verilerin kriptografik anahtarını korur. Kilit ekranı kimlik bilgisi ve/veya kimlik bilgisi karmaşıklığı kurallarının kullanılması, cihaz yöneticisi tarafından zorunlu kılınabilir.
Cihaz yönetimi
Android 2.2 ve sonraki sürümlerde, sistem düzeyinde cihaz yönetimi özellikleri sunan Android Device Administration API bulunur. Örneğin, yerleşik Android e-posta uygulaması, Exchange desteğini iyileştirmek için API'leri kullanır. Exchange yöneticileri, e-posta uygulaması aracılığıyla cihazlarda alfanümerik şifreler veya sayısal PIN'ler dahil olmak üzere kilit ekranı kimlik bilgisi politikalarını zorunlu kılabilir. Yöneticiler, kayıp veya çalınmış telefonları uzaktan silebilir (yani fabrika ayarlarına döndürebilir).
Bu API'ler, Android sistemine dahil olan uygulamalarda kullanılmanın yanı sıra cihaz yönetimi çözümleri sunan üçüncü taraf sağlayıcılar tarafından da kullanılabilir. API ile ilgili ayrıntılar Cihaz Yönetimi bölümünde sağlanmıştır.