Skip to content

Hertzbleed

Data-dependent CPU power consumption'unu dynamic frequency scaling üzerinden remote bir timing leak'ine çevir — power -> frequency -> time — böylece "constant-time" koddan bile tam key extraction mümkün olur.

Mechanism

Neden çalışır

Modern x86 CPU'lar power ve thermal limitler içinde kalmak için Dynamic Voltage and Frequency Scaling (DVFS) kullanır: bir workload daha fazla power çekince processor clock'unu düşürür, daha az çekince yükseltir. Hertzbleed (Wang et al., USENIX Security 2022) üç olguyu birbirine zincirler:

  1. Power, data'ya bağlıdır. Bir CPU hesaplama yaparken çektiği anlık power operand'lara bağlıdır — klasik olarak değerlerin Hamming weight'ine ve internal bus'lar ile register'lardaki ardışık değerler arasındaki Hamming distance'a. Aynı sayıda cycle alan iki input yine de farklı miktarda power harcayabilir.
  2. Frequency, power'a bağlıdır. DVFS altında bu data-dependent power farkı CPU'nun biraz farklı bir P-state / frequency seçmesine yol açar.
  3. Time, frequency'ye bağlıdır. "1 hertz = saniyede 1 cycle" olduğundan, daha düşük bir steady-state frequency sabit bir miktar işin wall-clock zamanında daha uzun sürmesi demektir.

Net etki: data-dependent power, remote olarak gözlemlenebilen data-dependent wall-clock time'a dönüşür — power meter yok, fiziksel erişim yok. Bu, sabit cycle sayısı garanti eden ama sabit frequency garanti etmeyen — dolayısıyla sabit zaman da garanti etmeyen — constant-time cryptography'nin temel varsayımını çökertir.

Walkthrough

Paper'ın başlık exploit'i, remote timing ile tam key extraction'a ulaşan SIKE (bir post-quantum KEM) üzerinde bir chosen-ciphertext attack'tir. Dikkatle seçilmiş ciphertext'lerin bir dizi internal ara değeri anomalous zero'lara sürüklediği bir quirk'e dayanır; bu sıfırların Hamming weight'i alışılmadık derecede düşüktür ve dolayısıyla ayırt edici bir power/frequency/time imzası taşır.

Attacker (remote)                         Victim server (DVFS on)
  craft ciphertext C_i  --------------->  decapsulate(C_i)
  start timer                             ... internal values hit 0 or not ...
  measure decapsulation latency  <------  reply
  latency low  => guessed key bit = b0
  latency high => guessed key bit = b1
  repeat per key bit -> recover full SIKE private key

Frequency bağımlılığı, etkilenen bir makinede standart tooling ile doğrudan gözlemlenebilir:

# Watch the core frequency move with workload (illustrative).
watch -n0.2 "grep MHz /proc/cpuinfo | head"

# Pin a power-distinguishable workload and observe steady-state frequency,
# e.g. with turbostat (requires msr access):
sudo turbostat --interval 1 --show Core,Bzy_MHz,PkgWatt
Raporlanan veriler (hertzbleed.com'dan)
Chain:        power  ->  frequency  ->  time   (remote, no power meter)
SIKE:         full key extraction via chosen-ciphertext remote timing,
              despite SIKE being implemented "constant time"
Trigger:      anomalous 0 values give a distinctive power signature
CVEs:         CVE-2022-23823 (AMD), CVE-2022-24436 (Intel)
Intel:        "all Intel processors are affected"
AMD:          Zen 2 and Zen 3 confirmed vulnerable

Warning

Hertzbleed bir frequency side channel'dır, cache veya branch channel değil. Tek başına constant-time programming onu durdurmaz; çünkü aynı instruction stream'e sahip iki code path yine de farklı frequency'lerde oturabilir. Mitigation'ın ya data->power bağımlılığını ya da power->time bağımlılığını ortadan kaldırması gerekir.

Detection

  • Cryptographic endpoint'lerde input ile korele latency varyasyonunu işaretleyen network/timing telemetry; SIKE attack'i, crafted ciphertext'ler arasında sistematik latency farkları olarak kendini gösterir.
  • Bir microcode "fix flag"i yok — Intel ve AMD microcode patch planlamadıklarını belirtti, dolayısıyla detection büyük ölçüde protocol/application katmanındadır.

Mitigation

  • BIOS'tan veya frequency-scaling driver üzerinden frequency boost'u devre dışı bırak (Intel Turbo Boost / SpeedStep, AMD Turbo Core / Precision Boost). Bu, data-dependent frequency varyasyonunu azaltır ama performansa ciddi zarar verir ve önerilen genel bir mitigation olmadığı açıkça belirtilir.
  • Cryptography'nin kendisini sertleştir: SIKE'a özgü fix, decapsulation öncesinde ciphertext'in doğru order'a sahip lineer bağımsız bir nokta çifti olduğunu doğrulamaktır; bu, anomalous-zero koşulunu engeller. Daha genel olarak, secret-dependent ara değerleri mask/blind ederek power'ın (ve dolayısıyla frequency'nin) artık secret ile korele olmamasını sağla.
  • Web savunması: cross-origin frequency/pixel-stealing varyantlarını sınırlamak için X-Frame-Options: deny (veya sameorigin) ayarla.

References