Ana içeriğe geç

ADR-006: OTA Firmware Imzalama — ECDSA P-256

DurumKabul Edildi
Tarih2026-03
Karar VerenGüçlü Ceyhan

Baglam

Zeus 2.0'daki ESP32 gateway'ler sahada calisir ve firmware guncellemelerini OTA (Over-The-Air) ile alir. OTA surecinin guvenlik gereksinimleri:

  • Butunluk (Integrity): Firmware dosyasi aktarim sirasinda degistirilmemis olmali
  • Kimlik dogrulama (Authentication): Firmware yalnizca yetkili kaynak tarafindan uretilmis olmali
  • Supply chain korumasi: Aradaki adam (MITM) saldirisiyla sahte firmware yuklenmemeli
  • ESP32 kisitlamalari: Sinirli islemci gucu, sinirli bellek (520KB SRAM), mbedtls kutuphanesi

Karar

ECDSA P-256 (secp256r1) ile firmware imzalama + SHA-256 checksum dogrulama benimsendi.

Imzalama Akisi

Backend (build sunucusu):
1. Firmware binary derlenir
2. SHA-256 hash hesaplanir
3. ECDSA P-256 private key ile hash imzalanir
4. Binary + imza + hash → MinIO'ya yuklenir

ESP32 (cihaz):
1. OTA bildirimi MQTT ile alinir
2. Firmware binary indirilir (HTTPS)
3. SHA-256 hash dogrulanir (butunluk)
4. ECDSA P-256 public key ile imza dogrulanir (kimlik)
5. Basarili → firmware flash edilir
6. Basarisiz → guncelleme reddedilir, alarm uretilir

Alternatifler

RSA-2048

  • Artilari: En yaygin algoritma, genis kutuphane destegi
  • Eksileri: Buyuk imza boyutu (256 byte), ESP32'de yavs dogrulama (~500ms), buyuk anahtar boyutu (256 byte public key)
  • Red nedeni: ESP32'nin sinirli kaynaklarinda gereksiz buyukluk ve yavaslik

Ed25519

  • Artilari: Cok hizli, kucuk imza (64 byte), modern tasarim
  • Eksileri: ESP-IDF mbedtls'de native destek sinirli (ek kutuphane gerekli), NIST onaysiz
  • Red nedeni: ESP-IDF ekosisteminde native destek eksikligi, ek bagimliligi minimize etme tercihi

Sadece checksum (SHA-256)

  • Artilari: Cok basit, hizli, ek kutuphane gerektirmez
  • Eksileri: Kimlik dogrulama yok — herhangi biri gecerli hash ile sahte firmware gonderebilir
  • Red nedeni: Supply chain korumasiz — enerji yonetim sistemi icin kabul edilemez guvenlik acigi

HMAC-SHA256

  • Artilari: Basit, hizli, symmetric key ile imzalama
  • Eksileri: Symmetric key ESP32'de saklanmali — firmware reverse engineering ile key cikarilabilir, key rotation tum cihazlari etkiler
  • Red nedeni: Symmetric key'in cihazda saklanmasi guvenlik riski

Gerekce

ECDSA P-256 su temel avantajlari sundu:

  1. ESP32'de hizli dogrulama: mbedtls ile ~50ms dogrulama suresi (RSA'nin 10 kati hizli)
  2. Kucuk imza boyutu: 64 byte (RSA-2048: 256 byte) — OTA payload boyutunu minimize eder
  3. Asymmetric key yapisi: Private key yalnizca sunucuda, public key cihazda — cihaz ele gecirilse bile imzalama yapilamaz
  4. ESP-IDF native destek: mbedtls kutuphanesi ESP-IDF ile birlikte gelir, ek bagimliligi yok
  5. NIST onayli: P-256 (secp256r1) endustri standardi, regülasyonlarla uyumlu
  6. Endustri standardi: AWS IoT, Azure IoT Hub ve benzeri platformlar ECDSA destekler

Sonuclar

Olumlu

  • Firmware guncelleme sureci end-to-end guvenli — butunluk + kimlik dogrulanir
  • ESP32'de performans etkisi minimal (~50ms dogrulama)
  • Supply chain saldirisi onlenir — sahte firmware reddedilir
  • Public key firmware'e gomulur — key distribution sorunu yok
  • Imza dogrulama basarisiz oldugunda alarm uretilir — guvenlik olayi takip edilir

Olumsuz

  • Private key yonetimi kritik: Key kaybi veya sizintisi tum guvenlik yapisini tehlikeye atar
  • Key rotation proseduru gerekli: Yeni key dagitimi firmware guncellemesi gerektirir — tavuk-yumurta problemi (ilk firmware'de birden fazla trusted key destegi ile cozulmus)
  • Key saklama: Private key sunucuda guvenli saklanmali (environment variable, HSM ideal ancak maliyet yuksek)
  • Her firmware build'de imzalama adimi eklenmeli — CI/CD pipeline'a entegre edilmis