Skip to content

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'ı:

  1. Working set'i cache'lensin diye bir victim operasyonunu tetikle ve bir baseline runtime ölç.
  2. 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.
  3. 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)
set NOT used by victim : victim runtime ~ baseline
set USED by victim     : victim runtime + extra-miss penalty
correlation over plaintexts -> key bytes

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.

References