ADR-006: OTA Firmware Imzalama — ECDSA P-256
| Durum | Kabul Edildi |
| Tarih | 2026-03 |
| Karar Veren | Güç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:
- ESP32'de hizli dogrulama: mbedtls ile ~50ms dogrulama suresi (RSA'nin 10 kati hizli)
- Kucuk imza boyutu: 64 byte (RSA-2048: 256 byte) — OTA payload boyutunu minimize eder
- Asymmetric key yapisi: Private key yalnizca sunucuda, public key cihazda — cihaz ele gecirilse bile imzalama yapilamaz
- ESP-IDF native destek: mbedtls kutuphanesi ESP-IDF ile birlikte gelir, ek bagimliligi yok
- NIST onayli: P-256 (secp256r1) endustri standardi, regülasyonlarla uyumlu
- 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