Evict+Time¶
Victim'in secret'a bağlı kod/verisinin belirli bir cache set'te yaşayıp yaşamadığını öğrenmek için, seçilen bir cache set'i evict ettikten sonra victim'in kendi execution süresini ölç — AES döneminden, shared-memory gerektirmeyen bir cache attack.
Mechanism¶
Neden çalışır
Osvik, Shamir ve Tromer tarafından AES table lookup'larına karşı tanıtılan Evict+Time, attacker'ın kendi erişimini time'lamaz. Bunun yerine, attacker'ın önceden bozduğu cache state'inin bir fonksiyonu olarak victim'in çalışmasının ne kadar sürdüğünü time'lar.
Leak/transmit/decode invariant'ı:
- Working set'i cache'lensin diye bir victim operasyonunu tetikle ve bir baseline runtime ölç.
- Ona map'lenen bir contention set'e erişerek belirli bir cache set'i (örn. belirli bir AES T-table line'ına karşılık gelen birini) evict et.
- Victim'i tekrar tetikle ve time'la. Victim, evict edilmiş set'teki bir adrese erişirse artık bir cache miss yaşar ve ölçülebilir şekilde daha yavaş çalışır; erişmezse runtime değişmez.
Evict edilmiş set üzerindeki diferansiyel runtime leak'tir: secret'a bağlı computation'ın hangi set'lere dokunduğunu, dolayısıyla secret'a bağlı table index'lerini (AES için key byte'larını) ortaya çıkarır. Hiçbir shared memory ve hiçbir flush instruction'ı gerekmez — yalnızca victim'i çağırıp time'lama yeteneği, artı bir eviction set (bkz. eviction set construction).
Walkthrough¶
Attacker, bir aday set'i tekrar tekrar evict eder ve tek bir victim çağrısını time'lar:
// Conceptual Evict+Time round targeting cache set `s`.
uint64_t evict_time(int s, void **eviction_set_for[ /*set*/ ]) {
trigger_victim(); // warm the victim's working set
access_set(eviction_set_for[s]); // evict exactly cache set s
uint64_t t0 = rdtscp();
trigger_victim(); // re-run; slower if victim uses set s
return rdtscp() - t0;
}
// For AES: sweep s over the sets backing T-table lines; the sets that
// consistently slow the victim reveal secret-dependent lookup indices.
Chosen plaintext'lerle çok sayıda encryption üzerinden ortalama almak, yavaş set'leri key-byte hipotezleriyle istatistiksel olarak ilişkilendirir ve key'i geri elde eder.
Beklenen diferansiyel (kavramsal)
Mitigation¶
- Constant-time / cache-oblivious crypto (secret'a bağlı table index'i olmaması; örn. bitsliced AES veya AES-NI).
- Attacker victim'in belirli set'lerini evict edemesin diye cache partitioning.