Skip to content

Template Attack

Per-hypothesis multivariate-Gaussian noise model'leri kurmak için tamamen kontrol edilen bir clone device'ı profile et, sonra tek bir victim trace'ini maximum likelihood ile sınıflandır — Gaussian noise model'i altında Bayes-optimal bir classifier (DPA/CPA'nın gerektirdiği çok sayıda trace yerine bir tane bile yeterli olabilir).

Mechanism

Neden çalışır

Daha eski side-channel yöntemleri (SPA/DPA), noise'u ortalanarak yok edilmesi gereken bir düşman olarak ele alır ve çok sayıda trace gerektirir. Template attack'ları bu görüşü tersine çevirir: noise'u tam olarak karakterize edebilirsen noise'un kendisi bilgi haline gelir. Chari, Rao & Rohatgi'den (CHES 2002) gelen ana içgörü, bir zaman sample'ları kümesindeki leakage'in bir multivariate normal distribution olarak iyi modellendiğidir. Her hypothesis k için (bir key byte, bir operation, bir Hamming weight) bir template = bir (m_k, C_k) çifti önceden hesaplarsın:

  • m_k — o hypothesis için mean vector (ortalama trace),
  • C_k — her sample'daki noise'un diğer her sample ile nasıl co-vary ettiğini yakalayan covariance matrix.

Victim'den yeni bir trace t verildiğinde, onun hypothesis k'den geldiği olasılığı multivariate Gaussian yoğunluğudur:

p(t | k) = exp( -½ (t − m_k)ᵀ C_k⁻¹ (t − m_k) ) / sqrt( (2π)^n · |C_k| )

Attacker, p(t | k)'yi maximize eden k'yi seçer (maximum likelihood). C_k⁻¹ korele noise'u whiten ettiği için tek bir sample yeterli olabilir — exploit edilen invariant şudur: leakage'in tam joint noise distribution'ı, secret'ın kararlı, öğrenilebilir bir fingerprint'idir.

Bu, attacker'ın seçilen key'ler/plaintext'lerle programlayabileceği bir profiling device (target'ın bir "clone"u) gerektirir. Non-profiled DPA/CPA ailelerinin aksine, kanonik profiled attack'tır.

Walkthrough

İki phase vardır: profiling (template'leri kur) ve matching (victim trace'ini sınıflandır).

  1. Profile. Clone device'da, target operation'ı her hypothesis için çok sayıda çalıştır ve trace'leri kaydet.
  2. Points of interest (POI) seç. Tam trace'ler yüksek boyutludur, bu yüzden en key-dependent signal'i taşıyan birkaç sample'a indir (örneğin hypothesis'ler boyunca en büyük fark toplamı Σ|m_i − m_j|).
  3. POI'lerde her hypothesis için bir template kur: mean vector + covariance.
  4. Match. Bir victim trace al, her template'in yoğunluğunu değerlendir, argmax'ı çıktı ver.
import numpy as np

# traces[k]: array (N_traces, N_poi) profiled for hypothesis k
templates = {}
for k, X in traces.items():
    m = X.mean(axis=0)                  # mean vector m_k
    C = np.cov(X, rowvar=False)         # covariance matrix C_k
    templates[k] = (m, np.linalg.inv(C), np.linalg.slogdet(C)[1])

def classify(t):                        # t: single victim trace at the POIs
    best_k, best_ll = None, -np.inf
    for k, (m, Cinv, logdet) in templates.items():
        d = t - m
        ll = -0.5 * (d @ Cinv @ d) - 0.5 * logdet   # log-likelihood (drop const)
        if ll > best_ll:
            best_ll, best_k = ll, k
    return best_k
Expected behavior
profiling: 200 traces/hypothesis x 256 key-byte hypotheses
POIs selected: 5 samples (peaks of inter-class variance)
matching on 1 victim trace -> argmax log-likelihood
recovered key byte: 0x9C   (correct)
With well-separated templates, a *single* trace is often enough; noisy
targets fall back to averaging the log-likelihoods over a few traces.

Aynı mekanizma electromagnetic trace'lere genelleşir ve modern profiled attack'ların temelidir (explicit Gaussian'ı öğrenilmiş bir classifier ile değiştiren deep-learning varyantları dahil).

Detection

Template attack'ları, attacker tarafında passive measurement'tır — tespit edilecek on-target bir software footprint'i yoktur. Pratik "ipucu" fizikseldir: probe/EM access'i ve device'ın programlanabilir bir clone'una sahip bir adversary.

Mitigation

  • Constant-time / data-oblivious kod ki leakage secret'tan bağımsız olsun (bkz. ../mitigation/constant-time-programming.md).
  • Template'lerin dayandığı kararlı per-hypothesis distribution'ı kırmak için masking ve hiding (random delay'ler, shuffling, dual-rail logic).
  • Physical access'i sınırla ve attacker'ların profile edilebilir bir clone elde etmesini engelle.

References