Recovering Information on the CVA6 RISC-V CPU via a Baremetal Micro-Architectural Covert Channel¶
Açık kaynaklı CVA6 (Ariane) RISC-V core'unun L1 data cache'i üzerinde doğrudan kurulan bir Prime+Probe covert/side channel; bir AES-128 implementation'ından bilgi geri çıkarmak için baremetal olarak gösterildi.
Mechanism¶
Sınır neden kırılıyor
Çalışma açık kaynaklı ETH Zurich / Bologna Üniversitesi CVA6 (eski adıyla Ariane) RISC-V core'unu inceler — 6 aşamalı, single-issue, in-order bir application processor. Kanalın kök nedeni tüm cache saldırılarında kırılan aynı invariant'tır: paylaşılan, sınırlı bir microarchitectural kaynağa rekabetçi erişim, burada set-associative olan L1 data cache. Aynı cache set'ine map'lenen iki context birbirinin line'larını evict ettiğinden, victim çalıştıktan sonra bir attacker line'ının var ya da yok oluşu victim'in hangi set'lere dokunduğunu encode eder — ve table tabanlı AES'te bu, key-dependent index'lere geri map'lenir.
Varsayılan CVA6 konfigürasyonunda data cache 32 KB, 8-way set associative, 256 set, 16-byte line, write-through / no-write-allocate ve LFSR tabanlı (pseudo-random) replacement policy'lidir. Physical-address ayrıştırması (offset / index / tag), bir attacker'ın belirli set'leri hedef alan bir eviction set kurmasını sağlayan şeydir. Pseudo-random replacement ve küçük line boyutu gürültü ekler, dolayısıyla merkezî bir katkı, kanalı gerçekçi bir extraction senaryosunda güvenilir kılmak için noise reduction'dır.
Bunu baremetal yapmak (OS yok, RTL/cycle-accurate simülasyonda) önemli noktadır: saf microarchitectural davranışı OS scheduling gürültüsünden izole eder ve leak'e ground-truth görünürlük verir — bir savunmacının hangi RISC-V cache konfigürasyonlarının exploit edilebilir olduğunu akıl yürütmek için ihtiyaç duyduğu tam o bakış açısı.
Walkthrough¶
Kamuya açık writeup'lar (ve CVA6 üzerindeki ilgili Wistoff Prime+Probe replikasyonu) CVA6'ya uygulanan standart Prime+Probe primitive'ini tarif eder:
- Prime: attacker, 256-set / 8-way / 16-byte-line geometrisinden türetilmiş bir eviction set kullanarak target cache set'lerini kendi line'larıyla doldurur.
- Victim çalışır: bir AES-128 encryption yürütülür; T-table / S-box lookup'ları, key ve plaintext byte'larına bağlı set'lerden attacker line'larını evict eder.
- Probe: attacker kendi line'larına tekrar erişir ve her birini ölçer; yavaş (missed) set'ler victim'in hangi set'lere dokunduğunu ortaya çıkarır, key-dependent index bitlerini sızdırır.
- Birçok encryption üzerinden noise reduction + ortalama alma, LFSR replacement gürültüsünü aşarak AES-128 key materyalini geri çıkarır.
// Conceptual Prime+Probe on CVA6 L1D (baremetal, not a turnkey exploit)
prime(eviction_set); // fill targeted sets (256 sets, 8 ways)
aes128_encrypt(plaintext); // victim: key/plaintext-dependent table lookups
for (s in sets) // probe: time re-access of each set
if (slow(s)) record(s); // victim evicted us here -> key-dependent index
// aggregate across many runs -> recover key bits
Kanal davranışı (kavramsal)
Warning
Sonuç, Intel/ARM'da uzun süredir bilinen bir bulguyu bir açık RISC-V core'una genelleştirir: partitioning'siz konvansiyonel bir set-associative L1D, ISA'dan bağımsız olarak sızdırır. Bu, RISC-V SoC'leri için secure-by-design seçimlerini bilgilendirir.
Detection¶
- Gerçek silicon/SoC dağıtımlarında, dikkatlice strided buffer'lar üzerinde
ritmik eviction-sonra-time döngüleri yapan process'leri izle (generic
Prime+Probe imzası) — mevcut olduğunda RISC-V hardware performance monitor
(
hpmcounter) aracılığıyla düzenli kadansta yüksek L1D miss oranları. - Düşük güvenli bir task'ın cache davranışı ile bir crypto task'ının aktivite pencereleri arasında anormal korelasyon.
- Simülasyon/bring-up'ta RTL veya model tabanlı cache-event trace'leri eviction pattern'ini doğrudan açığa çıkarır; kanal bu şekilde karakterize edilmiştir.
Mitigation¶
- Cache partitioning / coloring veya way-locking, böylece untrusted kod secret-dependent erişimlerle set paylaşamaz.
- Constant-time / table-free crypto (örn. bitsliced veya hardware AES), kanalın gözlemlediği secret-dependent memory erişimini kaldırır.
- Microarchitectural sertleştirme: randomized/encrypted cache indexing veya context switch'te scrubbing; açık CVA6 RTL böyle savunmaları deneysel olarak test edilebilir kılar.
- Untrusted ve hassas workload'ların paylaşılan bir L1 üzerinde co-residency'sinden kaçın.