Güvenlik

Bir pVM içinde rastgele veri yüklerinin çalıştırılmasını önlemek için Android Sanallaştırma Çerçevesi (AVF), her katmanın ek yaptırımlar eklediği katmanlı bir güvenlik yaklaşımı kullanır. AVF güvenlik katmanlarının listesi aşağıdadır:

  • Android , yalnızca pVM izinlerine sahip uygulamaların pVM oluşturmasına veya denetlemesine izin verilmesini sağlar.

  • Önyükleyici – Önyükleyici, yalnızca Google veya cihaz satıcıları tarafından imzalanan pVM görüntülerinin önyükleme yapmasına izin verilmesini sağlar ve Android Doğrulanmış Önyükleme prosedürüne saygı gösterir. Bu mimari, pVM'leri çalıştıran uygulamaların kendi çekirdeklerini paketleyemeyeceği anlamına gelir.

  • pVM , pVM'de çalıştırılan yükler için SELinux gibi derinlemesine savunma sağlar. Derinlemesine savunma, verilerin yürütülebilir olarak eşlenmesine izin vermez ( neverallow execmem ) ve W^X'in tüm dosya türleri için geçerli olmasını sağlar.

Güvenlik modeli

Gizlilik, bütünlük ve kullanılabilirlik (CIA üçlüsü), bilgi güvenliği politikalarına rehberlik etmek üzere tasarlanmış bir model oluşturur:

  • Gizlilik , bilgiye erişimi sınırlayan bir dizi kuraldır.
  • Bütünlük , bilgilerin güvenilir ve doğru olduğunun güvencesidir.
  • Kullanılabilirlik, yetkili kuruluşların bilgiye güvenilir erişiminin garantisidir.

Gizlilik ve bütünlük

Gizlilik, pKVM hipervizörü tarafından uygulanan bellek izolasyon özelliklerinden kaynaklanmaktadır. pKVM, bireysel fiziksel bellek sayfalarının bellek sahipliğini ve sahiplerin paylaşılacak sayfalara yönelik isteklerini izler. pKVM, hipervizör tarafından kontrol edilen 2. aşama sayfa tablolarında yalnızca yetkili pVM'lerin (ana bilgisayar ve misafirler) verilen sayfanın eşlenmesini sağlar. Bu mimari, bir pVM'nin sahip olduğu bellek içeriğinin, sahibi açıkça başka bir pVM ile paylaşmadığı sürece özel kalmasını sağlar.

Gizliliğin korunmasına yönelik kısıtlamalar, sistemdeki pVM'ler adına bellek erişimleri gerçekleştiren tüm varlıkları, yani daha ayrıcalıklı katmanlarda çalışan DMA özellikli cihazları ve hizmetleri de kapsar. Çip Üzerinde Sistem (SoC) satıcılarının pKVM'yi destekleyebilmeleri için yeni bir dizi gereksinimi karşılamaları gerekir. Aksi takdirde gizlilik sağlanamaz.

Bütünlük, bellekteki ve hesaplamadaki veriler için geçerlidir. pVM'ler şunları yapamaz:

  • Birbirinizin hafızasını rızası olmadan değiştirin.
  • Birbirinizin CPU durumunu etkileyin.

Bu gereksinimler hipervizör tarafından uygulanır. Ancak dm-verity veya AuthFS gibi diğer çözümlerin uygulanması gerektiğinde sanal veri depolamada veri bütünlüğüyle ilgili sorunlar da ortaya çıkıyor.

Bu ilkeler, bellek sayfalarına erişimin 1. aşama sayfa tabloları ve süreçler arasında çekirdek bağlamı geçişleri ile kontrol edildiği Linux tarafından sunulan süreç yalıtımından farklı değildir. Bununla birlikte, pKVM'nin bu özellikleri uygulayan EL2 kısmı, tüm Linux çekirdeğiyle karşılaştırıldığında saldırı yüzeyinin kabaca yarısına sahiptir (yaklaşık 10 bin koda karşı 20 milyon satır) ve bu nedenle güvenilemeyecek kadar hassas vakaların kullanılması için daha güçlü güvence sunar. Süreç izolasyonu hakkında.

Boyutu göz önüne alındığında, bir pKVM resmi doğrulamaya uygundur. Bu özellikleri gerçek pKVM ikili dosyasında resmi olarak kanıtlamayı amaçlayan akademik araştırmayı aktif olarak destekliyoruz.

Bu sayfanın geri kalanında pKVM etrafındaki her bileşenin sağladığı gizlilik ve bütünlük garantileri ele alınmaktadır.

Hipervizör

