Android Mimarisi ve Sistem Güvenliği

Abdulkerim Karaman
alBarakaTech Global
3 min readJun 25, 2023

Android mobil işletim sistemi (OS) google önderliğine açık kaynak olarak geliştirilen linux tabanlı bir platformdur. Bu platform cep telefonu, tablet, tv, giyilebilir teknolojiler v.s. birçok sistemde kullanılmaktadır. Bu platformları kurduğunuzda beraberinde bir çok uygulama (ön yükleme) ile beraber gelmektedir.

Android platformu bir çok katmandan oluşmaktadır.

Linux Layer: Android’in en düşük seviyesinde Linux çekirdeği yer almaktadır. Bu katmanda önemli elemanlar içermektedir. Bellek temizleyici, uyanık kalma, Binder sürücüsü v.s. bu katmanda yer almaktadır.

Hardware Abstraction Layer (HAL): Yerleşik donanım birimleriyle etkileşimi sağlar. Örnek cihaz üzerindeki mikrofon, hoparlör, kamera gibi donanımlar ile iletişimi sağlar.

Android Runtime: Android uygulamaları Java ve Kotlin dilinde yazılır daha sonra bayt kodu yorumlar ve bunları hedef cihazda yürütür. Bu java ortamlarındaki JVM veya .Net tarafında Mono runtime’a benzetilebilir.

Korumalı Alan: Android uygulamaların cihazın donanım birimlerine doğrudan erişimi yoktur. Her uygulama kendi sanal makinası veya sanal alanında çalışır. Bu, işletim sisteminin cihazdaki kaynaklar ve bellek erişimi üzerinde kesin kontrole sahip olmasını sağlar.

Android 2.3.4'den (API 10) itibaren cihaz şifrelemeyi desteklemektedir. O zamandan itibaren de bir çok değişikliğe uğramıştır. Google, Android 6.0 (API seviye 23) veya daha üstünü çalıştıran tüm cihazların depolama şifrelemesini desteklemesi zorunluluğunu getirdi. Ancak performanslarını önemli ölçüde etkileyeceği için bazı düşük kaliteli cihazlar muaf tutuldu.

Full-Disk Encryption (FDE): Tam disk şifreleme android 5.0 ve üzerinde desteklenmektedir. Bu şifreleme cihaz üzerinde tam şifrelemeyi sağlar bu şifrelemeyi kullanıcı parolası ile gerçekleştirir. Tam disk şifreleme artık kullanımdan kaldırılmıştır. Kullanıcı eğer parolasını girmemişse cihazı yeniden başlatma, çağrı alamama gibi sorunlar ile karşılaşmaktadır.

File-Based Encryption (FBE): Android 7.0 (API seviye 24) ve üzeri dosya tabanlı şifrelemeyi destekler. Dosya tabanlı şifreleme farklı dosyaların farkı anahtarlarla şifrelenmesine olanak sağlar. Kullanıcı cihazın kilidini açmamış olsa bile erişilebilirlik özelliklerinin izin verdiği ölçüde fonksiyonların kullanımına olanak sağlar.

Trusted Execution Environment (TEE)

Güvenli yürütme ortamı olarak adlandırılır. Android sistemin şifreleme gerçekleştirebilmesi için kriptografik anahtarı üretmeye, içeri aktarmaya ve saklama ihtiyacı bulunmaktadır. Saldırgan kriptografik anahtarı elde ederse şifrelenmiş dosyaları da ele geçirebilir.

Donanım destekli KeyStore: Bu katman, android işletim sistemi ve üçüncü taraf uygulamaları için kriptografik hizmetler sunar. Uygulamaların TEE’de kriptografik hassas işlemler gerçekleştirmesini sağlar.

StrongBox: Android 9'da donanım destekli bir KeyStore uygulamak için başka bir yaklaşım olan StrongBox tanıtıldı. Bir anahtarın StrongBox’ta bulunup bulunmadığını kontrol edebilirsiniz veya varsa kendi CPU’su, güvenli depolaması ve True Random Number Generator’ü (TRNG) olan bir donanım güvenlik modülü tarafından korunduğundan emin olabilirsiniz.

GateKeeper: GateKeeper modülü, cihaz modeli ile parola kimlik doğrulamasını etkinleştirir. Kimlik doğrulama işlemi sırasında güvenlik açısından hassas işlemler, cihazda bulunan TEE’nin içinde gerçekleşir.

Verified Boot

Android cihazlarda yürütülen kodun güvenilir bir kaynaktan gelmesini ve bütünlüğünün tehlikeye atılmamasını sağlamak gerekmektedir.Bu işlem android tarafında verified boot ıle saglanır. Bunun amacı donanım ile bu donanım üzerinde yürütülen gerçek kod arasında bir güven ilişkisi kurmaktır. Root-of-Trust’tan (RoT) uzerinde başlayan ve çalışan son katmana kadar uçtan uca bütünlüğü sağlar. Daha detaylı bilgiye buradan ulaşabilirsiniz.

--

--