Skip to content

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.

  1. 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.
  1. 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.

  2. 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)

Target:    GnuPG RSA (4096-bit), square-and-multiply with CRT
Channel:   acoustic (coil whine / capacitor vibration), < ~tens of kHz
Method:    chosen-ciphertext, adaptive bit-by-bit extraction
Result:    full 4096-bit key in ~1 hour
Range:     phone next to the laptop, or sensitive mic ~10 m away
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.

References