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:
- 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.
- 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.
- 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(veyasameorigin) ayarla.