Kullanım örnekleri

Bu sayfada, AVF'nin yaygın kullanım alanları yer almaktadır.

İzole derleme

Yazılımla güvenli bir enclave olarak korumalı sanal makine (VM), güvenlikle ilgili hassas kodları derlemek için güvenli bir ortam sağlar. Bu ortam, bootclasspath ve sistem sunucusu JAR'larının derlenmesinin (APEX güncellemesi tarafından tetiklenir) erken başlatmadan yeniden başlatma öncesine taşınmasına olanak tanır ve APEX güncellemesi sonrası başlatma süresini önemli ölçüde kısaltır.

Uygulama, com.android.compos APEX'inde bulunur. Bu bileşen isteğe bağlıdır ve makefile kullanılarak eklenebilir.

İzole derleme

1. Şekil. Mainline güncellemelerinde JAR'ları derleme. Mainline güncellemelerinde JAR'ları derleme

Güvenlik hedefi, doğrulanmış girişi doğru bir şekilde derlemek ve çıkışı bağımsız olarak üretmektir. Güvenilmeyen bir istemci olarak Android, derleme çıkışını başarısız olmasına neden olmak dışında (Android, başlatma zamanı derlemesine geri döndüğünde) hiçbir şekilde değiştiremez.

Sanal makinedeki derleme hizmeti, yalnızca derlemenin tamamı sırasında hata oluşmazsa imza oluşturur. Android, imza doğrulaması için ortak anahtarı VM'den alabilir.

Sanal makinenin anahtarı, sanal makineye monte edilen APEX'ler ve APK'lar tarafından tanımlanan sanal makinenin DICE profilinden ve hata ayıklanabilirlik gibi diğer sanal makine parametrelerinden oluşturulur.

Ortak anahtarın beklenmedik bir sanal makineye ait olup olmadığını belirlemek için Android, anahtarın doğru olup olmadığını belirlemek üzere sanal makineyi başlatır. Sanal makine, her APEX güncellemesinden sonra erken başlatma sırasında başlatılır.

Korumalı sanal makinenin doğrulanmış başlatma özelliği sayesinde derleme hizmeti yalnızca doğrulanmış kodu çalıştırır. Bu nedenle kod, yalnızca belirli koşulları karşılayan girişleri kabul etmeye karar verebilir. Örneğin, yalnızca adı ve fs-verity özetinin izin verilenler listesinde tanımlandığı giriş dosyalarını kabul edebilir.

Sanal makineden kullanıma sunulan tüm API'ler saldırı yüzeyidir. Tüm giriş dosyalarının ve parametrelerin güvenilmeyen bir istemciden geldiği varsayılır. Bu nedenle, işlenmeden önce doğrulanmalı ve incelenmelidir.

Giriş ve çıkış dosyası bütünlüğü, dosyalar Android'de güvenilmeyen bir dosya sunucusu olarak depolanırken sanal makine tarafından aşağıdaki şekilde doğrulanır:

  • Bir giriş dosyasının içeriği, kullanılmadan önce fs-verity algoritması kullanılarak doğrulanmalıdır. Bir giriş dosyasının VM'de kullanılabilir olması için kök karmasının, VM'nin DICE profiline katkıda bulunan bir kapsayıcıda (APK) sağlanması gerekir. Güvenilir kök karması sayesinde, saldırıyı yapan kişi algılanmadan girişi kurcalayamaz.
  • Çıkış dosyasının bütünlüğü sanal makinede korunmalıdır. Çıkış dosyası Android'de depolansa bile oluşturma sırasında bütünlük aynı fs-verity ağacı biçimiyle korunur ancak dinamik olarak güncellenebilir. Son çıkış dosyası, VM'de izole edilmiş olan kök karma ile tanımlanabilir. Sanal makinedeki hizmet, çıkış dosyalarını imzayla korur.

Linux geliştirme ortamı

Android, geleneksel olarak kullanıcıların platformun kendisinde uygulama geliştirmesine izin vermeyen tek büyük işletim sistemi olmuştur. Linux geliştirme ortamının kullanıma sunulmasıyla, geliştirici olan Android kullanıcılarına Linux tabanlı bir geliştirme ortamı sağlamayı amaçlıyoruz. Gelecekte, iş ortaklarımızın grafik kullanıcı arayüzü uygulamaları ve hatta oyunlar çalıştırmak gibi yenilikçi sanal makine kullanım alanları uygulamasına olanak tanımak için bu çalışmayı genişletmeyi planlıyoruz.

Linux geliştirme ortamı belirli cihazlarda kullanılabilir ve korumasız bir sanal makinede çalışır.

Linux geliştirme ortamı kullanım alanı

Şekil 2. Linux geliştirme ortamı kullanım alanı.

Genel akış şu şekildedir:

  1. Linux geliştirme ortamını kullanmak için geliştirici seçeneklerini etkinleştirin.
  2. Geliştirici seçeneklerini etkinleştirdikten sonra Terminal uygulaması ana başlatıcınızda görünür.
  3. Ana ekran başlatıcınızdan Terminal uygulamasını başlatın.
  4. Gerekirse Terminal uygulaması, işletim sistemi görüntüsünü Play'den indirir.
  5. Terminal uygulaması, sanal makine (VM) oluşturmak için Android Sanallaştırma Çerçevesi'ni (AVF) kullanır.
  6. AVF, sanal makineyi işletim sistemi görüntüsüyle çalıştırır.
  7. Sanal makine, işletim sistemini görüntüden başlatır.
  8. Sanal makine başlatıldıktan sonra Terminal uygulamasındaki WebView, sanal makinedeki bir web hizmetine bağlanır. Bu hizmet, HTTP üzerinden terminal erişimi sağlar.
  9. Komut girerek ve çıktıyı uygulamada görüntüleyerek terminalle etkileşim kurarsınız.

