Sistem ve çekirdek güvenliği

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. İşletim sistemi 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 kötüye kullanılması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. Cihazlarınızdaki çekirdeği güçlendirmek için uygulayabileceğiniz önlemler için Çekirdek Yapılandırması başlıklı makaleyi inceleyin. 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ştiricinin sürekli olarak araştırılması, saldırıya uğraması ve onarılmasıyla geçmişi sayesinde pek çok şirket ve güvenlik uzmanının güvendiği istikrarlı ve güvenli bir çekirdek haline gelmiştir.

Mobil bilgi işlem ortamının temeli olan Linux çekirdeği, Android'e aşağıdakiler gibi bazı temel 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 imkanı

Çok kullanıcılı bir işletim sistemi olan 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ı (örneğin, telefon, GPS ve Bluetooth) tüketmemesini 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ınmaktadır. Daha fazla bilgi için Uygulama korumalı alanı başlıklı makaleyi inceleyin.

Sistem bölümü ve güvenli mod

Çeşitli bütünlük korumalı bölümler, Android'in çekirdeğini, işletim sistemi kitaplıklarını, uygulama çalışma zamanını, uygulama çerçevesini ve uygulamaları içerir. Bu bölüm salt okunur olarak ayarlandı. 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 Geliştirilmiş Linux başlıklı makaleyi inceleyin.

Doğrulanmış Başlatma

Android 7.0 ve sonraki sürümler, sıkı şekilde uygulanan Doğrulanmış Önyükleme özelliğini destekler. Bu, güvenliği ihlal edilmiş cihazların önyükleme yapamayacağı anlamına gelir. 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. Başlatma sırasında her aşama, yürütmeden önce bir sonraki aşamanın 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 bilgileri deposunu kullanmasına izin vermek amacıyla KeyChain sınıfını kullanıma sundu.

Cihazı rootlama

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ı üzerinde değişiklik yapabilme olanağına ihtiyaç duyar. 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 uygulamaların ve sistem bileşenlerinin hatalarını 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ı fiziksel olarak kontrol eden ve USB kablosu olan bir kişi, kullanıcıya kök 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. sunucuda veya kullanıcı şifresinde) ş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ılardan korumak için daha sağlam bir yaklaşım, 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, bir 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 şifreleme anahtarını kimlik bilgisi ile şifrelenmiş verilere karşı 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.