Keystone: An Open Framework for Architecting TEEs (PMP-based RISC-V enclave)¶
Modüler, open-source bir framework; değiştirilmemiş RISC-V donanımı üzerinde customizable trusted execution environment'lar kurmak için machine-mode bir Security Monitor ve RISC-V Physical Memory Protection (PMP) kullanarak enclave'leri ayrıcalıklı ama güvenilmeyen OS ve hypervisor'dan izole eder.
Mechanism¶
Note
Keystone bir design/framework'tür, bir vulnerability değil. İzolasyon invariant'ı şudur: RISC-V machine mode (M-mode) içinde çalışan küçük, formal olarak akıl yürütülebilir bir Security Monitor (SM) — S-mode (OS/hypervisor) ve U-mode (user) altındaki en ayrıcalıklı mode — tüm memory-isolation kararlarına sahiptir. SM, PMP entry'lerini (RISC-V Physical Memory Protection register'ları) öyle programlar ki bir enclave'in fiziksel memory region'ına yalnızca o enclave çalışırken erişilebilir, host OS / diğer enclave'ler ise erişimden men edilir. PMP her fiziksel erişimde, çalışan privilege level'dan bağımsız olarak hardware tarafından kontrol edildiği için, tamamen ele geçirilmiş bir S-mode OS bile enclave memory'sini okuyamaz.
Trusted computing base (TCB) bilinçli olarak minimize edilir: SM, PMP hardware mekanizması ve enclave içinde syscall shimming, page management ve memory protection sağlayan enclave başına bir runtime (Eyrie). Host OS, hypervisor ve diğer tüm sistem yazılımı trust boundary'nin dışındadır. Keystone, hardware'in composable güvenlik primitive'leri (PMP, cache partitioning) expose etmesini ve politikanın yazılımda inşa edilmesini savunur; tek, sabit bir enclave design sevk etmek yerine — bunu fixed-function design'larla karşılaştırın. Hiçbir hardware değişikliği gerektirmez.
Boundary, bir separation of concerns sayesinde ayakta kalır: güvenilmeyen OS hâlâ resource allocation yapar (bir enclave'i hangi fiziksel page'lerin destekleyeceğini seçer), ancak SM resource protection yapar (region'ı doğrular ve enclave çalışmadan önce PMP arkasına kilitler, teardown'da da scrub eder). Protection authority olmaksızın yapılan allocation şu demektir: kötü niyetli bir OS denial of service yapabilir ama enclave içeriğini ne okuyabilir ne de tahrif edebilir.
Walkthrough¶
Paper ve proje dokümantasyonundan, kavramsal olarak high-level design akışı:
- Güvenilmeyen host, enclave oluşturmayı talep eder; bitişik bir fiziksel region ve enclave'in measured içeriğini sağlar.
- SM region'ı doğrular (SM memory'si veya diğer enclave'lerle overlap yok), attestation için bir measurement (initial enclave memory/layout'unun hash'i) kaydeder ve region'ı enclave-private olarak kapsayan bir PMP entry'si programlar.
- Enclave entry'de SM, PMP'yi flip eder; böylece enclave region'ına enclave erişebilir ve geri kalan fiziksel memory (OS page'leri dâhil) politikaya göre kısıtlanır; exit'te geri flip eder ve host'a enclave memory'sine bakacak hiçbir pencere bırakmaz.
- Enclave içinde Eyrie runtime'ı servisleri aracılık eder: güvenilmeyen host'a ihtiyaç duyan istekler (örn. I/O), açıkça paylaşılan, gizli olmayan buffer'lar üzerinden dışarı proxy'lenir.
- Attestation: SM, enclave measurement'ını artı bir hardware/SM key'inde köklenen bir chain'i imzalar; böylece bir remote verifier, secret'lar provision edilmeden önce hangi kodun çalıştığını teyit edebilir.
Warning
Host OS enclave'leri schedule eder ve page'ler ama güvenilmezdir. Enclave'den çıkan her veri (shared buffer'lar, syscall argümanları) host tarafından görülebilir ve exposed kabul edilmelidir; secret'lar asla şifrelenmemiş shared memory üzerinden geçmemelidir.
Kavramsal sorumluluk ayrımı
Allocation = güvenilmeyen OS (page'leri seçer, schedule eder). Protection = SM (doğrular, PMP-lock yapar, measure eder, free'de scrub eder). OS bir enclave'i durdurabilir ama içine göz atamaz.
Detection¶
Keystone tarzı bir deployment'a karşı yapılan kötüye kullanımı veya saldırıları tespit etmek (savunma amaçlı monitoring):
- Remote verifier'da attestation failure'ları / beklenmeyen measurement'lar, değiştirilmiş bir enclave binary'sine, downgrade edilmiş bir SM'e veya forge edilmiş bir rapora işaret eder — birincil tripwire.
- Host'tan gelen anormal SBI/SM çağrıları: enclave create/destroy seli ya da SM veya peer-enclave memory'siyle overlap eden region'ları register etme girişimleri, probing'i veya hostile bir OS'i düşündürür.
- S-mode kodu enclave-private fiziksel page'lere dokunduğunda SM'e yükseltilen PMP-violation trap'leri, isolation-boundary probe'unun doğrudan kanıtıdır.
- Side-channel biçimli davranış: side channel'lar scope dışı olduğundan, residual risk olarak contention/timing probe'larını (cache, controlled-channel page fault'ları) izleyin.
Mitigation¶
Design'a içkin savunmalar (ve deployer'lar için hardening):
- Hardware-enforced PMP isolation: fiziksel-erişim kontrolleri M-mode'a komşu yazılımı bile bağlar; SM tek PMP authority'sidir.
- Minimal TCB: SM + Eyrie'yi küçük tutmak, denetlenebilir/attestable yüzeyi daraltır.
- Measured boot + remote attestation: secret'lar yalnızca measurement'ı ve SM chain'i doğrulanan bir enclave'e bırakılır.
- Enclave teardown'da memory scrubbing: böylece host'a geri verilen free page'ler hiçbir enclave artığı taşımaz.
- Opsiyonel primitive'ler (cache partitioning, memory encryption modülleri): açıkça scope dışı olan side-channel ve fiziksel saldırı yüzeyini daraltmak için.
- Açıkça scope dışı tehditler: fiziksel saldırılar ve microarchitectural side channel'lar — deployer'lar bunlar için ortogonal countermeasure'lar eklemelidir.
Ayrıca x86'daki VMX/SVM tabanlı isolation modelleriyle karşılaştırma için nested virtualization bölümüne bakın.