Linux VM'nin üst düzey bileşenleri şunlardır:

  • Terminal uygulaması: Terminal arayüzü sağlayan bir Android uygulaması. Etkileşim için sanal makinede çalışan bir web hizmetine bağlanmak üzere WebView kullanır. Bu uygulama varsayılan olarak devre dışıdır. Geliştirici ayarları'nda etkinleştirin.
  • Android Sanallaştırma Çerçevesi (AVF): Android'in sanal makine oluşturma ve yönetme için mevcut alt sistemi. Bu özelliği desteklemek için özel işletim sistemi görüntülerinde minimum değişiklik yapılması gerekir.
  • Sanal makine: AVF'nin oluşturduğu bir VM. Terminal hizmetini barındırır ve AVF, bu hizmeti Terminal uygulamasının işlevselliği için özel olarak oluşturur.
  • OS görüntüsü: Yukarı akış Debian'dan alınan, biraz değiştirilmiş Debian tabanlı bir OS görüntüsü. Terminal uygulaması bu resmi harici bir Google sunucusundan indirir. VM'nin çalışması için temel oluşturur.
  • Misafir Aracısı: Sanal makinedeki yeni yazılım. AVF'ye işletim sisteminin durumunu bildirir ve sanal makinenin kontrolünü sağlar.
  • ttyd: HTTP üzerinden terminal emülasyonu uygulayan, sanal makinede çalışan açık kaynaklı yazılım. Terminal uygulamasının WebView'u buna bağlanır.
  • Tethering Manager: Mevcut bir Android alt sistemi. Sanal makineyi Android destekli cihaza bağlayarak sanal makineye ağ erişimi sağlar.

Cihaz Üzerinde İçerik Güvenliği

Cihaz Üzerinde İçerik Güvenliği, Cihaz Üzerinde İçerik Güvenliği Ekibi tarafından oluşturulan, gizliliği korumaya yönelik bir içerik güvenliği çözümüdür. Birinci taraf/üçüncü taraf cihazlarda çeşitli Google ürünleri için içerik güvenliği sınıflandırması yapar ve kullanıcı verilerinin Google sunucularına geri gönderilmesini gerektirmeden 1 milyardan fazla kullanıcıyı kötüye kullanım amaçlı içeriklerden korur. Bu altyapı, istemci ile sanal makine (VM) arasında şeffaf ve gizliliği koruyan iletişim sağlamak ve kullanıcı verilerinin sızmasını önlemek için Private Compute Core (PCC) ilkelerine uygun şekilde tasarlanmıştır. Play Protect'in aktif tehdit algılama özelliği gibi cihazlarda kötüye kullanım algılamayı etkinleştirme gibi işlemler için kullanılabilir.

Bu kullanım alanında sistem, Play Protect'in aktif tehdit algılama özelliği için model sınıflandırmasını çalıştırmak üzere korumalı sanal makinelerden yararlanır. Bu sayede, modellerinin ve korumalarının güvenliği önemli ölçüde artırılır. Bu özellik, yalnızca onaylanmış kodun çalışmasını ve işlemlerinin harici süreçlerden gizlenmesini sağlayarak, root edilmiş cihazlarda bile saldırganlar tarafından tersine mühendislik ve manipülasyon yapılmasını önler.

Genel akışlar aşağıdaki gibidir:

  1. Aktif tehdit algılama, sanal makineyi başlatmak için Private Compute Services'e ping gönderir. Private Compute Services, PCC ile bulut sunucusu arasında gizlilik odaklı bir aracıdır.
  2. Private Compute Services, sanal makineyi başlatır ve sanal makineden ortak anahtarını alır.
  3. Private Compute Services, sanal makine sahipliğini Play Protect'in canlı tehdit algılama özelliğine devreder.
  4. Private Compute Services, onay ve ortak anahtarı sunucuya gönderir.
  5. Sunucu, onaylamayı doğrular ve sanal makine ortak anahtarıyla korumaları şifreler.
  6. Sunucu, şifrelenmiş korumaları cihaza geri gönderir.
  7. Ardından, cihaz üzerinde aktif tehdit algılama özelliği, sanal makinede şifrelenmiş korumayı kullanabilir. Sanal makine, korumaların şifresini çözebilen özel anahtara sahip tek varlıktır.

Üst düzey bileşenler şunlardır:

  • Sunucu: Şifreleme ve şifrelenmiş korumaları sanal makineye teslim etme
  • Private Compute Services: Sanal makineyi başlatmak, sanal makineyle iletişimi sağlamak ve kullanıcı verilerinin sunucuya Astrea üzerinden gitmediğini şeffaf bir şekilde göstermek için kullanılır.
  • Play Protect aktif tehdit algılama:
    • Cihazda İçerik Güvenliği tarafından sağlanan model sınıflandırıcıları içerir ve kullanır.
    • Sanal makinenin sahipliğini kabul eder ve sınıflandırma kullanımı için saklar.
    • Gerektiğinde sanal makineyi başlatır ve durdurur.