Trusty, Android için güvenilir yürütme ortamı (TEE) sağlayan güvenli bir işletim sistemidir. Trusty OS, Android OS ile aynı işlemcide çalışır ancak hem donanım hem de yazılım tarafından sistemin geri kalanından izole edilmiştir. Trusty ve Android birbirine paralel olarak çalışır. Trusty, cihazın ana işlemcisinin ve belleğinin tüm gücüne erişebilir ancak tamamen yalıtılmıştır. Trusty'nin izolasyonu, kullanıcı tarafından yüklenen kötü amaçlı uygulamalara ve Android'deki olası güvenlik açıklarına karşı koruma sağlar.
Trusty, ARM ve Intel işlemcilerle uyumludur. ARM sistemlerinde, Trusty, ana işlemciyi sanallaştırmak ve güvenli bir TEE oluşturmak için ARM'nin TrustZone'unu kullanır. Benzer destek, Intel'in sanallaştırma teknolojisini kullanan Intel x86 platformlarında da mevcuttur.

Şekil 1. Trusty'ye genel bakış şeması.
Trusty şunlardan oluşur:
- Little Kernel'den türetilmiş küçük bir işletim sistemi çekirdeği
- Güvenli ortam ile Android arasında veri aktarmak için bir Linux çekirdek sürücüsü
- Güvenilir uygulamalarla (yani güvenli görevler ve hizmetler) çekirdek sürücüsü üzerinden iletişim kurmak için Android kullanıcı alanı kitaplığı
Not: Trusty ve Trusty API değişikliğe tabidir. Trusty API hakkında bilgi edinmek için Trusty API referansı başlıklı makaleyi inceleyin.
Trusty'nin avantajları
Diğer TEE işletim sistemleri geleneksel olarak üçüncü taraf sağlayıcılar tarafından ikili blob'lar olarak sağlanır veya şirket içinde geliştirilir. Dahili TEE sistemleri geliştirmek veya üçüncü taraflardan TEE lisanslamak, çip üzerinde sistem (SoC) satıcıları ve OEM'ler için maliyetli olabilir. Maddi maliyet, güvenilir olmayan üçüncü taraf sistemleriyle birleştiğinde Android için dengesiz bir ekosistem oluşturur. Trusty, iş ortaklarına TEE'leri için güvenilir ve ücretsiz bir açık kaynak alternatifi olarak sunulur. Trusty, kapalı kaynak sistemlerde mümkün olmayan bir şeffaflık düzeyi sunar.
Android, çeşitli TEE uygulamalarını desteklediği için Trusty'yi kullanmakla sınırlı kalmazsınız. Her TEE OS'nin güvenilir uygulamaları dağıtmak için benzersiz bir yöntemi vardır. Bu parçalanma, uygulamalarının her Android cihazda çalıştığından emin olmaya çalışan güvenilir uygulama geliştiriciler için sorun teşkil edebilir. Trusty'yi standart olarak kullanmak, uygulama geliştiricilerin birden fazla TEE sisteminin parçalanmasını hesaba katmadan uygulama oluşturup dağıtmasına yardımcı olur. Trusty TEE, geliştiricilere ve iş ortaklarına şeffaflık, iş birliği, kod inceleme ve kolay hata ayıklama imkanı sunar. Güvenilir uygulama geliştiriciler, güvenlik açığı oluşturma riskini azaltmak için ortak araçlar ve API'ler etrafında birleşebilir. Bu geliştiriciler, bir uygulama geliştirip daha fazla geliştirme yapmadan birden fazla cihazda yeniden kullanma konusunda kendilerine güvenir.
Uygulamalar ve hizmetler
Trusty uygulaması, ikili dosyalar (yürütülebilir dosyalar ve kaynak dosyaları), ikili bir manifest ve kriptografik imzadan oluşan bir koleksiyondur. Çalışma zamanında Trusty uygulamaları, Trusty çekirdeği altında ayrıcalıksız modda yalıtılmış işlemler olarak çalışır. Her işlem, TEE işlemcisinin bellek yönetimi birimi özelliklerini kullanarak kendi sanal bellek korumalı alanında çalışır. Donanımın yapısı, Trusty'nin izlediği süreci tam olarak değiştirir. Örneğin, çekirdek bu işlemleri güvenli bir zamanlayıcı tikine dayalı, öncelik tabanlı ve sırayla zamanlayıcı kullanarak planlar. Tüm Trusty uygulamaları aynı önceliğe sahiptir.

Şekil 2. Trusty uygulamasına genel bakış.
Üçüncü taraf Trusty uygulamaları
Tüm Trusty uygulamaları tek bir tarafça geliştirilir ve Trusty çekirdek görüntüsüyle birlikte paketlenir. Görüntünün tamamı, başlatma sırasında bootloader tarafından imzalanır ve doğrulanır. Üçüncü taraf uygulama geliştirme Trusty'de desteklenmez. Trusty, yeni uygulamaların geliştirilmesini sağlasa da bu işlemi son derece dikkatli bir şekilde yapın. Her yeni uygulama, sistemin güvenilir bilgi işlem tabanının (TCB) alanını artırır. Güvenilen uygulamalar, cihaz sırlarına erişebilir ve bunları kullanarak hesaplamalar veya veri dönüşümleri gerçekleştirebilir. TEE'de çalışan yeni uygulamalar geliştirme olanağı, yenilik için birçok fırsat sunar. Ancak TEE'nin tanımı gereği bu uygulamalar, bir güven biçimi eklenmeden dağıtılamaz. Bu, uygulamanın üzerinde çalıştığı ürünün kullanıcısı tarafından güvenilen bir tüzel kişinin dijital imzası şeklindedir.
Kullanım alanları ve örnekler
TEE'ler mobil cihazlarda standart hâle geliyor. Kullanıcılar günlük hayatlarında mobil cihazlarına daha fazla güveniyor ve güvenlik ihtiyacı artıyor. TEE'si olan mobil cihazlar, TEE'si olmayan cihazlara göre daha güvenlidir.
TEE uygulaması olan cihazlarda ana işlemci genellikle *güvenilmeyen* olarak adlandırılır. Bu, üretici tarafından gizli verilerin (ör. cihaza özel kriptografik anahtarlar) depolandığı RAM'in, donanım kayıtlarının ve tek yazımlık sigortaların belirli alanlarına erişemeyeceği anlamına gelir. Ana işlemcide çalışan yazılım, gizli verilerin kullanılmasını gerektiren tüm işlemleri TEE işlemcisine devreder.
Android ekosisteminde bunun en bilinen örneği, korumalı içeriklere yönelik DRM çerçevesidir. TEE işlemcisinde çalışan yazılımlar, korumalı içeriğin şifresini çözmek için gereken cihaza özel anahtarlara erişebilir. Ana işlemci yalnızca şifrelenmiş içeriği görür. Bu sayede, yazılıma dayalı saldırılara karşı yüksek düzeyde güvenlik ve koruma sağlanır.
TEE; mobil ödemeler, güvenli bankacılık, çok faktörlü kimlik doğrulama, cihaz sıfırlama koruması, yeniden oynatmaya karşı korumalı kalıcı depolama, güvenli PIN ve parmak izi işleme, hatta kötü amaçlı yazılım algılama gibi başka amaçlarla da kullanılır.