pKVM, pVM'leri ve Android'i karşılıklı olarak güvenilmeyen yürütme ortamlarına ayıran KVM tabanlı bir hipervizördür. Bu özellikler, ana bilgisayar da dahil olmak üzere herhangi bir pVM'de bir uzlaşma olması durumunda geçerlidir. AVF ile uyumlu alternatif hipervizörlerin benzer özellikleri sağlaması gerekir.

  • Bir pVM, sayfa sahibi tarafından açıkça paylaşılmadığı sürece, pVM veya hipervizör gibi başka bir varlığa ait olan bir sayfaya erişemez. Bu kural ana bilgisayar pVM'sini içerir ve hem CPU hem de DMA erişimleri için geçerlidir.

  • Bir pVM tarafından kullanılan bir sayfa ana bilgisayara geri gönderilmeden önce (örneğin, pVM yok edildiğinde) silinir.

  • Bir aygıt önyüklemesindeki tüm pVM'lerin ve pVM ürün yazılımının belleği, sonraki aygıt önyüklemesinde işletim sistemi önyükleyicisi çalıştırılmadan önce silinir.

  • SJTAG gibi bir donanım hata ayıklayıcı eklendiğinde, pVM önceden basılmış anahtarlara erişemez.

  • pVM ürün yazılımı, ilk görüntüyü doğrulayamıyorsa önyükleme yapmaz.

  • instance.img bütünlüğü tehlikeye girerse pVM ürün yazılımı önyükleme yapmaz.

  • Bir pVM örneğine sağlanan Önyükleme Sertifika Zinciri (BCC) ve Bileşik Cihaz Tanımlayıcıları (CDI'ler), yalnızca söz konusu örnek tarafından türetilebilir.

Konuk İşletim Sistemi

Microdroid, pVM içinde çalışan bir işletim sistemi örneğidir. Microdroid, U-boot tabanlı bir önyükleyici, GKI, Android kullanıcı alanının bir alt kümesi ve bir yük başlatıcısından oluşur. Bu özellikler, ana bilgisayar da dahil olmak üzere herhangi bir pVM'de bir uzlaşma olması durumunda geçerlidir. Bir pVM'de çalışan alternatif işletim sistemleri benzer özellikler sağlamalıdır.

  • boot.img , super.img , vbmeta.img veya vbmeta\_system.img doğrulanamıyorsa Microdroid önyükleme yapmaz.

  • APK doğrulaması başarısız olursa Microdroid önyükleme yapmaz.

  • APK güncellense bile aynı Microdroid örneği önyükleme yapmıyor.

  • APEX'lerden herhangi biri doğrulamayı geçemezse Microdroid önyükleme yapmaz.

  • instance.img konuk pVM'nin dışında değiştirilirse Microdroid önyükleme yapmaz (veya temiz bir başlangıç ​​durumuyla önyükleme yapmaz).

  • Microdroid, önyükleme zincirine kanıt sağlar.

  • Konuk pVM ile paylaşılan disk görüntülerinde yapılan herhangi bir (imzasız) değişiklik, pVM tarafında bir G/Ç hatasına neden olur.

  • Bir pVM örneğine sağlanan BCC ve CDI'lar yalnızca söz konusu örnek tarafından türetilebilir.

  • Şifrelenmiş bir depolama birimine yazma işlemleri gizlidir, ancak bir şifreleme bloğunun ayrıntı düzeyinde geri alma koruması yoktur. Ayrıca, bir veri bloğuna yapılan diğer keyfi harici müdahaleler, bu bloğun açıkça bir G/Ç hatası olarak algılanmak yerine Microdroid için çöp olarak görünmesine neden olur.

Android

Bunlar, ana bilgisayar olarak Android tarafından tutulan özelliklerdir ancak ana bilgisayar güvenliğinin ihlali durumunda geçerli değildir:

  • Bir konuk pVM, diğer konuk pVM'lerle ( vsock bağlantısı kurmak gibi) doğrudan etkileşime giremez.

  • Yalnızca ana bilgisayar pVM'sindeki VirtualizationService bir pVM ile iletişim kanalı oluşturabilir.

  • Yalnızca platform anahtarıyla imzalanan uygulamalar pVM'ler oluşturma, sahip olma veya bunlarla etkileşimde bulunma izni isteyebilir.

  • Ana bilgisayar ile pVM arasında vsock bağlantılarının kurulmasında kullanılan ve bağlam tanımlayıcısı (CID) adı verilen tanımlayıcı, ana bilgisayar pVM'si çalışırken yeniden kullanılmaz. Örneğin, çalışan bir pVM'yi başka bir pVM ile değiştiremezsiniz.

Kullanılabilirlik

pVM'ler bağlamında kullanılabilirlik , konukların gerçekleştirmek üzere tasarlandıkları görevleri gerçekleştirebilmeleri için ev sahibinin konuklara yeterli kaynak tahsis etmesi anlamına gelir.

Ana bilgisayarın sorumlulukları, pVM'nin sanal CPU'larını planlamayı içerir. KVM, geleneksel Tip-1 hipervizörlerin (Xen gibi) aksine, iş yükü planlamasını ana bilgisayar çekirdeğine devretme yönünde açık tasarım kararı alır. Günümüzün zamanlayıcılarının boyutu ve karmaşıklığı göz önüne alındığında, bu tasarım kararı güvenilir bilgi işlem tabanının (TCB) boyutunu önemli ölçüde azaltır ve ana bilgisayarın performansı optimize etmek için daha bilinçli planlama kararları almasına olanak tanır. Ancak kötü niyetli bir ev sahibi hiçbir zaman bir misafir planlamamayı seçebilir.

Benzer şekilde, pKVM ayrıca hipervizörün karmaşıklığını azaltmak ve planlamanın sorumluluğunu ana makineye bırakmak için fiziksel kesinti yönetimini ana bilgisayar çekirdeğine devreder. Konuk kesintilerinin iletilmesinin yalnızca hizmet reddine (çok az, çok fazla veya yanlış yönlendirilmiş kesinti) yol açmasını sağlamak için çaba gösterilmektedir.

Son olarak, ana bilgisayarın sanal makine monitörü (VMM) işlemi, belleğin tahsis edilmesinden ve ağ kartı gibi sanal cihazların sağlanmasından sorumludur. Kötü amaçlı bir VMM, konuktan kaynakları alıkoyabilir.

pKVM konuklara kullanılabilirlik sağlamasa da, tasarım, ana bilgisayarın kullanılabilirliğini kötü niyetli konuklardan korur çünkü ana bilgisayar her zaman bir konuğu önceden alabilir veya sonlandırabilir ve kaynaklarını geri alabilir.

Güvenli Önyükleme

Veriler bir pVM örneklerine bağlıdır ve güvenli önyükleme, bir örneğin verilerine erişimin kontrol edilebilmesini sağlar. Bir bulut sunucusunun ilk önyüklemesi, pVM için rastgele bir gizli tuz oluşturarak ve yüklenen görüntülerden doğrulama genel anahtarları ve karmaları gibi ayrıntıları çıkararak bunu hazırlar. Bu bilgiler, pVM örneğinin daha sonraki önyüklemelerini doğrulamak ve örneğin sırlarının yalnızca doğrulamayı geçen görüntülere açıklanmasını sağlamak için kullanılır. Bu işlem, pVM içindeki her yükleme aşamasında gerçekleşir: pVM ürün yazılımı, pVM ABL, Microdroid vb.

DICE, her yükleme aşamasına bir doğrulama anahtar çifti sağlar ve bu anahtar çiftinin halka açık kısmı o aşama için BCC girişinde onaylanır. Bu anahtar çifti önyüklemeler arasında değişebilir; dolayısıyla, yeniden başlatmalar boyunca VM örneği için kararlı olan ve dolayısıyla kalıcı durumu korumaya uygun olan bir sızdırmazlık sırrı da türetilir. Sızdırmazlık sırrı VM için oldukça değerli olduğundan doğrudan kullanılmamalıdır. Bunun yerine mühür anahtarları, mühür sırrından türetilmeli ve mühür sırrı mümkün olduğu kadar erken imha edilmelidir.

Her aşama, deterministik olarak kodlanmış bir CBOR nesnesini bir sonraki aşamaya aktarır. Bu nesne, sırları ve son aşamanın güvenli bir şekilde yüklenip yüklenmediği gibi birikmiş durum bilgilerini içeren BCC'yi içerir.

Kilidi açılmış cihazlar

Bir cihazın kilidi fastboot oem unlock ile açıldığında kullanıcı verileri silinir. Bu işlem, kullanıcı verilerini yetkisiz erişime karşı korur. Bir pVM'ye özel olan veriler, cihazın kilidi açıldığında da geçersiz kılınır.

Kilidi açıldıktan sonra cihazın sahibi, pKVM uygulamasını içeren bölümler de dahil olmak üzere genellikle doğrulanmış önyüklemeyle korunan bölümleri yeniden başlatmakta özgürdür. Bu nedenle, kilidi açılmış bir cihazdaki pKVM'ye güvenlik modelini destekleme konusunda güvenilmez.

Uzak taraflar, bir anahtar doğrulama sertifikasında cihazın doğrulanmış önyükleme durumunu inceleyerek bu potansiyel olarak güvenli olmayan durumu gözlemleyebilir.