Acoustic Cryptanalysis¶
Bir laptop'un voltage-regulation devresinin, seçilmiş ciphertext'leri decrypt ederken çıkardığı tiz sesi kaydederek RSA secret key'lerini çıkar.
Mechanism¶
Note
Bir bilgisayarın power-supply ve voltage-regulation bileşenleri (capacitor'lar, bobinler — "coil whine") anlık CPU power draw'a bağlı frekanslarda titreşir. Farklı hesaplamalar farklı akım profilleri çeker, dolayısıyla acoustic emanation CPU'nun hangi işlemleri yürüttüğüne dair bilgi taşır. Değişmez nokta şu: RSA'daki modular exponentiation (özellikle GnuPG'nin CRT ile square-and-multiply'ı) key-bit'e bağlı bir multiply/reduce işlem dizisine sahiptir ve bu dizinin power — dolayısıyla acoustic — imzası farklı secret-key bit'leri ve farklı ciphertext'ler için farklılaşır. Zor kısım bandwidth: acoustic channel onlarca kHz civarında tavan yapar, GHz'lik CPU clock'unun mertebelerce (many orders of magnitude) altında, dolayısıyla tek tek instruction'lar görünmez. Saldırı bunu, key'e bağlı farkları acoustic channel'ın low-pass yapısından sağ çıkacak uzun, yavaş, ayırt edilebilir sinyal desenlerine yükselten chosen ciphertext'ler kullanarak aşar ve key'i bit bit kurtarır.
Walkthrough¶
Saldırı chosen-ciphertext'tir: saldırgan, kurbanın hazırlanmış ciphertext'leri (örneğin encrypted email / Enigmail auto-decrypt yoluyla) tekrar tekrar decrypt etmesini sağlarken sesi kaydeder.
- Record. Laptop'un yakınına bir mikrofon yerleştir (ya da metrelerce uzakta parabolik / telefon mikrofonu) ve decryption'lar sırasında kaydet.
# Capture the acoustic emanation while triggering decryptions.
arecord -f S16_LE -r 192000 -c 1 capture.wav # high sample-rate mic
# In parallel, feed chosen ciphertexts to the victim's GnuPG repeatedly.
-
Trigger key-dependent leakage. Chosen ciphertext'ler gönder, böylece square-and-multiply / CRT reduction key-bit'e bağlı bir yol izlesin ve her secret-key bit'i için belirgin, yavaş bir acoustic desen üretsin.
-
Analyze. Kaydın spectrogram'ını çıkar, decryption başına hizala ve CPU aktivitesini takip eden frekans bandından key bit'lerini oku.
import scipy.io.wavfile as wav, numpy as np
sr, x = wav.read("capture.wav")
spec = np.abs(np.fft.rfft(x.astype(float))) # band where power tracks compute
# Per-decryption alignment + classification recovers key bits.
Expected results (from the paper)
Aynı power/EM'e bağlı sinyal chassis-potential ya da low-bandwidth EM leakage olarak da gözlemlenebilir.Detection¶
Doğrudan tespit etmek zor. Anormal tekrarlı otomatik decryption'lar (chosen-ciphertext tetikleyicisi) daha görünür bir iz bırakır.
Mitigation¶
RSA blinding (ciphertext randomization) ile chosen ciphertext'ler artık hesaplamayı yönlendiremez; constant-time exponentiation; acoustic dampening / muhafazalar; daha sessiz power devresi; saldırganın sağladığı ciphertext'lerin gözetimsiz otomatik decryption'ını reddet ya da rate-limit uygula.