Skip to content

Simple Power Analysis

SPA (Kocher, Jaffe & Jun, CRYPTO 1999), key-dependent operasyonları görsel olarak ayırt ederek secret'ları tek bir ya da birkaç power trace'inden doğrudan okur — klasik olarak RSA modular exponentiation'da square vs. multiply.

Mechanism

Bir CMOS cihazının anlık power çekişi ne yaptığına bağlıdır: farklı instruction'lar ve aynı instruction'ın farklı veri üzerinde çalışması, farklı sayıda transistor'u anahtarlar. Eğer bir kriptografik rutinin gerçekleştirdiği operasyon dizisi kendisi secret-dependent ise, o zaman power trace — zamana karşı akımın grafiği — secret'ın doğrudan bir resmidir.

Note

SPA'nın suistimal ettiği invariant şu: secret-dependent control flow power üzerinden sızar. Kanonik örnek olarak, ders kitabındaki "square-and-multiply" modular exponentiation exponent'i bit bit tarar: her zaman square yapar, ama yalnızca mevcut exponent biti 1 olduğunda fazladan bir multiply yapar. Squaring ve multiplication'ın ayırt edilebilir power signature'ları vardır (farklı süreler/tepeler), bu yüzden tek bir trace, her exponent biti için square'in ardından bir multiply gelip gelmediğini gösterir — özel RSA exponent'i d'yi doğrudan okur. Aynı mantık herhangi bir key-dependent branch, table lookup ya da conditional subtraction için geçerlidir (örn. DES key schedule'da ya da modular reduction'da). SPA istatistik gerektirmez: gürültüden bir sinyali çekip çıkarmak için binlerce trace üzerinde correlation kullanan ../sidechannel/differential-power-analysis.md'in aksine, SPA, operasyon başına fark noise floor'u aştığında key'i bir ya da birkaç trace'in görsel incelemesiyle kurtarır.

Walkthrough

  1. Power'ı enstrümante et. Cihazın ground/supply hattına küçük bir shunt resistor yerleştir ve target tek bir özel-key operasyonu (bir RSA signature/decryption) yaparken voltaj düşüşünü bir oscilloscope ile yakala.
  2. Bir trace al. Tam modular exponentiation'ı kapsayan tek, yüksek çözünürlüklü bir trace kaydet.
  3. Round'lara böl. Tekrarlanan bit-başına pattern'i tespit et. Her iterasyon bir squaring ile başlar; soru, ardından bir multiply gelip gelmediğidir.
  4. Bit'leri oku. Yalnızca-square bir iterasyon exponent biti 0'a karşılık gelir; square-ardından-multiply bir iterasyon bit 1'e karşılık gelir. RSA çizimine göre, daha dar tepe squaring adımıdır ve daha geniş tepe multiplication adımıdır; böylece exponent bit'leri 0 ve 1 birbirinden ayırt edilebilir.
  5. Key'i yeniden kur. Kurtarılan bit'leri birleştirmek, özel exponent'i tek bir trace'ten doğrudan verir.
Sızdıran operasyon dizisi (left-to-right square-and-multiply)

// r = base^d mod n  — the multiply is CONDITIONAL on the secret bit.
r = 1;
for (int i = nbits - 1; i >= 0; i--) {
    r = (r * r) mod n;            // SQUARE  : every iteration (always present)
    if (bit(d, i) == 1)
        r = (r * base) mod n;     // MULTIPLY: ONLY when d_i == 1  <-- leaks d_i
}
// Power trace per bit:
//   d_i = 0 :  [ square ]
//   d_i = 1 :  [ square ][ multiply ]   <-- visibly longer / extra peak
Multiply'ın varlığı trace'te görünür olduğu için attacker exponent'i bit bit kopyalar. Düzeltme, her iterasyonu birebir aynı göstermektir (bkz. Mitigation).

Detection

SPA, target'ın kendisinin pasif bir ölçümüdür, bu yüzden victim saldırıyı gözlemleyemez. Bunun yerine savunmacılar sızıntı için implementation'ları denetler: secret-dependent bir branch, loop sayımı ya da conditional aritmetik adımı içeren herhangi bir kriptografik primitive SPA ile suistimal edilebilir; code review'de işaretlenmeli ve bir tezgah leakage setup'ında doğrulanmalıdır.

Mitigation

Note

Savunma elektriksel değil, algoritmiktir: secret'ı operasyon dizisinden kaldır.

  • Constant control flow. "There are no secret values which affect the conditional branches" sağlanmalı — her exponent biti aynı operasyonları yürütsün.
  • Square-and-multiply-always / Montgomery ladder. Her iterasyonda bir multiply yap (0 bitinde onu at) ya da bir Montgomery powering ladder kullan; böylece trace, key bit'lerinden bağımsız olarak aynıdır.
  • Blinding. Exponent/message blinding her çalıştırmada veriyi randomize eder, böylece artakalan data-dependent sızıntı bile trace'ler arasında biriktirilemez (DPA'ya karşı da bir önkoşul savunmasıdır).

References